写代码训练词向量时踩过的坑

在用python的第三方包gensim训练词向量时,踩到了如下的坑,记录下来:
# -*- coding: utf-8 -*-
from gensim.models import word2vec
#sentences=word2vec.Text8Corpus(u"C:\\Users\\PengjunZhu\\Desktop\\test1.txt")
sentences = [['处理', '工具', '里面', '包括'],
['常见', '模型', '我们', '体验'],
['今天', '天气', '很好', '舒服'],
['昨天', '有点', '阴天', '方便']]
model=word2vec.Word2Vec(sentences, min_count=1)
print '今天和方便的相似度为:', model.similarity("今天", "方便")

坑1、参数min_count的设置

如果过我们不设置min_count参数的话,那么它的默认值是15.
这个参数的意思是“在训练过程要先建立个词表,但这个此表不包含低频词,但这个此表不包含低频词。”,这个min_count参数的默认值就是15。
如果我们的训练数据集很小的话,这时,就会导致这个词表可能为空,进而导致错误。故可以设置为min_count=1

坑2:读取数据
model=word2vec.Word2Vec(sentences, min_count=1)

a、这句中的sentences的对象如果直接写的话,就是一个大数组和几个小数组。小数组是大数组的元素,小数组的元素是一个个字符。

b、如果这句话中的sentences是直接读取文件的话,就有个坑了
我在直接读取文件用的是这行代码
sentences=word2vec.Text8Corpus(u"C:\\Users\\PengjunZhu\\Desktop\\test1.txt")
上图这里写图片描述

c、另一种读取法,
sentences=word2vec.Text8Corpus('C:\Users\PengjunZhu\Desktop\test.txt')
查看编码可以发现,这时sentences的编码是一个ascii码,我用notpad++更改了编码,编码后为utf-8码,但是还是出错。故现在仍不知为何原因。

date:2017.02.14

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值