您的位置:首页 > 编程语言 > Python开发

初试python gensim 库

2017-07-02 00:00 106 查看
摘要: word2vec 尝试,lda尝试

做文本主题抽取,刚开始觉得word2vec挺厉害的,打算试一试,发现word2vec的函数包都在gensim里面。pip 安装以后就上路了。

import logging
#这是一个日志输出
logging.basicConfig(format='%(asctime)s:%(levelname)s: %(message)s',level=logging.INFO)
from gensim.models import word2vec
sentences=word2vec.Text8Corpus(u'E:\PyProgramma\GCTest\Source\\newtest.txt')
model=word2vec.Word2Vec(sentences,size=200)
print(model)
model.save(u'test.model')
try:
y1=model.similarity(u"切合/v",u"实际/n")
except KeyError:
y1=0
print(y1)

这里语料库是随便找了一个测测试用的,所以里面已经做过分词处理并且还做过磁性标注了,但是对跑通程序的影响是不大的。做出来还可以,测出来这两个词语相似度是0.6……算是跑通了。然后开始测自己做的语料库。
嗯,我自己的语料库是前面一个数字表示词是第几段话的,第二个是真实的词,中间空格读出

# coding:utf-8
f=open('E:\PyProgramma\GCTest\Source\\orign.txt','r',encoding='utf-8')
fin=open('E:\PyProgramma\GCTest\Source\\w2vo.txt','w',encoding='utf-8')
line=f.readline()
num=0
while line:
#print(line)
newnum,word=line.split()
if(newnum!=num):
print(word)
word=word+'\n'
fin.write(word)
else:
print(word,end=' ')
word=word+' '
fin.write(word)
num=newnum
line=f.readline()
print(line)
f.close()
fin.close()

然而带入刚刚测好的代码里却发现基本所有参数都是0,原因是之前的测试语料库挺大的,约莫50M,而自己的才几个K……
查了下API,http://radimrehurek.com/gensim/models/word2vec.html 发现word2vec还是用在词语检测比较好……但发现了gensim这个库有大量主题模型,很专注主题模型的样子……
嗯,反正语料还没弄出来,就顺便看了下lda的包

from gensim import corpora,models,similarities
from gensim.models import word2vec,LdaModel
from gensim.corpora import Dictionary
from gensim.models.atmodel import AuthorTopicModel
train=[]
f=codecs.open('E:\PyProgramma\GCTest\Source\\w2vo.txt','r',encoding='utf8')
for line in f:
line=line.split()
train.append([w for w in line])
dictionary=corpora.Dictionary(train)
corpus=[dictionary.doc2bow(text) for text in train]
lda=LdaModel(corpus=corpus,id2word=dictionary,num_topics=10)
lda.print_topics(10)
lda.print_topic(10)

同样,自己的语料库太少了,跑出来是0,然而大语料库跑出来半天没反应……会很慢
导入文件是写作utf8而不是utf-8……报了好久的格式错误,半天才发现……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  自然语言处理