Gensim中Doc2Vec方法简介

Word2vec算法原理详解 今天我们要讲解的算法是Word2vec。Word2vec(word to vector)顾名思义,这是一个将单词转换成向量形式的工具。通过转换,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。 阅读详情

Doc2Vec主要作用是将文章转化为词向量,支持大批量的数据训练,如果遇到多个较大的数据文件,不能全部加装到内存中,可以使用下面的方法,自己封装TaggedDocument。
如果数据量较小,且只有1个数据文件,可以使用doc2vec.TaggedLineDocument,注意,数据文件一行对应一篇文章,并且词必须以空格隔开。

1 TaggedLineDocument训练小数据

   # 设置迭代器
    tagged_line = TaggedLineDocument("F:\\my_data\\test.text")
    # 构建模型
    model = Doc2Vec(dim=0, vector_size=100, window=8, epochs=2, min_count=2, workers=4)
    # 将迭代器添加到模型中
    model.build_vocab(tagged_line )

2 封装TaggedDocument训练大数据

2.1 数据

F:
--my_data
----model
----mason_1.txt
----mason_2.txt

“mason_1.txt”内容
我,爱你,河南大学
你,的,母校
我,爱你,河南大学

“mason_2.txt”内容
我,爱你,软件学院
我,敬爱,导师

2.2 代码

from gensim.models.doc2vec import Doc2Vec
from gensim.models.doc2vec import TaggedDocument

import os

class TaggedData(object):
    """

    继承object类,使用yield实现大数据量文件的批量训练Doc2Vec模型

    """
    def __init__(self, dir_name):
        """
        初始化目录

        :param dir_name: 文件目录
        """
        self.dir_name = dir_name

    def __iter__(self):
        """
        实现迭代器
        """
        for f_name in os.listdir(self.dir_name):
            f_name = os.path.join(self.dir_name, f_name)
            if not os.path.isfile(f_name):
                continue

            # 读取文件
            with open(f_name, "r", encoding="utf-8") as fin:
                for item_no, line in enumerate(fin):
                    # 切分文件
                    words = line.split(",")
                    # 注意:我的文件是一行对应一篇文章
                    # TaggedDocument(文章的词列表, [文章表标签])
                    # 自己定义唯一的文章标签,方便后续查找文章向量
                    yield TaggedDocument(words, tags=['%s_%s' % (f_name, item_no)])

def train_model():
    # 设置迭代器
    tagged_data = TaggedData("F:\\my_data")
    # 构建模型
    model = Doc2Vec(dim=0, vector_size=100, window=8, epochs=2, min_count=2, workers=4)
    # 将迭代器添加到模型中
    # 注意:documents也可以接收[TaggedDocument(doc, tags=[tag)]列表
    # 可以根据自己的需求将文章组合为列表
    model.build_vocab(documents=tagged_data)

    print("---** 多次训练模型 **---")
    # 注意文章的数据不能太少,至少5个文章以上
    # 否则会报“you must first build vocabulary before training the model”错误
    for i in range(3):
        model.train(documents=tagged_data, total_examples=model.corpus_count, epochs=model.epochs)

    # 打印
    print("---** 统计文章数量 **---")
    print(model.docvecs.count)

    print("---** 文章标签(列表) **---")
    print(model.docvecs.offset2doctag)

    print("---** 文章向量(numpy列表) **---")
    print(model.docvecs.vectors_docs)

    print("---** 文章统计(字典) **---")
    # 'F:\\my_data\\mason_1.txt_0': Doctag(offset=0, word_count=3, doc_count=1),
    # '文章标签': Doctag(offset=对应vectors_docs和offset2doctag的索引, word_count=单词数量, doc_count=文章频次)
    print(model.docvecs.doctags)

    print("---** 统计与“F:\\my_data\\mason_1.txt_0”文章最相似的文章(列表) **---")
    # ('F:\\my_data\\mason_2.txt_0', -0.04498976841568947)
    # ('文章标签', 相似度)
    print(model.docvecs.most_similar(model.docvecs.doctags.get("F:\\my_data\\mason_1.txt_0")))

    print("---** 比较两篇文章的相似度 **---")
    # 注意:这里比较只能在已有文章中查找
    # similarity(文章1标签,文章2标签)
    print(model.docvecs.similarity("F:\\my_data\\mason_1.txt_0", "F:\\my_data\\mason_1.txt_1"))
    # similarity(文章1索引,文章2标签)
    print(model.docvecs.similarity(0, 1))

    print("---** 计算文章的词向量 **---")
    words=["河南大学", "软件学院"]
    print(model.infer_vector(words))

    print("---** 模型的保存 **---")
    model.save("F:\\my_data\\model\\henu.model")

    print("---** 模型的加载 **---")
    model = Doc2Vec.load("F:\\my_data\\model\\henu.model")

    # Word2Vec与Doc2Vec的用法相同,不同之处在于
    # model.wv:是对应Word2Vec的方法
    # model.docvecs:是对应Doc2Vec的方法

