简介:
情感分析是基于自然语言处理的分类技术,主要解决的问题是判断一段话是正面的还是负面的。
例如网站上人们会发表评论,商家可以通过情感分析知道用户对产品的评价。还有不少基金公司会利用人们对某公司和行业的看法态度来预测未来股票的跌涨等。
首先处理数据:Keras自带了imdb的数据和调取数据的函数,所以我们直接调用load_data()函数就从亚马孙S3中下载了数据,并给每个词标注了一个索引(index),创建了字典,每段文字的每个词对应了一个数字。
import keras
import numpy as np
from keras.datasets import imdb
import matplotlib.pyplot as plt
(X_train, y_train), (X_test, y_test) = imdb.load_data()
np.reshape(X_train[0], (1, -1))
print(X_train.shape)
print(y_train.shape)
avg_len = list(map(len, X_train))
np.mean(avg_len)
plt.hist(avg_len, bins=range(min(avg_len), max(avg_len) + 50, 50))
plt.show()
跑出来的词频分布直方图是这样的:
处理数据有这么几个步骤:
1.文字分词。可以按分隔符,如英文用空格分词
2.建立字典,给每个词标号
3.把段落通过查字典翻译成数字,变成一个array
最后的工作就是做匹配然后进行分析了。
建模:
我们遇到了文字长短不均和词与词之间有联系的问题,所以引入了嵌入技术。其实就是给每个词赋一个向量。(在深入学习中叫张量tensor)。含义相近的词赋予的向量也相近。
1.通过多层全连接神经网络模型训练(假设模型中的所有上一层和下一层是相互连接)
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Flatten
from keras.layers.embeddings import Embedding
from keras.preprocessing import sequence
import keras
import numpy as np
from keras.datasets import imdb
(X_train, y_train), (