词的表示方法笔记——词向量+代码练习

news2024/12/23 4:45:14

词的表示方法:
一、one-hot(最简单)
独热编码是一种将单词转化为稀疏向量的方法,其中每个单词都表示为一个只有一个元素为1其余元素均为0的向量,其维度由词库的大小决定。。例如,对于包含 4个单词的词汇表 [tapple, banana, orange, peach] 单词“banana”的独热编码为[0,1,0,0]。
缺点:
(1)纬度灾难,有多少个词语我们的维度就多大,对于庞大的语料库来说,存储量和计算量都是问题;
(2)无法度量词语之间的相似性;
二、word embedding(词向量)
词向量则是一种将单词映射到连续向量空间中的方法,旨在捕捉单词之间的语义信息和关系。通过词向量,可以将自然语言处理中的单词转化为计算机可以处理的数字形式,从而便于进行文本分类、情感分析、机器翻译等任务。常见的词向量模型包括word2Vec、Glove、ELMo、BERT等。
词向量如何获取?
针对word2vec
(1)重要假设:文本中离得越近的词语相似度越高。
(2)其使用CBOW和skip-gram来计算词向量矩阵:
CBOW:使用上下文词来预测中心词;
skip-gram(常用):使用中心词来预测上下文词;
评估词向量:输出与特定词语的相关度比较高的词语;可视化;类比实验:国王-王后=男人-女人
词向量的用途
(1)主题聚类;
(2)情感分析;
(3)信息检索……
word2vec缺点
(1)没有考虑多义词;
(2)窗口长度有限;
(3)没有考虑全局的文本信息;
(4)不是严格意义的语序……

代码实现

导包

import jieba
import re
import numpy as np
from sklearn.decomposition import PCA
import gensim
from gensim.models import Word2Vec
import matplotlib.pyplot as plt
import matplotlib

分词

f = open("sanguo.txt", 'r',encoding='utf-8') #读入文本
lines = []
for line in f: #分别对每段分词
    temp = jieba.lcut(line)  #结巴分词 精确模式
    words = []
    for i in temp:
        #过滤掉所有的标点符号
        i = re.sub("[\s+\.\!\/_,$%^*(+\"\'””《》]+|[+——!,。?、~@#¥%……&*():;‘]+", "", i)
        if len(i) > 0:
            words.append(i)
    if len(words) > 0:
        lines.append(words)
print(lines[0:5])#预览前5行分词结果

[[‘三国演义’, ‘上卷’], [‘罗贯中’], [‘滚滚’, ‘长江’, ‘东’, ‘逝水’, ‘浪花’, ‘淘尽’, ‘英雄’, ‘是非成败’, ‘转头’, ‘空’, ‘青山’, ‘依旧’, ‘在’, ‘几度’, ‘夕阳红’], [‘白发’, ‘渔樵’, ‘江渚上’, ‘惯看’, ‘秋月春风’, ‘一壶’, ‘浊酒’, ‘喜相逢’, ‘古今’, ‘多少’, ‘事’, ‘都’, ‘付笑谈’, ‘中’], [‘–’, ‘调寄’, ‘临江仙’]]

模型训练

# 调用Word2Vec训练
# 参数:size: 词向量维度;window: 上下文的宽度,min_count为考虑计算的单词的最低词频阈值
#negative负采样,sg模型的训练算法1:skip-gram 0:CBOW
model = Word2Vec(lines,vector_size = 20, window = 2 , min_count = 3, epochs=7, negative=10,sg=1)
print("孔明的词向量:\n",model.wv.get_vector('孔明'))
print("\n和孔明相关性最高的前20个词语:")
model.wv.most_similar('孔明', topn = 20)# 与孔明最相关的前20个词语

在这里插入图片描述
可视化

# 将词向量投影到二维空间
rawWordVec = []
word2ind = {}
for i, w in enumerate(model.wv.index_to_key): #index_to_key 序号,词语
    rawWordVec.append(model.wv[w]) #词向量
    word2ind[w] = i #{词语:序号}
rawWordVec = np.array(rawWordVec)
X_reduced = PCA(n_components=2).fit_transform(rawWordVec) 
rawWordVec #降维之前20维

