2010-02-17 2 views
5

Я использовал tf/idf для вычисления сходства между двумя документами. Он имеет некоторые ограничения и не работает очень хорошо.Сходство документа

Я искал LDA (выделенное выделение дирихле) для вычисления подобия документа. Я не знаю много об этом. Я не мог найти много вещей о моей проблеме.

Не могли бы вы предоставить мне какой-либо учебник, связанный с моей проблемой? Или вы можете дать некоторые советы, как я могу достичь этой задачи с помощью LDA ???

Благодаря

P.S: также есть ли исходный код Availabe выполнить такую ​​задачу с LDA ??

+0

Можете ли вы уточнить, почему косинус сходство не работает для вас? –

ответ

0

Возможно, вы думаете о LSA (латентный семантический анализ), который является очень распространенным решением этой проблемы.

+0

Привет, Спасибо за ваш ответ. Да, я знаю об LSA, и я также реализовал его. Я использовал пакет JAMA для SVD, но у меня была проблема: если мои строки меньше, чем columsn, это не сработает :(Можете ли вы рассказать мне о любом другом пакете SMALL svd? – user238384

1

У вас есть взгляд на Луцену и Маху?

Это может быть полезно - Latent Dirichlet Allocation с Lucene и Mahout.

+0

Спасибо, можете ли вы также ответить, можно ли вычислить сходство между двумя документами с помощью LDA? Как правило, люди говорили, что могут использоваться для неконтролируемой кластеризации :( – user238384

+0

Извините, я не знаю достаточно о LDA, чтобы предложить эксперту ответ на этот вопрос, не являющийся частью Mahout, что Я использовал. Однако мое понимание кластеризации заключается в том, что ваши объекты группировки, основанные на некоторой мерилотичности, в этом случае будут LDA. –

0

Немного устарел, но для всех, кого это интересует, взгляните на это blog post (отказ от ответственности: это мой собственный блог). Алгоритм, описанный здесь, и связанный код, вероятно, будут делать то, что вам нужно, если у вас нет вашего сердца, установленного на каком-либо конкретном подходе.

Что касается комментария Шашиканта, то сходство с косинусом может быть не очень хорошим вариантом, поскольку подписи пропорциональны по длине документам. Предпочтительны константные подписи.

0

Попробуйте эту услугу для вычисления косинуса сходства между двумя документами

http://www.scurtu.it/documentSimilarity.html

import urllib,urllib2 
import json 
API_URL="http://www.scurtu.it/apis/documentSimilarity" 
inputDict={} 
inputDict['doc1']='Document with some text' 
inputDict['doc2']='Other document with some text' 
params = urllib.urlencode(inputDict)  
f = urllib2.urlopen(API_URL, params) 
response= f.read() 
responseObject=json.loads(response) 
print responseObject 
Смежные вопросы