machine-learning - Spacy 训练数据格式
问题描述
我正在尝试使用 Spacy 构建 NLP,但在格式化训练数据时遇到了问题。我希望我的应用能够识别实体和意图。例如,在“我想订购披萨”中。意图是“place_order”,实体是披萨。如何格式化 Spacy 中实体和意图的训练数据?
解决方案
这取决于您如何将问题视为 NLP 挑战。您可以尝试使用命名实体识别器来识别像“pizza”这样的实体,但请注意,此模型主要是为真正命名的实体设计的 - 即具有引用现实世界中唯一实体的名称的实体,如 London 或 Google。
尽管如此,我们已经看到了 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 挑战来查找动词短语“下订单”,但同样需要注意的是,这不是一个真正的命名实体。也许更好的方法是将其视为文本分类挑战,并预测整个句子的“意图”标签。您可以在此处找到有关文本分类的文档,并且数据格式需要是字典,每个潜在标签都获得 a1.0
或 a 0.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}}),
]
最后,一种更复杂的方法是使用依赖解析器进行意图分类,参见此处的代码示例。虽然这似乎更难上手,也难以为其注释数据,但它也可能是最强大的选择。
推荐阅读
- .net - Visual Studio 在去定义期间挂起并且没有搜索任何东西?
- r - 年份和日期从因子的日期中混杂
- python - 获取列表中嵌套数据框的摘要统计信息
- netlogo - 在 Netlogo 中计算能量
- python - 从装饰器函数返回到类中的成员函数
- html - 如果用户更改它,如何在 asp.net 中获取元素的新值
- javascript - 从 Javascript 中的 PHP 数组填充 Google GeoChart 地图的问题
- postgresql - 维护具有完全相同架构的开发数据库
- java - 为什么 JsonParser 在返回值中使用双引号,使用 com.google.gson API
- python - 如何在 Python 中使用 Android 的“IP 网络摄像头”应用程序