Word2vec的应用

news2024/12/23 23:26:35

目录

1.分词

2.模型训练 

3.可视化

 4.知识点个人理解


pip install gensim -i https://pypi.tuna.tsinghua.edu.cn/simple

#若在jupyter notebook中安装:

! pip install gensim -i https://pypi.tuna.tsinghua.edu.cn/simple

#导包
import jieba
import re
import numpy as np
from sklearn.decomposition import PCA
import gensim
from gensim.models import Word2Vec  #导入预训练好的Word2Vec模型
import matplotlib.pyplot as plt
import matplotlib    #中文字体用matplotlib加载,显示中文

1.分词

f = open('../data/sanguo.txt', 'r', encoding='utf-8')
lines = []
for line in f:   #将f当做是一个数据集迭代器,一行行遍历比较好,不会一下占用很大内存
    #jieba分词    lcut是精确分词模式
    temp = jieba.lcut(line)  
    words = []  #接收token
    for i in temp:  #temp是一个字符串列表,每一个元素都是一个字符串
        #过滤标点符号 re.sub(需要替换掉的内容, 用什么替换, 操作对象)
        i = re.sub("[\s+\.\!\/_,$%^*(+\"\'“”《》]+|[+--!,。?、~@……#¥&*():;‘]+", "", i)
        if len(i) > 0:
            words.append(i)  #i 是一个句子
    if len(words) > 0:
        lines.append(words)
print(lines[0:5])
#在输出结果中,一个列表就是一个句子
[['三国演义', '上卷'], ['罗贯中'], ['滚滚', '长江', '东', '逝水', '浪花', '淘尽', '英雄', '是非成败', '转头', '空', '青山', '依旧', '在', '几度', '夕阳红'], ['白发', '渔樵', '江渚上', '惯看', '秋月春风', '一壶', '浊酒', '喜相逢', '古今', '多少', '事', '都', '付笑谈', '中'], ['调寄', '临江仙']]

2.模型训练 

#创建模型的时候就会进行训练
#vector_size=embedding_dim,把原始数据压缩成多少维度,不能太高或者太低,太低就会丢失太多信息
#window 滑动窗口大小
#min_count=5 词频低于5就被删除
#sg=1 表示使用Word2Vec的skip_gram模型
#negative=10 负采样的噪声词的数量 
#epochs=30 训练次数不是越多效果越好
model = Word2Vec(sentences=lines, vector_size=20, window=3, min_count=3, epochs=10, sg=1, negative=10)
print('刘备的词向量:\n', model.wv['刘备'])  #等同于上一句代码
#获取某个词的词向量: 按照索引在词汇表中查找
#model.wv 是中心词的词向量
print('刘备的词向量:\n', model.wv.get_vector('刘备'))
刘备的词向量:
 [-0.2890919  -0.64534736  0.35023224  0.5738358   0.615334   -0.20633562
  0.39474598  0.5770406  -0.6374094   0.6299717   0.53927785 -0.3620445
 -0.58977085 -0.18836461 -0.17590947  0.6360351   0.5856611  -0.99581605
 -0.51967734 -1.1827276 ]
#找与“刘备”最相似的前n个词
model.wv.most_similar('孔明', topn=10)
[('玄德', 0.9126482009887695),
 ('二嫂', 0.8797737956047058),
 ('鲁肃入', 0.8780523538589478),
 ('庞统', 0.8647811412811279),
 ('孔明入', 0.8644561171531677),
 ('甘夫人', 0.8625627756118774),
 ('回书', 0.8624818921089172),
 ('孙夫人', 0.8620772361755371),
 ('一遍', 0.8579021096229553),
 ('孔明遂', 0.8574188947677612)]

3.可视化

model.wv.index_to_key

 输出结果部分展示:

['曰',
 '之',
 '也',
 '吾',
 '与',
 '而',
 '将',
 '了',
 '有',
 '在',]
raw_wordvec = []  #存放原始分词的词向量
word2ind = {}  #存放词与索引
#i, w表示 索引, 原始分的词
for i, w in enumerate(model.wv.index_to_key):  #enumerate()遍历元素及元素对应的索引
    raw_wordvec.append(model.wv[w])  #根据分的词w,获取到w的词向量,再添加到列表raw_wordvec中
    word2ind[w] = i  #将词w与索引i一一对应存放到字典word2ind中
    
