gensim
风华明远
目前研究Tensorflow 以及 tkinter
展开
-
NNLM(神经网络语音模型)
NNLM是利用神经网络计算词向量的方法。这个实现方法大部分是基于神经网络语音模型,只有少部分的修改。第一部分代码是定义了Preprocess类,来自哈工大一位老师的代码,我做了微调。第二部分是处理输入的文章,主要是去除不需要的字符。第三部分是建立词的序列第四部分是建立神经网络模型。可以用model.summary()查看第五部分是查看训练的结果。data_generator()函数是生成训练数据的。具体的可以查看fit_generator的说明。需要说明的是,训练速度比较慢。远远落后于Glov原创 2020-06-28 08:37:39 · 709 阅读 · 0 评论 -
用Mittens实现Glove的方法
大致上弄清楚了Glove的算法。此程序可以生成Vector矩阵。我的笔记本支持4860个词汇,维度是100的(用GPU,内存比较小)。注释里面写了算法。主要是数据的预处理:去除空行去除特殊字符(包括标点)去除停用词切分再次去除停用词(因为切分后可能也有停用词产生)生成字典使用滑动窗口,生成共现矩阵使用Mittens生成Glove Vector保存"""本文件包含中文NLP预处理常用的一些代码"""import refrom mittens import GloVeimport原创 2020-06-20 10:08:47 · 894 阅读 · 0 评论 -
斯坦福大学 Glove vector的用法
可以从斯坦福大学的官方网站下载训练好的Glove Vector。网址如下:斯坦福大学Glove网址:https://nlp.stanford.edu/projects/glove/文件很大。最小的也有822M。拿到文件后,不能直接用在gensim中。还需要增加一行。比如glove.6B.50d.txt 就需要增加 “400000 50”。表示有400000个词,维度是50。(有博客说增加400001是错误的。我的程序会报错)可以使用下面的代码修改:out_file=open("g.50.txt",原创 2020-06-20 08:56:38 · 1144 阅读 · 0 评论 -
用Mittens实现Glove算法
用Mittens实现了Glove算法。但是算出了矩阵之后,不知道怎么用。另外,矩阵在误差0.02后,就很难再收敛了。不知道是不是有什么错误。这几天花时间研究一下。Mittens的代码在我前面的博客中有。使用的数据是从搜狐下载的。停用词是网络上找的。如果有需要的可以私信。也希望有大佬可以指点我的算法是否正确,以及如何使用Mittens。代码没有整理,看着有些乱。(有些代码是借用的)"""本文件包含中文NLP预处理常用的一些代码"""import osimport reimport stri原创 2020-06-20 07:46:14 · 524 阅读 · 10 评论 -
共现矩阵之一 gensim实现方法
所谓的共现矩阵,就是词表示矩阵。不过目前有2种不同的共现矩阵。一种是词在文章中的出现次数。比如下面两篇“文章”:1)我爱北京天安门2)我爱吃北京烤鸭北京就在两篇文章中各出现一次。而天安门只在第一篇文章中出现,第二篇文章中没有出现。烤鸭则相反。gensim实现了统计词在文章的出现次数。后面的例子会说明。还要一种是统计词与词之间相互关系的。比如,北京和天安门是挨着的,北京和烤鸭也挨着。Glove算法就利用了这种词的统计方法来评估词与词之间的关联。这也是一种共现矩阵。不过gensim中没有实现。下一篇我原创 2020-06-16 08:37:26 · 2540 阅读 · 0 评论