Нечеткий поиск во время выполнения без использования базы данных \ индекса - PullRequest
1 голос
/ 11 июля 2010

Мне нужно отфильтровать поток текстовых статей, проверяя каждую запись на наличие нечетких совпадений предопределенной строки (я ищу наименования продуктов с ошибками, иногда они имеют разный порядок слов и дополнительные не буквенные символы, такие как «:» или «,»).

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

Ответы [ 2 ]

1 голос
/ 11 июля 2010

Как насчет использования расширения sqlite fts3?

CREATE VIRTUAL TABLE enrondata1, ИСПОЛЬЗУЯ fts3 (содержимое TEXT);

(Вы можете создать любое количество столбцов - все они будут проиндексированы)

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

(http://www.sqlite.org/fts3.html)

1 голос
/ 11 июля 2010

Эта проблема почти идентична Байесовской фильтрации спама и уже написанным для этого инструментам можно просто научиться распознавать в соответствии с вашими критериями.

добавлено в ответ на комментарий :

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

Вы можете использовать менее стохастические методы (например, Левенштейн), но в какой-то момент вы должны описать разницу между попаданиями и промахами.Прелесть байесовских методов, особенно если у вас в руках уже есть сегрегированный корпус, заключается в том, что вам на самом деле не нужно четко знать, как вы классифицируете.

...