【Gensim概念】01/3 NLP玩转 word2vec

news2024/11/23 12:14:28

 第一部分  词法

一、说明

        Gensim是一种Python库,用于从文档集合中提取语义主题、建立文档相似性模型和进行向量空间建模。它提供了一系列用于处理文本数据的算法和工具,包括主题建模、相似性计算、文本分类、聚类等。在人工智能和自然语言处理领域,Gensim是一个流行的工具,用于处理大量的文本和语料库。

        该模块使用高度优化的 C 例程、数据流和 Pythonic 接口来实现 word2vec 系列算法。

        word2vec 算法包括skip-gram 和 CBOW 模型,使用分层 softmax 或负采样:Tomas Mikolov 等人:Efficient Estimation of Word Representations in Vector Space,Tomas Mikolov 等人:Distributed Representations of Words and Phrases and their Compositionality。

二、其他嵌入

        在 Gensim 中训练词向量的方法有很多,而不仅仅是 Word2Vec。另请参见

  • Doc2Vec:通过分布式内存和分布式词袋模型学习段落和文档嵌入

(models.doc2vec – Doc2vec paragraph embeddings — gensim (radimrehurek.com)) 

  • FastText:该模块允许从训练语料库中训练词嵌入,并具有获取词汇表外单词的词向量的附加功能。

(models.fasttext – FastText model — gensim (radimrehurek.com))。

        训练算法最初是从 C 包 https://code.google.com/p/word2vec/ 移植的,多年来通过附加功能和优化进行了扩展。

        有关 Gensim word2vec 的教程以及在 GoogleNews 上训练的交互式网络应用程序,请访问 https://rare-technologies.com/word2vec-tutorial/。

三、使用示例

        初始化模型,例如: 

from gensim.test.utils import common_texts
from gensim.models import Word2Vec
>>>
model = Word2Vec(sentences=common_texts, vector_size=100, window=5, min_count=1, workers=4)
model.save("word2vec.model")

        训练是流式传输的,因此“句子”可以是可迭代的,可以即时从磁盘或网络读取输入数据,而无需将整个语料库加载到 RAM 中。

        请注意,可迭代的句子必须是可重新启动的(而不仅仅是生成器),以允许算法多次流式传输数据集。有关流式可迭代的一些示例,请参阅 BrownCorpus、Text8Corpus 或 LineSentence。

        如果保存模型,您可以稍后继续训练它:

model = Word2Vec.load("word2vec.model")
model.train([["hello", "world"]], total_examples=1, epochs=1)
(0, 2)

        训练好的词向量存储在 KeyedVectors 实例中,如 model.wv:

vector = model.wv['computer']  # get numpy vector of a word
sims = model.wv.most_similar('computer', topn=10)  # get other similar words

        将训练好的向量分离到 KeyedVector 中的原因是,如果您不再需要完整的模型状态(不需要继续训练),则可以丢弃其状态,只保留向量及其键。

        这会产生一个更小、更快的对象,可以进行映射以实现闪电般的快速加载并在进程之间共享 RAM 中的向量:

from gensim.models import KeyedVectors
>>>
# Store just the words + their trained embeddings.
word_vectors = model.wv
word_vectors.save("word2vec.wordvectors")
>>>
# Load back with memory-mapping = read-only, shared across processes.
wv = KeyedVectors.load("word2vec.wordvectors", mmap='r')
>>>
vector = wv['computer']  # Get numpy vector of a word

        Gensim 还可以加载“word2vec C 格式”的词向量,作为 KeyedVectors 实例:

from gensim.test.utils import datapath
>>>
# Load a word2vec model stored in the C *text* format.
wv_from_text = KeyedVectors.load_word2vec_format(datapath('word2vec_pre_kv_c'), binary=False)
# Load a word2vec model stored in the C *binary* format.
wv_from_bin = KeyedVectors.load_word2vec_format(datapath("euclidean_vectors.bin"), binary=True)

        由于隐藏权重、词汇频率和二叉树缺失,无法继续训练从 C 格式加载的向量。要继续训练,您需要完整的 Word2Vec 对象状态(由 save() 存储),而不仅仅是 KeyedVector。

        您可以使用经过训练的模型执行各种 NLP 任务。一些操作已经内置 - 请参阅 gensim.models.keyedvectors。

        如果您完成了模型的训练(即不再更新,仅查询),您可以切换到 KeyedVectors 实例:

word_vectors = model.wv
del model

        修剪不需要的模型状态 = 使用更少的 RAM 并允许快速加载和内存共享 (mmap)。

