初学NLPday2笔记部分

词向量到word2vec与相关应用

NLP常见任务:

1.自动摘要

2.指代消解    小明放学了,妈妈去接他,小明(他)

3.机器翻译    小心地滑   翻译成:slide carefully

4.词性标注

5.分词(中文、日文等)

6.主题识别  topic model  BAT

7.文本分类

处理方法:HMM、CRF、SVM、LDA、CNN...

token vector(分词向量)RNN、LSTM

向量空间子结构:

Vking-Vqueen+Vwomen=Vman

          Vking-Vqueen=Vman-Vwomen

          Vking与Vqueen之间的差异与Vman与Vwomen之间的差异相同

最终目标:词向量表示作为机器学习,特别是深度学习的输入和表示空间

one-hot编码表示:

John likes to watch movies,Mary likes too.    [1,2,1,1,1,0,0,0,1,1]

John also likes to watch football games.     [1,1,1,1,0,1,1,1,0,0]

缺点:虽然有词权重,但是词在文档中的顺序没有被考虑。

TF-IDF(Term Frequency -Inverse Document Frequency)

词t的IDF weight   log(1+N/nt)    N:文档总数   nt:含有词t的文档数

[0.693,1.386,0.693,0.693,1.099,0,0,0,0.693,0.693]

Binary weighting  短文本相似性,Bernouli Naive Bayes

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

只有权重不能确定顺序,比如:i love you   和   you love i  的意思并不具体

离散表示:  Bi-gram 和 N-gram

为2-gram建立索引:相邻的两个词汇进行分配顺序:

”John likes":1,

"likes to":2,

"to watch":3,

"watch movies":4,

"Mary likes":5,

"likes too":6,

"John also":7,

"also likes":8,

"watch football":9,

"football games":10.

一句话出现概率:每个词的概率相乘

P(w1,w2,...,wm)=

Unigram/1-gram

P(Mary likes too)=P(too|Mary,likes)*P(likes|Mary)*P(Mary)

                           =P(too)*P(likes)*P(Mary)

Bigram/2-gram

P(Mary likes too)=P(too|likes)*P(likes|Mary)*P(Mary)

酒店、宾馆、旅舍不好捕捉其含义

分布式表示:例:

红色的大型卡车

黄色的中型SUV

紫色的小型电动车

示例中有:颜色20种,型号3种,车型30种

所以需要记忆的单元数为20×3×30种

而分布式表示:20+3+30

用一个词附近的其他词实现共现矩阵  word-word (一定是个对称矩阵,对角线为0)

counts i like enjoy deep learning NLP flying
i 0 2 1 1 1 1 1
like 2 0 1 1 1 1 1
enjoy 1 1 0 1 1 1 1
deep 1 1 1 0 1 1 1
learning 1 1 1 1 0 1 1
NLP 1 1 1 1 1 0 1
flying 1 1 1 1 1 1 0

使用SVD进行降维:

m×n阶=m×r阶×r×r阶×r×n阶

for i in xrange(len(words)):

       plt.text(V[i,0],V[i,1],words[i])

计算量随语料库和词典增长膨胀太快,对X(n,n)维的矩阵,计算量O(n^3),而对大型的语料库,n~400k,语料库大小1~60Btoken

直接从语言模型出发,将模型最优化过程转化为求词向量表示的过程

例:我爱北京天安门

分为"我,爱,北京,天安门"四个词组。

目标函数:L(\Theta)  =  \sum tlogP(Wt|Wt-n+1,...,Wt-1)

(1)使用了非对称的前向窗口函数,窗长度为n-1

(2)滑动窗口遍历了整个语料库求和,计算量正比于语料库大小

(3)P(W|Wt-n+1,...Wt-1)=1  W\epsilon{vacabulary}

 

Word2Vec:CBOW(连续词袋)

INPUT    PROJECTION      OUTPUT

我喜欢机器学习分成分词:我,喜欢,机器,学习,机器学习

Continue Backforwards

初学NLPday2笔记部分_第1张图片

 特点:1.无隐层

          2.使用双向上下文窗口

          3.上下文词序无关(BOW)

          4.输入层直接使用低维稠密表示

          5.投影层简化为求和(平均)

所有维度进行求和

维度减少的两个方法:

1.CBOW的层次softmax方法(使用Huffman树)编码输出层词典

2.负例采样

总体思路:

假设需要降数量级降为500个样本:1个正样本,499个负样本

现在我们有10W个样本,如何采样到这499个负样本呢?

假设:我喜欢你  相对词频取  200 100 200

len(我)=200^{3/4} /  (200^{3/4}+100^{3/4}+200^{3/4})同理得到len(喜欢),len(你)

将每个len值×10^{8}

将每个len值乘出来的结果划分为不同区域,也就是三个区域

在[1,10^{8}-1]范围内抽取随机数(抽499次)

看随机数落在哪个区域,结果对应着”我“ ”喜欢“  ”你“

最后获得499个负例样本。

总结:

Word2Vec问题:对多义词无法进行很好的表示和处理,只使用了唯一的词向量

 

 

 

你可能感兴趣的:(深度学习,自然语言处理)