gensim词向量Word2Vec

利用gensim进行词向量处理和找到相似词 关于词向量 计算方法 word2vec 加载方法 word2vec format;bin; text format; xx.kv结构 如何计算相似度 有必要norm吗? 性能那个更快 结果 参考文献 阅读详情

原理

神经网络语言模型结构示意图:输入层、投影层、隐藏层、输出层

模型简化

代码实现

1、创造随机数据集

数据格式为 list of lists of tokens
[[word1, word2, …],
 [word1, word2, …],
 …
 [word1, word2, …]]
from random import choice
ls_of_ls = [['cat', 'dog', 'fish'], ['car', 'plane', 'tank']]
ls_of_words = []  # 存放(假设是jieba.lcut后得到的)分词列表的列表
for i in range(1500):
    ls = choice(ls_of_ls)
    ls_of_words.append([choice(ls) for _ in range(9, 15)])

2、建模训练

from gensim.models import Word2Vec
model = Word2Vec(ls_of_words)
参数解释默认值
sentenceslist of lists of tokensNone
size词向量维数100
window同句中当前词和预测词的最大距离5
min_count最低词频过滤5
workers线程数3
sg0:CBOW;1:skip-gram0
hs0:负例采样;1:层次softmax0
negative负例样本数5
ns_exponentThe exponent used to shape the negative sampling distribution0.75
cbow_mean0:上下文词向量求和值;1:上下文词向量平均值1
alpha初始学习率0.025
min_alpha最小学习率0.0001

3、词间相似度

print(model.similar_by_word('car'))
print(model.similarity('car', 'tank'))
[('plane', 0.9965242743492126),
 ('tank', 0.996138334274292),
 ('fish', 0.6187092661857605),
 ('cat', 0.6155150532722473),
 ('dog', 0.5961228609085083)]
0.9961384

4、预测词

print(model.predict_output_word(['car']))
total = sum(i[1] for i in model.predict_output_word(['car']))
print('概率总和为%.2f' % total)
[('car', 0.2208322),
 ('tank', 0.20190619),
 ('plane', 0.19147001),
 ('cat', 0.1310298),
 ('dog', 0.1299157),
 ('fish', 0.124846116)]
概率总和为:1.00

5、词ID、词向量集(词矩阵)

from gensim.models import Word2Vec
ls_of_words = ['AaAaAa', 'BbBbBb'] * 9999
model = Word2Vec(ls_of_words, size=6)
print('\033[033m%s\033[0m' % ' wv.index2word '.center(60, '-'))
print(model.wv.index2word)
print('\033[033m%s\033[0m' % ' wv.vectors '.center(60, '-'))
vectors = model.wv.vectors
print(vectors)
print(vectors.shape)
print('\033[033m%s\033[0m' % ' similar_by_vector '.center(60, '-'))
for i in range(4):
    print(model.similar_by_vector(vectors[i]))

6、词矩阵可视化

from gensim.models import Word2Vec
from seaborn import heatmap
from matplotlib import pyplot
import numpy as np
np.random.seed(0)
n = 8
sentences = [
    ''.join(chr(i) for i in range(30, 40)) * n,
    ''.join(chr(i) for i in range(40, 50)) * n,
    ''.join(chr(i) for i in range(50, 60)) * n,
    ''.join(chr(i) for i in range(60, 70)) * n,
    ''.join(chr(i) for i in range(70, 80)) * n,
    ''.join(chr(i) for i in range(80, 90)) * n,
    ''.join(chr(i) for i in range(90, 100)) * n,
    ''.join(chr(i) for i in range(100, 110)) * n,
    ''.join(chr(i) for i in range(110, 120)) * n,
    ''.join(chr(i) for i in range(120, 130)) * n,
] * n * 10000
model = Word2Vec(sentences, size=10, window=15, sg=1, hs=1, sorted_vocab=0, cbow_mean=0)
vectors = model.wv.vectors
heatmap(vectors, center=np.max(vectors))
pyplot.show()

