AllenNlp QA 应用程序产生 Spacy 警告:[警告] [W108] 对于文档中的每个单词

问题描述

我使用 AllenNlp 创建了一个简单的问答应用程序。它曾经运行顺利,没有任何警告,但现在,对于段落中的每个标记,控制台中都会打印此空白警告:

[警告] [W108] 基于规则的词形还原器未找到标记“X”的 POS 注释。检查您的管道是否包含分配 token.pos 的组件,通常是“tagger”+“attribute_ruler”或“morphologizer”。

系统版本为: allenlp==2.1.0 空间==3.0.5 任何人都可以帮忙吗?


class PythonPredictor:
    def __init__(self):
        self.predictor = Predictor.from_path(
            "https://storage.googleapis.com/allennlp-public-models/bidaf-elmo-model-2020.03.19.tar.gz")

    def predict(self,passage,question):
        prediction = self.predictor.predict(
            passage=passage,question=question
        )
        return prediction["best_span_str"]

解决方法

如果没有关于您的代码的更多信息,很难确定,但我怀疑这是由从 spaCy 2 升级到 spaCy 3 引起的。

如果你只是想让你的旧代码运行,你可以降级spaCy;我建议锁定您的版本以避免意外更新。

如果您不使用引理,则可以忽略警告本身。如果您使用引理,则意味着您需要确保引理生成器可以访问词性标签。如果您使用英语,这意味着您需要启用 taggerattribute_ruler 管道组件。您可以在 spaCy 讨论区查看更多关于此 here 的信息。

,

当我将 AllenNlp 更新到 2.2.0 版时,我不再收到警告。