当前位置:   article > 正文

Keras + LSTM + 词向量 情感分类/情感分析实验_基于keras搭建lstm网络实现文本情感分类

基于keras搭建lstm网络实现文本情感分类

背景简介

本人是深度学习入门的菜菜菜鸟一枚…
利用LSTM + word2vec词向量进行文本情感分类/情感分析实验,吸收了网上的资源和代码并尝试转化为自己的东西~

实验环境

  • win7 64位系统
  • Anaconda 4.3.0 , Python 2.7 version
  • Pycharm开发环境
  • python包:keras,gensim,numpy等

实验数据

本文的实验数据是来自网上的中文标注语料,涉及书籍、酒店、计算机、牛奶、手机、热水器六个方面的购物评论数据,具体介绍参见该文:购物评论情感分析

数据处理

上面提到的数据在网上见到的次数比较多,原始格式是两个excel文件,如图:
两个excel

对,就是这两个…估计来到本文的小伙伴也见过。一些代码就是直接从这两个excel里读取数据、分词、处理…不过我表示自己习惯从txt文本里获取数据,因此本人将数据合并、去重(原数据里有不少重复的评论)、分词(用的是哈工大LTP分词)之后存为一份txt文本,保留的数据情况如下:

正面评价个数:8680个
负面评价个数:8000个

文本如图所示:
这里写图片描述

然后人工生成一份【语料类别】文本,用1表示正面评价,用0表示负面评价,与评论数据一一对应。

生成词语的索引字典、词向量字典

利用上述文本语料生成词语的索引字典和词向量字典。
注意:当Word2vec词频阈值设置为5时,词频小于5的词语将不会生成索引,也不会生成词向量数据。

工具:gensim里的Word2vec,Dictionary

代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
功能:利用大语料生成词语的索引字典、词向量,然后保存为pkl文件
时间:2017年3月8日 13:19:40
"""

import pickle
import logging
import tkFileDialog

import numpy as np
np.random.seed(1337)  # For Reproducibility

from Functions.TextSta import TextSta
from gensim.models.word2vec import Word2Vec
from gensim.corpora.dictionary import Dictionary

# 创建词语字典,并返回word2vec模型中词语的索引,词向量
def create_dictionaries(p_model):
    gensim_dict = Dictionary()
    gensim_dict.doc2bow(p_model.vocab.keys(), allow_update=True)
    w2indx = {v: k + 1 for k, v in gensim_dict.items()}  # 词语的索引,从1开始编号
    w2vec = {word: model[word] for word in w2indx.keys()}  # 词语的词向量
    return w2indx, w2vec

# 主程序
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

print u"请选择大语料的分词文本
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/353420
推荐阅读
相关标签
  

闽ICP备14008679号