Эффективный способ заменить неправильные слова в Серии строк в Python - PullRequest
2 голосов
/ 22 апреля 2019

Я работаю с текстовыми данными, которые написаны от руки, поэтому в них много орфографических ошибок. В настоящее время я работаю с pyspellchecker для очистки данных и использую метод correct(), чтобы найти наиболее вероятное слово, когда слово не существует. Мой подход состоял в том, чтобы создать словарь со всеми плохо написанными словами в качестве ключей и наиболее вероятным словом в качестве значения:

dic={}
for i in df.text:
    misspelled = spell.unknown(i.split())
    for word in misspelled:
        dic[word]=spell.correction(word)

Даже если это работает, это происходит очень медленно. Таким образом, я хотел знать, есть ли более быстрый вариант для реализации этого. У вас есть идеи?

Редактировать: в df.text содержится 10571 строка, а длина строк обычно составляет 5-15 слов. Каждый цикл занимает около 3-5 секунд, что составляет в общей сложности около 40000 секунд для запуска всего цикла.

1 Ответ

0 голосов
/ 22 апреля 2019

Если все, что вы хотите сделать, это создать сопоставление из слов с ошибками, с которыми вы столкнулись, в соответствии с предложением, вы можете уменьшить размер набора данных, удалив дублирующиеся слова. Это сведет к минимуму количество вызовов к spell.unknown и spell.correction, а также предотвратит ненужные обновления содержимого словаря.

uniquewords = set().union(*(sentence.split() for sentence in df.text))
corrections = {word: spell.correction(word) for word in spell.unknown(uniquewords)}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...