Проект UDICT ╓ спробою створення словника сл╕в укра╖нсько╖ мови. Такий словник уявля╓ться м╕г би послужитися при розробц╕ програм перев╕рки правопису укра╖нсько╖ мови (spell-checker'╕в).
Для створення словника використовувалися джерела укра╖нських текст╕в доступн╕ на ╤нтернет╕. ╤дея, що послужилася при створенн╕ словника дуже проста. Використати доступн╕ в ╤нтернет╕ тексти укра╖нською мовою для сканування ╖х та створення таким чином словника вс╕х сл╕в, що трапляються.
Це вже не перша така спроба. Напочатку ми вир╕шили, що буде достатн╕м просто створити список вс╕х сл╕в, що трапляються в ус╕х наявних текстах ╕ пот╕м вичитати вручну помилки в цьому списку. Але, як засв╕дчив власний досв╕д така практика виявилася досить безрезультативною. Словник було створено досить швидко. К╕лька його верс╕й мали по к╕лька десятк╕в тисяч сл╕в. Але вичитка словник╕в виявилася дуже кроп╕ткою роботою. Наст╕льки кроп╕ткою, що стало зрозум╕ло - цей проект не буде зак╕нчений н╕коли.
Намагалися ми також використати для вичитки готового текту ╓диний spell-checker для укра╖нсько╖ мови, який ми мали. Це була програма Дарв╕н для Windows. Досв╕д роботи з цим spell-checker'ом ще додав впевненост╕ в необх╕дност╕ розробки д╕йсно укра╖нського словника. Ми виявили к╕лька дуже серйозних недол╕к╕в при робот╕ з Дарв╕ном:
Поки що ми не зустр╕чали некомерц╕йно╖ альтернативи, тому ми продовжу╓мо роботу над цим проектом ╕ запрошу╓мо вс╕х бажаючих при╓днуватися до нас.
╤дея, що перевела проект з жевр╕ючого стану в робочий, в╕дшукалася досить неспод╕вано ╕, звичайно-ж, виявилася дуже простою. Розробники под╕бного проекту з Рос╕╖ користуються схожою методикою - скануючи тексти вони створюють список сл╕в. Але показником в╕рност╕ слова ╓ частота трапляння слова в текст╕. Звичайно-ж в╕рно написан╕ слова трапляються в текстах набагато част╕ше, н╕ж описки. Тому, набравши досить велику статистику укра╖нських текст╕в можна з досить високою долею в╕рог╕дност╕ в╕дс╕яти з отриманого списку нев╕рн╕ слова.
Для вт╕лення ц╕╓╖ ╕де╖ в життя була розроблена програма, яка скану╓ тексти написан╕ укра╖нською мовою, розбива╓ поданий текст на окрем╕ слова, в╕дф╕льтрову╓ написане англ╕йською мовою та знаки пунктуац╕╖ ╕ дода╓ ц╕ слова до словника.
Словник ма╓ дуже просту структуру. Кожен рядок - це слово ╕ число, яке показу╓ ск╕льки раз╕в дане слово було знайдене в текст╕. Слово ╕ число розд╕лен╕ м╕ж собою символом табуляц╕╖.
Програма чита╓ даний файл на початку роботи, чита╓ вх╕дн╕ дан╕, поновлю╓ словник ╕ запису╓ його знову на диск. При великому розм╕р╕ словника операц╕я читання словника з диску та запис його назад на диск займають досить багато часу, але дякуючи цьому, за будь-яких умов файл словника записаний на диску ╕ це гаранту╓ в╕д непри╓мностей.
В процес╕ роботи програми виявилося, що потр╕бн╕ деяк╕ доробки та доповнення до алгоритму роботи.
Але ╕ншою проблемою при цьому ╓ також нев╕дпов╕дн╕сть укра╖нських кодових таблиц в р╕зних текстах. Цьому сприя╓ в╕дсутн╕сть ч╕тких стандарт╕в в галуз╕ застосування укра╖нсько╖ мови в комп'ютеризац╕╖ як в Укра╖н╕, так ╕ поза ╖╖ межами. Окр╕м надзвичайно велико╖ к╕лькост╕ таких стандарт╕в, великий негативний вплив ма╓ недостатн╓ розум╕ння ц╕╓╖ проблеми особами, як╕ друкують укра╖нськ╕ тексти.
На доказ наведемо к╕лька приклад╕в:
╢ к╕лька стандарт╕в, як╕ претендують на те, що вони п╕дтримують укра╖нську мову. Серед них найчаст╕ше застосову╓ться в ╤нтернет╕ стандарт KOI8-U, описаний в стандарт╕ RFC-2319. Незважаючи на це в багатьох джерелах використову╓ться кодова таблиця KOI8-R, яка не п╕дтриму╓ укра╖нсько╖ мови. Л╕тери укра╖нсько╖ мови, яких нема╓ в рос╕йськ╕й (╕, ╓, ╖ та ╜) якраз ╕ приносять найб╕льше непри╓мностей.
Трапля╓ться дуже багато джерел, де зам╕сть укра╖нсько╖ л╕тери "╕" вжива╓ться англ╕йська "i". Це дуже важко пом╕тити, просто читаючи текст, але проводячи комп'ютерну обробку, я почав пом╕чати дуже багато роз╕рваних сл╕в (як, наприклад, "роз" ╕ "рваних"). Придившись уважн╕ше пом╕тив причину цього ╕ довелося ввести в програму ф╕льтр, який зм╕ню╓ англ╕йське "i" на укра╖нське "╕".
Як виявилося найб╕льше проблем доставля╓ апостроф. Зда╓ться, що цей маленький значок не заслугову╓ нав╕ть на найменшу увагу серед б╕льшост╕ автор╕в текст╕в. В ход╕ обробки текст╕в мен╕ вдалося виявити як м╕н╕мум п'ять р╕зноман╕тних вар╕ант╕в апострофа: перший, найб╕льш розповсюджений вар╕ант - це одинарна лапка "'" (в╕с╕мковий код \047), яка ╕ повинна вживатися, як апостроф, наступний - це задня лапка "`" (код \140), в деяких виданнях зам╕сть апострофа використову╓ться символ ╕з кодом \134. Але найб╕льше розчарування принесли файли Телев╕з╕йно╖ Служби Новин (http://www.1plus1.net/slots/tch/online/). В р╕зних файлах одн╕╓╖ ╕ т╕╓╖-ж орган╕зац╕╖ зустр╕ча╓ться три (три!) р╕зних вар╕анти апострофа: це - "'", подв╕йн╕ лапки (") ╕ ще нав╕ть пара символ╕в \242\020 в якост╕ апострофа.
В деяких джерелах л╕тера "╜" ма╓ нев╕рний код (нев╕дпов╕дний до стандарту KOI8-U).
При обробц╕ HTML джерел виявилося, в словник стали заноситися рос╕йськ╕ слова, в той час, як переглядаючи тексти, HTML-browser'ом (Netscape, w3/Emacs та Lynx) я цих рос╕йських сл╕в не бачив. Б╕льш детальний анал╕з виявив, що в цих джерелах HTML коментар╕ здеб╕льшого написан╕ рос╕йською мовою. Ще одне джерело рос╕йських сл╕в при анал╕з╕ HTML текст╕в ╓ та╜ META. Як коментар╕, так ╕ META невидим╕ на екран╕ browser'а ╕ тому ╖х важко пом╕тити при звичайному перегляд╕ в ╤нтернет╕. Так з'явився ще один ф╕льтр, який просто викида╓ вс╕ коментар╕ з HTML ╕ та╜и META.
Рос╕йськ╕ слова, що ╕нколи все-таки трапляються в текстах, виявити машинними засобами обробки мен╕ зда╓ться неможливо, або дуже важко ╕ тому доводиться з цим миритися. Але натом╕сць я намагався вилучити з оброблюваних джерел тексти, написан╕ рос╕йською мовою. Як виявилося (╕ що, до реч╕, було для мене особисто неабияким сюрпризом) б╕льш╕сть укра╖нського законодавства до 1989 року написане рос╕йською мовою. ╤ тому при занесенн╕ в словник сл╕в з закон╕в Укра╖ни, я просто вир╕шив, що буде краще зовс╕м не обробляти ц╕ тексти (тобто закони до 1989 року), ан╕ж виловлювати з цього об'╓му деяк╕ випадков╕ укра╖нськ╕ файли.
Тож вважаючи на описан╕ негаразди я гадаю, що робота над цим словником, попереду ще велика. Але не зважаючи не незак╕нчен╕сть проекту, в╕д в╕дда╓ться на громадський осуд ╕ буде доповнюватися та коригуватися з часом.
Цей проект н╕ в якому раз╕ не можна вважати зак╕нченим (а на даний момент нав╕ть придатним до вживання). Словник явля╓ собою звичайний величезний файл (б╕ля 1,4М компресован╕ програмою bzip2 - за станом на кв╕тень 1999) ╕з списком сл╕в та числом, яке вказу╓ на к╕льк╕сть раз╕в, ск╕льки це слово зустр╕лося в тих текстах, як╕ я обробив.
Проект зупинився на деякий час (це пишеться вже в жовтн╕ 1999 року), бо мен╕ просто не вистача╓ на нього часу. Тому я, спод╕ваючись на п╕дтримку з боку величезного та всесильного ╤НТЕРНЕТУ (а особливо його укра╖номовно╖ частини), публ╕кую вс╕ необх╕дн╕ матер╕али, з╕бран╕ п╕д час мо╓╖ роботи над цим проектом. А саме:
Все публ╕ку╓ться тут на основах загально╖ л╕ценз╕╖ GNU (general Public License - GPL) ╕ може використовуватися та розповсюджуватися в╕дпов╕дно до не╖.
Що потр╕бно ще?
З повагою,
Ток╕о, 1999 р╕к.