任务简介
意图分析, 表示⇒ 输入文字叙述, 要分类文字属于何种意图
样本:
“我不喜欢我目前的保险计划,想要一个新的”⇒ insurance_change
“我的运通信用卡什么时候到期”⇒ expiration_date
“我怎么乘公共汽车去北京”⇒ 方向
大纲
系统分析
概念统整
简单解法(利用transformer 完成)
困难解法(从头利用pytorch 手刻)
系统分析
题意: 输入文字叙述, 分类文字属于何种意图
要完成一个程式, 我想第一步应该是厘清这支程式的抽象, 先定义清楚我们究竟要完成什么
所以我画了下面这张图
![](https://img-blog.csdnimg.cn/img_convert/13b0f8e557e154c654e2e4e20577fe13.png)
可以得知我们的目标是训练出这样的AI 模型
打开训练资料如下
[
{
"text": "how long should i cook steak for",
"intent": "cook_time",
"id": "eval-0"
},
{
"text": "please tell me how much money i have in my bank accounts",
"intent": "balance",
"id": "eval-1"
},
{
"text": "what is the gas level in my gas tank",
"intent": "gas",
"id": "eval-2"
},
...
]
可以看见每个句子都被分类到对应的某种意图(即为分类)
此时我们可以透过简单的python 脚本大概去了解总共有几种意图
"""load json and check intent count"""
import json
with open('./train.json', encoding='utf8') as f:
data = json.load(f)
intent_set = set()
for item in data:
intent_set.add(item['intent'])
print(len(intent_set)) # 150
自此, 对整个模型的样貌, 我们有了更清晰明确的认识, 如下图, 其中句子在150个分类中各自的机率可以用长度为150的数字阵列来表示