AllenNlp QA 应用程序生成 Spacy 警告:[WARNING] [W108] for every word in the document

AllenNlp QA Application produces Spacy warning: [WARNING] [W108] for every word in the document

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

[警告][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 时,我不再收到警告。