Python gensim.word2vec实例

word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的距离。

它将term转换成向量形式,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。

word2vec计算的是余弦值,距离范围为0-1之间,值越大代表两个词关联度越高。

————————————————

1、分词:

import jieba

jieba.suggest_freq('特定自己的词组', True)

with open('in_the_name_of_people.txt', errors='ignore', encoding='utf-8') as fp:

  lines = fp.readlines()

  for line in lines:

      seg_list = jieba.cut(line)

      with open('word.txt', 'a', encoding='utf-8') as ff:

          ff.write(' '.join(seg_list)) # 词汇用空格分开



2、训练保存模型文件

from gensim.models import word2vec

# 加载语料

sentences = word2vec.Text8Corpus('word.txt')

# 训练模型

model = word2vec.Word2Vec(sentences)

#保存模型

model.save('近义词.model')



3、加载模型选近义词,词类分析等

from gensim.models import word2vec

model = word2vec.Word2Vec.load('近义词.model')

# 第一个是最常用的,找出某一个词向量最相近的词集合,代码如下:

req_count = 5

for key in model.wv.similar_by_word('我的第一个词', topn =100):

    if len(key[0])==3:

        req_count -= 1

        print(key[0], key[1])

        if req_count == 0:

            break;

#第二个应用是看两个词向量的相近程度,

print('相似程度===',model.wv.similarity('我的第一个词', '王某某'))

#第三个应用是找出不同类的词

print(model.wv.doesnt_match(u"第一个 第二个 第三个".split()))

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容