找出带有扩展字母的单词,并保持该字母的首次出现

时间:2019-03-30 19:44:09

标签: python python-3.x nlp text-processing stop-words

我有一个dataframe列,其中包含文本数据。它很少有带有重复字母的单词。我想找到所有这些单词,然后将这些单词作为关键字存储在字典中,并将其正确的拼写作为字典中的值存储,然后将数据框中的单词替换为其字典中的值。例如,如果我的数据框中包含-

id   text
1     Hiiiiiii
2     Good morninggggggg
3     See you soooonnnn

1)我需要在数据框列中找到这样的单词 2)将这些单词存储在字典中{Hiiiiiii:嗨,Morninggggggg:早晨,soooonnnn:很快} 3)然后将数据框中的这些单词替换为字典中的值 4)最终输出应类似于-

id   text
1     Hi
2     Good morning
3     See you soon

1 个答案:

答案 0 :(得分:0)

以下功能报告带有重复的单词。请记住,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区分大小写。您可能需要将所有文本转换为小写,然后再进行进一步处理。