问句识别:基于Xgboost的中文疑问句判断模型
一、前言
关于Xgboost:
xgboost是大规模并行boosted tree的工具,它是目前最快最好的开源boosted
tree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案。在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN,
MPI, Sungrid Engine等各个平台上面运行,并且保留了单机并行版本的各种优化,使得它可以很好地解决于工业界规模的问题。
网上有不少介绍的文章,这里就此略过,直奔主题,写一篇炼丹文。
二、实战
1、语料
(1)语料格式
content,label
在么,1
你好,0
...
左边为文本,右边为标签,从这里也可以看出来,疑问句判别问题可以简单的作为一个二分类问题来解决。
(2)语料预处理
tokenizer = jieba.Tokenizer()corpus['tokens'] = corpus.content.apply(lambda x: list(tokenizer.cut(x)))
从本地读取语料后,进行简单的分词处理
(3)特征工程
vectorizer = TfidfVectorizer(smooth_idf=True,analyzer=analyzer,ngram_range=(1, 1),min_df=1, norm='l1')sparse_vector = vectorizer.fit_transform(train.tokens.apply(lambda x: ' '.join(x)).tolist())
这里对分词后的语料进行TFIDF特征抽取,构造训练矩阵。
2、模型
(1)模型参数
模型参数使用k折交叉验证进行对比,确定
for i, param in enumerate(param_grid):cv_result = xgb.cv(param, self.train_matrix,num_boost_round=self.num_boost_round, # max iter roundnfold=self.nfold,stratified=self.stratified,metrics=self.metrics, # metrics focus onearly_stopping_rounds=self.early_stopping_rounds) # stop when metrics not get better
最终得到表现最好的一组参数及相应的迭代次数等
(2)模型训练
_, best_param, best_iter_round = self.model_param_select()self.model = xgb.train(dtrain=self.train_matrix, params=best_param, num_boost_round=best_iter_round)
与交叉验证寻找最佳参数不用,训练模型时使用全部的数据进行训练
(3)模型结果
Param select 0, auc: 0.9793438, iter_round: 207, params: {'objective': u'binary:logistic', 'subsample': 0.5, 'eta': 0.1, 'max_depth': 4, 'silent': 1}, now best auc: 0.9793438Param select 1, auc: 0.9799142, iter_round: 350, params: {'objective': u'binary:logistic', 'subsample': 0.7, 'eta': 0.1, 'max_depth': 4, 'silent': 1}, now best auc: 0.9799142Param select 2, auc: 0.9802402, iter_round: 280, params: {'objective': u'binary:logistic', 'subsample': 1.0, 'eta': 0.1, 'max_depth': 4, 'silent': 1}, now best auc: 0.9802402...Param select 24, auc: 0.97926, iter_round: 694, params: {'objective': u'binary:logistic', 'subsample': 0.5, 'eta': 0.02, 'max_depth': 6, 'silent': 1}, now best auc: 0.980495Param select 25, auc: 0.9803058, iter_round: 824, params: {'objective': u'binary:logistic', 'subsample': 0.7, 'eta': 0.02, 'max_depth': 6, 'silent': 1}, now best auc: 0.980495Param select 26, auc: 0.980129, iter_round: 880, params: {'objective': u'binary:logistic', 'subsample': 1.0, 'eta': 0.02, 'max_depth': 6, 'silent': 1}, now best auc: 0.980495
最终可以看到,模型的auc在0.980495得到最佳的参数,保存模型。
3、实例
from interrogative.api import *train()
tag = recognize(u'今天 来 点 兔子 吗')
output = '是疑问句' if tag else '不是疑问句'
print(output)
三、其他
1、Xgboost参数解释:https://www.cnblogs.com/mfryf/p/6293814.html
2、具体源码可以在我的github上找到:https://github.com/lpty/nlp_base
问句识别:基于Xgboost的中文疑问句判断模型相关推荐
- 大数据分析案例-基于XGBoost算法构建二手车价格评估模型
- 大数据分析案例-基于XGBoost算法构造房屋租赁价格评估模型
- 【数据竞赛】风控实操案例 | 基于Xgboost与Catboost实现非法集资企业识别
本文详解2020CCF大赛「企业非法集资风险预测」赛题的获奖参赛作品[风控案例-基于Xgboost与Catboost实现非法集资企业识别],包括数据分析.特征工程.模型训练.模型融合.模型结果展示和方 ...
- 基于dnn的车牌识别_自然场景中文文字识别,身份证火车票都能识别
图像处理中OCR(Optical Character Recognition光学字符识别)场景非常多,也给大家的工作生活带来了很多便利,比如车牌识别就能管理停车场车辆的出入,快递时只需给一个带有快递信 ...
- 【项目调研+论文阅读】基于BERT的中文命名实体识别方法[J] | day6
<基于BERT的中文命名实体识别方法>王子牛 2019-<计算机科学> 文章目录 一.相关工作 二.具体步骤 1.Bi-LSTM 2.CRF结构 三.相关实验 1.数据集 2. ...
- 机器学习:基于XGBoost对信用卡欺诈行为的识别
机器学习:基于XGBoost对信用卡欺诈行为的识别 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页
- 基于深度学习实现语义识别和问答判断模型及算法优化-制造业-CSDN公开课-专题视频课程...
基于深度学习实现语义识别和问答判断模型及算法优化-制造业-1685人已学习 课程介绍 本次课程,邀请IBM研究院讲师就制造业语义识别及判断模型搭建.QA模型.词向量.句子量化.POWE ...
- 基于Seq2Seq的中文聊天机器人编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制)
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...
- Python使用正则表达式识别代码中的中文、英文和数字实例演示
Python 正则表达式识别代码中的中文.英文和数字 识别中文 识别英文 识别数字 拓展 在文本处理和数据分析中,有时候需要从代码中提取出其中包含的中文.英文和数字信息.正则表达式是一种强大的工具,可 ...
最新文章
- 基于多阈值注意U-Net(MTAU)的MRI多模态脑肿瘤分割模型
- 在建工程直接费用化_计入在建工程的成本怎么算
- 【NOIP2005】过河
- 在收购 Sun 的六年后,Oracle 终于瞄准了 Java 的非付费用户
- C++ assert() 详解
- VGG19续读【精细】,为什么叫做VGG19?==>【每一层可以看做是很多个局部特征的提取器,可以用作局部特征提取】
- IDEA新项目代码上传到gitlab远程仓库
- Singleton in java
- Python vs Cpython
- 懒加载的3种实现方式
- TCP长连接(KeepAlive)
- 安卓吃鸡玩家专属:教你电脑玩刺激战场匹配手机最简单的方式
- 一个月通过软考中级软件设计师
- 二元二次方程 c语言,C语言求解三元一次方程组的解
- openJudge 特殊密码锁 ACM
- 如何制作自己的网站?
- 靶机渗透练习25-Funbox4-CTF
- HiveSql计算占比、同比、占环比
- 北京房价当日报20141013
- ARP攻击-流量分析
热门文章
- Scipy中积分的计算
- 【C# 教程系列第 12 篇】抽象类的简单实现
- 【c#视频】——面向对象——多态
- 如何对付臭名昭著的 IO 夯?诊断利器来了
- GB50202-2018《建筑地基工程施工质量验收标准》免费下载
- 阿里云(腾讯云)服务器使用宝塔,搭建Python环境,运行 django 程序
- 爱彼迎招募“周末玩家”,住遍“匠心”民宿系列
- 2020计算机应用基础历年真题,2020北京自考计算机应用基础真题及答案
- 数据结构题集(严书)查找 常见习题代码
- 【原】 POJ 2388 Who's in the Middle 中位数 解题报告