本项目基于BERT中文预训练模型,使用huggingface transformers开源工具库实现中文关于投资知道的问题答案匹配检测系统的模型实现。
问题适用场景:投资问答/论坛等,自动检测问题答案是否匹配,代替人工审核。
所有数据、模型及代码下载链接:百度网盘地址,提取码: doh9
原始BERT预训练模型为chinese_wwm_pytorch,下载地址哈工大崔一鸣开源的中文预训练模型,网盘上也有,主要需3个文件,按huggingface库要求改名,具体见file_utils.py,模型bin文件,配置json文件和词表txt文件。
原始数据结构 title/question/reply/is_best,question大部分为空。处理方式详见 preprocess_data_touzi.ipynb。
查看数据概况:
总共588159条数据,数据分布:
question数据分布
question为空的有: 439921
question 与 title 内容相同的有: 10542291253
question 不为空,且与title 内容不相同的有: 56985
分析question与title不同的5W6数据
前2列为title与question
question数据处理:
1>考虑title与question的长度。2>考虑title与question的文本相似度。
对于文本相似度大于一定值的取长度较长的数据,对于文本相似度较低的,互为补充考虑将question与title拼接起来作为最终的best_title。
is_best表示数据集中问题与答案是否匹配,0为不匹配,1为匹配。考虑两种处理方式:
方式2同时可以考虑一正一负,或者一正四负的数据集。最后构建了3份训练、开发、测试数据集,并在小数据集上试验观察后决定最终采用的数据集
强烈推荐使用huggingface transformers开源的代码库,几乎涵盖了nlp当前最火最好的各种预训练模型。
使用chinese_wwm_pytorch中文整词预训练好的BERT模型,做句子pair的分类任务:
df = pd.read_csv(path)
examples = []
titles = df["best_title"].astype("str").tolist()
reply = df["reply"].astype("str").tolist()
labels = df["is_best"].astype("int").tolist()
for i in range(len(labels)):
guid = "%s-%s" % (set_type,i) examples.append(InputExample(guid=guid,text_a=titles[i],text_b=reply[i],label=labels[i]))
return examples
使用BertForSequenceClassification类取出CLS token,经Linear层得到logits后和label计算交叉熵损失,优化函数使用带weight decay的Adam,初始学习率设置较小为2e-5,激活函数为gelu。在项目根目录下运行:bash run_bert_base.sh,注意按需修改各项参数。
对于预处理后的3种数据集,我们选择在一份小数据集(原始数据有8300条)–保险知道上做对照实验来确定最终选择,所有数据集都跑20k个iteration,对照结果如下图:
最终采用one pos one neg的数据作为最后的投资知道分类模型数据集,总共训练了10个epoch,每30K迭代保存一次模型,训练结束共保存了24个checkpoint,模型在checkpoint-330000达到最大dev acc 0.9627821678038782。模型acc曲线如下:
本项目更多的用处还是作为接口向外提供服务,因为没有完整的产品线这里就只做一个简单的网页部署。使用网页版Flask部署,在项目根目录下创建一个templates文件夹,存放FQA.html文件,另外需要一个flaskServer.py提供http服务。网盘里都有提供,展示页面如下:
本文在chinese-wmm-pytorch预训练模型下,fine-tuning了投资知道问题、答案匹配的文本分类模型,准确率达到96.27%,可用于问答、知道等论坛应用中的自动检测。BERT模型在nlp中确实厉害,后续还可以尝试更强的RoBERTa模型。在论坛问答应用中还有个特别重要的功能就是最佳答案推荐,基于已有的问答库,对用户提出的新问题,给出推荐答案,后续尝试这个问题的解决方案。
文章浏览阅读339次,点赞8次,收藏8次。Ratelimitcache: Python缓存库,支持速率限制项目链接: https://gitcode.com/simonw/ratelimitcache?utm_source=artical_gitcode如果你正在寻找一个Python缓存库,并且希望对缓存操作进行速率限制,那么Ratelimitcache可能是你的理想选择。什么是Ratelimitcache?Ratelimitca..._python ratelimit基于什么
文章浏览阅读2.3k次,点赞2次,收藏8次。Xpath和CSS信息提取的方法异同点_xpath 获取css
文章浏览阅读95次。剑指 Offer II 052. 展平二叉搜索树
文章浏览阅读1.2w次,点赞12次,收藏118次。目录0、绪论1、AXI Crossbar1.1、几种可以选择的Crossbar 互联结构1.1.1、Crossbar mode (Performance Optimized)1.1.2、Shared Access mode (Area optimized)2、AXI Data Width Converter3、AXI Clock Converter4、AXI Pr..._axi interconnect不同位宽
文章浏览阅读340次。linux宝塔_linux 安装django vue3
文章浏览阅读1.3k次。win7系统配置smb服务器 内容精选换一换首次开机时,缺省进入遥控器配置向导界面。遥控器操作界面选择“系统设置 > 配置向导”,进入“配置向导”界面。网线连接:当终端有插入网线时,进入“LAN”界面(仅支持IPv4格式),如图3所示。请联系管理员获取网络配置方式,配置方式请参见表1。配置方式配置项操作自动获取终端通过DHCP(Dynamic Host Configuration操作系统镜像..._win7 设置smb访问方式
文章浏览阅读3w次,点赞2次,收藏4次。转载自: http://blog.csdn.net/zouqin369/article/details/6913692 今天去公司设置好IP后,无论怎么样都上不了internet,再次打开本地后发现默认网关自动消失,cmd下输入ipconfig后的现象如下: 物理地址. . . . . . . . . . . . . : 00-22-64-55-76-8F DHCP 已启用_禁止修改网关命令
文章浏览阅读482次。Extjs的窗口是可以加载自己的HTML的,但这样两个页面就相当独立了,传参是个问题 ,网上也没有很好的解答清楚,猫猫今天就说清楚这个模式的传参要点。_extjs中打开网页怎么传参
文章浏览阅读811次。win_win port 进程
文章浏览阅读1.2k次。Ch3点到点数据链路层知识点1. 点到点数据链路层要解决的主要问题2. 常见的帧管理(帧定界)方法3. CRC的计算4. 流量控制的基本原理5. 常见错误及其处理机制6. 滑动窗口的概念、形式及工作原理7. ARQ(Automatic Repeat reQuest)协议工作原理:8. 连续ARQ(Go-back-N ARQ)工作原理(特别注意累计确认):9. 选择重传ARQ工作原理10. 了解(高..._hdlc go-back-n
文章浏览阅读2.6k次。逻辑上:Single column 单行索引Concatenated 多行索引Unique 唯一索引NonUnique 非唯一索引Function-based函数索引Domain 域索引物理上:Partitioned 分区索引NonPartitioned 非分区索引B-tree:Normal 正常型B树Rever Key 反转型B树Bitmap 位图索引索引结构:B-tree:适合与大量的增、删、..._oracle索引有哪几种类型
文章浏览阅读176次。11_countdownlatch illegate