功能介绍
一站式定制开发NLP模型,平台预置十几个灵活易用的常见NLP模型网络,内置中文效果领先的预训练模型ERNIE 2.0,实现低成本获取高精度NLP服务。
模型类型
定制文本分类:支持对长文本及短文本定制分类标签,预置 BOW、CNN、GRU、TextCNN、LSTM、BiLSTM等经典网络,满足不同业务场景所需;
定制短文本匹配:支持定制模型判断短文本之间的相似度,专业版支持选择SimNet(BOW、CNN、GRU、LSTM)、FC等预置网络进行模型训练;
定制序列标注:通过定制标签,实现对一串文本中的每个序列单元进行分类标注。平台专业版支持CRF网络进行模型训练。
使用流程
这次我选用的是EasyDL经典版,它适合AI零基础或追求高效率开发的企业用户或个人开发者,无需了解算法细节,最快5分钟上手!
- 进入EasyDL经典版,创建模型;
- 在训练模型部分添加数据集,平台也提供部分公开数据集使用;
- 我的模型中可以查看训练情况,在训练结束后可以以短信方式通知您;
- 校验模型,检查识别结果;
- 发布模型。
服务流程
发布模型后需要我们调用接口来获得服务,有些开发者可能不太熟悉接口的调用,下面是示例代码,修改其中必要参数即可使用。
import requests
import urllib
API_Key = "【API Key】"
Secret_Key = "【Secret Key】"
# 第一次 Post 请求,获取access_token
def get_access_token():
# url
url = 'https://aip.baidubce.com/oauth/2.0/token'
# 参数
params = {
'grant_type': 'client_credentials', # 固定值
'client_id': API_Key,
'client_secret': Secret_Key
}
res = requests.post(url, data=params)
# 请求成功 返回access_token和expires_in
# 请求失败 返回error和error_description
res = res.json()
access_token = res['access_token']
return access_token
print(get_access_token())
# 输入
text = "下蛋公鸡公鸡中的战斗机欧耶"
# 参数
params = {"text": text, "top_num": 2}
header = {'content-type': 'application/json'}
request_url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/text_cls/emotion_rec"
# 发送请求
request_url = request_url + "?access_token=" + get_access_token()
response = requests.post(request_url, json=params, headers=header)
# 输出
res = response.json()
print(res)
输出
{'log_id': 6656692061819322030, 'results': [{'name': '0', 'score': 0.5200783014297485}, {'name': '1', 'score': 0.47992169857025146}]}
收获和心得
Q:{'error_code': 6, 'error_msg': 'No permission to access data'}
A:请求URL错误。文本分类的URL应为 https://aip.baidubce.com/rpc/2.0/ai_custom/v1/text_cls/emotion_rec
第一次接触EasyDL是使用它来做一个“烟头检测”,部署在公共场所例如网吧、公园等地,由于缺少烟头数据,我从百度图片上爬取了大量不文明行为的数据集,在经过少量标注后利用它的一键标注功能,省时省力。然后在校验的时候看到网吧场景由于光线较暗,检测难度较大,而EasyDL没有数据预处理这一功能,我想这是可以优化的一点,当然这说的是图像处理上,而这次的主题是文本分类,自然不需要这么麻烦。
由于文本分类任务比较普遍,因此数据集的获取也较为容易,内置的公开数据集就可以满足大部分人的需求。另外,关于文本数据如果收集者“清洗”得当,数据方面是不会有太大问题的。
总体上来说,EasyDL定制开发平台的产品很值得体验,通过API调用的方式也极大地减少空间占用。
文本:今天的天气好晴朗,处处是花香
结果:{'log_id': 8065237255265109880, 'results': [{'name': '1', 'score': 0.9604799151420593}, {'name': '0', 'score': 0.03952004760503769}]}
文本:昨天吃火锅拉肚子,我太难了
结果:{'log_id': 1761908946296837203, 'results': [{'name': '0', 'score': 0.9806331992149353}, {'name': '1', 'score': 0.019366798922419548}]}
由于数据集的类别只有2种,帖子中提供的文本属于中性分类,因此会给出0和1相近的成绩