Алгоритм сходства текста Javascript - PullRequest
11 голосов
/ 18 февраля 2011

Я создаю веб-сайт, который должен собирать различные новостные ленты и хотел бы, чтобы тексты сравнивались на предмет сходства.Что мне нужно, это какой-то алгоритм сходства новостных текстов .Я знаю, что PHP имеет функцию Similar_text, и я не уверен, насколько он хорош + мне это нужно для JavaScript.Так что если кто-то может указать мне пример или плагин или любую инструкцию о том, как это возможно, или, по крайней мере, где искать и начать расследование.

Ответы [ 2 ]

12 голосов
/ 18 февраля 2011

Существует реализация javascript метрики расстояния Левенштейна, которая часто используется для сравнения текста.Если вы хотите сравнить целые статьи или заголовки, хотя вам лучше рассмотреть пересечения между наборами слов, из которых состоит текст (и частотой этих слов), а не просто мерами сходства строк.

10 голосов
/ 18 февраля 2011

Вопрос о том, похожи ли два текста, является философским, если вы точно не укажете, что это должно означать.Рассмотрим струны «дом» и «мышь».С семантического уровня они не очень похожи, но они очень похожи по своему «внешнему виду» на 1002 *, потому что отличается только одна буква (и в этом случае вы можете пройти на расстояние Левенштейна *)1004 *).

Чтобы принять решение о сходстве, вам нужно соответствующее текстовое представление .Например, вы можете извлечь и сосчитать все н-грамм и сравнить два результирующих частотных вектора, используя меру подобия, например, косинусное сходство .Или вы можете основать слова в их корневой форме после удаления всех стоп-слов , суммировать их вхождения и использовать this в качестве входных данных для меры сходства.

Существует множество подходов и статей на эту тему, например, один о коротких текстах.В любом случае: чем выше уровень абстракции, на котором вы хотите решить, похожи ли два текста, тем сложнее будет это сделать.Я думаю, что ваш вопрос нетривиален (и, следовательно, мой ответ довольно абстрактен) ...; -)

...