词向量聚类+3d可视化

# 捏造数据
from random import choice
ls_of_ls = [['芝士', '酸奶', '蛋糕', '巧克力', '做', '吃'],
            ['文本', '数据', '挖掘', '分析', '做', '玩'],
            ['佛山', '广州', '南海', '天河', '吃', '玩']]
ls_of_words = []  # 存放分词列表(假设是jieba.lcut后得到的)的列表
for i in range(2500):
    ls = choice(ls_of_ls)
    ls_of_words.append([choice(ls) for _ in range(9, 15)])

# 建模训练
from gensim.models import Word2Vec
model = Word2Vec(ls_of_words, size=3, window=7)

# 词向量聚类(基于密度)
from sklearn.cluster import DBSCAN
vectors = [model[word] for word in model.wv.index2word]
labels = DBSCAN(eps=0.24, min_samples=3).fit(vectors).labels_

# 词向量可视化
import matplotlib
from mpl_toolkits import mplot3d
import matplotlib.pyplot as mp
mp.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文
matplotlib.rcParams['axes.unicode_minus'] = False  # 显示负号
fig = mp.figure()
ax = mplot3d.Axes3D(fig)  # 创建3d坐标轴
colors = ['red', 'blue', 'green', 'black']
for word, vector, label in zip(model.wv.index2word, vectors, labels):
    ax.scatter(vector[0], vector[1], vector[2], c=colors[label], s=500, alpha=0.4)
    ax.text(vector[0], vector[1], vector[2], word, ha='center', va='center')
mp.show()

写诗程序

import warnings
warnings.filterwarnings('ignore')  # 不打印警告
from gensim.models import Word2Vec
from random import choice

"""配置"""
path = '春节.txt'
window = 12
min_count = 30
size = 110
topn = 13

"""数据读取"""
with open(path, encoding='utf-8') as f:
    ls_of_ls_of_c = [list(line.strip()) for line in f]

"""建模训练"""
model = Word2Vec(ls_of_ls_of_c, size=size, window=window, min_count=min_count)
chr_dict = model.wv.index2word

