【问题标题】:Detecting a dynamic pattern with Spacy and extracting the variables使用 Spacy 检测动态模式并提取变量
【发布时间】:2021-05-07 15:01:01
【问题描述】:

我如何使用 spacy 来检测如下模式:

mygov-24.mygov.ca - last updated: 06/05/21

我想检测以下模式:

  • mygov-24.mygov.ca - 最后更新时间:06/05/21
  • mygov-24.mygov.ca - 最后更新时间:02/04/21
  • mygov-24.mygov.ca - 最后更新时间:01/02/21
  • ....

您可以看到日期发生了变化,但一切都保持不变。如何使用 spacy 创建一个模式匹配器,它告诉输入字符串是否具有相同的模式?另外,如果检测到模式,我想提取日期。 Spacy 可以做到吗?

我通过了,https://spacy.io/usage/rule-based-matching,但不知道从哪里开始。

编辑 给定上面的一组动态短语,有没有办法识别短语中的变量?

【问题讨论】:

    标签: python algorithm nlp nltk spacy


    【解决方案1】:

    您可以使用匹配器检测它们,使用类似的代码

    import spacy
    from spacy.matcher import Matcher
    
    nlp = spacy.load("en_core_web_sm")
    matcher = Matcher(nlp.vocab)
    
    pattern = [{'ORTH': 'mygov-24.mygov.ca'}, {'ORTH':'-'}, {'ORTH':'last'}, {'ORTH':'updated'}, {'ORTH':':'}, 
               {'ORTH': {'REGEX':r'^\d{1,2}/\d{1,2}/\d{2}(?:\d{2})?$'}}];
    matcher.add("last_updated", [pattern])
    
    text = r'It was here, mygov-24.mygov.ca - last updated: 06/05/21. Next: mygov-24.mygov.ca - last updated: 02/04/21. And one more: mygov-24.mygov.ca - last updated: 01/02/21'
    doc = nlp(text)
    
    matches = matcher(doc)
    
    matches = matcher(doc, as_spans=True)
    for span in matches:
        print(span.text)
    

    输出:

    mygov-24.mygov.ca - last updated: 06/05/21
    mygov-24.mygov.ca - last updated: 02/04/21
    mygov-24.mygov.ca - last updated: 01/02/21
    

    ^\d{1,2}/\d{1,2}/\d{2}(?:\d{2})?$ 正则表达式匹配一个标记

    • ^ - 以
    • 开头
    • \d{1,2} - 一位或两位数
    • / - 然后有一个/
    • \d{1,2}/ - 然后有一个或两个数字和/
    • \d{2} - 两位数
    • (?:\d{2})? - 额外可选两位数
    • $ - 令牌结束。

    【讨论】:

    • 是否可以检测给定 X 个短语的动态变量?我需要检测短语中的变量。手动定义正则表达式不是最优的
    • @Amanda 你需要在问题中解释一下,我不明白你的意思。
    • 已更新。给定一组如上所述的动态短语,有没有办法识别短语中的变量?不使用 Spacy 就可以使用基于正则表达式的解决方案
    • @Amanda 你认为 Spacy 会为你猜出任何模式吗?这是不可能的。您仍然需要自己指定它们。
    • 给定n个句子,有没有办法识别模式并检测变量?我正在寻找类似于这里的流程youtu.be/B34gHahWX_s
    猜你喜欢
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2023-03-25
    • 2020-06-04
    • 2018-02-14
    • 2013-03-03
    相关资源
    最近更新 更多