前言 预测词汇的相关性算是自然语言中的HelloWolrd.本文主要根据百度PaddlePaddle示例word2vec,对句子中下一个单词的预测.该示例使用4个词语来预测下一个词. 1. 数据集以及字典.Reader构建 示例采用Penn Treebank (PTB)数据集(经Tomas Mikolov预处理过的版本),直接使用数据集中的data文件夹下的ptb.train.txt和ptb.test.txt即可.这两个文件是英语语句组成的训练集,所以直接读取文件再用split将句子分开既可以得…
声明: 这是转载自LICSTAR博士的牛文,原文载于此:http://licstar.net/archives/328 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交流,随便拍. Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果.关于这个原因,引一条我比较赞同的微博. @王威廉:Steve Renals算了一下icassp录取文章题目…
Bi-LSTM @ 目录 Bi-LSTM 1.理论 1.1 基本模型 1.2 Bi-LSTM的特点 2.实验 2.1 实验步骤 2.2 实验模型 1.理论 1.1 基本模型 Bi-LSTM模型分为2个独立的LSTM,输入序列分别以正序和逆序输入至2个LSTM模型进行特征提取,将2个输出向量进行拼接后形成的词向量作为该词的最终特征表达(因此底层维度是普通LSTM隐藏层维度的两倍) 1.2 Bi-LSTM的特点 Bi-LSTM的模型设计理念是使t时刻所获得特征数据同时拥有过去和将来之间的信息 实验证…
Week 2 Quiz: Natural Language Processing and Word Embeddings (第二周测验:自然语言处理与词嵌入) 1.Suppose you learn a word embedding for a vocabulary of 10000 words. Then the embedding vectors should be 10000 dimensional, so as to capture the full range of variation…
第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 2.1 词汇表征(Word Representation) 词汇表示,目前为止一直都是用词汇表来表示词,上周提到的词汇表,可能是 10000 个单词,我们一直用 one-hot 向量来表示词.这种表示方法的一大缺点就是它把每个词孤立起来,这样使得算法对相关词的泛化能力不强. 换一种表示方式会更好,如果不用 one-hot 表示,而是用特征化的表示来表示每个词,man,w…
一.词汇表征 首先回顾一下之前介绍的单词表示方法,即one hot表示法. 如下图示,"Man"这个单词可以用 \(O_{5391}\) 表示,其中O表示One_hot.其他单词同理. 但是这样的表示方法有一个缺点,看是看下图中右侧给出的例子,比如给出这么一句不完整的话: **I want a glass of orange ___** 假设通过LSTM算法学到了空白处应该填"juice".但是如果将orange改成apple,即 **I want a glass…
import reader import numpy as np import tensorflow as tf # 数据参数 DATA_PATH = 'simple-examples/data/' # 数据存放路径 VOCAB_SIZE = 10000 # 单词数量 # 神经网络参数 HIDDEN_SIZE = 200 # LSTM隐藏层规模 NUM_LAYERS = 2 # LSTM结构层数 LEARNING_RATE = 1.0 # 学习速率 KEEP_PROB = 0.5 # 节点不被d…
参考 1. Word Representation 之前介绍用词汇表表示单词,使用one-hot 向量表示词,缺点:它使每个词孤立起来,使得算法对相关词的泛化能力不强. 从上图可以看出相似的单词分布距离较近,从而也证明了Word Embeddings能有效表征单词的关键特征. 2. 词嵌入(word embedding) Transfer learning and word embedding: 从海量词汇库中学习word embeddings(即所有单词的特征向量),或者从网上下载预训练好的w…
1 词汇表征(Word representation) 用one-hot表示单词的一个缺点就是它把每个词孤立起来,这使得算法对词语的相关性泛化不强. 可以使用词嵌入(word embedding)来解决这个问题,对于每个词,有潜在的比如300个特征,每个特征给个值,以此来表示每个词. 最终学到的词嵌入的特征不是那么好理解的,有些特征可能是几种常见特征的组合,总之可能是各种各样潜在的不知名特征. 最终学到的300维特征,如果用t-SNE映射到2维,相关性较强的词会聚在一起,相近的词语学到的特征会相…
import numpy as np import matplotlib.pyplot as plt la = np.linalg words = ["I","like","enjoy","deep","learning","NLP","flying","."] X = np.array([[0,2,1,0,0,0,0,0], [2,0,0,1,0…