word2vec使用总结

1.算法概述

  Word2Vec是一个可以将语言中的字词转换为向量表达(Vector Respresentations)的模型,Word2vec可以将字词转为连续值的向量表达,并且其中意义相近的词将被映射到向量空间中相近的位置。

其主要依赖的假设是Distributional Hypothesis,即在相同语境中出现的词其语义也相近。

Word2vec主要分为CBOW(Continuous Bag of Words)和Skip Gram两种模式,其中CBOW是从原始数据推测目标字词;而Skip-Gram是从目标字词推测原始语句,其中CBOW对小型数据比较合适,而Skip-Gram在大型预料中表现得更好。

 

2 word2vec 是word embedding 最好的工具吗?

word2vec并非是效果最好的word embedding 工具。最容易看出的就是word2vec没有考虑语序,这里会有训练效果损失。

由于 word2vec 训练速度快 ,易用,google出品 等,使得word2vec使用的人多。

训练快是因为 word2vec只有输入层和输出层,砍去了神经网络中,隐藏层的耗时计算(所以word2vec并不算是一个深度学习算法)。另外,阅读word2vec的google的源码,会发现里面有一些提速的trick。如 sigmod函数,采用一次计算,以后查表,减去了大量的重复计算。如词典hash存储, 层次softmax等。

 

3 实验对比

目的

训练得到的字向量作为ner(Bi-LSTM-CRF模型)的输入字向量

评测方法

ner迭代F1指标

训练数据集

A:新闻+舆情+聚宝社区+ner训练语料 ,150万行数据

B:wiki 1000万行数据

C:A+200万行wiki数据

D: 20万新闻小数据集

实验结果

数据集

参数(未说明的使用默认值)

ner第1轮F1

2

3

4

5

6

7

8

9

10

11

A

sg=1(skip-gram)

73.77

81.82

83.77

86.74

88.25

88.85

         

A

sg=1(skip-gram),sample=1e-5

73.89

80.95

84.58

86.21

88.05

89.28

         

B

sg=1(skip-gram)

73.13

80.58

85.15

86.58

87.69

88.7

         

B

sg=1(skip-gram),sample=1e-5

73.69

81.53

84.26

86.23

88.28

88.95

         

C

window=3

64.54

71.39

                 

C

window=8

62.91

                   

C

sample=1e-5

68.9

                   

C

sg=1(skip-gram)

75.05

81.17

84.29

87.01​

​87.02

88.46

90.29

90.64

91.62

92.02

92.81

C

sg=1(skip-gram),sample=1e-5

73.79

80.94

83.10

85.75

87.79

89.45

90.11

90.53

91.60

91.75

92.62

D

 

68.53

76.18

79.50

81.14

83.43

83.99

83.57

86.39

86.60

87.21

87.52

D

sg=1(skip-gram)

72.95

81.36

84.45

85.29

87.3

87.36

89.80

89.59

90.69

91.61

91.55

总结分析

对于ner场景,skip-gram模型相比cbow模型效果好不少

sample是设置采样频率,负采样越低,对高频词越不利,对低频词有利。在大规模数据集下该参数对结果影响可忽略

在大规模数据集下,数据本身的差异对结果影响很小,即使数据规模小,ner迭代多次后差距也很小了

总之,ner对字向量的依赖较小,迭代多次可缩小字向量差距,skip-gram模型相比cbow模型效果更好。

字向量相比词向量对数据集的依赖更少

对于ner需要的字向量,选用skip-gram模型,数据集有几十万差不多了,没必要规模再大

 

 

你可能感兴趣的:(人工智能)