一、前言

关于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的中文疑问句判断模型相关推荐

  1. 大数据分析案例-基于XGBoost算法构建二手车价格评估模型

  2. 大数据分析案例-基于XGBoost算法构造房屋租赁价格评估模型

  3. 【数据竞赛】风控实操案例 | 基于Xgboost与Catboost实现非法集资企业识别

    本文详解2020CCF大赛「企业非法集资风险预测」赛题的获奖参赛作品[风控案例-基于Xgboost与Catboost实现非法集资企业识别],包括数据分析.特征工程.模型训练.模型融合.模型结果展示和方 ...

  4. 基于dnn的车牌识别_自然场景中文文字识别,身份证火车票都能识别

    图像处理中OCR(Optical Character Recognition光学字符识别)场景非常多,也给大家的工作生活带来了很多便利,比如车牌识别就能管理停车场车辆的出入,快递时只需给一个带有快递信 ...

  5. 【项目调研+论文阅读】基于BERT的中文命名实体识别方法[J] | day6

    <基于BERT的中文命名实体识别方法>王子牛 2019-<计算机科学> 文章目录 一.相关工作 二.具体步骤 1.Bi-LSTM 2.CRF结构 三.相关实验 1.数据集 2. ...

  6. 机器学习:基于XGBoost对信用卡欺诈行为的识别

    机器学习:基于XGBoost对信用卡欺诈行为的识别 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  7. 基于深度学习实现语义识别和问答判断模型及算法优化-制造业-CSDN公开课-专题视频课程...

    基于深度学习实现语义识别和问答判断模型及算法优化-制造业-1685人已学习 课程介绍         本次课程,邀请IBM研究院讲师就制造业语义识别及判断模型搭建.QA模型.词向量.句子量化.POWE ...

  8. 基于Seq2Seq的中文聊天机器人编程实践(Encoder编码器-Decoder解码器框架 + Attention注意力机制)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  9. Python使用正则表达式识别代码中的中文、英文和数字实例演示

    Python 正则表达式识别代码中的中文.英文和数字 识别中文 识别英文 识别数字 拓展 在文本处理和数据分析中,有时候需要从代码中提取出其中包含的中文.英文和数字信息.正则表达式是一种强大的工具,可 ...

最新文章

  1. 基于多阈值注意U-Net(MTAU)的MRI多模态脑肿瘤分割模型
  2. 在建工程直接费用化_计入在建工程的成本怎么算
  3. 【NOIP2005】过河
  4. 在收购 Sun 的六年后,Oracle 终于瞄准了 Java 的非付费用户
  5. C++ assert() 详解
  6. VGG19续读【精细】,为什么叫做VGG19?==>【每一层可以看做是很多个局部特征的提取器,可以用作局部特征提取】
  7. IDEA新项目代码上传到gitlab远程仓库
  8. Singleton in java
  9. Python vs Cpython
  10. 懒加载的3种实现方式
  11. TCP长连接(KeepAlive)
  12. 安卓吃鸡玩家专属:教你电脑玩刺激战场匹配手机最简单的方式
  13. 一个月通过软考中级软件设计师
  14. 二元二次方程 c语言,C语言求解三元一次方程组的解
  15. openJudge 特殊密码锁 ACM
  16. 如何制作自己的网站?
  17. 靶机渗透练习25-Funbox4-CTF
  18. HiveSql计算占比、同比、占环比
  19. 北京房价当日报20141013
  20. ARP攻击-流量分析

热门文章

  1. Scipy中积分的计算
  2. 【C# 教程系列第 12 篇】抽象类的简单实现
  3. 【c#视频】——面向对象——多态
  4. 如何对付臭名昭著的 IO 夯?诊断利器来了
  5. GB50202-2018《建筑地基工程施工质量验收标准》免费下载
  6. 阿里云(腾讯云)服务器使用宝塔,搭建Python环境,运行 django 程序
  7. 爱彼迎招募“周末玩家”,住遍“匠心”民宿系列
  8. 2020计算机应用基础历年真题,2020北京自考计算机应用基础真题及答案
  9. 数据结构题集(严书)查找 常见习题代码
  10. 【原】 POJ 2388 Who's in the Middle 中位数 解题报告