调用Gensim库训练Word2Vec模型

一、前期工作:

1. 安装Gensim库

pip install gensim

2.安装chardet库 

pip install chardet

 

3. 对原始语料分词

选择《人民的名义》的小说原文作为语料,先采用jieba进行分词

import jieba
import jieba.analyse
import chardet
jieba.suggest_freq('沙瑞金', True)  # 加入一些词,使得jieba分词准确率更高
jieba.suggest_freq('田国富', True)
jieba.suggest_freq('高育良', True)
jieba.suggest_freq('侯亮平', True)
jieba.suggest_freq('钟小艾', True)
jieba.suggest_freq('陈岩石', True)
jieba.suggest_freq('欧阳菁', True)
jieba.suggest_freq('易学习', True)
jieba.suggest_freq('王大路', True)
jieba.suggest_freq('蔡成功', True)
jieba.suggest_freq('孙连城', True)
jieba.suggest_freq('季昌明', True)
jieba.suggest_freq('丁义珍', True)
jieba.suggest_freq('郑西坡', True)
jieba.suggest_freq('赵东来', True)
jieba.suggest_freq('高小琴', True)
jieba.suggest_freq('赵瑞龙', True)
jieba.suggest_freq('林华华', True)
jieba.suggest_freq('陆亦可', True)
jieba.suggest_freq('刘新建', True)
jieba.suggest_freq('刘庆祝', True)
jieba.suggest_freq('赵德汉', True)result_cut = []
with open('./in_the_name_of_people.txt', 'rb') as f:raw_data = f.read()encoding = chardet.detect(raw_data)['encoding']lines = raw_data.decode(encoding).splitlines()for line in lines:result_cut.append(list(jieba.cut(line)))# 在这里处理分词结果result_cut# 不需要再调用 f.close(),因为使用了 with 语句会自动关闭文件

# 添加自定义停用词
stopwords_list = [",","。","\n","\u3000"," ",":","!","?","…"]def remove_stopwords(ls):  # 去除停用词return [word for word in ls if word not in stopwords_list]result_stop=[remove_stopwords(x) for x in result_cut if remove_stopwords(x)]

从文本数据中移除停用词,停用词是在文本分析中通常需要被排除的词,如标点符号、空格等,因为它们对于意义的分析通常没有贡献。

print(result_stop[100:103])

二、训练Word2Vec模型 

