文本情感分析(Sentiment Analysis)是自然语言处理(NLP)方法中常见的应用,也是一个有趣的基本任务,尤其是以提炼文本情绪内容为目的的分类。它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。
本文将介绍情感分析中的情感极性(倾向)分析。所谓情感极性分析,指的是对文本进行褒义、贬义、中性的判断。在大多应用场景下,只分为两类。例如对于“喜爱”和“厌恶”这两个词,就属于不同的情感倾向。
一.流程分析
1、创建train reader 和 test_reader
2、创建lstm模型
3、定义 words、label 张量
4、优化函数、损失函数
5、训练 & 保存模型
6、使用模型进行预测
二、源代码
# coding=utf-8
import os
from multiprocessing import cpu_count
import numpy as np
import paddle
import paddle.fluid as fluid
class classify():
data_root_path = ""
dict_path = "data/data9045/dict.txt"
model_save_dir = "work/model_baseline/"
test_data_path = "data/data9045/Test_IDs.txt"
save_path = 'work/result.txt'
# 获取字典长度
def get_dict_len(d_path):
with open(d_path, 'r', encoding='utf-8') as f:
line = eval(f.readlines()[0])
return len(line.keys())
# 1、创建train reader 和 test_reader
def data_mapper(sample):
data, label = sample
data = [int(data) for data in data.split(',')]
return data, int(label)
# 创建数据读取器train_reader
def train_reader(train_data_path):
def reader():
with open(train_data_path, 'r') as f:
lines = f.readlines()
np.random.shuffle(lines)
for line in lines:
# print (line)
data, label = line.split('\t')
yield data, label
return paddle.reader.xmap_readers(classify.data_mapper, reader, cpu_count(), 1024)
# 创建数据读取器val_reader
def val_reader(val_data_path):
def reader(