赞
踩
项目环境配置如下:
“看病慢看病难”早已成为当今社会的常见现象,因此随着技术的发展,Al+医疗是目前最有潜力的应用场景之一,其中一个很大的痛点是很多人不清楚应该去哪个科室看病。互联网医生服务可以构建医生与患者之间的桥梁,京东通过智能分诊项目,可以根据用户提供的文字型的病情描述精准识别,并自动帮助用户判断需要去哪个分诊科室,有效减少在线问诊被反复多次转接的情况发生,提高科室分配的准确度,实现降本增效。
这是一个经典的文本多分类项目。通过这个项目,可以扎实地掌握文本领域的相关技术如文本预处理、特征工程、词向量、分类模型、评价指标、模型部署等,并且通过完成一个完整的项目走完所有的必要流程。从技术的角度会涉及到tf-idf,word2vec,BERT向量,N-gram,FastText,TextCNN,SkipGram,CBOW,随机森林,XGBoost,Adagrad,Adam等技术和Flask,Docker,Jenkins等部署工具的使用。
文本分类作为自然语言处理领域最经典的技术之一,有着非常广泛的应用,如情感分析、情绪识别、主题分类等。文本分类任务通常分为两大类,单标签分类任务和多标签分类任务。单标签分类任务指的是对于一个输入文本,我们需要输出其中的一个类别。举个例子,我们把每一篇新闻分类成一个主题(如体育或者娱乐)。相反,多标签分类任务指的是对于一个输入文本,输出的类别有多个,如对应一篇新闻可以同时输出多个类别:体育、娱乐和音乐。其中,单标签任务又可以分为二元(binary)分类和多类别分类,二元分类指的是只有两种不同的类别。
在本项目中,我们主要来解决文本单标签的任务。数据源来自于京东健康,任务是基于患者的病情描述,自动给一个门诊科室的分类。
通过本项目的练习,你能通晓机器学习建模的各个流程:
同时,通过本项目,你可以
在本项目中,我们使用的是京东健康的分诊数据。互联网医生服务可以构建医生与患者之间的桥梁,京东通过智能分诊项目,可以根据用户提供的文字型的病情描述精准识别,并自动帮助用户判断需要去哪个分诊科室,有效减少在线问诊被反复多次转接的情况发生,提高科室分配的准确度,实现降本增效。
本项目我们主要使用 28000 多条样本数据来训练文本分类模型,1580条样本数据为验证集,1580条样本数据为测试集。
一般的AI 项目流程可分为数据预处理、文本特征工程、建模和调参、评估以及部署构成。京东健康智能分诊项目的框架为:
F1-Score
。对于特征工程,我们做了如下两方面提取的操作:
基于词向量的特征工程主要包括以下几个方面:
特征工程示意图如下:
示例:
如 input 为: " 以前经常吃多了胃部会不舒服", 分词后结果假设为:” 以前 经常 吃 多 了 胃部 会 不 舒服”, 共计 9 个词。匹配我们已经训练好的embedding, 得到 9 * 300 维的向量。因为 input 的句子长短是不一样的, 所以为了保证输入到模型的维度是相同的, 有两种方法:
第二种方法, 会增加不必要的计算量, 所以在此我们选择使用第一种方法。使用 avg, max 的方法聚合, 得到 300 维的向量。接下来我们使用类似 n-gram 的方法来获取词组, 短语级别的信息。如我们只考虑前面一个词, 得到结果为: ” 以前经常经常吃吃多多了了胃部胃部会会不不舒服”, 8 * 300 或 8 * 2 * 300 维的向量。同样的方法我们将表示长度的维度消去 (由于我们分别考虑前面 2 个词、3 个词、4 个词,所以维度也是相同的, 可以不用消去,而是将 2 * 300 转成 1 * 600 的向量, 与其他特征拼接)。由于我们的模型没有利用到 label 信息, label 词大多出现在我们的数据集中, 我们考虑使用输入与 label 的相似程度来加权聚合我们的词向量。首先,输入 embedding(假设 9 * 300) 与标签 embedding (假设 300 * 1) 进行矩阵乘法, 得到 (9 * 1) 的矩阵。然后使用 avg、max、softmax 等聚合方法消去标签的维度, 其结果与输入 embedding 进行点乘, 并对得到加权后的结果聚合。将所有特征拼接至一起, 输入至 Xgboost/lightgbm 模型训练
基于人工定义的特征包括以下几个方面:
在本案例中加入了词的个数,大写个数统计,大写占比,感叹号的个数,问号个数,标点符号个数,*&$%字符的个数,唯一词的个数,唯一词 与总词数的比例,获取名词, 形容词, 动词的个数,名词占词的个数的比率,形容词占词的个数的比率,动词占词的个数的比率,首字母大写其他小写的个数,平均词的个数等特征
对文本进行清洗和预
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。