基于BiLSTM的酒店评论文本情感分析

介绍:(需要有部分机器学习和深度学习,还有NLP的理论知识)

  • 使用深度学习框架TensorFlow中的keras接口实现BiLstm神经网络,用训练集训练出一个模型,可以判断酒店评论文本的正负向情绪。
  • 数据集使用了8886条酒店评论,其中正向评论有4443条,负向评论有4443条。正负向评论都打好了标签,正向标1,负向标0。
  • 该模型的embedding用了word2vec预训练模型,是中科大的一个开源的词向量模型。
  • 模型的准确率达到97%。
  • 博主是在juypter notebook上执行的。

源码以及操作:(配置好环境和设置好路径可以直接运行)

#导包:

# 首先加载必用的库
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import re
import jieba # 结巴分词
# gensim用来加载预训练word vector
from gensim.models import KeyedVectors
import warnings
warnings.filterwarnings("ignore")
# 用来解压
import bz2
import csv
from tensorflow.python.keras import metrics
import tensorflow as tf

#导入预训练模型,需先下载预训练模型放入指定目录,导入时需要等待几分钟到十几分钟不等。

with open("embeddings/sgns.zhihu.bigram", 'wb') as new_file, open("embeddings/sgns.zhihu.bigram.bz2", 'rb') as file:
    decompressor = bz2.BZ2Decompressor()
    for data in iter(lambda : file.read(100 * 1024), b''):
        new_file.write(decompressor.decompress(data))
    
cn_model = KeyedVectors.load_word2vec_format('embeddings/sgns.zhihu.bigram', 
                                             binary=False, unicode_errors="ignore")

#读入数据集,分好训练样本和训练标签

train_texts_orig = []
# 文本所对应的labels, 也就是标记
train_target = []

with open("negative_samples.txt", "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        dic = eval(line)
        train_texts_orig.append(dic["text"])
        train_target.append(dic["label"])
        
filename = 'ChnSentiCorp_htl_all.txt'
with open(filename, "r", encoding="utf-8") as f:
    lines = f.readlines()
    for line in lines:
        line = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+", "",line)
        p=(int)(line[0])
        train_target.append(p)
        line= line.replace(line[0],'')
        train_texts_orig.

评论 86
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值