达观杯文本分类——基于N-gram和LogisticRegression
任务与数据
建立模型通过长文本数据正文(article),预测文本对应的类别(class)。
数据包含2个csv文件:
train_set.csv:此数据集用于训练模型,每一行对应一篇文章。文章分别在“字”和“词”的级别上做了脱敏处理。共有四列: 第一列是文章的索引(id),第二列是文章正文在“字”级别上的表示,即字符相隔正文(article);第三列是在“词”级别上的表示,即词语相隔正文(word_seg);第四列是这篇文章的标注(class)。 注:每一个数字对应一个“字”,或“词”,或“标点符号”。“字”的编号与“词”的编号是独立的!
test_set.csv:此数据用于测试。数据格式同train_set.csv,但不包含class。 注:test_set与train_test中文章id的编号是独立的。
思路
基于N-gram和LogisticRegression的文本分类。
只使用词表示(word_seg),不使用字表示(article)。
语言模型由sklearn包中的CountVectorizer模块并设置参数ngram_range来实现,逻辑回归由sklearn包中的LogisticRegression模块实现。
CountVectorizer模块:
LogisticRegression模块:
实验步骤
1.导入包
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.pipeline import Pipeline
2.读取数据
# 训练集
df_train = pd.read_csv('./new_data/train_set.csv')
# 测试集
df_test = pd.read_csv('./new_data/test_set.csv')# 训练集样本
X = df_train['word_seg']
# 训练集标签
Y = df_train['class']
3.使用Pipeline拟合训练数据
pipe = Pipeline([('vec', CountVectorizer(ngram_range=(1, 2), min_df=3, max_df=0.9, max_features=100000)),('clf', LogisticRegression(C=4, dual=True))])
clf = pipe.fit(X, Y)
由于数据预处理部分可能需要先fit_transform再transform,相对较为繁琐,此时可以通过Pipeline(管道)进行流水线处理。
考虑到词袋模型太简单,而对于1.4GB的训练集来说三元模型计算量又太大,设置ngram_range=(1,2)同时使用词袋模型和二元模型提取特征。
设置min_df=3,max_df=0.9,max_features=100000,用来减少训练时间并防止过拟合。
分类器使用逻辑回归模型。dual代表对偶或者原始方法。dual只适用于正则化相为l2的‘liblinear’的情况,通常样本数大于特征数的情况下,默认为False。这里设置为True。
C为正则化系数λ的倒数,必须为正数,默认为1。和SVM中的C一样,值越小,代表正则化越强。这里设置为4
4.对测试集数据进行预测
X_test = df_test['word_seg']
Y_test = clf.predict(X_test)df_test['class'] = Y_test.tolist()
df_result = df_test.loc[:, ['id', 'class']]
df_result.to_csv('./result.csv', index=False)
将预测标签与对应的id一起存入result.csv文件中,上传至达观杯网站查看得分。
下一步准备利用CNN/RNN的方法提高分数。
达观杯文本分类——基于N-gram和LogisticRegression相关推荐
- 第三届“达观杯”文本智能算法大赛参赛指南
比赛介绍 2019 年 6 月 28 日,第三届"达观杯"文本智能信息抽取挑战赛正式开赛,同期面向参赛选手开放竞赛结果提交.本届比赛由中国人工智能学会吴文俊人工智能科学技术奖办公室 ...
- “达观杯”文本智能处理挑战赛,季军带你飞
来自AI小白入门 前段时间和朋友何从庆(AI算法之心)等队友一起组队参加了这个比赛,本来以为小比赛人少,没想到参加的人会有几千人.最后我们队伍取得季军(4st/3131),虽有些许遗憾,但是也很荣幸认 ...
- 第三届“达观杯”文本智能信息抽取挑战赛丰厚奖金,群英集结,等你来战!...
近日,第三届"达观杯"文本智能信息抽取挑战赛正式上线启动(点击阅读原文,跳转报名页面),6月28日至8月31日,面向所有参赛选手开放竞赛结果提交.本届"达观杯" ...
- 【数据竞赛】“达观杯”文本智能处理挑战赛1
一.数据竞赛简介 "达观杯"文本智能处理挑战赛 1.任务 建立模型通过长文本数据正文(article),预测文本对应的类别(class) 2.数据 传送门:链接: https:// ...
- “达观杯”文本智能处理挑战赛代码示例
达观杯介绍: 类似kaggle的数据科学比赛,任何人可以参加 网址:http://www.dcjingsai.com/ 可以用支付宝实名注册 项目名称: "达观杯"文本智能处理挑战 ...
- 达观杯”文本智能处理挑战赛
竞赛信息 1.网址 http://www.dcjingsai.com/common/cmpt/"达观杯"文本智能处理挑战赛_竞赛信息.html 2.任务 建立模型通过长文本数据正文 ...
- NLP(新闻文本分类)——基于机器学习的文本分类
文本表示方法 在机器学习算法的训练过程中,假设给定NNN个样本,每个样本有MMM个特征,这样组成了N×MN×MN×M的样本矩阵,然后完成算法的训练和预测.同样的在计算机视觉中可以将图片的像素看作特征, ...
- NLP --- 文本分类(基于LDA的隐语意分析详解)
前几节我们分析了向量空间模型(VSM).基于奇异值分解(SVD)的潜语意分析(LSA).基于概率的潜语意分析(PLSA)这些模型都是为了解决文本分类问题,他们各自有自己的优点和缺点,其中VSM模型简单 ...
- “达观杯”文本智能处理挑战赛
(本内容转载自公众号"科技与Python") 2018年人工智能的发展在运算智能和感知智能已经取得了很大的突破和优于人类的表现.而在以理解人类语言为入口的认知智能上,目前 ...
- “达观杯”文本智能处理冠军分享:深度学习文本分类
向AI转型的程序员都关注了这个号
最新文章
- 简单看看PageHelper的配置
- 2-4 js基础-事件对象小结
- iOS UICollectionViewCell 的拖动
- MongoDB(课时18 修改器)
- 【收藏】Vue中ref和$refs的介绍及使用
- spring boot使用注解的方式整合mybaits
- 开源开放 | 熵简科技 AI Lab 开源金融领域中文预训练语言模型 FinBERT
- deque python_3 . python Collections -- Deque Object
- MySQL(7) ---删除数据库
- linux read函数_浅谈Linux内核IO体系之磁盘IO
- .NET后台输出js脚本的方法
- Android 控件 之 Adapter 基础讲解
- avast premier 安装文件及许可破解步骤
- 考研必备数学公式大全(数学二)(线性代数篇)
- SegNet算法详解
- 牛客小白月赛2 I.艺
- java 代码块 构造函数_Java学习笔记之------构造函数,静态关键字,静态代码块,构造代...
- 【言简意赅】聊聊DAS、NAS、SAN三种存储方式
- 【python】绘制箱体图/蜡烛图/K线图
- 开源Android 图库