如何在 spacy 中以单一模式一起使用 POS 和 DEP

How to use POS and DEP together in one single pattern in spacy

我正在使用 spacy 来解析一些文本。 我正在定义自己的模式。 但是,我需要考虑 POS,依赖性。例如,想使用以下模式(使用 POS 和 DEP):

pattern = [
          {'POS': {'IN': ['NOUN','ADJ'] } , 
           "DEP": {'IN': ['attr', 'amod']}, 
           "OP": "+"},
          {'TEXT': {'IN': ['to','of', 'on','by','from','in']} , "OP": "+"},
          {'POS': {'IN': ['NOUN','VERB']}}               
           ]

但是,spyderreturn报错了:

   matcher.add('rule', [pattern])
^

IndentationError: unexpected indent

两个匹配器我都导入了,但是我只用了一个匹配器,如下:

from spacy.matcher import Matcher

from spacy.matcher import DependencyMatcher
matcher = Matcher(nlp.vocab)
matcher.add('rule', [pattern]) #### the error shows in this line####
matches = matcher(doc)

我想原因可能是,我同时使用了POS和DEP,而我只在Matcher中添加了模式,而没有在DependencyMatcher中添加?是这样的吗? 如果是这样,我该如何纠正?

谢谢!

解决了,不是matcher的问题

我只是重新对齐代码,它起作用了。

这几行本来是对齐的,我把它们剪下来,重新粘贴,重新对齐,然后就成功了。