笔者在看各种NLP的论文、文献、博客之中发现在应用过程中,有种类繁多的词向量的表达。笔者举例所看到的词向量有哪些。

词向量一般被看做是文档的特征,不同词向量有不同的用法,本文介绍了四类词向量:

Hash算法及延伸、bow算法延伸、word2vec延伸、LDA主题延伸。

————————————————————————————————————

本篇是笔者刚刚入门所写,那么在阅读CIPS2016之后,根据里面的内容重新梳理了一遍,从CIPS2016里面相关内容来看,笔者本篇内容所写的,总结的还是很全面的,当时写的时候才入门NLP一个月,还是棒棒哒~让我傲娇一下,新博客链接:

cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)

————————————————————————————————————

词向量类型:

一个词一列向量,Hash算法,word2vec,hash把词打散成(01010101110)的数值,word2vec则打散同时定义成了向量,参考文献中,验证了将词向量加起来的确是一个有效的方法;延伸:word2vec考虑了上下语义,doc2vec还考虑了上下语句顺序,用在段落中较好。

一个词一个值,bow算法+词权重,LDA主题-词语矩阵,两者有递进关系,bow进化到LDA,当然LDA超级耗时,所以业界不喜欢用;

根据词向量组成句向量的方式:

如果是一词一列向量,一般用简单相加(相加被证明是最科学)来求得;

一个词一值的就是用词权重组合成向量的方式;

谷歌的句向量sen2vec可以直接将句子变为一列向量。

词向量的额外效果

消除歧义:LDA的主题-词语向量;

结合上下文语境:word2vec;

文档与文档之间的关系:bow+TFIDF(TFIDF能够较好区分文档差别的指标,而互信息较为有利于文档中核心词的提取)

一般来说,hash值效果会稍差一些,其他三类都很不错,有着很多可能性,一般有以下几个课题:

文本分类方面,会用BOW+TFIDF词向量(TFIDF较好区分文档之间)、LDA主题-词语向量(发觉潜在语义)、word2vec

文本相似性方面,用词向量来度量相似性简直再好不过,一般会用word2vec(结合了上下文语境,短文本非常优异,百分点已经成功践行)、LDA主题-词语向量(比较多的考虑了词语的歧义问题)

文本主题建模方面,LDA模型。

————————————————————————————————————

1、BoW算法衍生——One-hot Representation

(1)词频做向量值

Bag-of-words model (BoW model)最早出现在自然语言处理(Natural Language Processing)和信息检索(Information Retrieval)领域.。该模型忽略掉文本的语法和语序等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的。BoW使用一组无序的单词(words)来表达一段文字或一个文档.。近年来,BoW模型被广泛应用于计算机视觉中。

基于文本的BoW模型的一个简单例子如下:

首先给出两个简单的文本文档如下:

John likes to watch movies. Mary likes too.

John also likes to watch football games.

基于上述两个文档中出现的单词,构建如下一个词典 (dictionary):

{"John": 1, "likes": 2,"to": 3, "watch": 4, "movies": 5,"also": 6, "football": 7, "games": 8,"Mary": 9, "too": 10}

上面的词典中包含10个单词, 每个单词有唯一的索引, 那么每个文本我们可以使用一个10维的向量来表示。如下:

[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]

[1, 1,1, 1, 0, 1, 1, 1, 0, 0]

该向量与原来文本中单词出现的顺序没有关系,而是词典中每个单词在文本中出现的频率。

Distributed Representation是一个稠密、低维的实数限量,它的每一维表示词语的一个潜在特征,该特征捕获了有用的句法和语义特征。其特点是将词语的不同句法和语义特征分布到它的每一个维度上去表示。

(2)词权重做向量值(TFIDF/CHI/MI)

参考:机器学习那些事——文本挖掘中的特征提取

TFIDF等term weighting来当做词向量。会搭配着BOW模型使用,比如先定位了每句话出现的词,然后填上的不是频数,而是每个词的向量。比如python中的词典就是非常好的存储这个内容的过程。

8 9219:0.24673737883635047 453:0.09884635754820137 10322:0.21501394457319623 11947:0.27282495932970074 6459:0.41385272697452935 46:0.24041607991272138 8987:0.14897255497578704 4719:0.22296154731520754 10094:0.13116443653818177 5162:0.17050804524212404 2419:0.11831944042647048 11484:0.3501901869096251 12040:0.13267440708284894 8745:0.5320327758892881 9048:0.11445287153209653 1989:0.04677087098649205 7102:0.11308242956243426 3862:0.12007217405755069 10417:0.09796211412332205 5729:0.148037967054332 11796:0.08409157900442304 9094:0.17368658217203461 3452:0.1513474608736807 3955:0.0656773581702849 6228:0.4356889927309336 5299:0.15060439516792662 3505:0.14379243687841153 10732:0.9593462052245719 9659:0.1960034406311122 8545:0.22597403804274924 6767:0.13871522631066047 8566:0.20352452713417019 3546:0.1136541497082903 6309:0.10475466997804883 10256:0.26416957780238604 10288:0.22549409383630933

