百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python 下的 word2vec 学习(python in word)

off999 2024-11-03 14:18 28 浏览 0 评论

1.ubuntu下安装gensim

refer to: ubuntu 14.04 安装gensim

为了保证安装成功,首先升级一下easy_install工具。

sudo easy_install -U setuptools
1

之后使用easy_install进行安装,使用apt-get安装会遇到编码出错,不知为什么,使用easy_install安装成功就行了。

sudo easy_install --upgrade gensim
1
2

结果在import gensim 中还出现了点小错误,缺少了平pattern模块,所以直接pip 安装。

sudo pip install pattern
1

2.训练生成模型

安装完成之后,就来训练模型。

refer:中英文维基百科语料上的word2vec实验

模型的训练如下:

# ################# 例1 #########################
# import modules & set up logging
import gensim, logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = [['first', 'sentence'], ['second', 'sentence']]
# train word2vec on the two sentences
model = gensim.models.Word2Vec(sentences, min_count=1)
1
2
3
4
5
6
7
8

在本次的实验中,我们的数据是保存在txt文件中的。每一行对应一个句子(已经分词,以空格隔开),我们可以直接用LineSentence把txt文件转为所需要的格式。

# ################# 例2 #########################
from gensim import Word2Vec
from gensim.Word2Vec import LineSentence
# inp为输入语料
inp = 'wiki.zh.text.jian.seg.txt'
# outp1 为输出模型
outp1 = 'wiki.zh.text.model'
# outp2为原始c版本word2vec的vector格式的模型
outp2 = 'wiki.zh.text.vector'
model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())
model.save(outp1)
model.save_word2vec_format(outp2, binary=False)
1
2
3
4
5
6
7
8
9
10
11
12
13

关于Word2Vec(…) 模型的参数说明(refer to: gensim实现python对word2vec的训练和计算和word2vec使用说明):

LineSentence(inp):应该是把word2vec训练模型的磁盘存储文件(model在内存中总是不踏实)转换成所需要的格式;对应的格式是参考上面的例1。 size:是每个词的向量维度; window:是词向量训练时的上下文扫描窗口大小,窗口为5就是考虑前5个词和后5个词; min-count:设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃; workers:是训练的进程数(需要更精准的解释,请指正),默认是当前运行机器的处理器核数。这些参数先记住就可以了。

说明一下输入语料,输入的是文本文件的格式,其中没一行表示一个文章,而且是经过分词处理的。词与词之间用空格隔开就行了。分词的工具有很多,我一般用的是结巴分词(不知道大家以后没有好的分词工具推荐)。一般来说,训练集越大,结果的泛化性越好,对于专业领域的话,最好能使用专业领域的语料来进行训练。

3.导入模型

# -*- coding: utf-8 -*-
# <nbformat>3.0</nbformat>
import gensim
# 导入模型
model = gensim.models.Word2Vec.load("wiki.zh.text.model")
1
2
3
4
5
6

4. 模型使用

可以参照官网上的指导迅速了解model的各种功能方法。

4.0 获取词向量

 print model[u'汽车']
 type(model[u'汽车'])
1
2
# 结果
[ 3.74845356e-01 1.86477005e+00 1.28353190e+00 8.04618478e-01 ... ]
numpy.ndarray
1
2
3

4.1 计算一个词的最近似的词,倒排序

result = model.most_similar(u'足球')
for each in result:
 print each[0] , each[1]
1
2
3
国际足球 0.556692957878
足球运动 0.530436098576
篮球 0.518306851387
国家足球队 0.516140639782
足球队 0.513238489628
足球联赛 0.500901579857
football 0.500162124634
体育 0.499264538288
足球比赛 0.488131582737
冰球 0.48725092411
1
2
3
4
5
6
7
8
9
10

4.2 计算两词之间的余弦相似度

word2vec一个很大的亮点:支持词语的加减运算。(实际中可能只有少数例子比较符合)

>>> model.most_similar(positive=['woman', 'king'], negative=['man'])
[('queen', 0.50882536), ...]
1
2
sim1 = model.similarity(u'勇敢', u'战斗')
sim2 = model.similarity(u'勇敢', u'胆小')
sim3 = model.similarity(u'高兴', u'开心')
sim4 = model.similarity(u'伤心', u'开心')
print sim1 
print sim2
print sim3
print sim4
1
2
3
4
5
6
7
8
0.254622852224
0.38974887559
0.423695453969
0.376244588456
1
2
3
4

4.3 计算两个集合之间的余弦似度

当出现某个词语不在这个训练集合中的时候,会报错!!!。

