wordembedding 概念及处理方法

文本处理是NLP领域的一个重要分支,其细分领域又包括文本聚类、分类、机器翻译、人机交互等等,而这一切的前提都是将文本表示成计算机可以理解和易于处理的数据。

word embedding 背景


如何表示词语所包含的语义?

苹果?水果?Iphone? 
苹果、梨子,这两个词相关吗?

语言的表示 
符号主义:Bags-of-word,维度高、过于稀疏、缺乏语义、模型简单 
分布式表示:Word Embedding,维度低、更为稠密、包含语义、训练复杂

Word Embedding 
核心思想:语义相关的词语,具有相似的上下文环境,例如, 苹果和梨子 
所做的事情:将每个词语训练成,词向量

什么是Word Embedding?

现有的机器学习方法往往无法直接处理文本数据,因此需要找到合适的方法,将文本数据转换为数值型数据,由此引出了Word Embedding的概念。如果将word看作文本的最小单元,可以将Word Embedding理解为一种映射,其过程是:将文本空间中的某个word,通过一定的方法,映射或者说嵌入(embedding)到另一个数值向量空间(之所以称之为embedding,是因为这种表示方法往往伴随着一种降维的意思,详见下文的讨论)。

 Word Embedding的输入

Word Embedding的输入是原始文本中的一组不重叠的词汇,假设有句子:apple on a apple tree。那么为了便于处理,我们可以将这些词汇放置到一个dictionary里,例如:["apple", "on", "a", "tree"],这个dictionary就可以看作是Word Embedding的一个输入。

 Word Embedding的输出

Word Embedding的输出就是每个word的向量表示。对于上文中的原始输入,假设使用最简单的one hot编码方式,那么每个word都对应了一种数值表示。例如,apple对应的vector就是[1, 0, 0, 0]a对应的vector就是[0, 0, 1, 0],各种机器学习应用可以基于这种word的数值表示来构建各自的模型。当然,这是一种最简单的映射方法,但却足以阐述Word Embedding的意义。下文将介绍常见的Word Embedding的方法和优缺点。

实践 
基于gensim包和中文维基语料 
gensim:http://radimrehurek.com/gensim/models/word2vec.html 
中文维基分词语料:链接 https://pan.baidu.com/s/1qXKIPp6 密码 kade

pip install gensim

# 加载包
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

# 训练模型
sentences = LineSentence('wiki.zh.word.text')
model = Word2Vec(sentences, size=128, window=5, min_count=5, workers=4)

# 保存模型
model.save('word_embedding_128')

# 加载模型
model = Word2Vec.load("word_embedding_128")

# 使用模型
items = model.most_similar(u'中国')
model.similarity(u'男人', u'女人')

 Word Embedding的类型

Word Embedding也是有流派的,主流有以下两种:

  • 基于频率的Word Embedding(Frequency based embedding)
  • 基于预测的Word Embedding(Prediction based embedding)

下面分别介绍之。

 基于频率的Word Embedding

基于频率的Word Embedding又可细分为如下几种:

  • Count Vector
  • TF-IDF Vector
  • Co-Occurence Vector

其本质都是基于one-hot表示法的,以频率为主旨的加权方法改进,下面逐一介绍。

发布了65 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sereasuesue/article/details/86530956