我有一个数据框,其中包含一个包含文本数据的列。我想删除那些毫无意义的词,并将“不是”的否定转换为“不是”来自文本数据。因为当我删除标点符号“不是”变成“不是”时,当我删除字母小于长度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
怎么实现这个?
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)使用SpaCy或NLTK的词形还原工具来转换字符串(尽管它们还会执行其他操作,例如将复数转换为单数 - 因此您可能最终需要编写自己的代码来执行此操作)。
2)使用来自NLTK或spacy的停用词来删除明显的停用词。或者,给它们提供你自己的停用词列表(它们的默认停用词就像是a,a,the)。
3)如果len <2删除行,则使用基本过滤器