list1 = [u'今天', u'我', u'很', u'开心']
list2 = [u'空气',u'清新', u'善良', u'开心']
list3 = [u'国家电网', u'再次', u'宣告', u'破产', u'重新']
list_sim1 = model.n_similarity(list1, list2)
print list_sim1
list_sim2 = model.n_similarity(list1, list3)
print list_sim2
1
2
3
4
5
6
7
0.541874230659
0.13056320154
1
2

4.4 选出集合中不同类的词语

list = [u'纽约', u'北京', u'上海', u'西安']
print model.doesnt_match(list)
list = [u'纽约', u'北京', u'上海', u'西瓜']
print model.doesnt_match(list)
1
2
3
4
纽约
西瓜

相关推荐

阿里云国际站ECS:阿里云ECS如何提高网站的访问速度?

TG:@yunlaoda360引言:速度即体验,速度即业务在当今数字化的世界中,网站的访问速度已成为决定用户体验、用户留存乃至业务转化率的关键因素。页面加载每延迟一秒,都可能导致用户流失和收入损失。对...

高流量大并发Linux TCP性能调优_linux 高并发网络编程

其实主要是手里面的跑openvpn服务器。因为并没有明文禁p2p(哎……想想那么多流量好像不跑点p2p也跑不完),所以造成有的时候如果有比较多人跑BT的话,会造成VPN速度急剧下降。本文所面对的情况为...

性能测试100集(12)性能指标资源使用率

在性能测试中,资源使用率是评估系统硬件效率的关键指标,主要包括以下四类:#性能测试##性能压测策略##软件测试#1.CPU使用率定义:CPU处理任务的时间占比,计算公式为1-空闲时间/总...

Linux 服务器常见的性能调优_linux高性能服务端编程

一、Linux服务器性能调优第一步——先搞懂“看什么”很多人刚接触Linux性能调优时,总想着直接改配置,其实第一步该是“看清楚问题”。就像医生看病要先听诊,调优前得先知道服务器“哪里...

Nginx性能优化实战:手把手教你提升10倍性能!

关注△mikechen△,十余年BAT架构经验倾囊相授!Nginx是大型架构而核心,下面我重点详解Nginx性能@mikechen文章来源:mikechen.cc1.worker_processe...

高并发场景下,Spring Cloud Gateway如何抗住百万QPS?

关注△mikechen△,十余年BAT架构经验倾囊相授!大家好,我是mikechen。高并发场景下网关作为流量的入口非常重要,下面我重点详解SpringCloudGateway如何抗住百万性能@m...

Kubernetes 高并发处理实战(可落地案例 + 源码)

目标场景:对外提供HTTPAPI的微服务在短时间内收到大量请求(例如每秒数千至数万RPS),要求系统可弹性扩容、限流降级、缓存减压、稳定运行并能自动恢复。总体思路(多层防护):边缘层:云LB...

高并发场景下,Nginx如何扛住千万级请求?

Nginx是大型架构的必备中间件,下面我重点详解Nginx如何实现高并发@mikechen文章来源:mikechen.cc事件驱动模型Nginx采用事件驱动模型,这是Nginx高并发性能的基石。传统...

Spring Boot+Vue全栈开发实战,中文版高清PDF资源

SpringBoot+Vue全栈开发实战,中文高清PDF资源,需要的可以私我:)SpringBoot致力于简化开发配置并为企业级开发提供一系列非业务性功能,而Vue则采用数据驱动视图的方式将程序...

Docker-基础操作_docker基础实战教程二

一、镜像1、从仓库获取镜像搜索镜像:dockersearchimage_name搜索结果过滤:是否官方:dockersearch--filter="is-offical=true...

你有空吗?跟我一起搭个服务器好不好?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。昨天闲的没事的时候,随手翻了翻写过的文章,发现一个很严重的问题。就是大多数时间我都在滔滔不绝的讲理论,却很少有涉及动手...

部署你自己的 SaaS_saas如何部署

部署你自己的VPNOpenVPN——功能齐全的开源VPN解决方案。(DigitalOcean教程)dockovpn.io—无状态OpenVPNdockerized服务器,不需要持久存储。...

Docker Compose_dockercompose安装

DockerCompose概述DockerCompose是一个用来定义和管理多容器应用的工具,通过一个docker-compose.yml文件,用YAML格式描述服务、网络、卷等内容,...

京东T7架构师推出的电子版SpringBoot,从构建小系统到架构大系统

前言:Java的各种开发框架发展了很多年,影响了一代又一代的程序员,现在无论是程序员,还是架构师,使用这些开发框架都面临着两方面的挑战。一方面是要快速开发出系统,这就要求使用的开发框架尽量简单,无论...

Kubernetes (k8s) 入门学习指南_k8s kubeproxy

Kubernetes(k8s)入门学习指南一、什么是Kubernetes?为什么需要它?Kubernetes(k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。它...

取消回复欢迎 发表评论: