【问题标题】:Using spacy's Matcher without a model在没有模型的情况下使用 spacy 的 Matcher
【发布时间】:2019-09-18 21:50:52
【问题描述】:

我想在 spaCy 还没有工作模型的新语言(希伯来语)上使用 spaCy 的 Matcher 类。

我找到了一个有效的标记器 + POS 标记器(来自斯坦福 NLP),但我更喜欢 spaCy,因为它的 Matcher 可以帮助我做一些基于规则的 NER。

可以为基于规则的 Matcher 提供带有 POS 标记的文本而不是标准 NLP 管道吗?

【问题讨论】:

    标签: python nlp spacy named-entity-recognition


    【解决方案1】:

    您可以手动为其他来源的 spacy 文档设置单词和标签,然后使用 Matcher。这是一个使用英文单词/标签的示例:

    from spacy.lang.he import Hebrew
    from spacy.tokens import Doc
    from spacy.matcher import Matcher
    
    words = ["my", "words"]
    tags = ["PRP$", "NNS"]
    
    nlp = Hebrew()
    doc = Doc(nlp.vocab, words=words)
    for i in range(len(doc)):
        doc[i].tag_ = tags[i]
    
    # This is normally set by the tagger. The Matcher validates that
    # the Doc has been tagged when you use the `"TAG"` attribute.
    doc.is_tagged = True
    
    matcher = Matcher(nlp.vocab)
    pattern = [{"TAG": "PRP$"}]
    matcher.add("poss", None, pattern)
    print(matcher(doc))
    # [(440, 0, 1)]
    

    【讨论】:

    • 哇。感谢您对此的大力帮助。这真的有助于理解如何使用匹配器。竖起大拇指!
    • 像魅力一样工作!现在只需了解什么是 440 ? :-)
    • 440 是匹配 ID "poss" 的内部表示。你可以用nlp.vocab.strings[440]看到对应的字符串。 (查看文档中的示例:spacy.io/usage/rule-based-matching.)
    • 是的。知道了。谢谢!我现在试图理解的是,如果我可以基于 spacy 的依赖解析进行依赖解析,或者“注入”我的。
    【解决方案2】:

    我正在使用 stanfordnlp - 似乎有一个更接近的差距:-)

    https://github.com/explosion/spacy-stanfordnlp

    【讨论】:

      【解决方案3】:

      如果你想用 spaCy 训练一个新的统计模型,你应该阅读Training spaCy’s Statistical Models 上的文档。

      【讨论】:

      • 那工作量太大了 :) ... 不过确实考虑到了这一点。但是一种直觉告诉我……如果在我之前没有人更有能力胜任这项工作的话。我不会成为创建新 Spacy 希伯来语模型的人……另外:无论如何,我只想要一个基于规则的 NER,因为它会更简单/有效。再次......直觉 + 对现有希伯来语 NER 服务的一些实验。
      • 很公平——但是如果你不能制作一个新模型并且一个新模型还不存在,那么你对 spaCy 的运气就很不走运了。这个答案也可能对您有所帮助:stackoverflow.com/a/48590848/2755793
      • 是的...艰难的生活。
      【解决方案4】:

      据我所知,spaCy 还没有经过训练的希伯来语模型。让您使用没有模型的语言,

      from spacy.lang.he import Hebrew
      nlp = Hebrew()
      #or
      nlp = spacy.blank("he")
      

      很确定您可以从这里构建基于规则的匹配器。

      【讨论】:

      • 听起来很有希望。它允许我将令牌设置为外部输入吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      相关资源
      最近更新 更多