from gensim.models import Word2Vecmodel = Word2Vec(result_stop,     # 用于训练的语料数据vector_size=100, # 是指特征向量的维度,默认为100。window=5,        # 一个句子中当前单词和被预测单词的最大距离。min_count=1)   # 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5。

三、模型应用

1.计算词汇相似度

我们可以使用similarity()方法计算两个词汇之间的余弦相似度。

# 计算两个词的相似度
print(model.wv.similarity('沙瑞金', '季昌明'))
print(model.wv.similarity('沙瑞金', '田国富'))

 

# 选出最相似的5个词
for e in model.wv.most_similar(positive=['沙瑞金'], topn=5):print(e[0], e[1])

这段代码是使用词向量模型(通常是Word2Vec或类似的模型)来找出与给定词(在这个例子中是“沙瑞金”)最相似的5个词。这是自然语言处理(NLP)领域常见的一种做法,用于寻找语义上相近的词。下面是这段代码的逐步解释:

  1. 词向量模型 (model): 已经训练好的词向量模型存储在变量model中。词向量模型能够将词汇表中的每个词映射到一个向量空间中,这样语义相近的词就会在这个空间中彼此靠近。

  2. 查找最相似的词 (model.wv.most_similar):

    • model.wv.most_similar(positive=['沙瑞金'], topn=5) 这行代码调用了模型的 most_similar 方法,用于查找与列表positive中的词语最相似的词。这里,positive参数是一个包含一个或多个词的列表,用于指定要寻找相似词的目标。在这个例子中,列表中只有一个词:“沙瑞金”。
    • topn=5 参数指定了需要返回的最相似词的数量。在这里,它被设置为5,意味着方法将返回与“沙瑞金”最相似的5个词。
  3. 遍历和打印结果:

    • for e in model.wv.most_similar(positive=['沙瑞金'], topn=5): 这行代码遍历 most_similar 方法返回的结果。每个结果 e 是一个元组,其中包含一个词和它与“沙瑞金”在语义上的相似度。
    • print(e[0], e[1]) 这行代码打印每个元组的第一个元素(相似的词)和第二个元素(与“沙瑞金”的相似度)。相似度是一个介于0和1之间的浮点数,数值越大表示相似度越高。

 

2. 找出不匹配的词汇

使用doesnt_match()方法,我们可以找到一组词汇中与其他词汇不匹配的词汇。

odd_word = model.wv.doesnt_match(["苹果", "香蕉", "橙子", "书"])
print(f"在这组词汇中不匹配的词汇:{odd_word}")

 

3. 计算词汇的词频

我们可以使用get_vecattr()方法获取词汇的词频。

word_frequency = model.wv.get_vecattr("沙瑞金", "count")
print(f"沙瑞金:{word_frequency}")

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

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

相关文章

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(三)

原文:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 第六章:决策树 决策树是多功能的机器学习算法,可以执行分类和回归任务,甚至多输出任务。它们…

麻雀搜索算法|Sparrow Search Algorithm(SSA)

在麻雀群体智慧、觅食和反捕食行为的启发下,提出了一种新的群体优化方法,即麻雀搜索算法(SSA)。 1、简介 在麻雀搜索算法中包含三种类型的麻雀个体,即发现者、跟随者和侦察者,三种类型对应三种行为。发现…

GM8775C——DSI 转双通道 LVDS 发送器

1 产品概述 GM8775C 型 DSI 转双通道 LVDS 发送器产品主要实现将 MIPI DSI 转单 / 双通道 LVDS 功能, MIPI 支持 1/2/3/4 通道可选,每通道最高支持 1Gbps 速率,最大支持 4Gbps 速率。 LVDS 时钟频率高达 154MHz &#xff…

【Eclipse平台】1Eclipse平台总体概览

Eclipse平台总览 欢迎来到【Eclipse平台系列】,本文介绍Eclipse平台的总体概览 文章目录 Eclipse平台总览1. 什么Eclipse开放的架构2. 如何下载Eclipse3. Eclipse的命名规则3. Eclipse的构成3.1 Workbench1. 什么Eclipse Eclipse是一个流行的集成开发环境(Integrated Devel…

Postgresql体系结构

client连接PostgreSQL过程: 1、客户端发起请求 2、主服务postmaster进程负责服务器是否接受客户端的host通信认证,服务器对客户端进行身份鉴别 3、主服务进程为该客户端单独fork一个客户端工作进程postgres 4、客户端与postgres进程建立通信连接&#xf…

ensp实验合集(三)

实验11 无线网设备配置.......................................................... - 97 - 实验12 单臂路由器配置........................................................ - 106 - 实验13 防火墙配置.............................................................…

langgraph学习--创建基本的agent执行器

本文介绍如何使用langgraph创建一个基本的Agent执行器,主要包括下面几个步骤: 1、定义工具 2、创建langchain Agent(由LLM、tools、prompt三部分组成) 3、定义图形状态 传统的LangChain代理的状态有几个属性: (1&#…

centos7 linux 不小心把根目录的内容移到别的目录了

在根目录不小心执行了如下命令,然后发现大部分常用命令不能用了。都在报错 mv * /data/software从网上找了好多帖子,命令都不好使。有的是用/data/software/lib64/ld-linux-x86-64.so.2,/data/software/lib64就不是个目录,只是个软连接&…

git将项目的某次签入遴选(Cherry-Pick)另一个项目

需求&#xff1a;将项目Product&#xff0c;分支feature/platform&#xff0c;签入959294ce6b75ee48c5cb22c46d7398654628a896&#xff0c;遴选到项目BRP&#xff0c;分支dev 第一步&#xff1a;使用原签入生成patch文件&#xff08;git format-patch -1 <commit_hash>&a…

OpenCV学习记录——边缘检测

文章目录 前言一、边缘检测原理二、Canny边缘检测算法三、具体应用代码 前言 在做某些图像处理时&#xff0c;通常需要将识别到的物体边界提取出来&#xff0c;从而帮助我们实现目标检测&#xff0c;这就需要用到边缘检测&#xff0c;例如人脸识别和运动目标的检测都需要先进行…

pdf怎么转成高清图?pdf在线转换器推荐分享

在日常的工作或者学习中&#xff0c;有时候会需要将编辑好的pdf转高清图片&#xff0c;这样更方便我们后续使用&#xff0c;那么怎么将pdf转图片&#xff08;https://www.yasuotu.com/pdftopic&#xff09;还能保持清晰呢&#xff1f;下面介绍一款pdf转换工具&#xff0c;支持p…

使用SPM_batch进行批量跑脚本(matlab.m)

软件&#xff1a;spm8matlab2023bwin11 数据格式&#xff1a; F:\ASL\HC\CBF\HC_caishaoqing\CBF.nii F:\ASL\HC\CBF\HC_caishaoqing\T1.nii F:\ASL\HC\CBF\HC_wangdonga\CBF.nii F:\ASL\HC\CBF\HC_wangdonga\T1.nii clear spmdirD:\AnalysisApps\spm8; datadirF:\ASL\HC\CBF…

Profinet转CANopen主站网关与堡盟编码器通讯案例

Profinet转CANopen主站网关(XD-COPNm20)为CPU与堡盟编码器的通讯提供了CANopen协议向Profinet协议转换互通的桥梁。CANopen是一种基于CAN总线的通讯协议&#xff0c;它被广泛应用于工业自动化领域&#xff0c;而Profinet是一种以太网协议&#xff0c;其优点是高速传输和广泛的可…

【iOS ARKit】手动配置环境探头

在上节中我们已经了解了环境探头以及如何使用自动环境探头&#xff0c;这节一起了解如何使用手动配置环境探头。 在使用自动环境反射时&#xff0c;开发人员无须进行有关环境反射的任何操作&#xff0c;只需要设置自动环境反射即可&#xff0c;其余工作完全由 RealityKit 自动完…

【django】建立python虚拟环境-20240205

1.确保已经安装pip3 install venv 2.新建虚拟环境 python -m venv myenv 3.安装虚拟环境的依赖包 pip install … 4.激活虚拟环境 cd myenv cd Scripts activate 激活activate.bat并进入虚拟环境 进入虚拟环境后&#xff0c;命令行前面显示&#xff08;myenv&#xff0…

如何以管理员身份删除node_modules文件

今天拉项目&#xff0c;然后需要安装依赖&#xff0c;但是一直报错&#xff0c;如下&#xff1a; 去搜这个问题会让把node_modules文件先删掉 再去安装依赖。我在删除的过程中会说请以管理员身份来删除。 那么windows如何以管理员身份删除node_modules文件呢&#xff1f; wi…

SQL语句创建数据库

要创建一个新的数据库&#xff0c;你可以使用以下的SQL语句&#xff1a; sql CREATE DATABASE database_name; 其中&#xff0c;database_name是你希望创建的数据库的名称。例如&#xff0c;如果你想创建一个名为my_database的数据库&#xff0c;你可以使用以下SQL语句&#…

走入SQL世界

目录 一、SQL的定义 二、SQL 的用途 三、创建发布数据库中数据的网站 四、RDBMS 五、数据库表 六、SQL 语句 七、SQL 语句后面的分号 八、SQL中的DML 和 DDL 一、SQL的定义 SQL 是用于访问和处理数据库的一种 ANSI 标准计算机语言&#xff0c;也是结构化查询语言。用来…

某赛通电子文档安全管理系统 44处 反序列化RCE漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

HomeAssistant系统添加HACS插件商店与远程控制家中智能家居

文章目录 基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssistant&#xff0c;通过内网穿透在户外控制家庭中枢。本文将介绍如何安装HACS插件商店&#xff0c;将米家&#xff0c;果家设备接入 Home Assistant。 基本条件…