Spacy 中文文本的词性标注和 NER

POS tagging and NER for Chinese Text with Spacy

但是我得到的实体元组是空的,pos_ 没有结果。

from spacy.lang.zh import Chinese

nlp = Chinese()
doc = nlp(u"蘋果公司正考量用一億元買下英國的新創公司")

doc.ents
# returns (), i.e. empty tuple


for word in doc:
    print(word.text, word.pos_)

''' returns
蘋果 
公司 
正 
考量 
用 
一 
億元 
買 
下 
英國 
的 
新創 
公司 
'''

我是 NLP 新手。我想知道正确的做法是什么?

不幸的是,spaCy 还没有预训练的中文模型(参见 here),这意味着您必须使用默认的 Chinese() 模型,它只执行标记化,没有 POS 标记或实体认出。

虽然 spaCy 的中文确实有一些正在进行的工作,请检查问题 here

编辑 3/21:Spacy 现在支持 CN

的 NER 和 POS 标记

在这里找到 SpaCy 模型:https://spacy.io/models/zh

旧答案:

SpaCy 是一个很棒的软件包,但目前还不支持中文,所以我认为这就是您没有获得 POS 结果的原因 - 即使您的句子是

"Apple is looking at buying U.K. startup for billion"

在繁体中文中,因此应该 return“Apple”和“U.K”。作为 ent,等等。

对于繁体中文的更广泛的 NLP 方法,您可以尝试使用 Stanford Chinese NLP package - you are using python, and there are versions available for python (see a demo script or an intro on Medium),但如果您更习惯的话,原文是 Java。