用lstm实现nlp情感分析(roman urdu小语种为例)代码+原理详解

1 赛题描述

link: https://www.kesci.com/home/competition/5c77ab9c1ce0af002b55af86/content/1
本练习赛所用数据,是名为「Roman Urdu DataSet」的公开数据集。
这些数据,均为文本数据。原始数据的文本,对应三类情感标签:Positive, Negative, Netural。
本练习赛,移除了标签为Netural的数据样例。因此,练习赛中,所有数据样例的标签为Positive和Negative。
本练习赛的任务是「分类」。「分类目标」是用训练好的模型,对测试集中的文本情感进行预测,判断其情感为「Negative」或者「Positive」。

本文全部代码上传至我的github:
https://github.com/willinseu/kesci-urdu-sentiment-analysis
觉得对你有帮助的话,请帮我点一下star,多谢!

2.lstm解法

读取数据:

df_train = pd.read_csv('train.csv',lineterminator='\n')
df_test = pd.read_csv('test.csv',lineterminator='\n')
df_train['label'] = df_train['label'].map({
   'Negative':0,'Positive':1})
df_train.head(20)

在这里插入图片描述
由于是小语种,所以我们也看不懂上面的话是什么意思,但是标签我们还是看的懂的,并用map函数编码。

#test if nan exists
df_train.isnull().sum()

检查是否有缺失值:
在这里插入图片描述

df_test.head()

查看测试集,显然是没有标签的:
在这里插入图片描述

numpy_array = df_train.as_matrix()
numpy_array_test = df_test.as_matrix()

将训练集,测试集转为矩阵形式:
在这里插入图片描述
(其实没有必要这么做,直接对df表格操作即可。但是在此不做深究了。)
可以看到每一行被我们拆分成了id,text,label的形式。

#two commom ways to clean data
def cleaner(word):
  word = re.sub(r'\#\.', '', word)
  word = re.sub(r'\n', '', word)
  word = re.sub(r',', '', word)
  word = re.sub(r'\-', ' ', word)
  word = re.sub(r'\.', '', word)
  word = re.sub(r'\\', ' ', word)
  word = re.sub(r'\\x\.+', '', word)
  word = re.sub(r'\d', '', word)
  word = re.sub(r'^_.', '', word
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值