如何转换带有相同重复字母的否定词和单个单词

时间:2019-03-30 14:56:30

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

我有一个数据框,其中有一列包含文本数据。我想删除毫无意义的单词,然后从文本数据中将否定词如“不是”转换为“不是”。因为当我删除标点符号时,“ is n't”变成“ isn t”,而当我删除长度小于2的字母时,“ t”将被完全删除。因此,我想执行以下3个任务- 1)将否定词如“不是”转换为“不是” 2)删除毫无意义的单词 3)删除少于2个字母的长度 例如,df列看起来类似于此-

user_id     text data column
    1        it's the coldest day
    2        they aren't going
    3        aa
    4        how are you jkhf
    5        v
    6        ps
    7       jkhf

输出应为-

user_id     text data column
    1        it is the coldest day
    2        they are not going
    3        
    4        how are you 
    5        
    6       
    7      

如何实现?

2 个答案:

答案 0 :(得分:1)

def is_repetitive(w):
    """Predicate, true for words like jj or aaaaa."""
    w = str(w)  # caller should have provided a single word as input
    return len(w) > 1 and all((c == w[0]  for c in w[1:]))

将语料库中的所有单词提供给该函数, 积累重复单词列表。 然后将这些单词添加到停用词列表中。

答案 1 :(得分:0)

1)使用SpaCy或NLTK的lemmatization工具转换字符串(尽管它们还执行其他操作,例如也将复数转换为单数-因此您可能最终需要编写自己的代码才能执行此操作)。

2)使用NLTK或spacy中的停用词删除明显的停用词。或者,向他们提供自己的停用词列表(它们的默认停用词是is,a,the)。

3)如果len <2删除行,请使用基本过滤器