有人知道如何定义"NNP/NN NNP/NN";在SpaCy中,这意味着期望的匹配是"匹配";NNP-NNP"NNP NN"NN NNP";,或";NN NN";?非常感谢。
使用IN
运算符,它检查列表中的值:
tag_nn_nnp = {"TAG": {"IN": ["NN", "NNP"]}}
pattern = [tag_nn_nnp, tag_nn_nnp]
matcher.add("NN_NNP_2", [pattern])
请参阅:https://spacy.io/usage/rule-based-matching#adding-模式属性扩展
没有or
逻辑运算符,但在您的特定情况下,您可以使用规则列表或regex规则进行模拟:
规则列表:
patterns = [
[{'TAG': 'NNP'}, {'TAG': 'NN'}],
[{'TAG': 'NN'}, {'TAG': 'NNP'}],
# add more if required
]
然后将所有图案添加到匹配器中。参见此示例
Regex
只适用于现代spacy版本,但我承认我还没有测试过(:
pattern = [{"POS": {"REGEX": "^NNP?$"}}, {"POS": {"REGEX": "^NNP?$"}}]
备注
";POS";属性是指通用的PoS标记集,它将名词标记为PROPN或NOUN。对于英语,你可以使用";TAG";,它会给你PTB标签集(NN、NNP等(,但这实际上取决于你在之后是什么