“达观杯”文本智能处理挑战赛

 

一、题目分析

数据

数据包含2个csv文件:

train_set.csv:此数据集用于训练模型,每一行对应一篇文章。

文章分别在“字”和“词”的级别上做了脱敏处理。共有四列:

第一列是文章的索引(id);

第二列是文章正文在“字”级别上的表示,即字符相隔正文(article);

第三列是在“词”级别上的表示,即词语相隔正文(word_seg);

第四列是这篇文章的标注(class)。

注:每一个数字对应一个“字”,或“词”,或“标点符号”。“字”的编号与“词”的编号是独立的!

test_set.csv:此数据用于测试。数据格式同train_set.csv,但不包含class。 注:test_set与train_test中文章id的编号是独立的。 友情提示:请不要尝试用excel打开这些文件!由于一篇文章太长,excel可能无法完整地读入某一行!

train_set.csv中数据如下:

 

test_set.csv中数据如下:

 

题目的要求大致上已经明确,就是根据两个参数把id归类到不同的类中。 

二、问题分析

问题的解决方案大致如下:

三、代码

 1 print("开始........")
 2 
 3 import pandas as pd
 4 from sklearn.linear_model import LogisticRegression
 5 from sklearn.feature_extraction.text import  CountVectorizer
 6 
 7 df_train = pd.read_csv('./train_set.csv')
 8 df_test = pd.read_csv('./test_set.csv')
 9 df_train.drop(columns=['article','id'],inplace=True)
10 df_test.drop(columns=['article'],inplace=True)
11 
12 vectorizer=CountVectorizer(ngram_range=(1,2),min_df=3,max_df=0.9,max_features=100000)
13 vectorizer.fit(df_train['word_seg'])
14 x_train=vectorizer.transform(df_train['word_seg'])
15 x_test=vectorizer.transform(df_test['word_seg'])
16 y_train=df_train['class']-1
17 
18 lg=LogisticRegression(C=4,dual=True)
19 lg.fit(x_train,y_train)
20 
21 y_test=lg.predict(x_test)
22 
23 df_test['class']=y_test.tolist()
24 df_test['class']=df_test['class']+1
25 df_result=df_test.loc[:,['id','class']]
26 df_result.to_csv('./result.csv',index=False)
27 
28 print("完成.........")

四、回顾总结

提高模型性能的方法大致上有以下几种:

1、数据预处理

2、特征工程

3、机器学习算法

4、模型集成

5、数据增强