2015-04-24 4 views
0

В настоящее время я выполняю проект java в NLP/IR и довольно новичок в этом. Проект состоит из коллекции с около 1000 документами, где каждый документ содержит около 100 слов, структурированных как сумка слов с временной частотой. Я хочу найти похожие документы на основе документа (из коллекции).Сравнение документов - сходство документов

Использование TF-IDF, вычисление tf-idf для запроса (данный документ) и любой другой документ в коллекции, а затем сравнение этих значений как вектора с подобием косинуса. Может ли это дать некоторое представление об их сходстве? Или это было бы неразумно из-за большого запроса (документа)? Есть ли какие-либо другие меры сходства, которые могли бы работать лучше?

Спасибо за помощь

ответ

1

TF-IDF на основе подобия, как правило, с использованием косинуса для сравнения вектора, представляющим условие запроса к набору вектора, представляющему значение TF-IDF документов, общий подход для вычисления «подобия».

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

Сегодня «смысловое сходство» привлекает больше интереса, чем традиционные IR-модели на основе ключевых слов. Если это ваша область интересов, вы можете ознакомиться с результатами общих задач SemEval на 2012-2015 годы.

+0

Спасибо за ответ! Я понимаю разные «типы» сходства, о которых вы говорили. Если бы я пошел с TF-IDF, подход сходства косинусов. Я бы просто использовал один из документов в качестве запроса для остальной коллекции (кроме той же)? Или это другие способы? – user3930642

+0

Запросы, как правило, короткие, в то время как документы обычно более длинные. При сравнении документов вы, вероятно, захотите сравнить свои векторы TF-IDF друг с другом. Однако, когда вы подаете полный документ в виде запроса в ИК-систему, он может просто рассматривать его как пакет слов (TF = 1, IDF = 1 для всех слов в сумке) - так что вы, вероятно, не должны этого делать , – rec

1

Если вы хотите сравнить два документа с помощью TF-IDF, вы можете это сделать. Поскольку вы упоминаете, что каждый документ содержит 100 слов, в худшем случае может быть 1000 * 100 уникальных слов. Итак, im, предполагая, что ваши векторы построены на всех уникальных словах (поскольку все документы должны быть представлены в одном измерении). Если нет. уникальных слов слишком высоки, вы можете попробовать использовать некоторые методы уменьшения размерности, чтобы уменьшить размеры (например, PCA). Но то, что вы пытаетесь сделать, правильно, вы всегда можете сравнить документы, подобные этому, для поиска сходства между документами.

Если вы хотите схожесть больше в смысле семантики, вы должны посмотреть на методы типа LDA (тема моделирования).