在没有模型的情况下使用spacy的Matcher

时间:2019-09-18 21:50:52

标签: python nlp spacy ner

我想在spaCy尚不适用的新语言(希伯来语)上使用spaCy的Matcher类。

我找到了一个有效的令牌生成器+ POS标记器(来自Stanford NLP),但是我更喜欢spaCy,因为它的Matcher可以帮助我执行一些基于规则的NER。

可以为基于规则的Matcher提供带有POS标签的文本,而不是标准的NLP管道吗?

4 个答案:

答案 0 :(得分:1)

您可以手动设置其他来源的防伪文档的单词和标记,然后使用Matcher。这是一个使用英语单词/标签来演示的示例:

from spacy.lang.he import Hebrew
from spacy.tokens import Doc
from spacy.matcher import Matcher

words = ["my", "words"]
tags = ["PRP$", "NNS"]

nlp = Hebrew()
doc = Doc(nlp.vocab, words=words)
for i in range(len(doc)):
    doc[i].tag_ = tags[i]

# This is normally set by the tagger. The Matcher validates that
# the Doc has been tagged when you use the `"TAG"` attribute.
doc.is_tagged = True

matcher = Matcher(nlp.vocab)
pattern = [{"TAG": "PRP$"}]
matcher.add("poss", None, pattern)
print(matcher(doc))
# [(440, 0, 1)]

答案 1 :(得分:0)

如果要使用spaCy训练新的统计模型,则应阅读Training spaCy’s Statistical Models上的文档。

答案 2 :(得分:0)

据我所知,spaCy还没有针对希伯来语的训练模型。为了让您使用没有模型的语言,

from spacy.lang.he import Hebrew
nlp = Hebrew()
#or
nlp = spacy.blank("he")

请确保您可以从此处构建基于规则的匹配器。

答案 3 :(得分:0)

Since我正在使用stanfordnlp-似乎还有一个小距离:-)

https://github.com/explosion/spacy-stanfordnlp