Я хотел бы посмотреть совпадение фонетической строки здесь. Основная идея этого подхода состоит в том, чтобы получить фонетическое кодирование для каждой введенной строки, а затем сгруппировать варианты правописания по их кодированию. Затем вы можете выбрать наиболее частое изменение в каждой группе как «правильное» написание.
Существует несколько различных вариантов фонетического кодирования, и отличным пакетом в Python для проверки некоторых из них является jellyfish . Вот пример того, как использовать его с кодировкой Soundex :
import jellyfish
import pandas as pd
data = pd.DataFrame({
"name": [
"red rocks canyon",
"redrcks",
"redrock canyon",
"red rocks canyons",
"bosque",
"bosque escoces",
"bosque escocs",
"borland",
"borlange"
]
})
data["soundex"] = data.name.apply(lambda x: jellyfish.soundex(x))
print(data.groupby("soundex").agg({"name": lambda x: ", ".join(x)}))
Это печатает:
name
soundex
B200 bosque
B222 bosque escoces, bosque escocs
B645 borland, borlange
R362 red rocks canyon, redrcks, redrock canyon, red...
Это определенно не будет идеальным, и вам нужно быть осторожным, поскольку это может сгруппировать вещи слишком агрессивно, но я надеюсь, что это даст вам кое-что попробовать!