四、多词 Ngram 的嵌入

        有一个 gensim.models.phrases 模块,可让您使用搭配统计自动检测长于一个单词的短语。使用短语,您可以学习 word2vec 模型,其中“单词”实际上是多词表达式,例如 new_york_times 或 Financial_crisis:

from gensim.models import Phrases
>>>
# Train a bigram detector.
bigram_transformer = Phrases(common_texts)
>>>
# Apply the trained MWE detector to a corpus, using the result to train a Word2vec model.
model = Word2Vec(bigram_transformer[common_texts], min_count=1)

五、预训练模型

        Gensim 在 Gensim 数据存储库中附带了几个已经预先训练的模型:

import gensim.downloader
# Show all available models in gensim-data
print(list(gensim.downloader.info()['models'].keys()))
['fasttext-wiki-news-subwords-300',
 'conceptnet-numberbatch-17-06-300',
 'word2vec-ruscorpora-300',
 'word2vec-google-news-300',
 'glove-wiki-gigaword-50',
 'glove-wiki-gigaword-100',
 'glove-wiki-gigaword-200',
 'glove-wiki-gigaword-300',
 'glove-twitter-25',
 'glove-twitter-50',
 'glove-twitter-100',
 'glove-twitter-200',
 '__testing_word2vec-matrix-synopsis']
>>>
# Download the "glove-twitter-25" embeddings
glove_vectors = gensim.downloader.load('glove-twitter-25')
>>>
# Use the downloaded vectors as usual:
glove_vectors.most_similar('twitter')
[('facebook', 0.948005199432373),
 ('tweet', 0.9403423070907593),
 ('fb', 0.9342358708381653),
 ('instagram', 0.9104824066162109),
 ('chat', 0.8964964747428894),
 ('hashtag', 0.8885937333106995),
 ('tweets', 0.8878158330917358),
 ('tl', 0.8778461217880249),
 ('link', 0.8778210878372192),
 ('internet', 0.8753897547721863)]

(系列文章后续: ...... )

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

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

相关文章

简历上的哪些内容,才是面试官眼中的干货?

在准备面试时,简历是我们的敲门砖,它是我们与面试官沟通的第一步。因此,简历的内容对我们的求职成功至关重要。那么,简历上哪些内容才是面试官眼中的干货呢? 第一,简历的格式和排版应该整洁、清晰、易读。简…

PyQt项目实战1

转载 pyqt5:利用QFileDialog从本地选择图片\文本文档显示到label、保存图片\label文本到本地(附代码)_pyqt5中qfiledialog.getopenfileurl-CSDN博客https://blog.csdn.net/tensixchuan/article/details/1057178331、QtDesigner的控件摆设完成后&#xf…

告别杂音干扰,享受纯净通话:华为Mate 60 Pro降噪功能体验

作为一名销售,我经常需要使用手机跟客户进行通话。但是,有时候环境嘈杂或者对方的声音不够清晰,让我感到非常烦恼。好在我最近入手了一款华为Mate 60 Pro手机,发现通话功能也有惊喜新升级,它带来的降噪功能让我重新定义…

先后在影酷/传祺E9/昊铂GT量产交付,这家ADAS厂商何以领跑

智能泊车赛道正在迎来黄金增长期,以魔视智能为代表的玩家正在驶入大规模量产的“快车道”。 继在广汽传祺影酷、广汽传祺 E9实现规模化量产交付之后,魔视智能的Magic Parking智能泊车系列解决方案再度在广汽埃安旗下高端智能轿跑——昊铂GT上面实现量产…

基于YOLOv5[n/s/m/l/x]全系列参数模型开发构建小麦麦穗智能化精准检测识别计数系统

在前文中我们已经开发实践了小麦颗粒和小麦麦穗的检测,感兴趣可以自行移步阅读即可: 《基于YOLOv5[n/s/m/l/x]全系列参数模型开发构建小麦麦穗颗粒智能化精准检测识别计数系统》 《基于轻量级yolov5nCBAM开发构建全球小麦麦穗智能检测计数系统》 在上…

LiveGBS流媒体平台GB/T28181功能-报警预案配置告警触发报警时截图及录像摄像头通过GB28181上报报警

LiveGBS报警预案配置告警触发报警时截图及录像摄像头通过GB28181上报报警 1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅 1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3、尝试触发摄像头报警1.3…

【TES605】基于Virtex-7 FPGA的高性能实时信号处理平台

板卡概述 TES605是一款基于Virtex-7 FPGA的高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核DSP TMS320C6678作为主处理单元,采用1片Xilinx的Virtex-7系列FPGA XC7VX690T作为协处理单元,具有2个FMC子卡接口,各个处理节…

