Тестирование на похожее содержимое строки - PullRequest
2 голосов
/ 17 марта 2011

Я пишу бота, который будет анализировать посты и отвечать неопределенно связанными строками из базы данных. Я не стремлюсь к согласованности, просто к смутному сходству, которое может показаться кому-то неосведомленным о теме (но достаточно знающим, чтобы попытаться ответить). Какие методы помогут мне выбрать правильный ответ?

Одна вещь, которую я придумал, это создать список словаря, проверить, какие элементы списка есть в сообщении, и получить ответ из базы данных на основе этих результатов. Этот грубый метод был успешным около 10% времени (на основе 100 ответов на случайные сообщения). Я мог бы расширить список несколькими словами, но у этого метода есть свой предел. Есть лучшие?

(стр. S. Размер базы данных - около 500 000 ответов)

Ответы [ 3 ]

0 голосов
/ 17 марта 2011

Прежде всего, я думаю, что лучшее, на что вы можете надеяться, это около 50% ответов, если вы не готовы написать много кода.

Если вы хотите испачкать руки какой-нибудь статистикой, посмотрите термин «частота - обратная частота документа» . По сути, вы будете использовать частоту необычных слов, чтобы определить, какие ключевые слова имеют решающее значение для документа, и использовать это в качестве входных данных для алгоритма tf-idf, чтобы получить другие ответы с теми же ключевыми словами.

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

Существуют также более простые строковые метрики, которые можно использовать для проверки базового сходства. Взгляните на этот список строковых метрик .

0 голосов
/ 18 марта 2011

Есть PHP-функция с именем «Similar_text ()» (например: $ процент_схожий = Similar_text ($ str1, $ str2);) Это работает довольно хорошо, но я не придумал ничего подобного в C #.Если вы можете получить исходный текст для функции PHP, вы можете попытаться перевести его.Я думаю, что может быть и версия Java.

0 голосов
/ 17 марта 2011

Возможно, вы захотите взглянуть на векторное отображение и сходство.Скорее всего, «неопределенно связанная» проблема может быть решена статистическим анализом сходства.

Проверьте это новое использование сходства:

http://www.cromwell -intl.com / security / attack-изучение /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...