2016-06-08 8 views
0

У меня есть 2 документа AB (или 2 серии документов), и хотел бы получить новый документ, показывающий разницу между двумя документа: ABNLP Как получить разницу между 2 документов

разностными, есть несколько определений, одно: Список слов/«концепция» включает в а, но не в B.

Я имею в виду использование IDF TF для каждого предложения а и в, , такие как:

from sklearn.feature_extraction.text import TfidfVectorizer 
d1 = [open(f1) for f1 in text_files] 
tfidf = TfidfVectorizer().fit_transform(d1) 
pairwise_similarity = tfidf * tfidf.T 

Я не уверен, если это будет иметь значение для создания нового документа C = «AB», особенно Интересуется «семантической разница» в документе C

+0

Я не думаю, что это тривиальная проблема, на которую можно быстро ответить в сообщении SO. Я бы спросил в Reddit/machinelearning. – elyase

+0

Хорошо, конечно. Может быть, некоторые ссылки были бы полезны для начала расследования. – Brook

ответ

0

gensim вычисляет сходство между документами с помощью Cosine similarity (подробностей here) :

index = similarities.MatrixSimilarity(lsi[corpus]) # transform corpus to LSI space and index it 
sims = index[vec_lsi] # perform a similarity query against the corpus 

в приведенном выше коде, vec_lsi является документ а в БИС пространстве, и sims представляет собой массив сходства между а и документами в corpus.

В соответствии с wikipedia, вы можете превратить косинус сходства вокруг и вычислить угловое расстояние, которое является показатель расстояния:

distance = np.arccos(sims)/np.pi 

Обратите внимание, что это косинусное сходство и угловое расстояние является вектором на основе, и их интерпретация будет зависеть из чего состоят ваши векторы. В моем примере векторы - это латентные семантические индексы (LSI), поэтому угловое расстояние связано с расстоянием в семантическом пространстве.

+0

Но, он не дает ничего для создания документа C = A-B – Brook

 Смежные вопросы

  • Нет связанных вопросов^_^