Spacy - 在模式匹配中识别令牌

Spacy - Identify Token in Pattern Matching

我想做一个程序,从一个句子中提取两个词,我需要知道一个是出发,另一个是到达。

我尝试制作一个模式并在自定义扩展属性中设置标记类型,例如这句话:"I would like a London Paris train".

我创建了这个模式:

pattern = [
    {"POS":  "PROPN", "_": {"TYPE": "ARRIVAL"}},
    {"POS":  "PROPN", "_": {"TYPE": "DEPARTURE"}}
]

我还在 python 代码中创建了一个 custom_extension 属性:

Token.set_extension('TYPE', default="", force=True)

我的问题是,如果我的模式中的 TYPE 与默认值不匹配,则不会匹配任何内容。

我想知道是否有更好的模式匹配解决方案来识别匹配的令牌。

非常感谢

你想做的是“语义角色标注”,这很难。你绝对不能只用模式匹配来做到这一点。

您可以做的最简单的事情可能会起作用,这将适用于您的示例,即使用 spaCy 的 NER 模型获取所有 LOC 或 GPO 实体,并假设第一个是出发点,第二个是到货。不过那真的很脆弱。