在没有模型的情况下使用 spacy 的匹配器
Using spacy's Matcher without a model
我想在 spaCy 还没有可用模型的新语言(希伯来语)上使用 spaCy 的匹配器 class。
我找到了一个有效的分词器 + 词性标注器(来自 Stanford NLP),但我更喜欢 spaCy,因为它的 Matcher 可以帮助我做一些基于规则的 NER。
基于规则的 Matcher 可以使用 POS 标记的文本而不是标准的 NLP 管道吗?
如果您想使用 spaCy 训练新的统计模型,您应该阅读 Training spaCy’s Statistical Models 上的文档。
据我所知,spaCy 还没有经过训练的希伯来语模型。为了让你使用没有模型的语言,
from spacy.lang.he import Hebrew
nlp = Hebrew()
#or
nlp = spacy.blank("he")
很确定您可以从这里构建基于规则的匹配器。
您可以手动为来自其他来源的空间文档设置单词和标签,然后使用匹配器。这是一个使用英语 words/tags 的示例,只是为了演示:
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)]
因为我正在使用 stanfordnlp - 似乎差距更近了:-)
我想在 spaCy 还没有可用模型的新语言(希伯来语)上使用 spaCy 的匹配器 class。
我找到了一个有效的分词器 + 词性标注器(来自 Stanford NLP),但我更喜欢 spaCy,因为它的 Matcher 可以帮助我做一些基于规则的 NER。
基于规则的 Matcher 可以使用 POS 标记的文本而不是标准的 NLP 管道吗?
如果您想使用 spaCy 训练新的统计模型,您应该阅读 Training spaCy’s Statistical Models 上的文档。
据我所知,spaCy 还没有经过训练的希伯来语模型。为了让你使用没有模型的语言,
from spacy.lang.he import Hebrew
nlp = Hebrew()
#or
nlp = spacy.blank("he")
很确定您可以从这里构建基于规则的匹配器。
您可以手动为来自其他来源的空间文档设置单词和标签,然后使用匹配器。这是一个使用英语 words/tags 的示例,只是为了演示:
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)]
因为我正在使用 stanfordnlp - 似乎差距更近了:-)