词向量

fasttext简介

风流意气都作罢 提交于 2019-12-04 21:01:23
fasttext的基础理论 前言简介 fasttext是NLP里,一个非常高效的,基于词向量化的,用于文本分类的模型。虽然其原理比较简单,但是其中涉及到了不少的用于提速和准确率的小技巧。 这篇文章主要从理论的层面(一直想有时间去扒源码来看看来着)介绍这些小技巧,而对于和word2vec部分中类似的地方会简单提到,但是不会展开说明(这个作者先提出的word2vec,后来提出的fasttext,二者有不少相似之处)Word2vec的相关内容参考peghoty所写的 word2vector中的数学原理详解.pdf [1]。 当然本文做的介绍不可能面面俱到,而且很多地方也可能理解不准确,希望大家不吝赐教。 正文 fasttext和word2vec中的CBOW非常类似,对于每一个文本而言,第一步是将所有单词向量化后作为输入;第二步是将输入的所有向量在隐藏层进行平均化处理得到新的向量;第三步输出预测值。接下来我们分别对这三部进行具体的解释。 第一步:输入 在word2vec中,它的输入就是单纯的把词袋向量化。但是在fasttext还加入了n-grams的思想。举个例子“我 喜欢 她“,如果只用这几个词的组合来反映这个句子,就是(”我”,”喜欢”,”她”),问题来了,句子“她 喜欢 我”的词的组合也是(”我”,”喜欢”,”她”),但这两个句子的意思完全不同

Convolutional Sequence to Sequence Learning 论文笔记

三世轮回 提交于 2019-12-04 20:23:42
Convolutional Sequence to Sequence Learning 论文笔记 目录 简介 Position Embeddings GLU or GRU Convolutional Block Structure Multi-step Attention Normalization Strategy Initialization 简介 # 写这篇博客主要是为了进一步了解如何将CNN当作Encoder结构来使用,同时这篇论文也是必看的论文之一。该论文证明了使用CNN作为特征抽取结构实现Seq2Seq,可以达到与 RNN 相接近甚至更好的效果,并且CNN的高并行能力能够大大减少我们的模型训练时间(本文对原文中不清晰的部分做了梳理,建议与原文搭配服用) 原文链接: Convolutional Sequence to Sequence Learning 模型结构如下图所示: 下面对模型的每个部分进行分块介绍: Position Embeddings # 卷积网络和Transformer一样,不是类似于RNN的时序模型,因此需要加入位置编码来体现词与词之间的位置关系 样本输入的词向量: w = ( w 1 , w 2 , . . . , w n ) w=(w1,w2,...,wn) 样本位置编码: p = ( p 1 , p 2 , . . . , p n ) p=(p1

第二届搜狐内容识别算法大赛第一名分享

匿名 (未验证) 提交于 2019-12-03 00:40:02
本文主要是向大家介绍一下团队的解决方案,具体代码和答辩PPT可以上 github Stacking Pesudo labeling Snapshot Ensemble 比赛的网站是 这里 ,比赛时长是两个半月、也算是时间很长的一个比赛了 比赛的目的是给我们一篇新闻,希望我们给出: 新闻是属于全营销类别、部分营销类别、还是无营销类别。这里相当于是一个分类问题 对部分营销类别的新闻,我们要给出属于营销类别的文本片段和图片。这里是信息抽取和图像分类的问题 数据给出来的是原生的HTML格式,如下: <title>惠尔新品 | 冷色系实木多层地板系列</title> <p> </p> <br/><p> <span style="font-size: 16px;">冷色系实木多层系列全新上市</span></p> P0000001.JPEG;P0000002.JPEG; 我们要先把HTML解析成可训练的文本和图片 官方使用的是F1-measure来进行得分评判 模型融合是打比赛的大杀器,我们团队也是采用了这种方案,下面就来介绍一下我们团队的代码流程。 模型融合部分采用的是stacking策略,并且在第二层接了两个trick。模型最后输出的是分类的结果,在后面会接上规则来提取文本片段,图像部分我们采用的ResNet来进行分类。下面来详细说明各个模块 文本翻译数据增强:把中文翻译成英文

中文情感分类

