使用Spacy训练数据格式

我正在尝试使用Spacy构建NLP系统,但我在格式化训练数据时遇到了麻烦。我希望我的应用程序能够识别实体和意图。例如,在“我想订购披萨”这句话中,意图是“place_order”,实体是披萨。我该如何在Spacy中为实体和意图同时格式化训练数据呢?


回答:

这取决于你如何将问题定义为NLP挑战。你可以尝试使用命名实体识别器来识别像“披萨”这样的实体,但要注意,这个模型主要是为真正的命名实体设计的——即那些在现实世界中指代唯一实体的命名实体,比如伦敦或谷歌。

尽管如此,我们已经看到NER模型在非命名实体上也表现得相当不错。你可以按照这里的训练指南来格式化你的数据,像这样:

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

对于“披萨”这样的实体,另一种可能的方法是基于规则的匹配/词典查找,这取决于你预期的种类有多大。你可以在Spacy中找到更多关于基于规则的匹配策略的信息,这里。请注意,这种方法不需要训练数据,但你需要仔细设计规则。

对于“意图”,你也有几种选择。你可以将其视为一个NER挑战来查找动词短语“place an order”,但同样要注意这不是一个真正的命名实体。或许更好的方法是将其视为文本分类挑战,并为整个句子预测“意图”标签。你可以在这里找到关于文本分类的文档,数据格式需要是一个字典,每个潜在标签得到一个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}}),]

最后,一个更复杂的方法是使用依赖解析器进行意图分类,参见这里的代码示例。虽然这看起来开始起来更困难,并且为其标注数据也更复杂,但它也可能是最强大的选项。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注