我正在学习 spaCy 并且正在玩Matchers。
我有:
一个非常基本的句子(“白色牧羊犬”)
匹配器对象,搜索模式(“white shepherd”)
显示匹配项的打印件,以及该匹配项之前的单词和 POS
我只是想检查如何处理我期望得到的索引超出范围异常,因为在匹配之前没有任何内容。我没想到它会起作用,但它确实起作用了,并且在比赛结束后返回“狗”……现在我很困惑。
看起来 spaCy 使用循环列表(或者我认为的双端队列)?
这需要一个语言模型来运行,如果你想重现它,你可以使用以下命令行安装它:
python -m spacy download en_core_web_md
这是代码
import spacy
from spacy.matcher import Matcher
# Loading language model
nlp = spacy.load("en_core_web_md")
# Initialising with shared vocab
matcher = Matcher(nlp.vocab)
# Adding statistical predictions
matcher.add("DOG", None, [{"LOWER": "white"}, {"LOWER": "shepherd"}]) # searching for white shepherd
doc = nlp("white shepherd dog")
for match_id, start, end in matcher(doc):
span = doc[start:end]
print("Matched span: ", span.text)
# Get previous token and its POS
print("Previous token: ", doc[start - 1].text, doc[start - 1].pos_) # I would expect the error here
我得到以下信息:
>>> Matched span: white shepherd
>>> Previous token: dog PROPN
有人可以解释发生了什么吗?
谢谢 !
小怪兽爱吃肉
相关分类