第一列的8表示类别编号,其余的每一列是词及其权重,使用冒号分隔,例如“9219:0.24673737883635047”表示编号为9219的词,对应的TF-IDF值为0.24673737883635047。如果特征向量有个N个,那么每条记录就对应着一个N维向量。
(来自网站: 使用libsvm实现文本分类 )

————————————————————————————————————

2、hash算法衍生——simhash算法——One-hot Representation

(参考: R语言︱文本挖掘——jiabaR包与分词向量化的simhash算法(与word2vec简单比较))

先用hash算法把每一个词打成一系列的0,1点,然后每个词的hash值相加。然后附上词权重。

为了便于理解尽量不使用数学公式,分为这几步:

  • 1、分词,把需要判断文本分词形成这个文章的特征单词。最后形成去掉噪音词的单词序列并为每个词加上权重,我们假设权重分为5个级别(1~5)。比如:“ 美国“51区”雇员称内部有9架飞碟,曾看见灰色外星人 ” ==> 分词后为 “ 美国(4) 51区(5) 雇员(3) 称(1) 内部(2) 有(1) 9架(3) 飞碟(5) 曾(1) 看见(3) 灰色(4) 外星人(5)”,括号里是代表单词在整个句子里重要程度,数字越大越重要。

  • 2、hash,通过hash算法把每个词变成hash值,比如“美国”通过hash算法计算为 100101,“51区”通过hash算法计算为 101011。这样我们的字符串就变成了一串串数字,还记得文章开头说过的吗,要把文章变为数字计算才能提高相似度计算性能,现在是降维过程进行时。

  • 3、加权,通过 2步骤的hash生成结果,需要按照单词的权重形成加权数字串,比如“美国”的hash值为“100101”,通过加权计算为“4 -4 -4 4 -4 4”;“51区”的hash值为“101011”,通过加权计算为 “ 5 -5 5 -5 5 5”。

  • 4、合并,把上面各个单词算出来的序列值累加,变成只有一个序列串。比如 “美国”的 “4 -4 -4 4 -4 4”,“51区”的 “ 5 -5 5 -5 5 5”, 把每一位进行累加, “4+5 -4+-5 -4+5 4+-5 -4+5 4+5” ==》 “9 -9 1 -1 1 9”。这里作为示例只算了两个单词的,真实计算需要把所有单词的序列串累加。

  • 5、降维,把4步算出来的 “9 -9 1 -1 1 9” 变成 0 1 串,形成我们最终的simhash签名。 如果每一位大于0 记为 1,小于0 记为 0。最后算出结果为:“1 0 1 0 1 1”。

————————————————————————————————————

3、word2vec词向量延伸

(1)word2vec

word2vec是谷歌提出基于上下文语境来获取的词向量。如图是百分点公司的训练词向量的模型图。

(2)句向量

最直观的思路,对于phrase和sentence,我们将组成它们的所有word对应的词向量加起来,作为短语向量,句向量。在参考文献中,验证了将词向量加起来的确是一个有效的方法,但事实上还有更好的做法。

Le和Mikolov在文章《Distributed Representations of Sentences and Documents》[20]里介绍了sentence vector,这里我们也做下简要分析。详细参考:火光摇曳的博客

————————————————————————————————————

4、主题模型中的topic-word向量

主题模型建立之后,会得到两个矩阵,一个是主题-词语向量矩阵;一个是文档-主题向量矩阵。其中的主题-词语矩阵,可以用来代表每个词。实际上,其是代表每个词在每个主题下的频率,但是作为潜在语义的判别也十分有效,业界会开发使用,来作为了解文档词语相关性的判别。

这个概率公式可以用矩阵表示:

其中”文档-词语”矩阵表示每个文档中每个单词的词频,即出现的概率;”主题-词语”矩阵表示每个主题中每个单词的出现概率;”文档-主题”矩阵表示每个文档中每个主题出现的概率。

可参考博客:主题模型-LDA浅析

每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

