Очистка столбца на основе правописания? Панды - PullRequest
0 голосов
/ 12 мая 2019

У меня есть два очень важных, введенных пользователем, информационных столбца в моем фрейме данных.Они в основном очищены, за исключением одной проблемы: правописание и способ написания имен различаются.Например, у меня есть пять записей для одного имени: «каньон красных скал», «красные каньоны», «каньон красных скал», «каньоны красных скал».Этот набор данных слишком велик, чтобы я мог выполнить его вручную и очистить (2 миллиона записей).Существуют ли стратегии для очистки этих функций с помощью кода?

Screen_shot_of_data

1 Ответ

1 голос
/ 12 мая 2019

Я хотел бы посмотреть совпадение фонетической строки здесь. Основная идея этого подхода состоит в том, чтобы получить фонетическое кодирование для каждой введенной строки, а затем сгруппировать варианты правописания по их кодированию. Затем вы можете выбрать наиболее частое изменение в каждой группе как «правильное» написание.

Существует несколько различных вариантов фонетического кодирования, и отличным пакетом в 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...

Это определенно не будет идеальным, и вам нужно быть осторожным, поскольку это может сгруппировать вещи слишком агрессивно, но я надеюсь, что это даст вам кое-что попробовать!

...