Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Нужен алгоритм анализа текста, подбор релевантных вариантов (http://www.flasher.ru/forum/showthread.php?t=144679)

Astraport 18.09.2010 10:56

Нужен алгоритм анализа текста, подбор релевантных вариантов
 
Наверное все видели когда неправильно набираешь текст в гугле например, то он предлагает свое значение. Мне требуется что-то похожее.

Пользователь вводит возможно бессмысленный набор букв (или машинный рандом, неважно), а программа должна каким-то образом сравнивать куски текста с базой слов в словаре и предлагать наиболее подходящие значения причем отсортированные по степени релевантности. Например, на запрос «натусупиалонесь» – выдаст как наиболее правильный «наступила осень».
То есть программа должна проанализировать текст, разделить набор букв на слова и выбрать самые подходящие варианты слов.

Не сталкивался ли кто с решениями такой задачи? Библиотеки, исходники, словари?

mooncar 18.09.2010 11:33

Бесплатный пакет вряд ли найдете.
Тут придется разделять строку на кусочки и проверять каждый кусочек по отдельности на какую-то близость к известным словоформам, то есть еще и морфология! Результат где-то хранить временно. Потом пошагово выводить общую релевантность.
Такого даже у Гугла нет.
Вообще, задачка тянет на работу небольшой команды разработчиков не на один месяц.

iNils 18.09.2010 11:36

на запрос «натусупиалонесь» – выдаст... ссылку на эту тему.

Astraport 18.09.2010 12:24

Цитата:

Бесплатный пакет вряд ли найдете.
Тут придется разделять строку на кусочки и проверять каждый кусочек по отдельности на какую-то близость к известным словоформам, то есть еще и морфология! Результат где-то хранить временно. Потом пошагово выводить общую релевантность.
Такого даже у Гугла нет.
Да, я так и предполагал. Мне такая работа не под силу. Вот и ищу подобные реализации.
Цитата:

на запрос «натусупиалонесь» – выдаст... ссылку на эту тему.
На все форумы где я спрашивал:)

Добавлено через 2 минуты
Хорошо. А если упростить задачу и текст будет разделен по словам. Есть же выражение %LIKE% в mySQL. Может есть какой-то подобный способ выборки по базе данных?

i.o. 18.09.2010 20:00

Цитата:

Такого даже у Гугла нет.
зато во FlashDevelop автокомплит именно так работает. Ищет наиболее похожие названия на ввод всякой несуразицы.

VovkaMorkovka1 24.09.2010 23:48

Попробуйте расстояние Хемминга поискать

Psycho Tiger 24.09.2010 23:56

Можно сделать нейросеть и обучить её программой, которая перемешивала бы каждое слово из базы по алгоритму.

gloomyBrain 25.09.2010 00:46

Цитата:

зато во FlashDevelop автокомплит именно так работает
Насколько я помню, во FlashDevelop поиск идет по последовательности букв, а не по похожести. То есть, если набрать ader одним из вариантов будет addEventListener, т.к. в этом слове эти буквы идут друг за другом. Если набрать adezer, то addEventListener в окошке автокомплита не появится

Котяра 25.09.2010 01:19

Цитата:

Попробуйте расстояние Хемминга поискать
Цитата:

Сообщение от Psycho Tiger (Сообщение 938351)
Можно сделать нейросеть и обучить её программой, которая перемешивала бы каждое слово из базы по алгоритму.

Вы ещё рандомизированный алгоритм стохастической аппроксимации предложите)

Вообще для начала надо чётко сформализировать задачу:

Из множества символов выбрать группу совпадующую с паттернами за исключением 2-3(?) символов или по-другому? Они ещё и могут быть местами поменяны?.
тут уже начинается самое интересное:
переборы вариантов.
Если в лоб то просто циничным перебором, для начала ищем полные совпадения 3 букв/4/5 итп до несовпадения - меняем 6 на *
проверяем 12345*7 (причём буквы в множестве имеют больший приоритет по сравнению с остальным алфавитом) - если поиск закончился значит либо пробел либо мы не правильно начали заменять с 6 пункта..
в общем как-то так + добавить весов вариантов каких нибудь..
Это чисто теория на практике надо будет ещё очень и очень оптимизировать такие гигантские вычисления
Варианты: кэш и прочее, т.к. чаще всего люди либо просто ошибаются ( Жы-Шы, Варабей, Хлеб)

Кстати пиша/пися этот текст в FF вспомнил про проверку орфографии..
ищите в исходниках FireFox.
он предлагает поменять Жы-Шы на Шипы, что вроде близко к вашей задаче.
а натусупиалонесь = натуралистичность

Astraport 06.10.2010 10:33

Я нашел решение в триграммах Сфинкса (могу скинуть ссылку на статью на Хабре, если кого заинтересовало). Хотя пока не реализовал. Спасибо за FlashDevelop, все никак не проверю этого зверя:)


Часовой пояс GMT +4, время: 15:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.