【问题标题】:SpaCy results not matching documentationSpaCy 结果与文档不匹配
【发布时间】:2017-09-19 06:38:07
【问题描述】:

我尝试了 Spacy 网站https://spacy.io/docs/usage/dependency-parse 上给出的解析示例,但我的结果与网站上演示的不一样,我的结果似乎不正确。我正在使用 spacy 版本 1.9.0、模型 en_core_web_md 和 python 版本 3.5.2。示例转载如下:

from spacy.symbols import nsubj
doc = nlp(u'Credit and mortgage account holders must submit their requests.')
holders = doc[4]
span = doc[holders.left_edge.i : holders.right_edge.i + 1]
span.merge()

span.merge() 的输出是

holders

然后继续示例:

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

输出是

Credit NOUN npadvmod submit
and CCONJ cc Credit
mortgage NOUN compound account
account NOUN conj Credit
holders NOUN nsubj submit
must VERB aux submit
submit VERB ROOT submit
their ADJ poss requests
requests NOUN dobj submit
. PUNCT punct submit

但是,该网站展示了不同的输出:

# Credit and mortgage account holders nsubj NOUN submit
# must VERB aux submit
# submit VERB ROOT submit
# their DET det requests
# requests NOUN dobj submit

在预期结果中,holders.lefts.i 和 holder.rights.i 不相同,因此 span.merge 给了我们一个短语

此外,我打印原始 Doc 对象的名词块:

doc = nlp(u'Credit and mortgage account holders must submit their requests.')
for nchunk in list(doc.noun_chunks):
  print(nchunk)

给了

holders
their requests

我是 spacy 和 NLP 的新手。如果我遗漏了一些明显的东西,请原谅。

【问题讨论】:

  • 如果您的意思是它在他们的演示中给出了不同的结果,这是可能的。他们有几个版本(虽然我不确定他们在他们的网站上使用的是哪个版本)。

标签: python spacy


【解决方案1】:

您会看到差异,因为您使用模型 en_core_web_md 进行解析。在他们的网站上,他们使用默认的英语模型 (en_core_web_sm) 进行依赖解析示例。查看this link了解详细型号列表。

您可以通过参考SpaCy model releases 对要使用的模型做出明智的选择。此链接提供各种模型和 NLP 任务的测试语料库的准确度结果。

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 2022-08-04
    • 2015-05-18
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多