【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)的机制来处理事件。事件代理是指将事件处理程序绑定到组件的父级元素上,然后在需要处理事件的子元素上触发事件时,事件将被委托给…

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

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

Go中的工作池:并发任务的优雅管理

一、前言 在当今的软件开发领域,处理大规模并发任务是一项关键挑战。Go语言以其强大的并发支持而闻名,而工作池是一种在Go中管理并发任务的精巧方式。本文将介绍工作池的工作原理,并通过代码示例演示其在实际应用中的用途。 二、内容 2.1 …

地图金字塔所在块的经纬度方位

地图金字塔所在块的经纬度方位 算法 #define LON_SPAN 360.0 // 开始经度(最左端) #define LAT_SPAN 180.0 #define GLOBAL_LEFT -180.0 // 开始纬度(最上端) #define GLOBAL_TOP 90.0 #define GLOBAL_RIGHT 180.0 #define GLOBAL_BOTTOM -90.0 // 地球的纬度跨度(180-(-180))…

不能抛开学历说人工智能研发能力

【来函照登 我也说几句】 作者:Deng-Xian-Sheng(佳里敦大学人工智能研究所 类脑人工智能研究实验室副教授) 我在网上看到某些报道,在谈到人工智能研发时,刻意强调个别研发人员学历不高,甚至以“中专生逆袭…

Vue基于element ui中Upload组件实现文件上传下载—附源码

1.在页面中引入Upload组件 <!--上传文件--> <el-upload class"upload-demo"ref"upload"action"#":limit"3":show-file-list"true":file-list"getFileList(scope.row.fileInfoList|| [])":on-exceed&quo…

10.23归并排序

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

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

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

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

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

.NET主流的ORM框架 2023年

1. Entity Framework Entity Framework是Microsoft开发的一款强大的ORM框架。适用于.NET开发&#xff0c;支持多种数据库&#xff0c;并提供了广泛的文档和教程。Entity Framework基于面向对象的数据模型&#xff0c;使用LINQ进行查询。它的强大功能和易用性使得它成为.NET开发…

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

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

计算机考研自命题(2)

1、C语言-字符串交替拼接 1、用C编程&#xff0c;将两个字符串数组存储实现交替连接如aaa和bbb两个字符连接成ababab 如aaa和baba 两个字符&#xff0c;连接成 abaaaba #include<stdio.h>/* 解题思路&#xff1a;将两个字符串交替拼接&#xff0c;定义三个数组&#xff0…

基础课6——计算机视觉

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

Python学习——Day10

一、sys模块 概述&#xff1a;Python 的 sys 模块提供访问解释器使用或维护的变量&#xff0c;和与解释器进行交互的函数。通俗来讲&#xff0c;sys 模块为程序与 Python 解释器的交互&#xff0c;提供了一系列的函数和变量&#xff0c;用于操控 Python 运行时的环境 sys.arg…

图像识别在自动驾驶汽车中的多传感器融合技术

摘要&#xff1a; 介绍文章的主要观点和发现。 引言&#xff1a; 自动驾驶汽车的兴起和重要性。多传感器融合技术在自动驾驶中的关键作用。 第一部分&#xff1a;图像识别技术 图像识别的基本原理。图像传感器和摄像头在自动驾驶中的应用。深度学习和卷积神经网络&#xff…

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

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

常见的测试理论面试问题

1.请解释软件生存周期是什么&#xff1f; 软件生存周期是指从软件开发到维护的过程&#xff0c;包括可行性研究、需求分析、软件设计、编码、测试、发布和维护等活动。这个过程也被称为“生命周期模型”。 2.软件测试的目的是什么&#xff1f; 软件测试的目的是发现软件中的错…

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

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

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

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

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

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