python - 训练自定义瑞典 spacy 模型

标签 python nlp spacy

我的目的是在 spaCy 中为瑞典语训练自定义词性标注器和依赖解析器。 我按照 https://spacy.io/usage/training 上的说明进行操作并在 Swedish-Talbanken treebank 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 似乎都可以工作。没有用的是句子分割和名词 block 。

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:

#

因此,句子没有拆分,名词 block 也没有输出。据我了解,spaCy 将 Dependency Parser 用于这两种功能。但如上所示,依赖解析器应该可以正常工作。这两个工作还需要更多的东西吗?也许我错过了一些明显的东西?

感谢您的帮助!

最佳答案

对此不太确定,但我认为量刑有效,因为 doc.sents 不是空的。它似乎工作得很糟糕。我会尝试解析更大的文本(但仍然很小)并且可能使用更长的句子。由于 sentencizer 通过查找相关标记来构建句子,因此较长的句子不太可能合并为一个句子。

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

关于python - 训练自定义瑞典 spacy 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56899733/

相关文章:

python - 通过循环查找/存储斐波那契数列的前 50 项

python - 是否可以将 spacy 与已经标记化的输入一起使用?

named-entity-recognition - 如何获得 spaCy NER 概率

java - 用于自然语言处理的 Python 与 Java

python - 使用 spaCy 删除包含停用词的名词短语

python - 用PIL模块做了一个渐变,结果变暗了

python - 在 python 2 或 3 中不使用 '+' 运算符的两个整数之和

python - 使用正则表达式将单词和数字与空格匹配

python - 手动标记的 Span 中带有 ENT_TYPE 的模式不起作用

python - 使用Python提取医疗信息