if __name__ == '__main__':
    train_model()


3 Word2Vec和Doc2Vec

    Word2Vec与Doc2Vec的用法基本相同,不同之处在于“model.wv”是对应Word2Vec的方法,“model.docvecs”是对应Doc2Vec的方法。

doc2vec论文方法解析及基于Gensim库的Python代码实现 文章目录一、全文概述二、word2vec三、doc2vec1. PV-DM2. PV-DBOW三、Python代码实现 本文主要讲解Mikolov在2014年发表的论文《Distributed Representations of Sentences and Documents》,论文主要是基于word2vec方法的一种改进,建议在理解word2vec的基础再来看这篇文章。 一、全文概述 基于wo... 阅读详情

相关推荐

word2vec、doc2vec的使用

word2vec

静心净气的博客 6173

Doc2Vec - 计算文档之间的相似性

如果我们将上下文数据转换为低维向量,并且当我们谈论将文本文档转换为其数字表示时,这就是doc2vec模型发挥作用的地方,自然语言处理领域有许多具有挑战性的任务可以完成。但是,我们可以使用doc2vec完成许多任务,但今天我们只专注于计算文档之间的相似性,以便您能够识别抄袭文档,获得相似文章的推荐等等。Doc2vec是一种无监督机器学习算法,用于将文档转换为向量。这个概念是由Mikilov和Le在本文中提出的。我们已经看到使用doc2vec模型可以获得很多帮助。httpshttps。............

qq_43483899的博客 7963

word2vec和doc2vec模型详解及应用

