Also schlägst du vor mit einer anderen Bibliothek die Daten einzulesen ?
Wie bspw. openpyxl
Python Excel Vergleich Werte
Du hast dich jetzt schon für einen anderen Ansatz entschieden, wenn ich das korrekt verstanden habe, aber mal der Vollständigkeit halber:
'nltk.edit_distance' ist nur mit Einschränkung zu empfehlen. Das verwendet, soweit ich das sehe, die "Lehrbuchimplementierung" mit Dynamic Programming und ist in reinem Python geschrieben. Für kleine Mengen und zum Rumspielen ist das okay. Aber wenn Performance wichtig ist, würde ich das nicht empfehlen. In der Fachliteratur wurden diverse Verbesserungen der Zeichenkettendistanz beschrieben. Auf Pypi findet man eine handvoll Implementierungen, die in C, C++ und/oder Cython implementiert sind und zumindest teilweise einige dieser optimierten Algorithmen einsetzen. Wenn es um größere Datenmengen, d.h. viele Vergleiche geht, würde ich daher dort schauen und dann die Implementierung nehmen, die für dich am besten funktioniert.
Habe es doch geschafft, indem ich einfach die zu betrachtende Spalte ausgewählt und dann habe ich einfach
in eine Variable gespeichert. Auch für den zweiten Excel Sheet.
Jetzt hatte ich extra einige Buchstaben für Testzwecke entfernt und habe den Code abgespielt.
Jetzt bekommen ich überall
D.h. der Algorithmus erkennt Ni mit 100% WK als Nike an ?
Und wie könnte ich jetzt einfach, in dem Fall, Ni als Nike ändern ?
Code: Alles auswählen
x = df_correct['name'].to_string().splitlines()
Jetzt hatte ich extra einige Buchstaben für Testzwecke entfernt und habe den Code abgespielt.
Jetzt bekommen ich überall
die Wahrscheinlichkeit 1.Nike | 1 | Ni
D.h. der Algorithmus erkennt Ni mit 100% WK als Nike an ?
Und wie könnte ich jetzt einfach, in dem Fall, Ni als Nike ändern ?
...unter den gegebenen Auswahlmöglichkeiten, genau. Wenn Du meinen Code benutzt hast, sind das natürlich 100%, denn die Anzahl der korrekten Möglichkeiten ist mit 2 ja sehr überschaubar, und die beiden Namen "Nike" und "Bosch AG" unterscheiden sich ja dann doch sehr deutlich.
Ich würde dem DataFrame zu Kontrollzwecken zwei neue Spalten hinzufügen, so im Kern (ungetestet):
Code: Alles auswählen
def predict_name(val):
# Korrekten Namen 'name' und Wahrscheinlichkeit 'prob' berechnen
return pd.Series({'name': name, 'prob': prob})
df[['name', 'prob']] = df.Marken.apply(predict_name, axis=1)