我有一个包含文本数据的数据框列。用重复的字母几乎没有单词。我想找到所有这些单词,然后将这些单词存储为字典中的键,将它们的正确拼写存储为字典中的值,然后将数据框中的单词替换为字典中的值。例如,如果我的数据框有像 -
id text
1 Hiiiiiii
2 Good morninggggggg
3 See you soooonnnn
1)我需要在dataframe列中找到这样的单词2)将这些单词存储在字典中{Hiiiiiii:嗨,morninggggggg:morning,soooonnnn:soon} 3)然后将数据框中的这些单词替换为字典中的值4)Final输出应该看起来像 -
id text
1 Hi
2 Good morning
3 See you soon
以下函数报告重复的单词。请记住,split()
通常在识别单词方面做得很平庸。你可能想用nltk.word_tokenize()
替换它。
import re
def find_bad(sent):
return [w for w in sent.split()
if re.search(r'(:?\w)\1\1', w, re.I)]
将函数应用于数据框中的每个句子并收集结果:
bad_words = df['text'].apply(find_bad).sum()
# ['Hiiiiiii', 'morninggggggg', 'soooonnnn']
我将跳过字典构建部分,因为它是(a)微不足道的,(b)需要用户交互。假设字典名称是corrections
。现在您可以使用字典来修复文本:
df['text'] = df['text'].replace(corrections, regex=True)
再次,请记住,replace
区分大小写。在进行任何进一步处理之前,您可能希望将所有文本转换为小写。