有很多改进版的word2vec,但是目前还是word2vec最流行,但是Glove也有很多在提及,笔者在自己实验的时候,发现Glove也还是有很多优点以及可以深入研究对比的地方的,所以对其进行了一定的学习。

部分学习内容来源于小象学院,由寒小阳老师授课《深度学习二期课程》


高级词向量三部曲:

1、NLP︱高级词向量表达(一)——GloVe(理论、相关测评结果、R&python实现、相关应用)

2、NLP︱高级词向量表达(二)——FastText(简述、学习笔记)

3、NLP︱高级词向量表达(三)——WordRank(简述)

4、其他NLP词表示方法paper:从符号到分布式表示NLP中词各种表示方法综述


一、理论简述

1、word2vec

word2vec:与一般的共现计数不同,word2vec主要来预测单词周边的单词,在嵌入空间里相似度的维度可以用向量的减法来进行类别测试。

弊端:

  • 1、对每个local context window单独训练,没有利用包含在global co-corrence矩阵中的统计信息
  • 2、多义词处理乏力,因为使用了唯一词向量

2、GloVe

GloVe和word2vec的思路相似(论文链接

但是充分考虑了词的共现情况,比率远比原始概率更能区分词的含义。

GloVe综合了LSA、CBOW的优点,训练更快、对于大规模语料算法的扩展性也很好、在小语料或者小向量上性能表现也很好。

.

.


二、测评

本节主要来自于52NLP的文章:斯坦福大学深度学习与自然语言处理第三讲:高级的词向量表示

.

.

1、词向量测评方法

一直以来,如何测评词向量还是一件比较头疼的事情。

主要方法分为两种:内部测评(词类比)与外部测评(命名实体识别(NER))。

词类比。通过评测模型在一些语义或语法类比问题上的余弦相似度距离的表现来评测词向量

当然,在测评时候,会去除一些来自于搜索的输入词、干扰词、常用停用词等,让测评结果更加显著

  • 内部类比方式一:不同的城市可能存在相同的名字

类比数据来源:https://code.google.com/p/word2vec/source/browse/trunk/questions-words.txt

  • 内部类比方式二:形容词比较级

以下语法和语义例子来源于:https://code.google.com/p/word2vec/source/browse/trunk/questions-words.txt

  • 内部类比三:时态

词向量类比:以下语法和语义例子来源于:https://code.google.com/p/word2vec/source/browse/trunk/questions-words.txt

  • 内部类比四:人名?
  • 外部测评:命名实体识别(NER):找到人名,地名和机构名

    .

    .

2、测评结果

一些测评方式可参考:Paper2:[Improving Word Representations via Global Context

and Multiple Word

Prototypes]

  • (1)内部测评

类比评测和超参数:

相关性评测结果:

  • (2)外部测评

命名实体识别(NER):找到人名,地名和机构名

.

.

3、利用词向量解决歧义问题

也许你寄希望于一个词向量能捕获所有的语义信息(例如run即是动车也是名词),但是什么样的词向量都不能很好地进行凸显。

这篇论文有一些利用词向量的办法:Improving Word Representations Via Global Context And Multiple Word Prototypes(Huang et al. 2012)

解决思路:对词窗口进行聚类,并对每个单词词保留聚类标签,例如bank1, bank2等

.

.

.


三、Glove实现&R&python

1、Glove训练参数

本节主要来自于52NLP的文章:斯坦福大学深度学习与自然语言处理第三讲:高级的词向量表示

  • 最佳的向量维度:300左右,之后变化比较轻微
  • 对于GloVe向量来说最佳的窗口长度是8
  • 训练迭代次数。对于GloVe来说确实有助于

  • 更多的数据有助于帮助提高训练精度

.

2、用R&python实现

python:python-glove(参考博客:glove入门实战

R:text2vec(参考博客:重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)


.

.

四、相关应用

1、glove+LSTM:命名实体识别

用(Keras)实现,glove词向量来源: http://nlp.stanford.edu/data/glove.6B.zip

一开始输入的是7类golve词向量。The model is an LSTM over a convolutional layer which itself trains over a sequence of seven glove embedding vectors (three previous words, word for the current label, three following words).

最后是softmax层进行分类。The last layer is a softmax over all output classes.

CV categorical accuracy and weighted F1 is about 98.2%. To assess the test set performance we are ensembling the model outputs from each CV fold and average over the predictions.

来源于github:https://github.com/thomasjungblut/ner-sequencelearning

.

2、PAPER:词向量的擦除进行情感分类、错误稽查

Understanding Neural Networks Through Representation Erasure(arXiv: 1612.08220)

提出了一种通用的方法分析和解释了神经网络模型的决策——这种方法通过擦除输入表示的某些部分,比如将输入词向量的某些维、隐藏层的一些神经元或者输入的一些词。我们提出了几种方法来分析这种擦除的影响,比如比较擦除前后模型的评估结果的差异,以及使用强化学习来选择要删除的最小输入词集合,使用于分类的神经网络模型的分类结果发生改变。

在对多个 NLP 任务(包括语言特征分类、句子情感分析、文档级别的 sentiment aspect prediction)的综合分析中,我们发现我们提出的方法不仅能提供神经网络模型决策的清晰解释,而且可以用来进行错误分析。

**分析揭示了 Word2Vec 和 Glove 产生的词向量之间存在一些明显的差异,同时也表明训练语料中的词频对产生的词的表达有很大的影响;

在句子级别的情感分析上的实验表明情感词对情感分类结果影响显著,有意思的是还能找出来一些使模型误分类的词;**

在文档级别的 aspect prediction 实验则清晰地揭示出文档中哪部分文本和特定的 aspect 是强关联的。同时这些实验都表明,双向 LSTM 的表达能力比经典 LSTM 强,经典 RNN 则最弱。

NLP︱高级词向量表达(一)——GloVe(理论、相关测评结果、R&python实现、相关应用)的更多相关文章

  1. NLP︱高级词向量表达(三)——WordRank(简述)

    如果说FastText的词向量在表达句子时候很在行的话,GloVe在多义词方面表现出色,那么wordRank在相似词寻找方面表现地不错. 其是通过Robust Ranking来进行词向量定义. 相关p ...

  2. NLP︱高级词向量表达(二)——FastText(简述、学习笔记)

    FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,不过这个项目其实是有两部分组成的,一部分是这篇文章介绍的 fastText 文本分类(paper: ...

  3. NLP获取词向量的方法(Glove、n-gram、word2vec、fastText、ELMo 对比分析)

    自然语言处理的第一步就是获取词向量,获取词向量的方法总体可以分为两种两种,一个是基于统计方法的,一种是基于语言模型的. 1 Glove - 基于统计方法 Glove是一个典型的基于统计的获取词向量的方 ...

  4. NLP之词向量

    1.对词用独热编码进行表示的缺点 向量的维度会随着句子中词的类型的增大而增大,最后可能会造成维度灾难2.任意两个词之间都是孤立的,仅仅将词符号化,不包含任何语义信息,根本无法表示出在语义层面上词与词之 ...

  5. 深度学习之NLP获取词向量

    1.代码 def clean_text(text, remove_stopwords=False): """ 数据清洗 """ text = ...

  6. NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)

    R语言由于效率问题,实现自然语言处理的分析会受到一定的影响,如何提高效率以及提升词向量的精度是在当前软件环境下,比较需要解决的问题. 笔者认为还存在的问题有: 1.如何在R语言环境下,大规模语料提高运 ...

  7. NLP学习(1)---Glove模型---词向量模型

    一.简介: 1.概念:glove是一种无监督的Word representation方法. Count-based模型,如GloVe,本质上是对共现矩阵进行降维.首先,构建一个词汇的共现矩阵,每一行是 ...

  8. 文本情感分析(二):基于word2vec、glove和fasttext词向量的文本表示

    上一篇博客用词袋模型,包括词频矩阵.Tf-Idf矩阵.LSA和n-gram构造文本特征,做了Kaggle上的电影评论情感分类题. 这篇博客还是关于文本特征工程的,用词嵌入的方法来构造文本特征,也就是用 ...

  9. DeepNLP的核心关键/NLP词的表示方法类型/NLP语言模型 /词的分布式表示/word embedding/word2vec

    DeepNLP的核心关键/NLP语言模型 /word embedding/word2vec Indexing: 〇.序 一.DeepNLP的核心关键:语言表示(Representation) 二.NL ...

随机推荐

  1. 面向对象_05【类的继承:extends、重写父类】

    类的继承:现有类的基础上构建一个新的类,构建出来的类被称作子类,子类可继承父类的属性和方法. 什么时候定义继承?当类与类之间存在着所属关系的时候,就定义继承.xxx是yyy中的一种==>xxx ...

  2. bzoj2257: [Jsoi2009]瓶子和燃料

    2257: [Jsoi2009]瓶子和燃料 Time Limit: 10 Sec  Memory Limit: 128 MB Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了 ...

  3. 不免费的PacMan

    课程内容介绍: 本套课程适合以下人士: - 免费资料没教会你游戏开发的: - 学了Unity基础不知道怎么用在游戏项目里的: - 想快速开发一款好玩的游戏的: - 想学游戏不知道如何入门的: - 对游 ...

  4. 05_Linux网络配置及CRT远程

    占位占位占位占位占位占位占位占位

  5. ABP官方文档翻译 3.5 规约

    规约 介绍 示例 创建规范类 使用仓储规约 组合规约 讨论 什么时候使用? 什么时候不使用? 介绍 规约模式是一种特别的软件设计模式,通过使用布尔逻辑将业务规则链接起来重新调配业务规则.(维基百科). ...

  6. xBIM IFC 输出 Excel 报表

    目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...

  7. Pandas快速入门笔记

    我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下提供了类似关系型或标签型数据结构的Pandas的使用方法.下面记录相关学习笔记. 数据结构 Panda ...

  8. C#基础拾遗系列之一:先看懂IL代码

    一.前言 首先,想说说为什么要写这样系列的文章,有时候在和同事朋友聊天的时候,经常会听到这样的话题: (1)在这家公司没什么长进,代码太烂,学不到东西.(你有没有想想框架为什么这样写,代码还可以怎么去 ...

  9. Hadoop学习笔记三

    一.设置HDFS不进行权限检查 默认的HDFS上的文件类似于Linux中的文件,是有权限的.例如test用户创建的文件,root用户如果没有写权限,则不能进行删除. 有2种办法进行修改,修改文件的权限 ...

  10. Codeforces 250 E. The Child and Binary Tree [多项式开根 生成函数]

    CF Round250 E. The Child and Binary Tree 题意:n种权值集合C, 求点权值和为1...m的二叉树的个数, 形态不同的二叉树不同. 也就是说:不带标号,孩子有序 ...