【问题标题】:Training Data Format with SpacySpacy 训练数据格式
【发布时间】:2020-06-30 00:31:13
【问题描述】:

我正在尝试使用 Spacy 构建 NLP,但在格式化训练数据时遇到问题。我希望我的应用能够识别实体和意图。例如,在“我想订购披萨”中。意图是“place_order”,实体是披萨。如何在 Spacy 中格式化实体和意图的训练数据?

【问题讨论】:

    标签: machine-learning nlp artificial-intelligence spacy


    【解决方案1】:

    这取决于您如何将问题视为 NLP 挑战。您可以尝试使用命名实体识别器来识别像“pizza”这样的实体,但请注意,此模型主要是为真正的命名实体设计的 - 即具有引用真实实体中唯一实体的名称的实体世界,如伦敦或谷歌。

    尽管如此,我们已经看到了 NER 模型对未命名实体相当有效的用例。您可以按照培训指南here 并像这样格式化您的数据:

    TRAIN_DATA = [
        ("Who is Shaka Khan?", {"entities": [(7, 17, "PERSON")]}),
        ("I like London and Berlin.", {"entities": [(7, 13, "LOC"), (18, 24, "LOC")]}),
    ]
    

    这种“披萨”实体的另一种潜在方法是基于规则的匹配/字典查找,具体取决于您期望的种类有多大。您可以在 spaCy here 中找到有关基于规则的匹配策略的更多信息。请注意,这种方法不需要训练数据,但您需要仔细制定规则。

    对于“意图”,您也有几个选择。要么将其作为 NER 挑战来查找动词短语“下订单”,但同样需要注意的是,这不是一个真正的命名实体。也许更好的方法是将其视为文本分类挑战,并预测整个句子的“意图”标签。你可以找到关于文本分类的文档here,数据格式需要是一个字典,每个潜在的标签都有一个1.00.0

    TRAIN_DATA = [
        ("I'm so happy.", {"cats": {"POSITIVE": 1.0, "NEGATIVE": 0.0}}),
        ("I'm so angry", {"cats": {"POSITIVE": 0.0, "NEGATIVE": 1.0}}),
    ]
    

    最后,更复杂的方法是使用依赖解析器进行意图分类,参见代码示例here。虽然这似乎更难上手,也更难为数据添加注释,但它也可能是最强大的选择。

    【讨论】:

    • 谢谢。我也想要实体。我想要意图和实体。
    • 您可能希望针对这两个问题训练两个单独的分类器。对于每个问题,我都列出了几种可能的解决方案。
    猜你喜欢
    • 2021-07-30
    • 2018-05-06
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 2014-06-08
    • 2021-12-26
    相关资源
    最近更新 更多