我问了一个类似的问题:我的post标签和我的in this post个POS标签的区别是一样的.因此,我不认为我可以轻易地使用正则表达式来解决我的问题(正如链接帖子的公认答案所建议的那样).
例如,假设我们分析以下句子:
"她告诉我她的狗又大又黑又壮."
以下代码允许我匹配句子末尾的形容词列表:
import spacy # I am using spacy 2
from spacy.matcher import Matcher
nlp = spacy.load('en_core_web_sm')
# Create doc object from text
doc = nlp(u"她告诉我她的狗又大又黑又壮.")
# Set up pattern matching
matcher = Matcher(nlp.vocab)
pattern = [{"POS": "ADJ"}, {"IS_PUNCT": True}, {"POS": "ADJ"}, {"POS": "CCONJ"}, {"POS": "ADJ"}]
matcher.add("AdjList", [pattern])
matches = matcher(doc)
运行此代码将匹配"大、黑、强".她告诉我"不管怎样,她会在下面的黑狗的形容词列表中发现"她说"黑狗很强".
为了找到这样一个包含任意数量形容词的列表,我必须如何为spacy的matcher定义一个(单一)模式?换句话说,我正在寻找一个模式的正确语法,其中第{"POS": "ADJ"}, {"IS_PUNCT": True}
部分可以在列表以模式{"POS": "ADJ"}, {"POS": "CCONJ"}, {"POS": "ADJ"}
结尾之前任意重复.
谢谢你的提示.