训练定制的瑞典spacy模型

时间:2019-07-05 08:52:41

标签: python nlp spacy

我的目的是在spaCy中为瑞典语训练自定义POS-Tagger和Dependency Parser。 我按照https://spacy.io/usage/training上的说明进行了操作,并在Swedish-Talbanken树库conllu文件中训练了模型。 这些步骤进展顺利,最终我得到了一个自定义模型。然后,我加载了模型并尝试了一个小例子:

nlp = spacy.load(name=os.path.join(spacy_path, 'models/model-best'))
doc = nlp(u'Jag heter Alex Nilsson. Hon heter Lina')
# My name is Alex Nilsson. Her name is Lina

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

# OUTPUT:

#Jag PRON nsubj
#heter VERB ROOT
#Alex PROPN obj
#Nilsson PROPN flat:name
#. PUNCT punct
#Hon PRON nsubj
#heter VERB parataxis
#Lina PROPN obj

POS-Tagger和Dependency Parser似乎都可以工作。没有用的是句子分割和名词块。

for sent in doc.sents:
    print(sent.text)

# OUTPUT:

#Jag heter Alex. Hon heter Lina

for chunk in doc.noun_chunks:
    print(chunk.text, chunk.root.text, chunk.root.dep_,
          chunk.root.head.text)

# OUTPUT:

#

因此,句子不会拆分,名词块也不会输出。据我了解,spaCy对两个功能都使用了依赖解析器。但是如上所示,Dependency Parser应该可以正常工作。这两个工作还需要更多的东西吗?也许我缺少明显的东西?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对此不太确定,但由于doc.sents不为空,因此我认为判决有效。它似乎工作异常。我会尝试解析较大的文本(但仍然很小),并可能使用较长的句子。由于哨兵通过查找从属标记来构建句子,因此较长的句子不太可能合并为一个句子。

对于名词_chunks,我的理解(来自documentation)是,该语言必须具有在语言数据的syntax_iterators.py文件中定义的名词_chuncks方法。它似乎没有被自动训练。