在这里插入图片描述

X_reduced #降维之后2维

在这里插入图片描述

# 绘制星空图
# 绘制所有单词向量的二维空间投影
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 = ['孙权', '刘备', '曹操', '周瑜', '诸葛亮', '司马懿','汉献帝']

# 设置中文字体 否则乱码
zhfont1 = matplotlib.font_manager.FontProperties(fname='./华文仿宋.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 = 'orange',markersize=10)
        plt.text(xy[0], xy[1], w, fontproperties = zhfont1, alpha = 1, color = 'red')

在这里插入图片描述
类比关系实验

# 玄德-孔明=?-曹操
words = model.wv.most_similar(positive=['玄德', '曹操'], negative=['孔明'])
words

在这里插入图片描述

# 曹操-魏=?-蜀
words = model.wv.most_similar(positive=['曹操', '蜀'], negative=['魏'])
words

在这里插入图片描述
代码参考:【词向量 | word2vec | 理论讲解+代码 | 文本分析【python-gensim】-哔哩哔哩】 https://b23.tv/O02nfAb

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

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

相关文章

Python二分查找(折半查找)的实现

时间复杂度 最优时间复杂度:O(1) 最坏时间复杂度:O(logn) 思路 对有序的顺序表进行查找,以下标查找,每次取一半查找,如[1,2,3,4,5,6,7,8,9],查3, 下标从0~8,(08)//24,对比折半到下标为2的元素…

【基础算法】栈和队列

系列综述: 💞目的:本系列是个人整理为了秋招算法的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于代码随想录进行的,每个算法代码参考leetcode高赞回答和…

手写axios源码系列二:创建axios函数对象

文章目录 一、模块化目录介绍二、创建 axios 函数对象1、创建 axios.js 文件2、创建 defaults.js 文件3、创建 _Axios.js 文件4、总结 当前篇章正式进入手写 axios 源码系列,我们要真枪实弹的开始写代码了。 因为 axios 源码的代码量比较庞大,所以我们这…

Xilinx FPGA下如何加快QSPI Flash加载速度

1. 首先,不同型号的FPGA对外部QSPI Flash支持的最高频率是不一样的。XC6SLX45支持的最高频率仅为26MHz, 而XC7K325T支持的最高频率高达66MHz。 所以,当我们添加 set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design] 的时候&…

特征选择算法 | Matlab实现基于互信息特征选择算法的分类数据特征选择 MI

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 特征选择算法 | Matlab实现基于互信息特征选择算法的分类数据特征选择 MI 部分源码 %

【1105. 填充书架】

来源:力扣(LeetCode) 描述: 给定一个数组 books ,其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先…

题目3180:蓝桥杯2023年第十四届省赛真题-互质数的个数======及探讨互质专题

原题链接 https://www.dotcpp.com/oj/problem3162.html 想直接看题解的,跳转到第三次尝试即可。 已AC。 解析: (1)首先大家要知道什么叫互质: 以及它们的性质: 欧拉函数 在数论中,对正整…

世界读书日|这些值得程序员反复阅读的经典书

2023年是第28个世界读书日,每年的这个时候,小编都会准备一份书单与您分享。 与经典同行,伴书香成长。小编今天推荐一份值得程序员反复阅读的经典书。 1、浪潮之巅 第四版 这不只是一部科技产业发展历史集…… 更是在这个智能时代&#xff…

【远程工具】- MobaXterm 的下载、安装、使用、配置【Telnet/ssh/Serial】

一、MobaXterm 概述 在远程终端工具中,secureCrt 和 XShell 是两款比较有名的远程工具,但这两款软件现在都是收费的,有些公司不允许破解使用。今天就推荐一款免费的、免安装的、功能丰富的远程终端软件–MobaXterm。 MobaXterm是由Mobatek开…

JavaScript概述三(循环结构+BOM浏览器对象模型+JSON对象)

1.循环结构 1.1 普通循环(for循环,while循环,do……while循环) JavaScript中的普通循环和Java中的普通循环基本类似&#xff0c;此处以for循环为例&#xff0c;while和do……while便不再赘述。 <script type"text/javascript">var ary1new Array(1,false,嘿嘿…