#降维只能用ndarray进行, 将数据转化为ndarray
raw_wordvec = np.array(raw_wordvec)
#数据降维,将数据降成二维
X_reduced = PCA(n_components=2).fit_transform(raw_wordvec)
X_reduced
array([[-0.9565789 ,  0.43193746],
       [-0.62351465,  0.20734401],
       [-0.9055981 ,  0.18587902],
       ...,
       [-0.47270492, -0.0872296 ],
       [ 0.24143706, -0.00525565],
       [ 0.44416195, -0.20065238]], dtype=float32)

word2vec中获取每个词的词向量直接在预训练好的模型中查找得到 

#创建视图大小
fig = plt.figure(figsize=(15,10))
#获取当前视图
ax = fig.gca()
#设置背景色
ax.set_facecolor('white')
#绘制
ax.plot(X_reduced[:, 0], X_reduced[:, 1], '.', markersize=1, alpha=0.3, color='black')

#绘制几个文章中常见的词
words = ['孙权','刘备','曹操','周瑜','诸葛亮','司马懿','张飞','关羽','吕布','大乔','小乔']
#设置中文字体的显示
font = matplotlib.font_manager.FontProperties(fname='../data/华文仿宋.ttf', size=16)
for w in words:
    if w in word2ind:
        ind = word2ind[w]
        xy = X_reduced[ind]
        plt.plot(xy[0], xy[1], '.', alpha=1, color='red', markersize=10)
        plt.text(xy[0], xy[1], w, fontproperties=font, alpha=1, color='green')

 4.知识点个人理解

词向量的用途

  • 主题聚类
  • 情感分析
  • 信息检索

word2vec的缺点:

  • 没有考虑同义词
  • 窗口长度有限
  • 没有考虑全局的文本信息
  • 不是严格意义上的语序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2167794.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一种能够一机两用的源代码保密方案

在数字化时代,企业面临的数据泄露风险日益增加,保护机密数据的安全成为了一项重要任务。SDC沙盒技术作为一种先进的数据保密解决方案,通过创新的沙盒概念,在防泄密领域展现了其独特的价值和作用。 一、SDC沙盒技术简介 SDC沙盒技…

使用ucharts写的小程序页面柱状图上方没有数字

使用uCharts官网 - 秋云uCharts跨平台图表库写的柱状图如何让柱子上放没有数据 更改前 更改后 使用uCharts官网 - 秋云uCharts跨平台图表库 写的小程序图表,无论是柱状图还是折线图添加一个 dataLabel: false, // 不显示数据 九可以实现不显示数据 const opts …

必看!道路运输企业主要负责人和安全生产管理人员考核新动向

必看!道路运输企业主要负责人和安全生产管理人员考核新动向 道路运输企业两类人员#叙后尘 道路运输企业主要负责人和安全生产管理人员报考 交通运输主管部门具体组织实施本行政区域内道路运输企业主要负责人和安全生产管理人员安全考核有关工作,并在…