词袋模型(Bag of Word Model) 将所有词语装进一个袋子里,不考虑其词法和语序的问题,即每个词语都是独立的。例如如下2个例句: Jane wants to go to Shenzhen. Bob wants to go to Shanghai. 就可以构成一个词袋,袋子里包括{ Jane,wants,to,go,Shenzhen,Bob,Shangh...

L 1689

gensim中TaggedDocument 怎么使用

我有两个目录,我想从中读取它们的文本文件并给它们贴上标签,但我不知道如何通过taggedDocument来实现这一点。我以为它可以作为标记文档([strings],[labels])工作,但这显然不起作用。 from gensim import models from gensim.models.doc2vec import TaggedDocument import util...

dkopg24406的专栏 2688

Word2Vec和Doc2Vec模型详解及应用

Doc2Vec模型是Word2Vec的扩展,用于学习文档(段落、句子)的向量表示。Word2Vec和Doc2Vec是基于神经网络的自然语言处理模型,用于将文本数据转换为向量表示。综上所述,Word2Vec和Doc2Vec模型是强大的自然语言处理工具,可以将文本数据转换为向量表示,从而应用于各种文本挖掘和信息检索任务中。通过使用相应的库和示例代码,我们可以轻松地构建和训练这些模型,并将它们应用于实际问题中。Skip-gram模型与CBOW相反,它的训练目标是根据当前目标词预测周围的上下文词。

PzBlockchain的博客 540

18、Word2Vec、Doc2Vec与Gensim:多种词嵌入方法解析

本文深入解析了多种主流词嵌入方法,包括Word2Vec、Doc2Vec、GloVe、FastText、WordRank、Varembed和Poincare Embeddings,并介绍了如何通过Gensim统一使用这些模型。文章详细阐述了各类方法的原理、特点、适用场景及性能对比,提供了代码示例与流程图,帮助读者根据实际任务选择合适的词嵌入技术,在文本分类、信息检索、机器翻译和知识图谱等应用中实现高效语义理解。

data3的博客 80

基于gensim的doc2vec实践

1.“句向量”简介 word2vec提供了高质量的词向量,并在一些任务中表现良好。 关于word2vec的原理可以参考这几篇论文: https://arxiv.org/pdf/1310.4546.pdf https://arxiv.org/pdf/1301.3781.pdf 关于如何使用第三方库gensim训练word2vec可以参考这篇博客: http://blog.csdn.n...

JohnSon 1万+

从零搭建Obsidian智能知识库:Ollama本地模型与Copilot插件实战指南

本文详细介绍了如何从零搭建Obsidian智能知识库,结合Ollama本地模型与Copilot插件实现高效知识管理。通过本地部署AI助手,用户可以在保证隐私安全的同时,快速检索和整理笔记,提升工作效率。文章涵盖硬件准备、Ollama部署、插件配置及实战技巧,适合需要高效知识管理的专业人士。

weixin_29230773的博客 631

【NLP】10其它词、句向量生成方法——腾讯AI实验室汉字词句嵌入语料库与gensim Doc2Vec

其它word2vec效果测试对比1. 腾讯AI实验室汉字词句嵌入语料库2. Doc2Vec2.1 介绍2.2 准备训练和测试数据 1. 腾讯AI实验室汉字词句嵌入语料库 网站: 自然语言处理(NLP)研究 腾讯AI实验室汉字词句嵌入语料库,语料库为200万个矢量词表示,也就是嵌入,可表示超过800万个中文单词和短语,这些单词和短语已预先训练超过300亿个单词 下载后得到名为’Tencent_AILab_ChineseEmbedding.tar.gz’的文件 运行程序报错: MemoryError: Un

YoungSeng's Blog 2500

Unity安卓打包实战:SDK与JDK配置全攻略

本文详细介绍了Unity安卓打包过程中SDK与JDK的配置方法,包括工具下载、安装步骤、环境变量设置及常见错误排查。通过实战指南帮助开发者快速完成Unity安卓打包环境搭建,提升开发效率。

weixin_30338481的博客 416

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文深入剖析了RTL8306MB交换芯片驱动开发中RMII接口的典型调试陷阱。通过一个工业网关项目的实战案例,揭示了因硬件原理图设计疏忽导致TX_EN与CRS_DV信号线错接,从而引发网络“哑火”的根本原因。文章详细展示了使用示波器从时钟、数据到控制信号的系统性排查方法,并总结了关键的设计警示与自查清单,为嵌入式网络开发中的软硬件协同调试提供了宝贵经验。

qqq44的博客 1029

基于Doc2vec训练句子向量

目录 一.Doc2vec原理 二.代码实现 三.总结   一.Doc2vec原理 前文总结了Word2vec训练词向量的细节,讲解了一个词是如何通过word2vec模型训练出唯一的向量来表示的。那接着可能就会想到,有没有什么办法能够将一个句子甚至一篇短文也用一个向量来表示呢?答案是肯定有的,构建一个句子向量有很多种方法,今天我们接着word2vec来介绍下Doc2vc,看下D...

TensorFlowNews 1万+

PyTorch 最新安装教程(2021-07-27)

PyTorch 最新安装教程(2021-07-27)前言1. 安装 Anaconda2. 检查显卡,更新驱动3. 创建PyTorch环境4. 配置清华TUNA镜像源5. 安装 PyTorch6. 测试 前言 万事开头难! 这句话又一次被我验证。 记得前不久刚陷入Tensorflow2.0的安装困境,这一次又被PyTorch 搞哭辽。 孩子太难了o(╥﹏╥)o,不过还好最终成功安装,感谢全网资源,感谢大佬们的博客!被我一次一次试了出来。 1. 安装 Anaconda Anaconda 是一个用于科学计算的 P

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 23万+

gensim有java版吗_嵌入Gensim Doc2Vec Tensorboard

我在df中有一组文档 . 我正在使用 gensim Doc2Vec 将这些文档转换为向量:def read_corpus(documents):for i, plot in enumerate(documents):yield gensim.models.doc2vec.TaggedDocument(gensim.utils.simple_preprocess(plot, max_len=30...

weixin_36329465的博客 292

基于matlab的主成分分析的人脸二维码识别系统

人脸识别因其在系统安全验证、信用验证、刑侦跟踪、身份管理、视频会议、人机交互、智能家居等方面的巨大应用前景,成为当前模式识别和人工智能领域越来越热门的一个研究方向。随着安全入口控制和二维码智能扫描应用需求的快速增长,基于二维码识别的生物人脸统计识别技术也引起了人们的重视。本案例将详细讲解基于主成分分析的人脸特征提取的原理与方法,并将其与 QR 二维码的编解码进行结合,将 MATLAB 作为工具平台,调用 QR 二维码编解码应用程序,进而实现一个人脸二维码自动识别的系统原型。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 977

沙猫群优化算法(SCSO)详解:从沙漠生存智慧到全局优化引擎

本文详细介绍了沙猫群优化算法(SCSO),这是一种新型元启发式优化算法,灵感来源于沙猫在沙漠环境中的卓越狩猎行为。SCSO通过模拟沙猫的低频探测能力和精确攻击策略,将优化问题转化为搜索和捕获"猎物"的过程。算法核心包括探索阶段(全局搜索)和开发阶段(局部精细搜索),通过灵敏度范围模型和自适应控制参数实现两者的平衡。SCSO具有参数简单、收敛性能好等优点,适用于解决复杂全局优化问题。

qq_42212808的博客 201

关于doc2vec

原文地址:https://blog.youkuaiyun.com/john_xyz/article/details/79208564   1.“句向量”简介 word2vec提供了高质量的词向量,并在一些任务中表现良好。  关于word2vec的原理可以参考这几篇论文: https://arxiv.org/pdf/1310.4546.pdf https://arxiv.org/pdf/1301.37...

大脸猫的博客 1112

EtherCAT报文-BRD(广播读)抓包分析

EtherCAT报文之BRD(广播读)报文Wireshark抓包分析。

kevin1499的博客 1212

Gensim库的使用——Doc2vec段落嵌入

使用方法: 地址:models.doc2vec – Doc2vec paragraph embeddings — gensim 1、初始化与训练模型 from gensim.test.utils import common_texts from gensim.models.doc2vec import Doc2Vec, TaggedDocument #将common_tests中的文本读入,并给其进行标号 documents = [TaggedDocument(doc, [i]) for i, d

一个小菜鸟的博客 1197

核心组件大换血:Backbone与Neck魔改篇:YOLO26替换EfficientNetV2主干:神经架构搜索(NAS)的最优解嫁接

YOLO26引入EfficientNetV2作为Backbone的改进方案探索了计算机视觉模型优化的前沿方向。文章首先分析了YOLO26默认C3k2模块的局限性,指出其在通道利用效率和缩放策略上的不足。随后重点介绍了EfficientNetV2的核心优势,包括Fused-MBConv模块、训练感知的NAS搜索空间和渐进式学习策略,这些特性使其在精度和效率上保持领先。最后提出了将EfficientNetV2嫁接至YOLO26的具体方案,强调通道对齐这一关键挑战,并给出两种解决方案。这一改进思路展现了&quot

ZDQ58818的博客 309

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

gensim调用doc2vec计算句子的向量

在做句子的相似度时,会想到直接将句子表示成向量的形式,这样就可以将相似度计算的问题转换成两个向量之间的距离问题,网上找了一下发现,在gensim中的doc2vec可以实现将句子转换成向量,具体的代码如下所示: # coding:utf-8 import jieba import gensim from gensim.models.doc2vec import Doc2Vec Taggeded...

摆渡者 5784

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python word2vec 句法_python gensim[word2vec & doc2vec]基本操作

gemsim[word2vec & doc2vec]官方文档:https://radimrehurek.com/gensim/models/word2vec.htmlhttps://rare-technologies.com/word2vec-tutorial/.gensim介绍:python NLP的包gensim包依赖于numpy包和scipy包,即需要先安装numpy和scipy,再...

weixin_39581995的博客 216

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python 文本相似度_【机器学习】使用gensim 的 doc2vec 实现文本相似度检测

环境Python3,gensim,jieba,numpy ,pandas原理:文章转成向量,然后在计算两个向量的余弦值。Gensimgensim是一个python的自然语言处理库,能够将文档根据TF-IDF, LDA, LSI 等模型转化成向量模式,gensim还实现了word2vec功能,以便进行进一步的处理。中文分词中文需要分词,英文就不需要了,分词用的 jieba 。def segment(...

weixin_39734048的博客 480

gensim NLP工具库简介

1.简介 一个python NLP库. 包含tf-idf模型, word2vec 与 doc2vec 等. 官网地址 2.例子 import logging #logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) from gensim import co

yichudu 4799

基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释

本文为基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释。配合gensim介绍及简单的实践例程。

mrynr的博客 9765
上一篇: python生成whl包
下一篇: java生成exe文件
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值