- 我正在尝试打印中文文本中存在的实体和pos。
- 我已经安装了#!pip3安装jieba,并使用Google colab进行以下脚本。
但是我得到了实体的空元组,而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的新手。我想知道正确的方法是什么?
编辑 3/21:Spacy 现在支持 NER 和 POS 标记
在此处查找 SpaCy 模型:https://spacy.io/models/zh
旧答案:
SpaCy 是一个很棒的软件包,但到目前为止还不支持中文,所以我认为这就是你没有得到 POS 结果的原因 - 即使你的句子是
"苹果正在考虑以10亿美元收购英国初创公司">
在繁体中文中,因此应返回"苹果"和"英国"作为ent
等。
对于繁体中文更广泛的NLP方法,您可以尝试使用斯坦福中文NLP包 - 您使用的是python,并且有可用于python的版本(请参阅演示脚本或Medium上的介绍),但原始版本是Java,如果您对此更熟悉的话。
不幸的是,spaCy 还没有预训练的中文模型(见这里),这意味着您必须使用默认的Chinese()
模型,该模型仅执行标记化,没有 POS 标记或实体识别。
不过,关于中文的spaCy肯定有一些工作正在进行中,请检查这里的问题。