![]() |
Нужен алгоритм анализа текста, подбор релевантных вариантов
Наверное все видели когда неправильно набираешь текст в гугле например, то он предлагает свое значение. Мне требуется что-то похожее.
Пользователь вводит возможно бессмысленный набор букв (или машинный рандом, неважно), а программа должна каким-то образом сравнивать куски текста с базой слов в словаре и предлагать наиболее подходящие значения причем отсортированные по степени релевантности. Например, на запрос «натусупиалонесь» – выдаст как наиболее правильный «наступила осень». То есть программа должна проанализировать текст, разделить набор букв на слова и выбрать самые подходящие варианты слов. Не сталкивался ли кто с решениями такой задачи? Библиотеки, исходники, словари? |
Бесплатный пакет вряд ли найдете.
Тут придется разделять строку на кусочки и проверять каждый кусочек по отдельности на какую-то близость к известным словоформам, то есть еще и морфология! Результат где-то хранить временно. Потом пошагово выводить общую релевантность. Такого даже у Гугла нет. Вообще, задачка тянет на работу небольшой команды разработчиков не на один месяц. |
на запрос «натусупиалонесь» – выдаст... ссылку на эту тему.
|
Цитата:
Цитата:
Добавлено через 2 минуты Хорошо. А если упростить задачу и текст будет разделен по словам. Есть же выражение %LIKE% в mySQL. Может есть какой-то подобный способ выборки по базе данных? |
Цитата:
|
Попробуйте расстояние Хемминга поискать
|
Можно сделать нейросеть и обучить её программой, которая перемешивала бы каждое слово из базы по алгоритму.
|
Цитата:
|
Цитата:
Цитата:
Вообще для начала надо чётко сформализировать задачу: Из множества символов выбрать группу совпадующую с паттернами за исключением 2-3(?) символов или по-другому? Они ещё и могут быть местами поменяны?. тут уже начинается самое интересное: переборы вариантов. Если в лоб то просто циничным перебором, для начала ищем полные совпадения 3 букв/4/5 итп до несовпадения - меняем 6 на * проверяем 12345*7 (причём буквы в множестве имеют больший приоритет по сравнению с остальным алфавитом) - если поиск закончился значит либо пробел либо мы не правильно начали заменять с 6 пункта.. в общем как-то так + добавить весов вариантов каких нибудь.. Это чисто теория на практике надо будет ещё очень и очень оптимизировать такие гигантские вычисления Варианты: кэш и прочее, т.к. чаще всего люди либо просто ошибаются ( Жы-Шы, Варабей, Хлеб) Кстати пиша/пися этот текст в FF вспомнил про проверку орфографии.. ищите в исходниках FireFox. он предлагает поменять Жы-Шы на Шипы, что вроде близко к вашей задаче. а натусупиалонесь = натуралистичность |
Я нашел решение в триграммах Сфинкса (могу скинуть ссылку на статью на Хабре, если кого заинтересовало). Хотя пока не реализовал. Спасибо за FlashDevelop, все никак не проверю этого зверя:)
|
Если речь идет об ActionScript 3.0 то у Adobe уже имеется готовое решение. Проект "Squiggly". Правда в пререлизе еще, но пользоваться уже можно.
|
Цитата:
|
О том как этим пользоваться "Проверка орфографии в ActionScript 3.0". Подключить можно, уже пробовал. Ссылка на словари также имеется в посте.
|
Блин, с меня ящик пива:) Спасибо, огромное!
|
а ещё есть Яндекс.Спеллер
|
для быстрого поиска в гугле используются цепи Маркова. Погуглите примеры использования их, они просты в реализации.
|
| Часовой пояс GMT +4, время: 15:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.