我有一个由一组文本组成的数据集。 这些文字必须清除,因为它们是 Reddit 论坛或 Twitter 的摘录。
想法是仅保留这些文本中的基本单词。例如,我不想考虑数字,其中带有“ _”符号的单词以及其中包含数字的单词。
我受限制只能使用NLTK
库,当然也要使用Numpy。
所以我认为我应该使用该库中的Tokenizer清理数据,但是我需要文档/帮助来了解如何定义模式进行清理。
有人可以帮助我吗?
到目前为止,我确实尝试了这段代码:
tokenizer1 = RegexpTokenizer('\d+|\d')
tokenizer2 = RegexpTokenizer('\w+')
我的理解:
tokenizer1:仅考虑数字
tokenizer2:考虑字符串,直到下一个空格,因此仍包括数字。
我的想法是区别tokenizer1的结果 和tokenizer2删除数字。
这似乎可行,但是我不知道如何处理更困难的方面,例如不考虑包含数字的单词。
答案 0 :(得分:0)
为什么不使用标准单词标记器,然后按以下方式过滤标记:
import nltk
s = "some words contain numbers for example af345ed and l00p."
tokens = nltk.word_tokenize(s)
def isWordContainingNumber(w):
if any([c.isdigit() for c in w]) and any([c.isdigit() for c in w]):
return(True)
return(False)
print([t for t in tokens if isWordContainingNumber(t)])
#['af345ed', 'l00p']
print([t for t in tokens if not isWordContainingNumber(t)])
#['some', 'words', 'contain', 'numbers', 'for', 'example', 'and', '.']