Эффективный алгоритм сопоставления фраз - PullRequest
4 голосов
/ 21 февраля 2011

У меня есть набор из примерно 7 миллионов фраз, которые нужно сопоставить с примерно 300 миллионами запросов.

Запросы могут быть подстрока или содержать сами фразы.По сути, я хочу измерить «сходство» между двумя фразами [не обязательно расстояние редактирования]

Может кто-нибудь дать несколько указаний на эффективные алгоритмы, чтобы сделать это.Я бы предпочел распределенные алгоритмы, так как я собираюсь сделать это на Hadoop посредством потоковой передачи с использованием python.

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011
1 голос
/ 22 февраля 2011

Это, по крайней мере, не очень тривиально, потому что у вас есть с одной стороны очень много данных, а с другой стороны еще больше.

Ультра простейшим подходом будет индекс люцена на 7 млн. фразы и пусть задание hadoop запрашивает индекс. Не совсем уверен, нужен ли вам сервер Solr для этого или какие-либо подобные реализации в python.

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

На шаге сокращения вы можете перейти к сокращению ключевого слова и записать все связанные фразы со счетом. (или что хочешь)
Для сходства вы можете прочитать далее здесь:

Сходство Apache Lucene
Сам Apache Lucene

...