机器学习算法进阶一

- 长文本的智能解析实战

如何从纷繁多变、信息量庞杂的冗长文本中获取关键信息,一直是文本领域难题。随着深度学习的热潮来临,有许多新方法来到了 NLP 领域,给相关任务带来了更多优秀成果,也给大家带来了更多应用和想象的空间。

用传统的监督学习模型对一段文文本进行分类的基本过程:

一段原始文本→(数据预处理)→处理后的文本→(特征工程)→Features→(输入)→y=f(x_1,x_2,x_3,...)→(输出)→类别

注:特征工程是整个机器学习过程中最要的部分。特征决定了机器学习的上限,而机器学习算法只是逼近这个上限。

train_set.csv:此数据集用于训练模型,每一行对应一篇文章。文章分别在“字”和“词”的级别上做了脱敏处理。共有四列: 第一列是文章的索引(id),第二列是文章正文在“字”级别上的表示,即字符相隔正文(article);第三列是在“词”级别上的表示,即词语相隔正文(word_seg);第四列是这篇文章的标注(class)。

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

test_set.csv:此数据用于测试。数据格式同train_set.csv,但不包含class。

注:test_set与train_test中文章id的编号是独立的。

 - CountVectorizer() #文本特征提取

- 达观杯智能文本处理竞赛代码

 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Sat Dec  1 17:14:12 2018
 4 
 5 @author: Administrator
 6 """
 7 
 8 
 9 print("开始......")
10 import pandas as pd
11 # pandas用于处理更大的数据集
12 from sklearn.linear_model import LogisticRegression
13 # 定义逻辑回归函数
14 from sklearn.feature_extraction.text import CountVectorizer
15 # 定义文本特征提取
16 df_train = pd.read_csv('./train_set.csv')
17 df_test = pd.read_csv('./test_set.csv')
18 df_train.drop(columns=['article','id'], inplace=True)
19 # 删除指定列 , inplace可选参数
20 df_test.drop(columns=['article'],inplace=True)
21 # 测试数据删除指定列article
22 vectorizer = CountVectorizer(ngram_range=(1,2),min_df=3,max_df=0.9,max_features=100000)
23 vectorizer.fit(df_train['word_seg'])
24 x_train = vectorizer.transform(df_train['word_seg'])
25 x_test = vectorizer.transform(df_test['word_seg'])
26 y_train = df_train['class']-1
27 # 训练一分类器
28 # 知识点定位:统监督学习算法之线性逻辑回归模型AAA
29 lg = LogisticRegression(C=4,dual = True)
30 #c:正则化系数λ的倒数,float类型,默认为1.0。
31 #必须是正浮点型数。像SVM一样,越小的数值表示越强的正则化;
32 lg.fit(x_train,y_train)
33 '''根据训练好的分类型对测试集的样本进行预测'''
34 y_test = lg.predict(x_test)
35 """保存预测结果至本地"""
36 df_test['class'] = y_test.tolist()#tolist()将数组或者矩阵转换成列表
37 df_test['class'] = df_test['class'] + 1
38 df_result = df_test.loc[:,['id','class']]
39 df_result.to_csv('./result.csv',index = False)
40 
41 print("ok")

 

猜你喜欢

转载自www.cnblogs.com/lhai000/p/10056326.html
今日推荐