说明
- 本文是方法记录,不是完整的项目过程(在我Jupyter上,数据前期预处理部分懒得搬了),也没有调参追求准确度(家里电脑跑不动)。
- 参考任务来源于Kaggle,地址:电影评论情感分类
- 本文参考了不同的资料来源,包括斯坦福CS224N的课程资料,网上博客,Keras官方文档等
任务核心部分
1.单词表示
1.1 理论部分
对大部分(或者所有)NLP任务,第一步都应该是如何将单词表示成符合模型所需要的输入。最直接的思路就是将单词(符号)变为词向量。
词向量的表示方法:
-
one-hot 编码:想法直接,但过于稀疏,且词与词之间正交,无法衡量词之间的相似度
-
基于矩阵分解的方法:比如不同词窗的矩阵,进行SVD分解,得到相应的向量表示。但问题在于矩阵会很大,占用空间。而且加入新的文本需要重新计算,计算成本也高。
-
Word2vec:这部分内容有点多。这部分核心思想:
Distributional semantics: A word’s meaning is given by the words that frequently appear close-by
即使用词语的上下文来表示其语义。最直接的是N-gram的想法,接着就是word2vec。
放一张听课截图:

还要补充给一个Glove,是将word2vec的想法以及co-currence matrix结合的一种方法。
具体解释可以看这个链接,Glove介绍1.2 代码部分
- 导入预训练的模型
from gensim.test.utils import datapath, get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec
glove_file = datapath('C:\\Users\\Administrator\\Documents\jupyter\\2019 最新斯坦福CS224n课件\\1、Introduction and Word Vectors\\glove.6B.100d.txt')
word2vec_glove_file = get_tmpfile("glove.6B.100d.word2vec.txt")
glove2word2vec(glove_file, word2vec_glove_file)
model = KeyedVectors.load_word2vec_format(word2vec_glove_file)
help(model)
这种方式,就可以通过model得到词向量,通过help也可以知道其他操作,计算相似度啥的。具体参照斯坦福课程资料第一讲。
- Tensorflow中的文本预处理
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.utils import to_categorical
def word_encoder(text,label,max_,max_len = 50):
'''
输入:
text:原始文本,一个个句子的列表。
label:文本的标签
max_:分词后根据词频取前max_个词
max_len:得到序列的最大长度
输出:
文本序列、标签(one-hot)、序列对应的字典
'''
tokenizer = Tokenizer(nb_words=max_) #根据词频取top n个词
tokenizer.fit_on_texts(

本文详细介绍了使用Kaggle电影评论数据集进行情感分析的过程,从词向量表示方法(如Word2Vec、GloVe)到CNN和RNN模型构建,涵盖了数据预处理、模型训练及评估的关键步骤。
最低0.47元/天 解锁文章
250

被折叠的 条评论
为什么被折叠?



