Споделил си публично програмата в GitHub и се опитваш да я спасиш.
Добре ще е, транскрипцията да си е наред, ако ще я ползва и някой друг.
Хубаво е, че понаучаваш Питоня.
Улеснява живота.
Това, което аз направих си е вградена функционалност към инструментите за манипулиране стрингове в Python - на текст.
Относно конвертирането до JSON или в нещо друго...
Ами, ако искаш да е четимо, почти няма нещо друго.
Впрочем, ти почти си го направил.
Разделил си .dat файла на парчета (думи, заедно с превод), след това разделяш думата от превода.
Тук може да се направят вече две неща.
Да се създаде празен речник на Python. Този тип за данни с ключ/стойност. На други езиси го наричат hash table, map, object, hash map, table.
Та, да се вкара думата като 'key', а превода като 'value' на този речнки.
Прави се това в цикъла, който в момента съществува.
След като се парсне целия файл, имаш един голям dict на Python, който просто превръщаш в JSON и го хвърляш във файл.
Това е просто конвертиране от формата в .dat файла, в JSON
Второто нещо, което може да се направи вместо първото ми предложение е, да се направи както си трябва с този JSON.
Целия JSON обект да има едно поле, в което се указва езика, а под него данните. Те да включват и отделно поле за транскрипцията.
Например:
{
"language": "en-bg",
{
"word": "plank",
{
"transcription": "[plæŋk]",
"translation": "Текста на превода"
}
},
...,
...,
}Бях погледнал, колко са думите в двата .dat файла.
Едното файлче беше 43,000+ или 46,000+, другия беше към 48,000+ думи.
Не съм работил с големи по размер JSON файлове, но зная, че са бавни за обработка. Не съм сигурен, дали и тези са големи.
Зная, че се обработват и 1000 пъти по толкова.

В Python ще са превърнати в dict обекти и това може и да помогне за бързината на търсене. Може би.
Оптималния вариант би било бази данни (sqlite3 нарпимер), защото са оптимизирани за търсене, заемат по-малък обем на диска, обаче не са четими. За въвеждане на дума и попълване на речника, ще трябва да се създаде и съответната функционалност директо в програмата или на ръка да си вкарваш данните през конзолата и интерфейса на sqlite3.
Другото е, че ще трябва да се преправи и системата за търсене.
Да се имплементира fuzzy find за въпросния dict.
Нещо като тава би работило:
for word in dict.kays():
if "plank" in word:
<добавяне на 'plank' към листа с намерени думи>
Може да има и по-бързи начини, не зная. Някой професионален програмист, ако им тук, да каже.
sqlite3 си има вградена функционалност за такъв тип търсене, но както се видя, не е никак сложно да се направи и за текстов обект, какъвто е JSON (dict obect в Python).
Погрешно го нарекох, като fuzzy find. Направо се търсят точни съвпадения.