在设计上,英语模型在德国洗涤实体上的表现要好于德国模型吗?
# 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的信息
答案 0 :(得分:2)
这不是设计使然,但这肯定是训练数据和统计预测的副作用。 English model在具有更多实体类型的较大NER语料库上进行训练,而German model在Wikipedia上使用NER数据。
在Wikipedia文本中,全名很常见,例如“ Frank Muster”,而通常避免使用“ Herr Muster”之类的名称。这可能可以解释为什么模型仅将全名标记为一个人而不是其他人。该示例语句还使英语模型更容易正确猜出-在英语中,大写字母是命名实体的一种强有力的指示,比德语中的强得多。这可能可以解释为什么该模型始终将所有大写的多词跨度标记为实体。
无论如何,这是一个很好的例子,说明了特定于语言的微妙惯例或风格惯例最终如何影响模型的预测。它还显示了为什么您几乎总是想用更多特定于数据的示例来微调模型。我确实认为德语模型可能在德语文本 overall 上表现更好,但是如果文本中像“ HerrMüller”这样的引用很常见,您可能想在模型中添加更多示例。不同的上下文。