Gensim Word2vec 使用教程
来源:互联网 发布:android c语言开发 编辑:程序博客网 时间:2024/05/26 02:54
转自http://blog.csdn.net/Star_Bob/article/details/47808499
**
准备输入
**
Gensim的word2vec的输入是句子的序列. 每个句子是一个单词列表
代码块
例如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
将输入视为Python的内置列表很简单, 但是在输入很大时会占用大量的内存. 所以Gensim只要求输入按顺序提供句子, 并不将这些句子存储在内存, 然后Gensim可以加载一个句子, 处理该句子, 然后加载下一个句子.
例如, 如果输入分布在硬盘上的多个文件中, 文件的每一行是一个句子, 那么可以逐个文件, 逐行的处理输入:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
如果需要对文件中的单词做其他处理, 比如转换为unicode, 转换大小写, 删除数字, 抽取命名实体等, 所有这些都可以在MySentence迭代器中进行处理.
注意, word2vec会在整个句子序列上跑两遍, 第一遍会收集单词及其词频来够爱走一个内部字典树结构. 第二遍才会训练神经网络. 如果你只能遍历一边数据, 则可以参考以下做法
- 1
- 2
- 3
**
训练
**
Word2vec有很多可以影响训练速度和质量的参数.
第一个参数可以对字典做截断. 少于min_count次数的单词会被丢弃掉, 默认值为5
- 1
- 2
另外一个是神经网络的隐藏层的单元数:
- 1
大的size需要更多的训练数据, 但是效果会更好. 推荐值为几十到几百.
最后一个主要的参数控制训练的并行:
- 1
worker参数只有在安装了Cython后才有效. 没有Cython的话, 只能使用单核.
内存
word2vec的参数被存储为矩阵(Numpy array). array的大小为#vocabulary 乘以 #size大小的浮点数(4 byte)矩阵.
内存中有三个这样的矩阵, 如果你的输入包含100,000个单词, 隐层单元数为200, 则需要的内存大小为100,000 * 200 * 4 * 3 bytes, 约为229MB.
另外还需要一些内存来存储字典树, 但是除非你的单词是特别长的字符串, 大部分内存占用都来自前面说的三个矩阵.
评测
Word2vec的训练是无监督的, 没有可以客观的评测结果的好方法. Google提供的一种评测方式为诸如”A之于B相当于C至于D”之类的任务: 参见http://word2vec.googlecode.com/svn/trunk/questions-words.txt
Gensim也支持相同的评测集:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
切记, 要根据自己的应用了需求来确定算法的性能.
存储和加载模型
存储、加载模型的方法如下:
- 1
- 2
另外, 可以直接加载由C生成的模型:
- 1
- 2
- 3
在线训练
可以在加载模型之后使用另外的句子来进一步训练模型
- 1
- 2
但是不能对C生成的模型进行再训练.
使用模型
Word2vec支持数种单词相似度任务:
- 1
- 2
- 3
- 4
- 5
- 6
可以通过以下方式来得到单词的向量:
- Gensim Word2vec 使用教程
- Gensim Word2vec 使用教程
- Gensim Word2vec 使用教程
- gensim中使用word2vec
- gensim版word2vec的使用
- gensim word2vec
- gensim Word2vec
- 深度学习:使用 word2vec 和 gensim
- Word2Vec的Python版Gensim的使用
- Python中gensim库word2vec的使用
- 【gensim中文教程】开始使用gensim
- Gensim进阶教程:训练word2vec与doc2vec模型
- word2vec安装使用教程
- Gensim Word2vec简介
- Gensim Word2vec简介
- gensim 之 word2vec
- gensim word2vec 实例
- word2vec using gensim
- react 1
- OpenCV检测篇(二) ——笑脸检测
- C++ cout输出格式化(1)
- ESP8266擦除flash
- hadoop 2.x yarn 的工作机制
- Gensim Word2vec 使用教程
- http服务器的简单使用
- selenium登录知乎并且输出一些首页的标题demo
- 依赖注入 Dependency Injection (DI)
- 这些年我原来是做系统和协议的
- spring-boot怎么更改默认的端口号
- 执行mysql添加权限语法,报错提示:ERROR 1558 (HY000): Column count of mysql.user is wrong. Expected 42, found 39. C
- CDH 升级到5.12 /etc/alternatives 仍然指向旧版本的CDH
- android studio中,拉下分支,修改包名和相关信息之后,工程类名标红,不报错,也可以编译运行,怎么回事?