匿名 (未验证) 提交于 2019-12-02 23:56:01
本小结是对中文评论进行处理,利用word2vec工具获得特征数据,进而完成情感分析的目的 注意:本文重点是如何获得特征向量 根据项目本身的语料情况,一条评论就是一个txt文档,有两个语料文件:pos文件下包含1000条积极的评论,neg文件下包含1000条消极的评论 1-初始语料的预处理-把正向和负向评论分别规整到一个txt文件中,实施代码如下 import logging import os , os . path import codecs , sys #设置读取文件内容的函数 def getContent ( fullname ) : f = codecs . open ( fullname , "r" ) #需要注意的时在原始语料中一个txt文档中只有一句评论 content = f . readline ( ) f . close ( ) return content if __name__ == "__main__" : #得到文件名 program = os . path . basename ( sys . argv [ 0 ] ) logger = logging . getLogger ( program ) logging . basicConfig ( format = '%(asctime)s: %(levelname)s: %(message)s' )

ELMO、BERT、ERNIE、GPT

匿名 (未验证) 提交于 2019-12-02 23:43:01
这一讲承接了上一讲关于Transformer的部分,依次介绍了基于Transformer的多个模型,包括 ELMO、BERT、GPT 。 因为上述的模型主要是应用在NLP中,因此首先我们必须清楚如何将离散的文本数据喂给模型,即如何用向量的方式来表征输入到模型的中的文本数据。最简单的一种方式就是 one-hot向量 ,假设现在文档中只有apple、bag、cat、dog、elephant五个单词,那么就可以使用维度为5的向量对它们进行唯一的表示,如 a p p l e = [ 1 , 0 , 0 , 0 , 0 ] 、 b a g = [ 0 , 1 , 0 , 0 , 0 ] 、 c a t = [ 0 , 0 , 1 , 0 , 0 ] 、 d o g = [ 0 , 0 , 0 , 1 , 0 ] 、 e l e p h a n t = [ 0 , 0 , 0 , 0 , 1 ] apple = [ 1,0,0,0,0]、bag = [ 0,1,0,0,0]、cat = [ 0,0,1,0,0]、dog = [ 0,0,0,1,0]、elephant = [ 0,0,0 ,0,1] a p p l e = [ 1 , 0 , 0 , 0 , 0 ] 、 b a g = [ 0 , 1 , 0 , 0 , 0 ] 、 c a t = [ 0 , 0 , 1 , 0 , 0 ] 、

NLP中的迁移学习教程来啦!(238页PPT下载)

