第二周 - 20180422

数据预处理以及Doc2Vec过程

模型训练之前需要对数据进行预处理,毕竟文本信息很难直接用来拟合。除了简单易懂的One-Hot编码方式,业内更常用的还是Doc2Vec方案。Doc2Vec可以对文本信息进行低维稠密的分布式表达,往往更适合用于分类、拟合等处理,本文也将采用Doc2Vec的技术路线。

一、 数据清洗

数据来源是网络爬虫爬取的中文评论,在将其向量化之前,首先对其进行清洗,去除了标点符号等非建设性字符。

第二周 - 20180422_第1张图片

数月前,一位当时的好友“谴责”我发颜表情恶意卖萌的行为,而如今进行数据清洗时才明白颜表情的“污染性”。上图中正则表达式里有大量的硬编码,以用来过滤掉令人难以置信的颜表情,即使这样,数据中仍然有少量的“非建设性字符”,可以忽略。

二、 分词

英文句子中,单词与单词之间有空格间隔,往往不需要进行分词,取而代之的是“组块分析”(chunking)。而中文文本的处理则相对更麻烦,Doc2Vec中的传入数据需要中文分词之后的结果。

本例中采用结巴分词器进行分词,并开启隐马尔科夫参数使其能探索新词。

第二周 - 20180422_第2张图片

分词之后的结果用列表存储。

三、 Doc2Vec

Doc2Vec是数据预处理过程中最重要的一个阶段,目的是将文本信息进行低维稠密的分布式表达。本文中基于gensim包实现。

Doc2Vec 或者叫做 paragraph2vec, sentence embeddings,是一种非监督式算法,可以获得 sentences/paragraphs/documents 的向量表达,是 word2vec 的拓展。学出来的向量可以通过计算距离来找 sentences/paragraphs/documents 之间的相似性,可以用于文本聚类,对于有标签的数据,还可以用监督学习的方法进行文本分类,例如经典的情感分析问题。

其基本原理推荐博文基于gensim的doc2vec实践 - CSDN博客。

首先利用爬取的文本训练Doc2Vec:

第二周 - 20180422_第3张图片

得到一个模型:


第二周 - 20180422_第4张图片

利用这个模型再将分好词的本文向量化:

第二周 - 20180422_第5张图片

最终生成向量(部分):

你可能感兴趣的:(第二周 - 20180422)