如何使用spaCy对挪威语进行词法化处理?

时间:2019-03-13 11:44:33

标签: python nlp spacy lemmatization

我正在执行以下操作:

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)

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

(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似乎有支持,但是不起作用?可能是什么问题?

1 个答案:

答案 0 :(得分: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中发布经过预训练的挪威模型的建议-看来这仍在进行中。