匿名 (未验证) 提交于 2019-12-02 23:42:01
文章发布于公号【数智物语】 (ID:decision_engine),关注公号不错过每一篇干货。 来源 | 新智元(AI_era) 近日,在美国明尼苏达州明尼阿波利斯的 NAACL2019 上, Sebastian Ruder, Matthew Peters, Swabha Swayamdipta 和 Thomas Wolf 分享了一个长达 238 页 PPT 关于“NLP中的迁移学习”的教程,今天拿来和大家分享。 经典的监督机器学习范式是基于对使用单个数据集的任务的单个预测模型的孤立学习。这种方法需要大量的训练示例,并且对于定义明确、范围狭窄的任务效果最好。迁移学习指的是一组方法,这些方法通过利用来自其他域或任务的数据来训练具有更好泛化特性的模型来扩展此方法。 近两年来,自然语言处理(NLP)领域出现了几种转移学习方法和体系结构,这些方法和体系结构大大提高了 NLP 任务的先进性。 这些改进,加上这些方法的广泛可用性和易集成性,使人们想起了导致计算机视觉中预训练字嵌入和 ImageNet 预训练成功的因素,并表明这些方法很可能成为 NLP 中的一种常用工具以及一个重要的研究方向。 我们将概述 NLP 中的现代迁移学习方法,如何对模型进行预培训,它们所学习的表示捕获哪些信息,并回顾有关如何在下游 NLP 任务中集成和适应这些模型的示例和案例研究。 0 1 什么是迁移学习? (a

词向量

两盒软妹~` 提交于 2019-12-02 23:30:02
来源:https://www.numpy.org.cn/deep/basics/word2vec.html 词向量 本教程源代码目录在 book/word2vec ,初次使用请您参考 Book文档使用说明 。 # 说明 本教程可支持在 CPU/GPU 环境下运行 Docker镜像支持的CUDA/cuDNN版本 如果使用了Docker运行Book,请注意:这里所提供的默认镜像的GPU环境为 CUDA 8/cuDNN 5,对于NVIDIA Tesla V100等要求CUDA 9的 GPU,使用该镜像可能会运行失败; 文档和脚本中代码的一致性问题 请注意:为使本文更加易读易用,我们拆分、调整了 train.py 的代码并放入本文。本文中代码与train.py的运行结果一致,可直接运行train.py进行验证。 # 背景介绍 本章我们介绍词的向量表征,也称为word embedding。词向量是自然语言处理中常见的一个操作,是搜索引擎、广告系统、推荐系统等互联网服务背后常见的基础技术。 在这些互联网服务里,我们经常要比较两个词或者两段文本之间的相关性。为了做这样的比较,我们往往先要把词表示成计算机适合处理的方式。最自然的方式恐怕莫过于向量空间模型(vector space model)。 在这种方式里,每个词被表示成一个实数向量(one-hot vector),其长度为字典大小

NlP之word2vec的发展历程

本秂侑毒 提交于 2019-12-02 21:58:19
#NlP之word2vec 的前世今生 2013年,Google开源了一款用于词向量计算的工具——word2vec,引起了工业界和学术界的关注。首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地训练;其次,该工具得到的训练结果——词向量(word embedding),可以很好地度量词与词之间的相似性。随着深度学习(Deep Learning)在自然语言处理中应用的普及,很多人误以为word2vec是一种深度学习算法。其实word2vec算法的背后是一个浅层神经网络。 #词向量的基础 ##one-hot 表示 在很早之前就有用词向量表示词,但是词向量较为冗长,词向量的维度是整个词表大小,只有词对应的位置为一,其余都是0。 词向量的维度过大,且构成的矩阵极其稀疏,并且one-hot表示会丢掉词于此之间的关系。 Dristributed representation可以解决One hot representation的问题,它的思路是通过训练,将每个词都映射到一个较短的词向量上来。所有的这些词向量就构成了向量空间,进而可以用普通的统计学的方法来研究词与词之间的关系。这个较短的词向量维度是多大呢?这个一般需要我们在训练时自己来指定。如下图所示,将“red mini van”这个单词映射到3维向量上,实际是对向量进行了降维处理。 因为使用disturbuted

【词向量】从Word2Vec到Bert,聊聊词向量的前世今生(一)

半世苍凉 提交于 2019-12-02 21:57:56
机器学习算法与自然语言处理推荐 来源:https://zhuanlan.zhihu.com/p/58425003 作者:小川Ryan 【机器学习算法与自然语言处理导读】 BERT并不是凭空而来,如何从word2vec给出一些思考,本文进行了介绍! 由于近日所做的工作与预训练模型联系比较紧密,却发现自己对几个词向量内部的细节有所遗忘了,因此打算写篇文章来拾起一些记忆,同时也方便以后供自己和他人查阅。 1. 语言模型 n-gram model 谈到词向量 则必须要从语 言模型讲起,传统的统计语言模型是对于给定长度为m的句子,计算其概率分布P(w1, w2, ..., wm),以表示该句子存在的可能性。该概率可由下列公式计算得到: 但实际过程中句子的长度稍长便会为估计带来很大难度,因此n-gram 模型对上述计算进行简化:假定第i个词的出现仅与其前n-1个词有关,即: 实际计算中,通常采用n元短语在语料中出现的频率来估计其概率: 为保留句子原有的顺序信息,我们当然希望n越大越好,但实际上当n略大时,该n元短语在语料中出现的频率就会越低,用上式估计得到的概率就容易出现数据稀疏的问题。而神经网络语言模型的出现,有效地解决了这个问题。 Neural Network Language Model 神经网络语言模型不使用频率来估计n元短语出现的概率,而是通过神经网络训练得到一个语言模型。

词向量经典模型:从word2vec、glove、ELMo到BERT

两盒软妹~` 提交于 2019-12-02 21:45:48
前言 词向量技术将自然语言中的词转化为稠密的向量,相似的词会有相似的向量表示,这样的转化方便挖掘文字中词语和句子之间的特征。生成词向量的方法从一开始基于统计学的方法(共现矩阵、SVD分解)到基于不同结构的神经网络的语言模型方法。这里总结一下比较经典的语言模型方法:word2vec、glove、ELMo、BERT。 其中BERT是最新Google发表的模型,在11个经典的NLP任务中全面超越最佳模型,并且为下游任务设计了简单至极的接口,改变了之前花销的Attention、Stack等盖楼似的堆叠结构的玩法,应该属于NLP领域里程碑式的贡献。 word2vec word2vec来源于2013年的论文《Efficient Estimation of Word Representation in Vector Space》,它的核心思想是通过词的上下文得到词的向量化表示,有两种方法:CBOW(通过附近词预测中心词)、Skip-gram(通过中心词预测附近的词): CBOW : 通过目标词的上下文的词预测目标词,图中就是取大小为2的窗口,通过目标词前后两个词预测目标词。具体的做法是,设定词向量的维度d,对所有的词随机初始化为一个d维的向量,然后要对上下文所有的词向量编码得到一个隐藏层的向量,通过这个隐藏层的向量预测目标词,CBOW中的做法是简单的相加,然后做一个softmax的分类