Ich versuche mal schnell mein Problem zu beschreiben:
Ich habe eine Dataframe mit der Spalte "Name".
Manchmal schleichen sich Fehler in die Namen -- bspw.) Anstatt "Bosch" haben wir "Bosc h" oder "B0sch"
Jetzt will ich das Df einlesen, ein String als Input eingeben und es soll mir als Output den Spaltenwert geben, mit der höchsten Wahrscheinlichkeit.
Bspw)
(soll die Spalte 'Name' von dem DF sein)
Name: 'B0sch', 'Adidas', 'Bosch AG & CO' , 'Puma', ...
Input= 'Bosch'
Output: 'Mit x% Wahrscheinlichkeit ist dein gesuchtes Wort B0sch. (so in der Art)
Nun hatte ich schonmal eine ähnliche Frage gestellt und mir haben einige helfen können (danke an euch

Code: Alles auswählen
from collections import defaultdict
import nltk
from nltk.util import ngrams
import pandas as pd
import numpy as np
from sklearn import feature_extraction, metrics
import io
from tqdm import tqdm
df = pd.read_excel('excel.xlsx')
df = df['Name'].to_string().splitlines()
txt = 'Nike
def extract_features(text):
features = defaultdict(int)
for count in range(1, 4):
for ngram in ngrams(text, count):
features[ngram] += 1
return features
classifier = nltk.NaiveBayesClassifier.train((extract_features(line),line) for line in txt)
for line in df:
classified = classifier.classify(extract_features(line))
probdist = classifier.prob_classify(extract_features(line))
print(f"{classified:10s} | {probdist.prob(classified):0.2f} | {line}")
Jedoch wird hier das String 'Nike' Buchstabe für Buchstabe mit den Spaltenwerten verglichen
AUSGABE:
k | 0.37 | 0 Bosch
i | 0.2 | 0 Pina
i | 0.14 | 0 Bid. A
....