Лучшая библиотека для нечеткого соответствия документа / дактилоскопии текста - PullRequest
10 голосов
/ 14 февраля 2012

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

Интересно, какая библиотека (которая в идеале способна взаимодействовать с Ruby) была бы лучшей для этой «дактилоскопии». Я видел нечеткое совпадение Люсена, но, похоже, это работает на уровне слов, в то время как в этом случае мы, вероятно, хотели бы представить гораздо большее подмножество документа. Причина нечетких совпадений заключается в том, что некоторые люди могут иметь препринт Word.doc, некоторые могут иметь окончательный PDF и т. Д.

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

Кажется, что SimHash , например реализация C будет подходящим вариантом, но мне все еще нужно поэкспериментировать больше.

1 Ответ

7 голосов
/ 07 марта 2012

Вы можете использовать pHash для такого рода работы.

И этот драгоценный камень поможет вамНачало работы:

require 'phash/text'
Phash::Text.new('first.txt') % Phash::Text.new('second.txt')
...