Ich habe diesen Code für die Berechnung der Textähnlichkeit mit TF-IDF.TFIDF-Algorithmus für Python
from sklearn.feature_extraction.text import TfidfVectorizer
documents = [doc1,doc2]
tfidf = TfidfVectorizer().fit_transform(documents)
pairwise_similarity = tfidf * tfidf.T
print pairwise_similarity.A
Das Problem ist, dass dieser Code nimmt als Eingabe blanke Saiten und ich mag die Dokumente zur Vorbereitung von Stoppwörtern, entwickelt werden und tokkenize entfernen. Also wäre die Eingabe eine Liste. Der Fehler, wenn ich die documents = [doc1,doc2]
mit den tokkenized Dokumente nennen ist:
Traceback (most recent call last):
File "C:\Users\tasos\Desktop\my thesis\beta\similarity.py", line 18, in <module>
tfidf = TfidfVectorizer().fit_transform(documents)
File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\feature_extraction\text.py", line 1219, in fit_transform
X = super(TfidfVectorizer, self).fit_transform(raw_documents)
File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\feature_extraction\text.py", line 780, in fit_transform
vocabulary, X = self._count_vocab(raw_documents, self.fixed_vocabulary)
File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\feature_extraction\text.py", line 715, in _count_vocab
for feature in analyze(doc):
File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\feature_extraction\text.py", line 229, in <lambda>
tokenize(preprocess(self.decode(doc))), stop_words)
File "C:\Python27\lib\site-packages\scikit_learn-0.14.1-py2.7-win32.egg\sklearn\feature_extraction\text.py", line 195, in <lambda>
return lambda x: strip_accents(x.lower())
AttributeError: 'unicode' object has no attribute 'apply_freq_filter'
Gibt es eine Möglichkeit, den Code zu ändern und die Liste machen akzeptieren oder habe ich wieder die tokkenized Dokumente in Strings zu ändern?
Sieht aus, als ob Sie die eigentliche Fehlermeldung (Sie haben die Traceback enthalten, aber nicht den Fehler, der ausgelöst wurde) fehlt. –
Hoppla. Ich bearbeite es. – Tasos
@Tasos Hat meine Antwort funktioniert, oder haben Sie immer noch Probleme? Können Sie ein minimales Beispiel für "doc1"/"doc2" geben, wenn meine Lösung nicht funktioniert hat? – chlunde