zoukankan      html  css  js  c++  java
  • 机器学习算法进阶一

    - 长文本的智能解析实战

    如何从纷繁多变、信息量庞杂的冗长文本中获取关键信息,一直是文本领域难题。随着深度学习的热潮来临,有许多新方法来到了 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")

     

  • 相关阅读:
    VUE body 背景色
    BUTTON莫名出现黄色边框 :focus
    VUE SVG
    【噶】字符串-680. 验证回文字符串 Ⅱ
    【噶】数组-两数之和(哈希表)
    【噶】数组-面试题 16.11. 跳水板
    【噶】字符串-58. 最后一个单词的长度
    Ajax_Jason 使用小Demo
    tomcat_部署项目以及相关问题
    js 表单的选择与反选简单操作
  • 原文地址:https://www.cnblogs.com/lhai000/p/10056326.html
Copyright © 2011-2022 走看看