Size: a a a

Natural Language Processing

2019 October 10

NC

Nikolay Chudinov in Natural Language Processing
изобретал свой велосипед в формате word segmentation.  Скормил в него примерно 2,5млн слов на основе словарей русского языка.  Все было хорошо, до момента очередного теста. На вход "гореотума" на выходе получил "горе о тума". Заглянул в словарь, там реально есть слово "тума". С учетом того, что я в настройках указал приоритет нахождения минимального числа слов, то у результата "горе о тума" будет приоритет выше чем "горе от ума" т.к. найдено 2 а не 3 вхождения.  p.s. "тума",  появилось в словаре после заливки в него списка населенных пунктов, и в данном случае это гео в России ((   Это конечно частный случай, но думаю что таких "результатов", якобы корректных будет море...  Как поступить?
источник

AY

Anastasia Yashch in Natural Language Processing
наверное, нужно усложнить приоритетность, дескать, есть устаревшие слова\собственные и другие, пусть они как-то понижают вес варианта...первое, что в голову пришло
источник

NC

Nikolay Chudinov in Natural Language Processing
Anastasia Yashch
наверное, нужно усложнить приоритетность, дескать, есть устаревшие слова\собственные и другие, пусть они как-то понижают вес варианта...первое, что в голову пришло
язык богатый и может быть масса фраз, комбинация слов в которых может порадовать. Я конечно думал, что можно слепить отдельную коллекцию устойчивых фраз и вырожений + Крылатые слова, но это будет частичное решение
источник

AZ

Andrey Zakharov in Natural Language Processing
Nikolay Chudinov
изобретал свой велосипед в формате word segmentation.  Скормил в него примерно 2,5млн слов на основе словарей русского языка.  Все было хорошо, до момента очередного теста. На вход "гореотума" на выходе получил "горе о тума". Заглянул в словарь, там реально есть слово "тума". С учетом того, что я в настройках указал приоритет нахождения минимального числа слов, то у результата "горе о тума" будет приоритет выше чем "горе от ума" т.к. найдено 2 а не 3 вхождения.  p.s. "тума",  появилось в словаре после заливки в него списка населенных пунктов, и в данном случае это гео в России ((   Это конечно частный случай, но думаю что таких "результатов", якобы корректных будет море...  Как поступить?
возможно стоит копнуть в сторону выражений - считать, горе от ума одним токеном, грубо говоря
источник

CT

Cookie Thief in Natural Language Processing
Мб взять большой корпус, посмотреть там частотность слов и от нее отталкиваться?
источник

NC

Nikolay Chudinov in Natural Language Processing
у меня "проект" под конкретную аудиторию, как правило это школьники. Пишут с ошибками, слитно и прочее...  Вангую вариант "отумагоре" и это не спасет
источник

AY

Anastasia Yashch in Natural Language Processing
А в выражении "горе о тума", слово"тума" ведь имеет род какой-то, да? Т.е. правильно ли я понимаю, что если, например, думать о посёлке под названием "тума", то получится "думать о тумЕ"?) может быть, каким-то образом посмотреть на грамматику выражения, но если ошибки, то это, конечно, вряд ли поможет
источник

NC

Nikolay Chudinov in Natural Language Processing
как пример, посмотрел вариант как обработает запрос яндексспеллер - сравнил вот такой запрос "горе отума",  получил "горе атум", что для яндекса не айс
источник

D(

David (ddale) Dale in Natural Language Processing
Nikolay Chudinov
изобретал свой велосипед в формате word segmentation.  Скормил в него примерно 2,5млн слов на основе словарей русского языка.  Все было хорошо, до момента очередного теста. На вход "гореотума" на выходе получил "горе о тума". Заглянул в словарь, там реально есть слово "тума". С учетом того, что я в настройках указал приоритет нахождения минимального числа слов, то у результата "горе о тума" будет приоритет выше чем "горе от ума" т.к. найдено 2 а не 3 вхождения.  p.s. "тума",  появилось в словаре после заливки в него списка населенных пунктов, и в данном случае это гео в России ((   Это конечно частный случай, но думаю что таких "результатов", якобы корректных будет море...  Как поступить?
Тебе точно нужно гипотезы ранжировать какой-нибудь языковой моделью; можно даже очень примитивной, но знающей, что "от ума" встречется чаще, чем "о тума".
Причём чаще по двум причинам: мало того, что Тума - редкое слово, так ещё и "о Тума" вряд ли скажут, а скажут "о Туме".

Я вот почти-сегментацию пробовал сделать на основе языковой модели на счётчиках буквенных n-gramm. И такое уже зашло: habr.com/ru/post/346578/ . А если модель нормальную сделать, знающую о словаре и о совместимости слов друг с другом, то точно всё будет хорошо.
источник

AY

Anastasia Yashch in Natural Language Processing
David (ddale) Dale
Тебе точно нужно гипотезы ранжировать какой-нибудь языковой моделью; можно даже очень примитивной, но знающей, что "от ума" встречется чаще, чем "о тума".
Причём чаще по двум причинам: мало того, что Тума - редкое слово, так ещё и "о Тума" вряд ли скажут, а скажут "о Туме".

Я вот почти-сегментацию пробовал сделать на основе языковой модели на счётчиках буквенных n-gramm. И такое уже зашло: habr.com/ru/post/346578/ . А если модель нормальную сделать, знающую о словаре и о совместимости слов друг с другом, то точно всё будет хорошо.
👍
источник

NC

Nikolay Chudinov in Natural Language Processing
где взять частотность слов?
источник

D(

David (ddale) Dale in Natural Language Processing
Nikolay Chudinov
где взять частотность слов?
В каком-нибудь большом корпусе, типа Тайги.
Плюс нужен какой-то костыль для слов, которых нет в словаре, но которые адекватно собираются из морфем (или просто n-грамм, как у меня).
источник

NC

Nikolay Chudinov in Natural Language Processing
как вариант, смотреть несколько результатов и в каждом из них складывать частоты слов, чтоб получить сумму = частота фразы. Далее сравнивать "частоты фраз", та что max будет результатом. Пока так я вижу...
источник

D(

David (ddale) Dale in Natural Language Processing
Nikolay Chudinov
как вариант, смотреть несколько результатов и в каждом из них складывать частоты слов, чтоб получить сумму = частота фразы. Далее сравнивать "частоты фраз", та что max будет результатом. Пока так я вижу...
Более правильный вариант - не сравнивать, а перемножать. И не абсолютные частоты, а доли (т.е. деленные на общее число слов в корпусе), возможно, как-нибудь сглаженные.
Почему это полезно: фраза, в которой все слова умеренно-частые, будет предпочтена фразе, где есть одно суперчастое слово, и одно несуществующ ее.
Почему это логично: получая вероятность фразы как произведение вероятностей слов, ты получаешь настоящую языковую модель  - наивную (слова полагаются независимыми друг от друга), но таки обладающую всеми хорошими свойствами вероятностных моделей.
источник

NC

Nikolay Chudinov in Natural Language Processing
согласен
источник

I🍵

Iván 🍵 in Natural Language Processing
Nikolay Chudinov
согласен
А сама задача - проверка контрольных или чот такое?)
источник

NC

Nikolay Chudinov in Natural Language Processing
задача - понять что юзер хотел найти в большом книжном магазине
источник

I🍵

Iván 🍵 in Natural Language Processing
Nikolay Chudinov
задача - понять что юзер хотел найти в большом книжном магазине
а, сори
источник

VB

Vladimir Bougay in Natural Language Processing
Nikolay Chudinov
задача - понять что юзер хотел найти в большом книжном магазине
А точно сегментация нужна в принципе? Если задача найти книжку по названию, даже корявому, то может быть в разы эффективнее взять языковую модель, дообучить и сравнивать вектора запроса и книг
источник

АП

Алексей Пахомов in Natural Language Processing
В худшем случае можно искать по всем гипотезам
источник