美文网首页
(二)浅谈语言模型与词向量——实战

(二)浅谈语言模型与词向量——实战

作者: 天生smile | 来源:发表于2018-12-03 16:33 被阅读0次

实战主要分为两个部分语言模型和Wordvec,具体参见我的github代码

语言模型

这个部分主要实现的是NNLM2003的论文,代码中分别给出了英文和中文的数据,数据集很小,这里主要说下代码思路。

1.那中文语料举例,这里使用的是一份已经分好词的中文语料,如下:

总共6800多行,并不是很大。

2.创建语料库,根据分好词的语料建立一个word2id的词典,记录所有的词和词的编号,注意这里加上<START>,<UNK>,<END>,如下:

3.创建训练数据,在这里我们会设置一个上下文的长度win_size,这也就是我们输入的一个范围大小的设置,应为序列如果太长模型会吃不消,最后的输入和对应的标签的如下:

输入数据 输入标签

4.模型部分如下,也很简单:

这里我主要实现了hidden和output的这两个函数,完全是对照上篇文章中的图实现的,output的结果就是对词典中的每个词都有一个概率值。NNLM得代码就介绍到这里,比较简单,如果有一定的DP和tensorflow基础一定能看得懂。

Word2vec实践

        github上关于Word2vec的实践特别多,这里我主要利用gensim在Python3的环境下进行词向量的训练做一些说明(代码),后续我们会利用相同的中文语料进行bert的训练。在这里推荐一个比较好的开源项目,上面是一些训练好的开源模型

第一步:语料准备

        这里我准备了两份语料,一份是维基百科的中文语料,另一份是搜狗的新闻语料,这些网上都可以找到。这里说一下对这两份语料的处理进行说明:

1.对于维基百科的中文,抽取文本文件,可以使用wiki官方的工具WikipediaExtractor,或者运行tool目录下的process_wiki.py

执行命令:

    python process_wiki.pyzhwiki-latest-pages-articles.xml.bz2 output.txt

    繁体字转换成简体,利用目录下的tradition2simpy.py工具进行转化,用到了两个库用到了两个库,分别是zh_wiki.py和langconv.py ,目录下都有,得到simpleword.txt

2.对于搜狗语料,转换命令如下:

                dat文件解析命令:

                cat news_tensite_xml.dat | iconv -f gbk -t utf-8 -c | grep "<content>"  > corpus.txt

                vim下去掉content标签:

                        :%s/<content>//g

                        :%s/<\/content>//g

第二步:分词

               代码中用的是结巴分词,关于分词我们会单独做一个介绍,后续我还会介绍海量分词的使用。

第三步:模型训练

模型训练的代码主要注意gensim.models.Word2Vec函数,参数如下:

这里说明几个比较重要的参数,min_count指词典中频率低于min_count的词会被忽略,window指上下文大小,workers指进程数。

第四步:模型解析,代码里有,这里不详细介绍

实验效果(见test.py):

    

相关文章

  • (二)浅谈语言模型与词向量——实战

    实战主要分为两个部分语言模型和Wordvec,具体参见我的github代码。 语言模型 这个部分主要实现的是NNL...

  • (二)浅谈语言模型与词向量——原理

    最开始接触语言模型是在语音识别中,当时用的一种混合语言模型,为了知识的完整性,我先简单的讲述一下语言模型的原理,本...

  • 任务1:词向量分布

    要点一:提问:词向量是学习得来的吗? 答:是的。段落+模型->词向量 要点二:什么是语言模型 ?训练语言模型是要让...

  • 探秘Word2Vec(二)-背景知识

    word2vec是用来生成词向量的工具,而词向量与语言模型有着密切的关系,为此,不妨先来了解一些语言模型方面的知识...

  • Word2vec

    预备知识:LR、贝叶斯公式、赫夫曼编码、统计语言模型、n-gram模型、神经概率语言模型、词向量、词袋模型、sof...

  • 词向量原理

    了解词向量要从语言模型说起,语言模型其实就是计算任意一个句子的概率。 经典的语言模型是n-gram模型,该模型假设...

  • 2.2 语言模型和词向量 tensorflow词向量

    ----------------------------大纲-------------------------- ...

  • Character Embedding论文笔记

    学习目标 C2W模型背景介绍词向量的学习对于自然语言处理的应用非常重要,词向量可以 在空间上捕获词之间的...

  • 2.1 语言模型和词向量

    ----------------------------大纲-------------------------- ...

  • 2021-06-17 ch21 词向量review

    词向量:和独热编码不同的是,可以表示一个词的含义,但无法表示一词多义 训练词向量的方法:基于非语言模型的方法:CB...

网友评论

      本文标题:(二)浅谈语言模型与词向量——实战

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