某网站cookies携带https_ydclearance获取正文

1、url aHR0cHM6Ly9iYnMuNTFjcmVkaXQuY29tL3RocmVhZC03ODI0OTAzLTEtMS5odG1s2、抓包 根据抓包返回的两个请求进行访问,发现获取正文需cookies携带https_ydclearance cookies {https_ydclearance: 6973fc7d30e4fe01c1bdde9f-ff5e-4d22-bfc2-00e5ab7769b7-16980360…

【tg】8: Manager的主要功能

Manager 提供的是media thread 说明media thread 是主线程, 而 mediamgr里是worker threadnetworkmgr是network thread了。 Manager 的功能重要,但是特别短 G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\Manager.cpp class…

在线零售多用户多门店连锁商城系统

在线零售多用户商城系统和多门店连锁商城系统的核心都是线上线下相结合的,线上和线下结合,一体化是在线新零售多用户商城系统发展的趋势,现在移动互联网时代,越来越多的传统企业,如:连锁店铺,连…

Unity | Image 自定义顶点数据实现圆角矩形

1 圆角方案简介 UGUI 中的 Image 实现圆角效果通常有三种方式,Mask、Shader以及自定义顶点数据,相比于前两者,自定义顶点数据的使用方式更加灵活,同时可以减少 DrawCall,但是会增加顶点及三角形数量。最终实现方案可根…

虚拟世界游戏定制开发:创造独一无二的虚拟体验

在游戏开发领域,虚拟世界游戏定制开发是一项引人注目的任务,旨在满足客户独特的需求和愿景,创造一个完全个性化的虚拟世界游戏。这种类型的游戏开发需要专业的技能、深刻的游戏开发知识和密切的与客户合作,以确保游戏满足客户的期…

【23真题】师范强者,均分135,复试难!

哈喽大家好,现在这个时间节点,有很多同学开始刷真题了!所以23真题系列正式启动!小马哥将全面发布23真题及详细解析! 今天分享的是23年华中师范大学838的信号与系统试题及解析。 本套试难度分析:23年平均分…

JVM 类的加载子系统

文章目录 类的加载过程加载阶段链接阶段初始化 类的加载器测试代码中获取对应的加载器获取加载器加载的路径不同类对应的加载器自定义加载器自定义加载器的方式 获取类的加载器的方式双亲委派机制双亲委派机制的好处 Java 的 SPI 机制1. 接口定义2. 具体实现3. 配置 META-INF/s…

Android Termux安装MySQL,通过内网穿透实现公网远程访问

🔥博客主页: 小羊失眠啦. 🔖系列专栏: C语言、Linux、Cpolar ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前…

探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty

文章目录 Spring框架Spring MVC框架Spring Boot框架MyBatis框架Netty框架总结 🎉欢迎来到Java面试技巧专栏~探索Java中最常用的框架:Spring、Spring MVC、Spring Boot、MyBatis和Netty ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&#xff…

改变了数组内的值,但是页面没有重新渲染

新增的时候可以展示&#xff0c;但是编辑在点新增就没有效果 原因&#xff1a;改变了数组内的值&#xff0c;但是页面没有重新渲染 <el-form-item label"信息:" required><div style"display: flex; align-items: flex-end"><div><e…

Go 代码包与引入:如何有效组织您的项目

一、引言 在软件开发中&#xff0c;代码的组织和管理是成功项目实施的基础之一。特别是在构建大型、可扩展和可维护的应用程序时&#xff0c;这一点尤为重要。Go语言为这一需求提供了一个强大而灵活的工具&#xff1a;代码包&#xff08;Packages&#xff09;。代码包不仅允许…

Java 基础 面试 多线程

1.多线程 1.1 线程&#xff08;Thread&#xff09; 线程时一个程序内部的一条执行流程&#xff0c;java的main方法就是由一条默认的主线程执行 1.2 多线程 多线程是指从软硬件上实现的多条执行流程的技术&#xff08;多条线程由CPU负责调度执行&#xff09; 许多平台都离不开多…

看微功耗遥测终端机如何轻松应对野外环境挑战?

在野外&#xff0c;数据的实时监测和传输是至关重要的。无论是环境温度、湿度&#xff0c;还是水位、流量&#xff0c;都需要精准把控。然而&#xff0c;传统的监测方法往往受限于电源供应问题&#xff0c;而无法充分发挥其功能。这时候&#xff0c;一款微功耗遥测终端机&#…