"""文本序列生成"""
def poem_generator(title, form):
    filt = lambda lst: [t[0] for t in lst if t[0] not in [',', '。']]
    # 标题补全
    if len(title) < 4:
        if not title:
            title += choice(chr_dict)
        for _ in range(4 - len(title)):
            similar_chr = filt(model.similar_by_word(title[-1], topn // 2))
            char = choice([c for c in similar_chr if c not in title])
            title += char
    # 文本生成
    poem = list(title)
    for i in range(form[0]):
        for _ in range(form[1]):
            predict_chr = model.predict_output_word(poem[-window:], max(topn, len(poem) + 1))
            predict_chr = filt(predict_chr)
            char = choice([c for c in predict_chr if c not in poem[len(title):]])
            poem.append(char)
        poem.append(',' if i % 2 == 0 else '。')
    length = form[0] * (form[1] + 1)
    return '《%s》' % ''.join(poem[:-length]) + '\n' + ''.join(poem[-length:])

"""诗歌生成"""
literary_form = {'五言绝句': (4, 5), '对联': (2, 7)}
while True:
    title = input('输入标题:').strip()
    poem5 = poem_generator(title, literary_form['五言绝句'])
    print('\033[033m', poem5, '\033[0m', sep='')
    poem7 = poem_generator(title, literary_form['对联'])
    print('\033[036m', poem7, '\033[0m', sep='')
    print()


语料下载地址:https://blog.youkuaiyun.com/Yellow_python/article/details/86726619

Appendix

encn
CBOWContinuous Bag-of-Words
token表征;代币;
hierarchical分层的
exponent[数]指数;说明者
proportion比例
exactly精确地
toolkit工具箱
alpha希腊字母的第1个字母: α \alpha α
appendix附录
【NLP】基于python的gensim word2vec训练词向量 准备工作当我们下载了anaconda后,可以在命令窗口通过命令conda install gensim安装gensimgensim介绍gensim是一款强大的自然语言处理工具,里面包括N多常见模型,我们体验一下:interfaces – Core gensim interfaces utils – Various utility functions matutils – Math utils cor 阅读详情

相关推荐

【python gensim使用】word2vec词向量处理中文语料

word2vec介绍word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的距离。 它将term转换成向量形式,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。 word2vec计算的是余弦值,距离范围为0-1之间,值越大代

竹聿Simon的专栏 7万+

基于gensim实现word2vec模型(附案例实战)

Word2Vec是google在2013年推出的一个NLP工具,它的特点是能够将单词转化为向量来表示,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。用词向量来表示词并不是Word2Vec的首创,在很久之前就出现了。最早的词向量采用One-Hot编码,又称为一位有效编码,每个词向量维度大小为整个词汇表的大小,对于每个具体的词汇表中的词,将对应的位置置为1。

m0_64336780的博客 9231

State of GPT (ChatGPT 原理及现状介绍)

要用 RLHF 的一个简单的原因就是 RLHF 模型效果更好,下面的图来源于 InstructGPT 论文,PPO (RLHF 算法) 后的模型生成的答案更被人类喜欢。karpathy 认为 RLHF 有用的原因是判别比生成更容易,让标注员去写一些 SFT 的 QA 数据对是比较难的,如果有一个 SFT 模型生成一些数据让标注员判断哪个更好就简单很多。,GPT4 最强,前三个都是 RLHF 模型,其他模型都是 SFT 模型。伯克利做的模型评测榜单。

kebijuelun的博客 3581

机器学习:gensim之Word2Vec 详解

一 前言 Word2Vec是同上一篇提及的PageRank一样,都是Google的工程师和机器学习专家所提出的的;在学习这些算法、模型的时候,最好优先去看Google提出者的原汁Paper和Project,那样带来的启发将更大。因为创造者对自己所创之物的了解程度优于这世上的绝大部分者,这句话,针对的是爱看博文的读者,like me。 另外,补充几句。 1.防止又被抄袭,故关键笔记以图贴之。 2.标题前带阿拉伯数字标号的内容,便是使用Gensim的Word2Vec模型过程中的完整流程序...

张伟的专栏 5828

H3C模拟器HCL防火墙路由模式主备配置实验

摘要:本文详细介绍了网络拓扑规划与设备配置方案。运营商仅提供一个接口地址,通过虚IP技术实现双防火墙高可用部署:主备防火墙分别配置10.20.10.1/29和10.20.10.2/29作为实际上联地址,共享10.10.10.2/24虚IP;下联配置172.168.10.0/24网段,核心交换机配置VLAN接口及192.168.10.1、192.168.20.1两个下联接口。文章包含运营商路由器、防火墙(HA配置、VVRP设置)和核心交换机的具体命令行配置步骤,并强调需进行主备切换验证。整个方案实现了单运营商

LQ的博客 1124

gensim的corpora.Dictionary

df_train_dict = corpora.Dictionary(try2) #建立词典 ## 如果想要过滤掉出现次数为1的词,可以使用以下代码 ids=[] for key in df_train_dict.iterkeys(): if df_train_dict.dfs[key]==1: ids.append(key) df_train_dict.filter_...

kylin_learn的博客 1万+

一次把 PRIV mode 讲透:从 ABAP 内存分配链路到定位与治理

ABAP系统进入PRIV模式的本质是Extended Memory耗尽时转向Heap内存的应急机制。该现象会导致工作进程被独占,系统吞吐量下降。触发条件包括系统EM资源池耗尽或单个用户超过配额阈值。关键参数em/address_space_MB和ztta/roll_extension需协同调整。典型症状包括SM50显示PRIV状态、响应延迟和内存dump。治理需双管齐下:系统侧合理配置内存参数,代码侧优化内存使用模式,如分页处理、减少大内表操作和下推聚合逻辑。PRIV模式应作为异常信号而非常态目标,健康系统

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 208

gensim.models.word2vec 参数说明

使用gensim训练词向量的实例,Initialize and train a Word2Vec model. &amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt; from gensim.models import Word2Vec &amp;amp;amp;gt;&amp;amp;amp;gt;&amp;amp;amp;gt; sentences = [[&amp;amp;quot;cat&amp

明远 1万+

在RStudio中使用GitHub Copilot:代码自动生成,从此告别手敲!

可以通过自定义提示词来引导Copilot生成符合自己需求的代码。再看一个做统计分析的。

Codewar的博客 334

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 748

Word2vec、词向量是什么? |Gensim中word2vec模型的参数定义

【小白入门Word2Vec】最近在忙毕设,要学习一些AI的技术。很多资料看来看去,感觉只是在大脑皮层表面略过了一下,遂还是决定采用老方法,写博客!!!对了,我也只是一个萌新,博客的内容仅代表我个人当前的理解,可能会有偏差。若有不对,感谢指正。

weixin_71246590的博客 1103

基于Python的网贷平台数据爬虫实战:Scrapy+Selenium+反反爬策略

python复制下载# items.py本文详细介绍了如何使用Python构建一个完整的网贷平台数据爬虫系统,涵盖了从基础爬取到高级反反爬策略的全套解决方案。我们使用了Scrapy框架作为基础,结合Selenium处理动态内容,实现了多种反反爬策略,并探讨了分布式爬虫的实现方式。机器学习识别验证码基于深度学习的网页结构变化检测自动化行为模拟的更精细控制基于Kubernetes的弹性爬虫集群。

2201_76125261的博客 1560

基于gensim的Word2vec词向量训练

1、导入所需的库 # 首先导入所需要的库 import pandas as pd from gensim.models import Word2Vec from gensim.models.word2vec import LineSentence 2、读取数据 # 读取数据 df = pd.read_csv('tiyu.csv', encoding='gbk') df.head()...

麦格芬230的博客 1603

第229篇 轨迹时间参数化——TOPP-RA和速度约束处理

本文介绍了时间最优路径参数化(TOPP)问题及其解法。TOPP研究如何在给定空间路径上分配时间,使机器人运动时间最短且不超速,需满足速度、加速度和力矩约束。经典解法采用相平面法,通过前向和后向扫描确定最优速度曲线。TOPP-RA改进了数值稳定性,支持多约束处理。文章对比了TOPP与轨迹优化的区别,列举了开源工具,并解答了面试常见问题,指出TOPP广泛应用于机械臂、AGV等领域。TOPP不改变路径形状,仅优化速度分配,其最优解具有bang-bang特性。

郑伟强dev的专栏 324

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【python gensim使用】word2vec词向量处理英文语料

word2vec介绍word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的距离。 它将term转换成向量形式,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。 word2vec计算的是余弦值,距离范围为0-1之间,值越大代

竹聿Simon的专栏 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

利用gensim构建word2vec词向量模型并保存词向量

利用gensim包的word2vec模块构建CBOW或Skip-Gram模型来进行词向量化比较方便。 ''' 根据训练语料库,自己训练语言模型得到词向量 ''' # 对分词后的文本训练Word2vec模型 from gensim.models import word2vec import logging def get_wordvec(corpus_path, model_name, vec_path): # 获取日志信息 logging.basicConfig(foramt='%(asc

u012744245的博客 9854

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

gensim的word2vec训练词向量 英文语料

gensim的word2vec训练词向量 英文语料 1.先处理语料 批量处理语料文章,去除标点符号,写到一个新文本里。 import os txt_path="路径.txt" save_path="路径.小程序" txt_name=sorted(os.listdir(txt_path)) txt_path_length=len(txt_name) for i in range(txt_path_l...

cxiaojun的博客 1686

word2vec词向量训练及gensim的使用

一、什么是词向量 词向量最初是用one-hot represention表征的,也就是向量中每一个元素都关联着词库中的一个单词,指定词的向量表示为:其在向量中对应的元素设置为1,其他的元素设置为0。采用这种表示无法对词向量做比较,后来就出现了分布式表征。 在word2vec中就是采用分布式表征,在向量维数比较大的情况下,每一个词都可以用元素的分布式权重来表示,因此,向量的每一维都表示一个特征向

木槿花开 8万+

基于gensim训练word2vec词向量模型

目录1.安装gensim2.数据预处理2.1jieba分词2.2分词后生成列表3.构建word2vec模型4.模型训练5.模型保持与加载6.模型使用   gensim是NLP的 1.安装gensim   使用pip安装gensim,如果安装缓慢,建议换个安装源。 pip install gensim 2.数据预处理 2.1jieba分词   利用pandas库读取数据,apply方法批量处理。 def preprocessData(path='D:/Py/Data/comment5_1.txt', sep

qq_45430594的博客 1841

gensim.word2vec 训练词向量

一、训练词向量 # 导入必要的包 import jieba import numpy as np import pandas as pd from gensim.models.word2vec import Word2Vec import joblib from sklearn.svm import SVC # 读取两个类别的语料 pos = pd.read_csv('weather_pos.txt', encoding='UTF-8', header=None) neg = pd.read_csv('w

qq_41359817的博客 1775

使用gensim框架及Word2Vec词向量模型获取相似词

使用gensim框架及Word2Vec词向量模型获取相似词预备知识Word2Vec模型下载加载词向量模型 预备知识 gensim框架 gensim是基于Python的一个框架,它不但将Python与Word2Vec做了整合,还提供了基于LSA、LDA、HDP的主体框架。 Word2Vec Word2Vec属于一种神经网络架构的概率语言模型 两个重要模型 CBOW模型:CBOW模型是Word2Vec最重要的模型,输入是周围词的词向量,输出是当前词的词向量。即通过周围词来预测当前词。 Skip-Gram

向日葵的专属太阳 2976

python生成词向量_gensim的word2vec如何得出词向量(python)

首先需要具备gensim包,然后需要一个语料库用来训练,这里用到的是skip-gram或CBOW方法,具体细节可以去查查相关资料,这两种方法大致上就是把意思相近的词映射到词空间中相近的位置。语料库test8下载地址:http://mattmahoney.net/dc/text8.zip这个语料库是从http://blog.youkuaiyun.com/m0_37681914/article/details/7...

weixin_39910824的博客 2161

使用gensim的word2vec训练自己的词向量模型

提供的一个用于测试的小型文本数据集。它包含一些示例句子,格式是一个嵌套的 Python 列表,其中每个子列表代表一个文档,文档由单词(字符串)组成。重新加载,并进行推理(如获取词向量、查找相似词等)。如果你想在自己的数据集上使用类似的处理方式,可以参考。代表余弦相似度,接近 1 说明两个词较为相似。的格式来组织你的文本数据。

2302_76774649的博客 545

调用gensim库训练word2vec词向量

首先准备符合规定输入的语料: import jieba raw_text = [ "你站在桥上看风景", "看风景的人在楼上看你", "明月装饰了你的窗子", "你装饰了别人的梦"] texts = [[word for word in jieba.cut(text,cut_all=True)] for text in raw_text] 经过运算,得到语料的输入格式如下所示: [['你', '站', '在', '桥上', '看', '风景'], ['看', '风景', '的', '人', '在

然后就去远行 1019

gensim训练词向量word2vec

1. gensim的word2vec简单使用 Code Example: from gensim.models import word2vec sents = [ 'I am a good student'.split(), 'Good good study day day up'.split() ] model = word2vec.Word2Vec(sents, size=100,

BrownWong的专栏 5642
上一篇: pandas【常用】读写增删查改
下一篇: sklearn详细总结
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值