Ich schreibe einen Algorithmus, der überprüft, wie viel eine Zeichenfolge gleich einer anderen Zeichenfolge ist. Ich verwende Sklearn Cosinus-Ähnlichkeit.Sklearn Kosinusähnlichkeit für Strings, Python
Mein Code ist:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
example_1 = ("I am okey", "I am okeu")
example_2 = ("I am okey", "I am crazy")
tfidf_vectorizer = TfidfVectorizer()
tfidf_matrix = tfidf_vectorizer.fit_transform(example_1)
result_cos = cosine_similarity(tfidf_matrix[0:1], tfidf_matrix)
print(result_cos[0][1])
Ausführen dieses Code für example_1, druckt ,336096927276. Wenn Sie es für Beispiel 2 ausführen, wird dasselbe Ergebnis ausgegeben. Das Ergebnis ist in beiden Fällen dasselbe, weil nur ein anderes Wort existiert.
Was ich will, ist eine höhere Punktzahl für Beispiel_1 zu bekommen, weil die verschiedenen Wörter "okey vs okeu" nur einen anderen Buchstaben haben. Im Gegensatz dazu gibt es in example_2 zwei völlig unterschiedliche Wörter "okey vs crazy".
Wie kann mein Code berücksichtigen, dass in einigen Fällen die verschiedenen Wörter nicht völlig verschieden sind?
Guter Vorschlag, aber 'von leven Import Levenshtein' wäre einfacher. – FTP
Meine Saiten sind Produkttitel. Ich versuche, 3 verschiedene Metriken zu kombinieren. Levenshtein, Cosine und Jaro Winkler, ich berechne den Mittelwert dieser 3 Metriken. – nesi