Tokenizer模式如何与NLTK一起使用

时间:2019-10-13 12:58:07

标签: nltk

我有一个由一组文本组成的数据集。 这些文字必须清除,因为它们是 Reddit 论坛或 Twitter 的摘录。

想法是仅保留这些文本中的基本单词。例如,我不想考虑数字,其中带有“ _”符号的单词以及其中包含数字的单词。

我受限制只能使用NLTK库,当然也要使用Numpy。

所以我认为我应该使用该库中的Tokenizer清理数据,但是我需要文档/帮助来了解如何定义模式进行清理。

有人可以帮助我吗?

到目前为止,我确实尝试了这段代码:

tokenizer1 = RegexpTokenizer('\d+|\d')
tokenizer2 = RegexpTokenizer('\w+')

我的理解:

tokenizer1:仅考虑数字

tokenizer2:考虑字符串,直到下一个空格,因此仍包括数字。

  

我的想法是区别tokenizer1的结果   和tokenizer2删除数字。

这似乎可行,但是我不知道如何处理更困难的方面,例如不考虑包含数字的单词。

1 个答案:

答案 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', '.']