nltk.word_tokenize和nltk.pos_tag支持哪些语言?

11

我需要对多种语言的文本进行命名实体提取,包括西班牙语、葡萄牙语、希腊语、捷克语和中文。

这两个函数支持哪些语言?是否有方法可以使用其他语料库来包含这些语言?


https://stackoverflow.com/questions/41070105/pos-for-languages-other-than-english 提供了一些关于如何获取除英语以外的语言的POS标注器支持的指针。 - tripleee
2个回答

12

NLTK分词器支持的语言列表如下:

  • 'czech'
  • 'danish'
  • 'dutch'
  • 'english'
  • 'estonian'
  • 'finnish'
  • 'french'
  • 'german'
  • 'greek'
  • 'italian'
  • 'norwegian'
  • 'polish'
  • 'portuguese'
  • 'russian'
  • 'slovene',
  • 'spanish'
  • 'swedish'
  • 'turkish'

这对应于在Windows中存储的C:\Users\XXX\AppData\Roaming\nltk_data\tokenizers\punkt中的pickle。当进行标记化时,您可以使用键'language'输入该内容。

nltk.word_tokenize(text, language='italian')

4

默认情况下,这两个函数仅支持英文文本。虽然文档中没有明确说明,但您可以通过查看源代码来验证:

  1. pos_tag() 函数从此文件加载标记器:'taggers/maxent_treebank_pos_tagger/english.pickle'。 (请参见此处)

  2. word_tokenize() 函数使用 Treebank 分词器,该分词器使用正则表达式将文本(英文)标记为 Penn Treebank 语料库中的标记。 (请参见此处)


但是 word_tokenize 在西方语言中表现良好。这是否意味着我可以使用它,但不能用于不使用空格分隔单词的语言? - Michael
他们在这里解释了算法(http://www.cis.upenn.edu/~treebank/tokenization.html)。由于西方语言通常通过空格分隔,因此它应该可以正常工作。我只尝试过德语,看起来还不错。 - Suzana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接