Как я могу устранить ошибки записи, которые у меня есть в моих данных?

У меня есть фрейм данных (более 1 миллиона строк), в котором есть открытые текстовые столбцы, чтобы клиент мог писать все, что захочет. Слова с ошибками появляются часто, и я пытаюсь сгруппировать комментарии, которые грамматически одинаковы.

Например:

Я пытался использовать расстояние Левенштейна , но в вычислительном отношении это очень дорого. Можете ли вы сказать мне другой способ сделать это задание?

Спасибо!

2 ответа

это не тривиальная задача. Если бы я столкнулся с этой проблемой, мой подход был бы таким:

  • Обозначьте свои предложения. Есть много способов токенизировать предложение, самый простой способ — преобразовать предложение в список слов. НапримерI want to change my credit cardстановится[I, want, to, change, my, credit, card]. Другой способ - перевернуть окно размера n через ваше предложение, напримерI want toстановится['I w', ' wa', 'wan', 'ant', ...]для размера окна 3.
  • После токенизации вашего предложения создайте вложение (векторизацию), т.е. преобразуйте ваш токен в вектор чисел. Самый простой способ — использовать какую-нибудь готовую библиотеку, например TfidfVectorizer от sklearn. Если ваши данные заботятся о порядке слов, то необходим более сложный векторизатор.
  • После векторизации используйте алгоритм кластеризации. Самый простой из них — K-Means.

Конечно, это очень сложная задача, и подходов к решению этой проблемы может быть множество. То что я описал это самое простое готовое решение. Некоторые умные люди использовали разные стратегии, чтобы получить лучшие результаты. Одним из примеров является https://www.youtube.com/watch?v=nlKE4gvJjMo . Вы должны сделать это исследование в этой области самостоятельно.

Изменить: конечно, ваш подход хорош для небольшого набора данных. Но трудная часть заключается в том, как работать лучше, чем сложность O(n^2).

Расстояние Левенштейна имеет временную сложность O(N^2).

Если вы определяете максимальное расстояние, которое вас интересует, скажем, m, вы можете уменьшить временную сложность до O(Nxm). Максимальное расстояние в вашем контексте — это максимальное количество опечаток, которое вы допускаете, при этом рассматривая два комментария как идентичные.

Если вы не можете этого сделать, вы можете попробовать распараллелить задачу.

Другие вопросы по тегам