Redis队列Stream、Redis多线程详解(三)

Redis中的线程和IO模型 什么是Reactor模式 &#xff1f; “反应”器名字中”反应“的由来&#xff1a; “反应”即“倒置”&#xff0c;“控制逆转”,具体事件处理程序不调用反应器&#xff0c;而向反应器注册一个事件处理器&#xff0c;表示自己对某些事件感兴趣&#xff0…

CTA进网测试《5G消息 终端测试方法》标准依据:YDT 3958-2021

GB 21288-2022 强制国标要求变化​ 与GB 21288-2007相比&#xff0c; 新国标主要有以下变化&#xff1a; 1. 增加职业暴露定义&#xff1a; 2. 增加吸收功率密度定义&#xff1a; 3. 增加不同频率、不同人体部位适用的暴露限值&#xff1a; 4. 增加产品说明书的注释&#xff1a…

ArcGIS Pro用户界面

目录 1 功能区 1.1 快速访问工具栏 1.2 自定义快速访问工具栏 1.3 自定义功能区选项 1.3.1 添加组和命令 1.3.2 添加新选项卡 2 视图 3 用户界面排列 ​编辑 4 窗格 4.1 内容窗格 4.2 目录窗格 4.3 目录视图&#xff08;类似ArcCatalog&#xff09; 4.4 浏览对话框…

注册表取证

目录 操作系统安装时间 计算机名称 本地用户 最后登录的用户 当前登录用户 U盘序列号 USB挂载的盘符 卷标名称 安装的程序 ​编辑卸载的程序 最近使用的文件 最近运行的命令行 操作系统安装时间 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion…

无需代码!新人可操作!分享20个可视化大屏(内附下载)

做前端开发的各位&#xff0c;大都知晓老板钟爱的可视化大屏—清晰、便捷、撑排面&#xff0c;轻轻松松打破数据孤岛等一系列问题。我真的深有体会&#xff0c;前些天&#xff0c;老板去人家公司开会&#xff0c;回来就把这大屏安排上了。之前就认为大屏也不过是面子工程&#…

03 - 大学生如何使用GPT

大学生如何使用GPT提高学习效率 一、引言 在当今的高速发展的信息时代&#xff0c;大学生面临着越来越多的学习挑战。作为一种先进的人工智能技术&#xff0c;GPT为大学生提供了一种强大的学习工具。本文将介绍大学生在不同场景中如何使用GPT来提高学习效率&#xff0c;并给出…

「区间DP-步入」凸多边形的划分

凸多边形的划分 题目描述 给定一个具有N个顶点的凸多边形&#xff0c;将顶点从1至N标号&#xff0c;每个顶点的权值都是一个正整数。将这个凸多边形划分成N-2个互不相交的三角形&#xff0c;试求这些三角形顶点的权值乘积和至少为多少。 输入描述 输入第一行为顶点数N第二行…

云智慧陆兴海:统一运维体系为数字政府建设保驾护航

2023年4月6日至7日&#xff0c;由长春市人民政府、吉林省政务服务和数字化建设管理局主办的《2023长春数字经济发展论坛》在长春隆重举行。 本次论坛旨在探讨数字经济的理论创新、实践探索和发展路径&#xff0c;推动长春市乃至吉林省的数字化转型和高质量发展。第十二届全国政…

无源滤波器为什么能滤波?

滤波器能够滤波的本质是利用构造特定的阻抗特性引起反射和损耗来实现对频率的选择。 如果从能量守恒的角度来讲&#xff0c;被抑制掉的信号去哪里了&#xff1f;​ 我们先看一下基本电路原理&#xff0c;上图中&#xff0c;负载接收的功率为 我们知道&#xff0c;最大功率传输…

ChatGPT: 从GPT-3.5到GPT-4,探索语言模型的演进之路

ChatGPT: 从GPT-3.5到GPT-4&#xff0c;探索语言模型的演进之路 引言 人工智能语言模型的演进 随着人工智能的快速发展&#xff0c;语言模型作为自然语言处理领域的一项重要技术也在不断演进。从最初的基于规则的系统&#xff0c;到基于统计的模型&#xff0c;再到近年来的深度…