Какой самый простой способ сравнить большое количество похожего текста? - PullRequest
4 голосов
/ 22 июня 2010

несколько открытый вопрос здесь, так как я в основном ищу мнения.Я собираю некоторые данные из craigslist для подходящей рекламы в моем регионе, так как я собираюсь переехать.Моя цель - иметь возможность сравнивать элементы, чтобы увидеть, когда что-то дублируется, чтобы я не тратил весь день на просмотр одних и тех же 3 объявлений.Проблема в том, что они немного меняют ситуацию, чтобы обойти фильтры CL.

У меня уже есть некоторое регулярное выражение для поиска адресов и телефонных номеров для сравнения, но это не самое надежное.Кто-нибудь знаком с простым методом сравнения всего документа и, возможно, показать что-то простое, например, «80% похоже»?Я ничего не могу придумать, поэтому я подозреваю, что мне придется начинать с нуля, чтобы найти собственное решение, но решил, что стоит спросить коллективного гения stackoverflow:)

Предпочитаемые языки / методыбыть python / php / perl, но если это отличное решение, я довольно открыт.

Обновление: одна вещь, на которую стоит обратить внимание, это то, что, поскольку я буду хранить очищенные данные RSS-канала для apts в моей области(Лос-Анджелес) в локальной БД, предпочтительный метод будет включать в себя способ сравнить его со всем, что я в настоящее время знаю.Это может показаться чем-то вроде демонстрации, так как это может стать очень долгим процессом по мере увеличения количества сообщений.

Ответы [ 5 ]

2 голосов
/ 09 июля 2010

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

1 голос
/ 22 июня 2010

Вы можете использовать xdiff .Доступно расширение xdiff PECL для PHP .

Или используйте similar_text до для вычисления сходства между двумя строками

1 голос
/ 24 июня 2010

Вы можете использовать difflib для непосредственного вычисления различий в python.

Редактировать: вы можете рассмотреть возможность создания хэша содержимого некоторым способом, чтобы уменьшить объем текста, который должен«сравнить при».Например, удалите все пробелы, знаки препинания, теги и т. Д. И просто посмотрите на фактический контент.

1 голос
/ 22 июня 2010

Есть несколько довольно сложных проектов, чтобы найти дубликаты текста. Одним из них является Simian . Посмотрите на это.

0 голосов
/ 09 июля 2010

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

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