如何为nltk.word_tokenize定义特殊的"不可识别"单词

Sui*_*vez 7 tokenize nltk

我用它nltk.word_tokenize来标记一些包含编程语言,框架等的句子,这些句子被错误地标记化.

例如:

>>> tokenize.word_tokenize("I work with C#.")
['I', 'work', 'with', 'C', '#', '.']
Run Code Online (Sandbox Code Playgroud)

有没有办法输入这样的"例外"列表给tokenizer?我已经编制了一份我不想分割的所有内容(语言等)的列表.

Suz*_*ana 4

多词表达式分词器应该就是您所需要的。

您将异常列表添加为元组,并向其传递已经标记化的句子:

tokenizer = nltk.tokenize.MWETokenizer()
tokenizer.add_mwe(('C', '#'))
tokenizer.add_mwe(('F', '#'))
tokenizer.tokenize(['I', 'work', 'with', 'C', '#', '.'])
['I', 'work', 'with', 'C_#', '.']
tokenizer.tokenize(['I', 'work', 'with', 'F', '#', '.'])
['I', 'work', 'with', 'F_#', '.']
Run Code Online (Sandbox Code Playgroud)