基于动词形式的空间模式异常案例

问题描述

我正在尝试创建一种伪造模式,该模式可以识别名词后面有形容词的情况,

pattern = [{'POS':'NOUN'},{'POS':'ADJ'}]

但是,我试图将形容词不是动词的分词形式作为例外。我的示例是西班牙语,因此我深表歉意。 例如,我想查找并重新标记“教育机构”之类的东西,而不是“综合症”,因为“ comprometida”的标签中包含VerbForm_part = True。

我尝试添加以下内容,但它只会使模式在“institucióneducativa”之类的情况下完全停止工作: 模式= [{'POS':'NOUN'},{'OP':'!','TAG':'VerbForm_part'},{'POS':'ADJ'}]

我也尝试过: 模式= [{'POS':'NOUN'},{'POS':'ADJ','TAG':不是'VerbForm_part'}]

总而言之,我需要将名词后面跟形容词组合在一起,但仅将某些类型的形容词组合在一起,并根据其TAG属性'VerbForm_part'将其他形容词排除在外

在Spacy中有什么方法可以做到这一点?它的模式支持异常吗?

谢谢!

解决方法

我找到了一个解决方案,方法是定义自己的匹配器,并在找到匹配项时使用它重新标记:

def my_matcher(doc):
    for i in range(0,len(doc)-1):
        if i < len(doc)-1:
            token = doc[i]
            token2 = doc[i+1]
            if token.pos_ == 'NOUN':
                if token2.pos_ == 'ADJ' and 'VerbForm_part' not in model.vocab.morphology.tag_map[token2.tag_].keys():
                    span = Span(doc,i,i+2)
                    print(span)
                    with doc.retokenize() as retokenizer:
                        retokenizer.merge(span)

my_matcher(doc)

如果有人可以改善这一点,或者告诉我spacy是否支持这一点,将不胜感激!