文本向量化的方法

把文本表达为可以让计算机来理解的形式,所谓文本表示,文本向量化。文本向量化,可以分为词语的向量表达,短文本的向量表达,长文本的向量表达,  因为不同的情景需要用到不同的方法和处理方式。

忽视这些细节,对一般情况下文本的向量化做了下调查,常见的思路介绍如下:

一: 向量空间模型 VSM 

一般所指的向量空间模型我认为也可以说是bag of words  词袋模型:其中最简单的模式是基于词的独热表示(one-hot reprentation),  用每一个词作为维度key,有单词对应的位置为1,其他为0,向量长度和词典大小相同。工程上比较常用的是用该词的tfidf值作为权重, (word1, word2,word3.。。。word N), itidf是文本处理里最常见的一种权重计算方式,属于入门级方案,基于此也有一系列的优化方法,诸如TFC权重/ITC权重,但是思想和tfidf差不多。  一般会进行归一化处理,  很多工具都带有相应模块来计算tfidf。 在选取不同的词来做维度特征的时候,需要先去除停用词, 又涉及了一个特征选择的问题, 并不是所有的词都适合拿来用。 一般会根据ifidf值或者词频之类的做一些简单的过滤, 也有一些专门选取特征的方法,诸如信息增益,互信息,卡方统计等, 有文章专门介绍。

文本向量化,tfidf这是90%以上的文章和相关机器学习库demo,论文里会提到的方法。关于其优点,简单好用,很大程度上就可以满足我们的需求了。举一个通俗易懂的例子

 http://www.ruanyifeng.com/blog/2013/03/tf-idf.html

缺点,这里引用了别人的描述”http://www.jbingo.net/doku.php?id=mlwiki:vectorization“

“中文切词会引入误差,尤其是口语化句子,由于级联效应的存在,机器学习最终的文本分析效果会在很大程度上被影响;
这种方法虽然一定程度上弥补了语义丢失的程度,但是没有保留词顺序信息,导致还是会丢失相当一部分语义;
最终句子维度较高,汉语常用词汇在几万到几十万不等,虽然可以进行停用词过滤来降低维度,但是最终维度还是会停留在万级,用sklearn进行学习(万级训练集)可能会占用几十G到上百G内存;对于错别字来说,基本没有容错能力”

总体来说。我认为有2点:

1. 多维度灾难,词的维数比较多

2.语义丢失, 表现为,词的顺序信息丢失,近义词没办法体现,假定词都是独立的,等等

 

 

二.  文本的分布式表示方法

这里引入复旦大学邱稀鹏老师的一篇文章https://zhuanlan.zhihu.com/p/22386230 先解释两个术语

说到文本的分布式表示,有一定NLP背景的人都会想到两个不同英文术语。一个是Distributional Representation,另一个是Distributed Representation。这两个术语都翻译为分布式表示,因此很多人混淆。但是,这两个术语的含义和出发点完全不一样。。

Distributional Representation是从分布式假设(由Harris在1954年提出,出现在相同上下文的词语语义相似)的角度,是一类获取词表示的方法。

而Distributed Representation指的是文本表示的形式,就是低维、稠密的连续向量

其中LSA/LSI/pLSI方法,以及Word2Vec/Doc2Vec方法应该都属于属于分布式表示。 

目前只学习了LSA主题模型,使用词和文档的概率分布来表达。其他的还没有深入研究。相关文档稍后整理在放入。

你可能感兴趣的:(自然语言处理)