CNN也能用于NLP任务,一文简述文本分类任务的7个模型

作者:网友投稿 时间:2018-07-06 21:02

字号

本文是我之前写过的一篇基于推特数据进行情感分析的文章(https://ahmedbesbes.com/sentiment-analysis-on-twitter-using-word2vec-and-keras.html)的延伸内容。那时我建立了一个简单的模型:基于 keras 训练的两层前馈神经网络。用组成推文的词嵌入的加权平均值作为文档向量来表示输入推文。

我用的嵌入是用 gensim 基于语料库从头训练出来的 word2vec 模型。该是一个二分类任务,准确率能达到 79%。

本文目标在于探索其他在相同数据集上训练出来的 NLP 模型,然后在给定的测试集上对这些模型的性能进行评估。

我们将通过不同的模型(从依赖于词袋表征的简单模型到部署了卷积/循环网络的复杂模型)了解能否得到高于 79% 的准确率!

CNN也能用于NLP任务,一文简述文本分类任务的7个模型

首先,将从简单的模型开始,逐步增加模型的复杂度。这项工作是为了说明简单的模型也能很有效。

我会进行这些尝试:

用词级的 ngram 做 logistic 回归

用字符级的 ngram 做 logistic 回归

用词级的 ngram 和字符级的 ngram 做 Logistic 回归

在没有对词嵌入进行预训练的情况下训练循环神经网络(双向 GRU)

用 GloVe 对词嵌入进行预训练,然后训练循环神经网络

多通道卷积神经网络

RNN(双向 GRU)+ CNN 模型

文末附有这些 NLP 技术的样板代码。这些代码可以帮助你开启自己的 NLP 项目并获得最优结果(这些模型中有一些非常强大)。

我们还可以提供一个综合基准,我们可以利用该基准分辨哪个模型最适合预测推文中的情绪。

在相关的 GitHub 库中还有不同的模型、这些模型的预测结果以及测试集。你可以自己尝试并得到可信的结果。

import os 

import re 

 

import warnings 

warnings.simplefilter("ignore", UserWarning) 

from matplotlib import pyplot as plt 

%matplotlib inline 

 

 

import pandas as pd 

pd.options.mode.chained_assignment = None 

import numpy as np  

from string import punctuation 

 

from nltk.tokenize import word_tokenize 

 

from sklearn.model_selection import train_test_split 

from sklearn.feature_extraction.text import TfidfVectorizer 

from sklearn.linear_model import LogisticRegression 

from sklearn.metrics import accuracy_score, auc, roc_auc_score 

from sklearn.externals import joblib 

 

import scipy 

from scipy.sparse import hstack 

一、数据预处理

你可以从该链接()下载数据集。

加载数据并提取所需变量(情感及情感文本)。

该数据集包含 1,578,614 个分好类的推文,每一行都用 1(积极情绪)和 0(消极情绪)进行了标记。

作者建议用 1/10 的数据进行测试,其余数据用于训练。

data = pd.read_csv('./data/tweets.csv', encoding='latin1'usecols=['Sentiment', 'SentimentText']) 

data.columns = ['sentiment', 'text'] 

datadata = data.sample(frac=1random_state=42

print(data.shape) 

(1578614, 2) 

for row in data.head(10).iterrows(): 

    print(row[1]['sentiment'], row[1]['text'])  

1  keep voting for robert pattinson in the popsugar100 as well!!  

1 @GamrothTaylor I am starting to worry about you, only I have Navy Seal type sleep hours.  

0 sunburned...no sunbaked!    ow.  it hurts to sit. 

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>CNN NLP 模型
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接