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

 第一部分  词法

一、说明

        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.mzph.cn/news/115395.shtml

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

相关文章

【React】高频面试题

1. 简述下 React 的事件代理机制? React使用了一种称为“事件代理”(Event Delegation)的机制来处理事件。事件代理是指将事件处理程序绑定到组件的父级元素上,然后在需要处理事件的子元素上触发事件时,事件将被委托给…

软件外包开发迭代管理工具

软件迭代的管理工具有助于团队有效地规划、跟踪和管理迭代开发过程,确保项目按时交付,并与团队成员之间进行协作。以下是一些常用的软件迭代管理工具,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&#…

10.23归并排序

课上 归并排序 最大时,就是两个都是完全倒序,但注意一定有一个序列先用完,此时剩一个序列只有一个元素,不用比较,直接加入,所以就是nn-1, 最小时,是都是完全有序,且一个序列中的元…

Python合并同类别且相交的矩形框

Python合并同类别且相交的矩形框 前言前提条件相关介绍实验环境Python合并同类别且相交的矩形框代码实现 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入Python日常小操作专栏、YOLO系列专栏、自然语言处理专栏或…

大语言模型(LLM)综述(二):开发大语言模型的公开可用资源

A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言 随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更…

图论04-【无权无向】-图的广度优先遍历BFS

文章目录 1. 代码仓库2. 广度优先遍历图解3.主要代码4. 完整代码 1. 代码仓库 https://github.com/Chufeng-Jiang/Graph-Theory 2. 广度优先遍历图解 3.主要代码 原点入队列原点出队列的同时,将与其相邻的顶点全部入队列下一个顶点出队列出队列的同时,将…

基础课6——计算机视觉

1.计算机视觉的概念与原理 1.1概念 计算机视觉(CV)是人工智能的一个重要发展领域,属于计算机科学的一个分支,它企图让计算机能像人类一样通过视觉来获取和理解信息。计算机视觉的应用非常广泛,包括但不限于图像识别、…

Typora的相关配置(Typora主题、字体、快捷键、习惯)

Typora的相关配置(Typora主题、字体、快捷键、习惯) 文章目录 Typora的相关配置(Typora主题、字体、快捷键、习惯)[toc]一、主题配置二、字体配置查看字体名称是否可以被识别:如果未能正确识别: 三、习惯配置四、快捷键配置更改提供的功能的快捷键&#…

前端react入门day01-了解react和JSX基础

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 React介绍 React是什么 React的优势 React的市场情况 开发环境搭建 使用create-react-app快速搭建…

python【多线程、单线程、异步编程】三个版本--在爬虫中的应用

并发编程在爬虫中的应用 之前的课程,我们已经为大家介绍了 Python 中的多线程、多进程和异步编程,通过这三种手段,我们可以实现并发或并行编程,这一方面可以加速代码的执行,另一方面也可以带来更好的用户体验。爬虫程…

概念解析 | 毫米波雷达与计算机视觉的融合

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:毫米波雷达与计算机视觉的融合。 毫米波雷达与计算机视觉的融合 Sensors | Free Full-Text | MmWave Radar and Vision Fusion for Object Detection in Autonomous Driving: A …

FFMPEG之example编译

FFMPEG源码下载:Download FFmpeg 编译需配置的库: sudo apt-get install yasm sudo apt-get install libsdl1.2-dev sudo apt-get install libsdl2-dev 编译流程: ./configure --disable-x86asm --prefix=路径 --enable-shared 按照提示添加 --dis…

FDWS9510L-F085车规级 PowerTrench系列 P沟道增强型MOS管

PowerTrench MOSFET 是优化的电源开关,可提高系统效率和功率密度。 它们组合了小栅极电荷 (Qg)、小反向恢复电荷 (Qrr) 和软性反向恢复主体二极管,有助于快速切换交流/直流电源中的同步整流。 采用屏蔽栅极结构,可提供电荷平衡。 利用这一先进…

RHCE8 资料整理(三)

RHCE8 资料整理 第三篇 网络相关配置第11章 网络配置11.1 网络基础知识11.2 查看网络信息11.3 图形化界面修改11.4 通过配置文件修改11.5 命令行管理11.6 主机名的设置 第12章 ssh12.1 ssh基本用法12.2 打开远程图形化界面12.3 ssh无密码登录12.4 ssh安全设置12.5 ssh限制用户1…

【2024秋招】2023-8-5-小红书-数据引擎团队后端开发提前批面经

1 面试官介绍 OLAP引擎,离线引擎,大数据分析中间件 2 自我介绍 缺点: (1)面试官让重点介绍自己最在行的项目,我真的在自我介绍上扯了一些别的东西… (2)在面试的时候因为想看简…

Webots将节点复制到不同工程中

我们要将A工程的节点复制到B工程中。 先将两个工程调成未开始仿真模式 将A中的节点复制 选中节点wall,右击选择Export然后保存为.wbo格式 打开B工程 点击新增,再点击Import,选择刚刚导出的文件 成功导入

k8s kubernetes 1.23.6 + flannel公网环境安装

准备环境,必须是同一个云服务厂商,如:华为,阿里、腾讯等,不要存在跨平台安装K8S,跨平台安装需要处理网络隧道才能实现所有节点在一个网络集群中,这里推荐使用同一家云服务厂商安装即可 这里使用…

计算属性和侦听属性以及方法有什么区别,本文以计算一个数组中所有偶数的和为例

计算属性(computed)是Vue中的一个特殊属性,它根据依赖的数据进行计算,并返回计算结果。计算属性的值会根据其相关依赖项的变化而自动更新,类似于一个响应式的缓存。计算属性可以用来处理一些复杂的逻辑计算,避免在模板中编写过多的…

GitHub和Gitee的区别以及具体使用

文章目录 GitHub和GiteeGitHub和Gitee区别GitHub的使用Gitee的使用 GitHub和Gitee GitHub和Gitee区别 速度不同:GitHub位于美国,而Gitee位于中国。这意味着在中国使用Gitee可能会有更快的访问速度和更好的稳定性。如果我们希望体验Git飞一般的速度&…

Mysql如何确定执行计划是最优开销?Mysql优化器!

1. 什么是 MySQL 优化器? MySQL 优化器是 MySQL 中的一个核心组件。MySQL 优化器的主要职责在于确定查询的执行计划。在数据库中,同样的查询可以有多种不同的执行方式,如使用不同的索引,使用不同的连接顺序等。每种执行方式都有其…