您无法通过传递选项给NLTK的POS标记和词形还原函数来使其处理其他语言。
一种解决方案是为每种语言获取一个训练语料库,并使用NLTK训练自己的POS标记器,然后找出每种语言的基于字典的词形还原解决方案。
但这可能有些过度,因为在意大利语、法语、西班牙语和德语(以及许多其他语言)中已经有了单一的停止解决方案:TreeTagger。它不如英语中的POS标记器和词形还原器先进,但仍然完成得很好。
您需要做的是在系统上安装TreeTagger并能够从Python中调用它。这里是miotto的GitHub repo,可以让您轻松实现。
以下代码段向您展示如何测试您是否正确设置了所有内容。正如您所见,我能够轻松地用一个函数调用进行POS标记和词形还原,无论是用英语还是用法语。
>>> import os
>>> os.environ['TREETAGGER'] = "/opt/treetagger/cmd"
>>> from treetagger import TreeTagger
>>> tt_en = TreeTagger(encoding='utf-8', language='english')
>>> tt_en.tag('Does this thing even work?')
[[u'Does', u'VBZ', u'do'], [u'this', u'DT', u'this'], [u'thing', u'NN', u'thing'], [u'even', u'RB', u'even'], [u'work', u'VB', u'work'], [u'?', u'SENT', u'?']]
>>> tt_fr = TreeTagger(encoding='utf-8', language='french')
>>> tt_fr.tag(u'Mon Dieu, faites que ça marche!')
[[u'Mon', u'DET:POS', u'mon'], [u'Dieu', u'NOM', u'Dieu'], [u',', u'PUN', u','], [u'faites', u'VER:pres', u'faire'], [u'que', u'KON', u'que'], [u'\xe7a', u'PRO:DEM', u'cela'], [u'marche', u'NOM', u'marche'], [u'!', u'SENT', u'!']]
自从这个问题被频繁提出(而且在我的看法中,安装过程不是非常简单直接),我将会写一篇关于此事的博客文章,并在完成后更新这个回答并附上链接。
修改:
以上提到的博客文章在此.