自然语言处理︱简述四大类文本分析中的“词向量”(文本词特征提取)相关推荐

  1. 【文本分析】基于公众需求文本分析的深圳自然博物馆发展策略研究

    此文是2021年暑期在深圳大学文化产业研究院黄老师的指导下,与文化艺术管理专业的龚学姐合作完成的,且于2022年发表于<文化深圳>杂志第一期.此文偏向报告形式,没有遵循严格的学术规范,今年 ...

  2. 文本分析——分词并去停用词返回嵌套列表并保存到本地

    文章目录 文本分析分词并去停用词返回嵌套列表 读取文件并进行分词去停用词操作 保存结果到本地 从本地读取结果 文本分析分词并去停用词返回嵌套列表 此代码块用于分词并去停用词(从csv文件转成了txt分 ...

  3. html文本框超出范围,ppt出现文本框中输入文字超出文本框范围的详细操作

    今天小编讲解了在ppt出现文本框中输入文字超出文本框范围步骤,下文就是关于ppt出现文本框中输入文字超出文本框范围的教程,一起来学习吧. ppt出现文本框中输入文字超出文本框范围的详细操作 首先,打开 ...

  4. word2vec词向量 文本分类实现(TensorFlow版,算法TextCNN)

    之前也写过word2vec词向量文本分类实现,不过那是基于Keras. 今天来写下tensoflow版的代码. 再来感受下它的魅力. tensorflow比Keras更接近底层,可以更方便让我们理解W ...

  5. 词向量与词向量拼接_nlp中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert

    本文以QA形式对自然语言处理中的词向量进行总结:包含word2vec/glove/fastText/elmo/bert. 2020年更新:NLP预训练模型的全面总结JayLou娄杰:史上最全!PTMs ...

  6. java 文本分析 关键词提取_从文本中提取关键字

    就在前几天的任务中用到了从文本描述中提取关键字的操作,特意从网上找到了一些提取关键字的方法. 总结如下:需要引入jieba这个库文件 基于TF-IDF算法进行关键词提取 importjieba.ana ...

  7. python数据获取与文本分析_python文本分析之处理和理解文本

    前言: 在进行自然语言的建模(NLP)时,我们通常难以处理文字类型的数据,因此在常见的机器学习项目中,数据的格式是结构化的,就算在视觉处理的时候也是一个矩阵或者高维张量的形式.那么文字类型的数据我们应 ...

  8. NLP-分类模型-2016-文本分类:FastText【使用CBOW的模型结构;作用:①文本分类、②训练词向量、③词向量模型迁移(直接拿FastText官方已训练好的词向量来使用)】【基于子词训练】

    <原始论文:Bag of Tricks for Efficient Text Classification> <原始论文:Enriching Word Vectors with Su ...

  9. python 文本分析_使用Python进行文本分析–书评

    python 文本分析 This is a book review of Text Analytics with Python: A Practical Real-World Approach to ...

最新文章

  1. 最牛X的GCC 内联汇编
  2. css之其它技巧和经验列表
  3. RDLC SubReports Exporting to Excel Are Ignored
  4. 协同OA对业务和管理进行流程的梳理
  5. WinJS实用开发技巧(4):Appbar中使用自定义图片
  6. [渝粤教育] 西南交通大学 信号与系统A 参考 资料
  7. mysql数据库open函数_C#访问Mysql数据库方法,以及库函数
  8. 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest题解
  9. Unity3D入门(二):碰撞检測
  10. SQL Server 2008安装
  11. 反病毒工具-LordPE
  12. windows bat批处理基础命令学习教程(转载)
  13. SPSS基础操作(一):用幂指数型的权函数建立加权最小二乘回归方程
  14. 活动效果评价模型--原理和实现(基于python)
  15. 精密划片机的三种切割方式
  16. 解决类似微信聊天界面软键盘和表情框冲突问题
  17. elasticsearch分词练习、自定义分词器练习
  18. 是非人生 — 一个菜鸟程序员的5年职场路 第28节
  19. Latex公式字母加粗
  20. “芯片”=“集成电路”=“半导体”吗?

热门文章

  1. 爬虫入门【10】Pyspider框架简介及安装说明
  2. android res目录下存放图片文件夹 i m h xh xxh
  3. 解读思维导图(一)误区
  4. Bootstrap 3.0正式版发布!
  5. MongoDB运行状态、性能监控,分析
  6. 让.net 2.0支持并行计算
  7. 深度学习优化器演化史
  8. Android sdcard读写权限问题之中的一个
  9. 使用cronolog自动分割apache的日志。
  10. 删除windows server backup备份