【问题标题】:Spacy - English language model outruns german language model on german text?Spacy - 英语语言模型在德语文本上超过德语语言模型?
【发布时间】:2019-01-02 00:23:07
【问题描述】:

英语模型在德语称呼实体上的表现是否比德语模型更好?

# pip install spacy
# python -m spacy download en
# python -m spacy download de

nlp = spacy.load('en')
# Uncomment line below to get less good results
# nlp = spacy.load('de')

# Process text
text = (u"Das Auto kauft Herr Müller oder Frau Meier, Frank Muster")
doc = nlp(text)

# Find named entities
for entity in doc.ents:
    print(entity.text, entity.label_)
如果使用nlp = spacy.load('en')

预期结果。三个 PERSON 全部返回

Das Auto ORG
Herr Müller PERSON
Frau Meier PERSON
Frank Muster PERSON
如果使用nlp = spacy.load('de')

意外结果。只返回三个 PERSON 中的一个

Frank Muster PERSON

关于 spaCy 的信息

  • spaCy 版本:** 2.0.12
  • 平台:** Linux-4.17.2-1-ARCH-x86_64-with-arch-Arch-Linux
  • Python 版本:** 3.6.5
  • 型号:** en, de

【问题讨论】:

    标签: spacy


    【解决方案1】:

    这不是设计使然,但肯定有可能这是训练数据和统计预测的副作用。 English model 在具有更多实体类型的更大 NER 语料库上进行训练,而 German model 使用基于 Wikipedia 的 NER 数据。

    在 Wikipedia 文本中,“Frank Muster”之类的全名非常常见,而“Herr Muster”之类的名称通常被避免使用。这可以解释为什么模型只将全名标记为人而不是其他人。例句还使英语模型很容易正确猜测——在英语中,大写是命名实体的一个比在德语中更强的指示符。这或许可以解释为什么该模型始终将所有大写的多词跨度标记为实体。

    无论如何,这是一个很好的例子,说明了微妙的特定语言或文体惯例最终如何影响模型的预测。它还说明了为什么您几乎总是希望使用更多特定于您的数据的示例来微调模型。我确实认为德国模型在德国文本上的表现可能会更好总体,但如果像“Herr Müller”这样的引用在你的文本中很常见,你可能想用更多的例子来更新模型不同的上下文。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多