不要让NLTK单词标记化来标记单个单词' gotta'进入'得到'并且' ta'

时间:2017-03-27 08:09:39

标签: python nltk

我输入的字符串如下所示。当我使用nltk.word_tokenize时,它给了我一个单词的分词' gotta'进入'得到'和'。我不希望发生这种情况,我想把它标记为单一标记“#ta; beta”'本身。我不确定为什么会这样。有什么帮助可以避免这种情况或建议为什么会这样发生?测试代码如下。

test = "Sorry times up  I gotta split"
output = nltk.word_tokenize(test)
print output
In [22]: ['Sorry', 'times', 'up', 'I', 'got', 'ta', 'split']

在我正在进行的程序中,在预处理之后,我的单词到索引将它们作为单个单词。但是当对整个句子进行标记时,它会有所不同。因此,以后会面临错误。

1 个答案:

答案 0 :(得分:1)

尝试预处理gotta - > got-ta

>>> from nltk import word_tokenize
>>> sent = "Sorry times up  I gotta split"
>>> word_tokenize(sent)
['Sorry', 'times', 'up', 'I', 'got', 'ta', 'split']
>>> sent = "Sorry times up  I got-ta split"
>>> word_tokenize(sent)
['Sorry', 'times', 'up', 'I', 'got-ta', 'split']

此外,您可以使用其他标记器,例如toktok:

>>> from nltk.tokenize.toktok import ToktokTokenizer
>>> toktok = ToktokTokenizer()
>>> sent = "Sorry times up  I gotta split"
>>> toktok.tokenize(sent)
[u'Sorry', u'times', u'up', u'I', u'gotta', u'split']

或摩西:

>>> from nltk.tokenize.moses import MosesTokenizer
>>> moses = MosesTokenizer()
>>> moses.tokenize(sent)
[u'Sorry', u'times', u'up', u'I', u'gotta', u'split']