无网络entos7报错ImportError: /lib64/libm.so.6: version `GLIBC_2.27‘ not found更新glibc

最近在尝试使用sklearn的升级版cuml,因为是一台没有连接互联网的gpu机器,所以构建cuml环境过程很坎坷,需要各种将各种whl包在线下载后上传到服务器中。 当我终于解决完包的互相依赖问题后,在import cuml时候遇到一个错误&#xff…

【线程】线程池

线程池通过一个线程安全的阻塞任务队列加上一个或一个以上的线程实现,线程池中的线程可以从阻塞队列中获取任务进行任务处理,当线程都处于繁忙状态时可以将任务加入阻塞队列中,等到其它的线程空闲后进行处理。 线程池作用: 1.降…

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询…) 文章目录 三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)1. …

2024中国新能源汽车零部件交易会,开源网安展示了什么?

近日,2024中国新能源汽车零部件交易会在十堰国际会展中心举行。开源网安车联网安全实验室携车联网安全相关产品及解决方案亮相本次交易会,保障智能网联汽车“车、路、云、网、图、边”安全,推动智能网联汽车技术突破与产业化发展。 中国新能源…

MySQL InnoDB MVCC数据结构分析

1、概述 MVCC(Multiversion Concurrency Control)多版本并发控制,通过维护不同的版本号,提供一种很好的并发控制技术,这种技术能够使读写操作不冲突,提升并发性能。 MySQL InnoDB存储引擎,在更…

【雅特力AT32】IIC使用指南_附读写EEPROM案例

目录 1.12C接口简介 2.12C接口通信 2.1主机通信流程 2.1.1 主机通信初始化 1>主机时钟初始化 2>主机通信初始化 3>主机 10 bits 寻址的特殊时序初始化 2.1.2 主机通信初始化软件接口 2.1.3 主机发送流程 2.1.4 主机发送流程软件接口 2.1.5 主机接收流程 2.1.6 主机接收…

传输大咖47 | 软件企业文件传输难题?这款FTP替代工具了解一下

随着信息技术的飞速发展,软件企业对数据传输的需求日益增长。虽然传统的FTP(文件传输协议)曾经是企业数据交换的主要力量,但其在许多方面的局限性已经逐渐成为企业发展的瓶颈。接下来,我们将带您讨论FTP的缺点&#xf…

又一个行业被背刺了,AI做服装设计这么简单,谁还需要设计师?

随着人工智能(AI)技术的迅速发展,越来越多的行业开始借助AI的力量实现创新,而服装设计这一传统行业也无法幸免。 在过去,服装设计是创意与手工结合的高门槛行业,需要设计师花费大量时间和精力去构思、打样…

bootstrap4显示与隐藏元素方法

bootstrap4显示与隐藏元素方法 bootstrap4隐藏元素、显示元素其实非常的简单,因为bootstrap4已经为我们提供了相应的类,只需要按照它的规则去命名就可以了。 使用我们的响应式显示实用程序类更改display属性的值。我们特意只支持 的所有可能值的一个子…

国产DSP,自研指令集内核C2000,F28335、F280049、F28377

国产DSP,自研指令集内核架构,自研工具链,完美替代TI的 C2000系列产品,F280049、F28335、F28377 性能、主频、外设、内存,全面提高30%-80%, 基于eclipse做的IDE,满足工程师的使用习惯&#xff0c…

Mac 电脑配置yolov8运行环境实现目标追踪、计数、画出轨迹、多线程

🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录 📙 Mac 电脑 配置 yolov8 环境📙 代码运行推理测试模型训…

【最新华为OD机试E卷-支持在线评测】字符串变换最小字符串(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

计算机知识竞赛网站设计与实现

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…

C++的明星之我是类001

文章目录 类类定义格式访问限定符类域 实例化实例化概念对象大小 this指针两道nt题目题目一题目二 C和C语言实现stack对比 类 类定义格式 新增一个关键字class,后加上类的名字,{}中为类的主体,类中的函数称为类的⽅法或者成员函数定义在类⾯…

OccLLaMA:首个结合3D占用预测、语言、行为构建的生成式世界模型

导读: OccLLaMA是首个结合3D占用预测作为视觉表征的生成式世界模型。大量实验表明,OccLLaMA在多个任务上实现了不错的性能,包括4D占用预测、运动规划和视觉问答,展示了其作为自动驾驶基础模型的潜力。©️【深蓝AI】编译 1. 研…

如何在谷歌浏览器上玩大型多人在线游戏

在如今的数字时代,谷歌浏览器已经成为了许多人上网冲浪的首选工具。除了浏览网页、观看视频之外,你还可以在谷歌浏览器上畅玩各种大型多人在线游戏。本文将为你详细介绍如何在谷歌浏览器上玩大型多人在线游戏的步骤。 (本文由https://chrome…

【Java代码审计】敏感信息泄露篇

【Java代码审计】敏感信息泄露篇 1.敏感信息泄露概述2.TurboMail 5.2.0 敏感信息泄露3.开发组件敏感信息泄露1.敏感信息泄露概述 敏感信息是业务系统中对保密性要求较高的数据,通常包括系统敏感信息以及应用敏感信息 系统敏感信息指的是业务系统本身的基础环境信息,例如系统…