2016-06-08 20 views
0

Ich habe 2 Dokumente AB (oder 2-Serie von Dokumenten) bekommen, und möchte die ein neues Dokument Unterschied zwischen den beiden Dokumenten, erhalten: ABNLP Wie den Unterschied zwischen zwei Dokumenten

von Differenz, es mehrere Definitionen sind, ist: Liste der Wörter/„Konzept“ sind in A, aber nicht in B.

ich für jeden Satz von A und B, wie TF IDF des Verwendens denke:

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 

Ich bin nicht sicher, ob dies relevant wäre, ein neues Dokument C = „AB“ zu erzeugen, besonders ist interessiert „semantischer Unterschied“ in dem Dokument C

+0

Ich glaube nicht, dass dies ein triviales Problem ist, das in einem SO Post schnell beantwortet werden kann. Ich würde in Reddit/machineLearning fragen. – elyase

+0

Ok, sicher. Vielleicht wären einige Referenzen nützlich, um mit der Untersuchung zu beginnen. – Brook

Antwort

0

GENSIM die Ähnlichkeit zwischen Dokumenten berechnet unter Verwendung Cosine similarity (Details here) : oben

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

im Code

ist vec_lsi ein Dokument A in LSI Raum und sims ist ein Array von Ähnlichkeiten zwischen A und den Dokumenten in corpus.

Per wikipedia können Sie Kosinusähnlichkeit drehen sich um und Winkelabstand berechnen, die eine Abstandsmetrik:

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

Beachten Sie, dass diese Kosinusähnlichkeit und Winkelabstand sind vektorbasiert und deren Interpretation wird davon abhängen, Woraus deine Vektoren bestehen. In meinem Beispiel handelt es sich bei den Vektoren um Latent Semantic Indexing (LSI) -Punkte, so dass der Winkelabstand mit der Entfernung im semantischen Raum zusammenhängt.

+0

Aber es bietet nichts, um das Dokument C = A-B zu generieren – Brook

Verwandte Themen