【问题标题】:How to lemmatize Norwegian using spaCy?如何使用 spaCy 对挪威语进行词形还原?
【发布时间】:2019-03-13 11:44:33
【问题描述】:

我正在做以下事情:

from spacy.lang.nb import Norwegian
nlp = Norwegian()
doc = nlp(u'Jeg heter Marianne Borgen og jeg er ordføreren i Oslo.')
for token in doc:
    print(token.text, token.lemma_, token.pos_, token.tag_, token.dep_,token.shape_, token.is_alpha, token.is_stop)

Lemmatization 似乎根本不起作用,因为这是输出:

(u'Jeg', u'Jeg', u'', u'', u'', u'Xxx', True, False)
(u'heter', u'heter', u'', u'', u'', u'xxxx', True, False)
(u'Marianne', u'Marianne', u'', u'', u'', u'Xxxxx', True, False)
(u'Borgen', u'Borgen', u'', u'', u'', u'Xxxxx', True, False)
(u'og', u'og', u'', u'', u'', u'xx', True, True)
(u'jeg', u'jeg', u'', u'', u'', u'xxx', True, True)
(u'er', u'er', u'', u'', u'', u'xx', True, True)
(u'ordf\xf8reren', u'ordf\xf8reren', u'', u'', u'', u'xxxx', True, False)
(u'i', u'i', u'', u'', u'', u'x', True, True)
(u'Oslo', u'Oslo', u'', u'', u'', u'Xxxx', True, False)
(u'.', u'.', u'', u'', u'', u'.', False, False)

不过,看看https://github.com/explosion/spaCy/blob/master/spacy/lang/nb/lemmatizer/_verbs_wordforms.py,动词heter至少应该变成hete

所以看起来 spaCy 有支持,但它不起作用?可能是什么问题?

【问题讨论】:

  • 挪威语的模型似乎还在开发中。也许这就是原因。

标签: python nlp spacy lemmatization


【解决方案1】:

正如docs 中指定的那样,词形还原实际上适用于挪威语:lookup.py 中的所有形式都进行了词形还原。试试doc = nlp(u'ei'),你会看到ei的引理是en

现在,您所指的文件verbs_wordforms.py 记录了词性 (POS) 标记是动词时的例外情况。但是,空白模型 Norwegian() 没有 POS 标记器,因此永远不会触发 heter 的特定异常。

所以解决方案是使用具有 POS 标记器的模型,或者将您的特定例外添加到 lookup.py。例如,您会看到,如果您在那里添加行 'heter': 'hete',,那么您的空白模型会发现 hete 作为 heter 的引理。

最后,请注意,work and discussion 已经发布了很多关于在 spaCy 中发布预训练挪威模型的消息 - 但看起来这仍在进行中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2020-10-01
    相关资源
    最近更新 更多