spaCy 中的匹配模式 returns 一个空结果

Matching patterns in spaCy returns a empty result

我希望通过这个简单的代码找到一些模式。但结果是空的。 我忘记了什么?

for tk in doc[:30]:
     print (tk.text, ':', tk.pos_)

方法:名词 来自:ADP 评估模拟:名词 计算:ADJ 根据:ADP 程序:名词 呈现:动词 在:ADP : SPACE 建筑:PROPN 阳离子:名词 在:ADP 阶段:名词 来自:ADP projectA: 名词 评级:名词 必须:动词 是:辅助 制作:动词 至:ADP 一个:数字 日:名词 典型的:ADJ 来自:ADP 项目:名词 来自:ADP 夏天:名词 e:CCONJ 来自:ADP

pattern = [
       {'POS': 'NOUN'},
       {'LOWER': 'ADP'},
       ]
    #Matcher class object
matcher = Matcher(nlp.vocab)
matcher.add("matching_1", patterns = [pattern]) 

result = matcher(doc, as_spans=True) 

print(result)

[]

所以我期待 POS 标签 'NOUN' + 'ADP' 的模式可以找到单词: 'Método de', 'cações em', 'fase de', 'projeto de'.

以下规则将匹配小写时等于“ADP”的标记。这将不匹配任何内容,因为“ADP”不是小写字母。

{'LOWER': 'ADP'},

我不确定这应该匹配什么,也许您想用 POS = ADP 匹配小写单词?在那种情况下,您需要这样的规则:

{"POS": "ADP", "REGEX": "^[a-z]+$"}

重申我上面所说的:{'LOWER': 'ADP'} 将小写单词与 ADP 词性匹配。您似乎对“较低”的含义或规则的运作方式感到困惑。

我举个例子。 {"LOWER": "dog"} 将匹配“Dog”、“DOG”或“dog”等字词。它不会匹配词性为“dog”(不存在)的单词。 "LOWER": value 的意思是,“匹配小写时看起来像 value 的单词”。

如果你想匹配具有 ADP 词性的小写单词,你应该使用我上面写的带有 REGEX 位的规则。