brown-uk / dict_uk

Project to generate POS tag dictionary for Ukrainian language
GNU General Public License v3.0
561 stars 73 forks source link

Перевірка всієї вікіпедії #146

Closed bunyk closed 4 years ago

bunyk commented 6 years ago

Щодо теми - так, я знаю що я фантазер. :) І не впевнений що це питання сюди, але кращого місця аби спитати не знайшов.

Коротко кажучи, я думаю стягнути собі дамп вікіпедії, і взяти файлик /usr/share/dict/ukrainian з https://packages.ubuntu.com/trusty/wukrainian . Тоді відсортувати статті вікіпедії за часткою слів які не входять до словника, і звернути увагу редакторів на кінець списку.

Є лише кілька маленьких проблем

  1. цей файлик містить лише 1 485 662 рядків. І це при тому що рядки виглядають як Аарон Аарона Аароні Ааронові Аароном Аарону ... , тобто насправді різних слів там менше. Я так розумію що якщо склонувати цей репозитарій і запустити ./gradlew expand то в файлі out/words.txt отримаю нову версію для wukirainian? Чи треба брати out/words_spell.txt
  2. Прибрати розмітку з тексту можна функцією бібліотеки mwparserfromhell. Складніше питання - як правильно розбивати текст на слова? Регулярними виразами? І як визначити чи слово українською? Перевірити алфавіт? Мало б допомогти зі всіма мовами крім кириличних...

Далі можна буде ще відсортувати знайдені слова за частотою і звернути вашу увагу на найчастіші слова яких у словнику нема. Якісь з них можна буде додати в словник, а якісь до списку частих помилок і виправити.

arysin commented 6 years ago

Ось тут є скрипт, який вміє генерувати частоту невідомих словнику (і динамічному тегувальнику) слів, що мають лише українські літери: https://github.com/brown-uk/nlp_uk/blob/master/src/main/groovy/org/nlp_uk/tools/TagText.groovy, щоправда я б почекав до кінця грудня - вийде LanguageTool 4.0, тоді цей скрипт знатиме додаткових 10 тис. лем Я колись таке робив з вікіпедією, там є три проблеми:

bunyk commented 6 years ago

Та то неспішний проект, я про нього вже напевне кілька років думаю.

Щодо проблем, то мова не йде про 100% перевірку, мова якраз про те аби зменшити третю. Статті вікіпедії дуже різняться за якістю, дуже якісних дуже мало, і є довгий хвіст страшненьких, це майже математичний закон. Крім того, правильність правопису слів ще не означає що вони йдуть в правильному порядку (вірш на тему). Тут скоріше якась автоматична оцінка якості по одному з критеріїв, і визначення порогу нижче якого можна той хвіст відрізати, тобто сторінку легше видалити ніж виправляти.

Бо вікіпедія щодня зростає на близько 200 статей, не враховуючи тих які видаляють, і було б добре зекономити редакторам кілька хвилин автоматично позначаючи найгірші. Тому що наприклад на цю вже витратило час 3 редактори, хоча не мали б. Ще іноді деякі редактори плутають мовний розділ і взагалі додають статтю російською, це теж можна було б відсіювати.

А то зараз деякі патрульні їх за розміром фільтрують, хоча мені здається краще маленькі грамотні, ніж великі жахливі.

bunyk commented 6 years ago

Хоча думаю треба просто почати з прототипу - оцінити якісь статті за тим словником що є і подивитись що вийде.

arysin commented 6 years ago

Ну в нас є ще інший скрипт, який ми використовували, коли відбирали тексти для корпусу з тисяч архівних файлів. Цей скрипт проходить по всіх файлах у каталозі й перевіряє граматику, і потім видає рейтинг кожного у таблиці. Оскільки з кожного джерела нам було потрібно відносно невелику кількість текстів замість переглядати кожен на якість ми могли взяти сотню з найкращим рейтингом і працювати з ними. Звичайно автоматична перевірка має неідеальну якість, але якщо розмір текстів принаймні сторінка-дві, відносний рейтинг непогано працює.

arysin commented 4 years ago

Думаю це питання більше не про наповення словника з Вікіпедії (словник наразі налічує 390 тис. лем), а про перевірку статей на Вікіпедії, але це вже тре працювати зі спільнотою укр. Вікіпедії. LanguageTool має купу додатків, зокрема, для бразурів, що мають в цьому допомогти.