1.2 大模型底层涉及的关键技术
文本摘要项目数据集
学习目标
- 清晰了解本项目的数据.
- 清晰了解项目中的数据待处理任务.
清晰了解本项目的数据.
- 本项目中用到的数据集来源于百度开放的汽车大师APP对话记录, 分两个数据文件提供, 分别是train.csv和test.csv.
- 训练数据集展示如下, 文件中共有数据82943行.
QID,Brand,Model,Question,Dialogue,Report
Q1,奔驰,奔驰GL级,方向机重,助力泵,方向机都换了还是一样,技师说:[语音]|车主说:新的都换了|车主说:助力泵,方向
机|技师说:[语音]|车主说:换了方向机带的有|车主说:[图片]|技师说:[语音]|车主说:有助力就是重,这车要匹配吧|技
师说:不需要|技师说:你这是更换的部件有问题|车主说:跑快了还好点,就倒车重的很。|技师说:是非常重吗|车主说:是
的,累人|技师说:[语音]|车主说:我觉得也是,可是车主是以前没这么重,选吧助理泵换了不行,又把放向机换了,现在还
这样就不知道咋和车主解释。|技师说:[语音]|技师说:[语音],随时联系
Q2,奔驰,奔驰M级,奔驰ML500排气凸轮轴调节错误,技师说:你这个有没有电脑检测故障代码。|车主说:有|技师说:发一下|>车主说:发动机之前亮故障灯、显示是失火、有点缺缸、现在又没有故障、发动机多少有点抖动、检查先前的故障是报这个故
障|车主说:稍等|车主说:显示图片太大传不了|技师说:[语音]|车主说:这个对发动机的抖动、失火、缺缸有直接联系吗?
|技师说:[语音]|车主说:还有就是报(左右排气凸轮轴作动电磁铁)对正极短路、对地短路、对导线断路|技师说:[语音]|车主说:这几个电磁阀和问您的第一个故障有直接关系吧|技师说:[语音]|车主说:这个有办法检测它好坏吗?|技师说:[语
音]|车主说:谢谢|技师说:不客气,随时联系
- 数据文件路径: /home/ec2-user/text_summary/seq2seq/data/train.csv
- 测试数据集展示如下, 文件中共有数据20000行.
QID,Brand,Model,Question,Dialogue
Q1,大众(进口),高尔夫(进口),我的帕萨特烧机油怎么办怎么办?,技师说:你好,请问你的车跑了多少公里了,如果在保修期
内,可以到当地的4店里面进行检查维修。如果已经超出了保修期建议你到当地的大型维修店进行检查,烧机油一般是发动机>活塞环间隙过大和气门油封老化引起的。如果每7500公里烧一升机油的话,可以在后备箱备一些机油,以便机油报警时有机油
及时补充,如果超过两升或者两升以上,建议你进行发动机检查维修。|技师说:你好|车主说:嗯
Q2,一汽-大众奥迪,奥迪A6,修一下多少钱是换还是修,技师说:你好师傅!抛光处理一下就好了!50元左右就好了,希望能够>帮到你!祝你生活愉快!
Q3,上汽大众,帕萨特,帕萨特领域 喇叭坏了 店里说方向盘里线坏了 换一根两三百不等 感觉太贵 ,技师说:你好,气囊>油丝坏了吗,这个价格不贵。可以更换。
Q4,南京菲亚特,派力奥,发动机漏气会有什么征兆?,技师说:你好!一:发动机没力,并伴有“啪啪”的漏气声音。二:发动机
没力,并伴有排气管冒黑烟。三:水温高,水箱盖出冒气泡出来。
Q5,东风本田,思铂睿,请问 那天右后胎扎了订,补了胎后跑高速80多开始有点抖,110时速以上抖动明显,以为是未做动平衡>导致,做了一样抖,请问是不是前面两条胎的问题导致?,技师说:你好师傅!可能前轮平衡快脱落或者不平衡造成的!建议>前轮做一下动平衡就好了!希望能够帮到你!祝你用车愉快!|车主说:谢谢大师!|技师说:不客气!祝您用车愉快!
- 数据文件路径: /home/ec2-user/text_summary/seq2seq/data/test.csv
- 结论: 本项目中真正能用于监督学习的数据只有train.csv中的数据, 因为test.csv没有人工摘要的标签Report列. 所以后续的训练集, 测试集都要通过train.csv进行划分. 而这里面的test.csv的功能其实是利用训练好的模型进行预测, 然后将预测结果文件提交至竞赛平台, 由百度平台的后端程序自动进行效果评估. 也就是说test.csv中对应的真实标签并没有公开给广大用户, 属于"闭卷考试题".
清晰了解项目中的数据待处理任务
- 一般来说, 在任何项目中, 面对原始数据都要进行接下来的几点工作:
- 删除空值.
- 删除"脏"数据.
- 删除特定字符的集合.
- 分词.
- 完成字符到id的映射.
- 完成padding, cutting的工作.
数据集中的空值
import pandas as pd
train_path = 'train.csv'
test_path = 'test.csv'
df = pd.read_csv(train_path, encoding='utf-8')
df.info()
print('**********************')
df = pd.read_csv(test_path, encoding='utf-8')
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 82943 entries, 0 to 82942
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 QID 82943 non-null object
1 Brand 81642 non-null object
2 Model 81642 non-null object
3 Question 82943 non-null object
4 Dialogue 82941 non-null object
5 Report 82873 non-null object
dtypes: object(6)
**********************
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 20000 entries, 0 to 19999
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 QID 20000 non-null object
1 Brand 19987 non-null object
2 Model 19987 non-null object
3 Question 20000 non-null object
4 Dialogue 20000 non-null object
dtypes: object(5)
- 结论: 经过初步统计, 可以很清晰的看到同一个数据文件中, 不同的数据列非空样本数量并不相同. 所以删除空值的是必须的环节, 否则后续处理文件会报错, 后续构建训练样本也会因为缺少特征而报错.
数据集中的脏数据
- 对于生产环境中的现实数据, 总会有各种各样的情况, 我们喜欢"干净"的数据, 不喜欢"脏"的数据. 一般来说, 关于脏数据没有严格的统一定义, 都是各个公司根据不同的业务线, 业务场景自行定义.
- 比如我们在测试集样本test.csv中截取两行样本, 展示如下:
Q34,一汽-大众奥迪,奥迪A4L,刚刚亮起,是什么故障灯?,技师说:这是发动机故障灯|技师说:该故障灯点亮,表示发动机系
统检测到故障,需要用解码器读取故障记录。根据故障提示排查问题。|车主说:[图片]|车主说:抬速不出常,平时正常是800转,今晚突然底转速,当推到p挡后转速升到千二三转,然后又降下来|车主说:这是什么问题
Q35,上汽大众,朗逸,朗逸17款新车。300公里。行驶中发现转数高,停车熄火。档位在D挡回不去。刹车踩不下去,打不燃火,>技师说:你好,发动机故障灯亮了没有,检查一下刹车真空助力|车主说:[图片]|车主说:请问怎么检查|车主说:可以电话>交流吗?|技师说:没办法,我们有规定不让留联系方式,车子启动,起动机工作不|技师说:我问你回答,尽最大努力帮你解
决问题!|车主说:点火完全没有反应。档位回不去。刹车踩不了。方向盘锁死|技师说:仪表盘上防盗灯有没有亮,|车主说>:我刚刚给你发了一张图片。亮的就是那些|技师说:检查一下发动机舱和驾驶员车门旁边仪表台测面有没有保险丝烧了|车主
说:没有看到。麻烦问一下。这种情况我的车还没有上户。应该怎么找4s店处理|技师说:新车,4s店要给质保的,要把问题>帮你彻底解决,并且告诉你造成这种故障的原因,|车主说:可以找他理赔吗?|车主说:自动挡能不能找车拉回去呢?|技师>说:自,在变速器杆旁边有个机械回位的插孔,可以把档位回到空挡上,用车拉,要不然自动挡不能直接拉|技师说:放心把>,他们肯定要帮你把问题解决的,如果解决不了,你可以申请理赔|车主说:机械回位在哪?|技师说:在换挡杆周边,塑料盖
子下面,|车主说:[图片]|车主说:哪里?|技师说:把皮套拿掉|车主说:[图片]|车主说:哪一个?|车主说:复位了,火打
燃了|技师说:那就好|技师说:可以去4s店找他们,|车主说:谢谢|技师说:不用谢
- 可以发现, 汽车大师中的对话内容由两方面要考虑:
- 第一: 很多"技师说", "车主说", 类似这样字符串其实对于文本语义没有任何帮助, 属于"停用词"的类型.
- 第二: 文本中有"[图片]"字样, 这是在APP端可见的图片, 但是在本项目中不可见. 因此这样的字符子串也属于"脏数据".
- 结论: 经过上述分析, 可知在未来的数据预处理中包含"脏"数据的部分都应该删除掉.
数据集中的特殊字符
- 关于特殊字符一般来说, 除了常用的停用词表, 主要靠程序员的观察, 总结. 再次展示test.csv中的若干样本文本:
Q1,大众(进口),高尔夫(进口),我的帕萨特烧机油怎么办怎么办?,技师说:你好,请问你的车跑了多少公里了,如果在保修期
内,可以到当地的4店里面进行检查维修。如果已经超出了保修期建议你到当地的大型维修店进行检查,烧机油一般是发动机>活塞环间隙过大和气门油封老化引起的。如果每7500公里烧一升机油的话,可以在后备箱备一些机油,以便机油报警时有机油
及时补充,如果超过两升或者两升以上,建议你进行发动机检查维修。|技师说:你好|车主说:嗯
Q38,一汽-大众奥迪,奥迪A6,05年的圆屁股a6,1.8T自动挡,能卖多少钱,一手车,车况好【车型:奥迪A6】,技师说:你好,
你可以在当地二手车市场让他们估价,我想大概还能值30000-40000左右吧。谢谢
Q39,北京现代,瑞纳,新买的车,想贴膜,请问什么牌子的膜好用?在一般的店里贴膜大概多少钱?当然不要太贵的,就是经济
实惠的~,技师说:你好,最好是熟人修理厂,因为贴膜利润是比较大得,暴利产品,四门后档便宜,前挡风玻璃要贵一点得>。祝你们幸福的,|车主说:请问四门后挡贴个一般的大概多少钱|技师说:熟人得话四门加后档四五百,一个前挡也是四百块
钱左右。如果是比较熟或者亲戚更便宜,因为膜得利润是百分几百
- 结论: 有的字符是"(进口)", 这个字样对摘要意义不大(当然了, 你也可以认为意义很大!). 还有"【车型:奥迪A6】"这样的中文输入法下的中括号, 也属于特殊字符, 意义不大. 还有"就是经济
实惠的~,", 这种带波浪线的特殊字符, 都是未来数据预处理中需要删除的无效字符.
- 后续的关于分词, 完成word_to_id的映射, 以及完成padding, cutting的工作, 就属于更纯粹的数据处理领域了. 等到后面章节中具体用到的时候我们具体分析, 处理.