Алгоритм нахождения сходства вопросов - PullRequest
3 голосов
/ 27 февраля 2012

Я сделал тот же анализ данных и вытащил все вопросы об интервью от Google и Microsoft на Glassdoor: http://letschat.info/?p=34

http://letschat.info/?p=37

У меня там два списка.

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

Я немного погуглил и нашел этот проект:

http://lucene.apache.org/core/

и я мог бы сделать следующее: http://javatechniques.com/blog/lucene-in-memory-text-search-example/

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

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

Я хочу попытаться свести список вопросов к списку уникального количества вопросов.

Обновление:

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

Вот ссылка на актуальный код: http://letschat.info/ranking-of-reduced-amazon-questions/

Это не слишком сложно. Вот пример результатов: http://letschat.info/ranking-of-reduced-amazon-questions/

из первоисточника: http://letschat.info/list-of-amazon-questions/

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

На самом деле, косинусное сходство на tf-idf векторы , которое реализует Lucene, является распространенным (и довольно простым) способом измерения сходства между документами. Я бы попробовал на твоем месте (хотя твои документы могут быть немного короткими, чтобы он действительно функционировал). Lucene также неплохо нормализует текст.

0 голосов
/ 03 марта 2012

Simmetrics - это библиотека, которая предлагает несколько алгоритмов сравнения строк. Проверьте, какие из них лучше всего подходят для ваших нужд.

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

...