我有一个数据框,其中有一列包含文本数据。我想删除毫无意义的单词,然后从文本数据中将否定词如“不是”转换为“不是”。因为当我删除标点符号时,“ 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
如何实现?
答案 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删除行,请使用基本过滤器