中文 word2vec 的实验结果

作者: LCG22 | 来源:发表于2018-05-17 15:36 被阅读0次

环境:Linux

实验相关信息:

①语言与版本:Python2.7

②深度学习框架与版本:tensorflow cpu 版

③深度学习模型:word2vec

④ Python 库:jieba、tensorflow、pandas

⑤源码:https://github.com/LCG22/DeepLearning/tree/master/TensorflowLearning/Word2Vec/Word2Vec

注:由于使用的是公司业务数据,故代码中不提供数据

⑥实验目的:

a)word2vec 模型对混杂两个语种(普通话和广州话)的数据是否仍有较好的学习效果,即能否学习到普通话和广州话中

意思相近的词语的词向量在词空间中的位置也较近

b)word2vec 模型在实际数据中的效果如何

⑦数据:

领域:楼房销售(房产中介)

内容:客户跟进记录。记录客户的购房需求和客户相关的信息。

语言:中文,极少部分英文。混杂有普通话和广州话。

难点:

a)记录的信息格式比较随意

b)记录的信息比较杂乱,有的记录了客户较多的个人信息,有的则记录的比较少,很难从中提取有效信息

c)由于数据中混杂有很多广州话,而 jieba 分词并不支持广州话的字典,因此对广州话的分词结果较差

d)由于记录内容偏向于口语化,故 jieba 分词对普通话的分词结果较差,但比广州话的分词结果要好得多

e)部分词语在整个数据集中的数量较少,word2vec 模型可能会学习不到与该词语意思相近的词语

⑧实验结果

1、数据集大小:

分词前:189M

分词后:220M

分词数量:包括重复的有 35654193 个词(仅删掉了常见的标点符号,没删除常见的停用词),去重后的有 50003 个词

2、参数与结果

a)

    参数:

    词汇表大小:vocabulary_size =50000

    每批训练模型的样本数:batch_size =128

    词向量的大小:embedding_size =128

    词窗口大小:skip_window =1

    要生成的目标词的训练样本数量:num_skips =2

    验证词的数量:valid_size =len(valid_word)

    valid_window =100

    抽样的负样本:num_sampled =64

    训练模型的步数:num_steps =2000000

    结果:

        由上图结果可见,对于普通话字词的买、儿子和广州话字词的中意(意思是喜欢,包括钟意、仲意,三者意思相同但因个人差别而使用了不同的字来代替广州话发音)、得闲(有空)、几好(好、不错)、价钱(价格)的学习结果都是很好的,学习到了与其意思相近的词在词空间上也是相近的。例如普通话的儿子,跟它意思相近的词分别是,女儿、老婆、女朋友、老公、太太、妈妈、家人、弟弟,这些词跟儿子一样,都是属于家人,而且是直系亲属(女朋友除外),可见对于普通话的词向量的学习还是很不错的。而例如广州话中的价钱,跟它意思相近的词分别是,价格、价位、单价、总价、价、楼价、楼层、房价,这些词要么是跟价钱是同义词(只是在不同的语种中的字词不同)要么是跟价钱高度相关的(例如楼层),可见词向量的确能够学习到即使是属于不同语种的词语在词空间上也是相近的,学习到了语义相近的词语在词空间上的相近;另外,价钱虽然是广州话,但是并不是用广州话的字词来写的,而是借用了普通话中语音相近的普通话字词,可见词向量学习的的确是字词在上下文的语义(虽然该模型中的上下文仅仅只是目标词的左右两边的词)。

       但是训练结果也并不是很让人满意,例如上图中的博士、倾成(广州话,对应普通话中的谈成)跟在词空间上的距离是最近的字词,实际语义相差却极大,甚至可以说根本没有半点语义相近。究其原因,则是因为两者在训练样本中的数量太少了,例如博士的数量才只有 24 个,倾成的数量也仅有 22 个,而买、儿子、中意、得闲、几好、价钱的数量则分别有 284426、7733、25592、56932、2475、61048,可见这些词的数量远比博士、倾成要多得多,最少的也是他们的 100 倍,最多的则高达 12928 倍,也可见字词的数量对于训练结果有决定性作用。

    总结:

            ①词向量的确能够学习到即使是属于不同语种的词语在词空间上也是相近的

            ②字词的数量对于训练结果有决定性作用

相关文章

  • 中文 word2vec 的实验结果

    环境:Linux 实验相关信息: ①语言与版本:Python2.7 ②深度学习框架与版本:tensorflow c...

  • word2vec

    word2vec word2vec 构建中文词向量

  • 2018-12-06

    Word2vec实验 概述:实验测试了Google的word2vec (C版本)的源代码,以及使用Twitter数...

  • word2vec、负采样、层序softmax

    word2vec word2vec也叫word embeddings,中文名“词向量”、"词嵌入"。是Google...

  • 【实验】中文分词word2vec实践

    网上下一份倚天屠龙记的小说txt 下述代码分词后的txt文件 代码解释 用gensim做word2vec,用jie...

  • TensorFlow-9-词的向量表示

    今日资料:https://www.tensorflow.org/tutorials/word2vec中文版:htt...

  • 继续玩word2vec (English Corpus)

    上周末继续玩了点word2vec,因为之前试的结果是在中文文本上效果相当好,而在英文文本下效果很普通。我考虑了一下...

  • 英文维基百科语料上的Word2Vec实验

    做word2vec实验主要是论文需要用到词向量,至于word2vec内在的数学原理啥的真的一窍不通,为了处理维基百...

  • word2vec训练中文微博语料

    参考文献:windows下使用word2vec训练维基百科中文语料全攻略!(网址见文末) 步骤一:下载中文微博语料...

  • 2018-04-02 第二周

    通过,上一周对lstm的初步了解,可以开始处理本次实训的数据,因为都是中文文本的信息,采用word2vec来对中文...

网友评论

    本文标题:中文 word2vec 的实验结果

    本文链接:https://www.haomeiwen.com/subject/vvvbdftx.html