Word2Vec模型——将文本转换成向量的方法

这篇具有很好参考价值的文章主要介绍了Word2Vec模型——将文本转换成向量的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        在美赛的时候,用了一下这个模型,发一下。

        Word2Vec是一种用于将文本转换为向量表示的技术。它是Google在2013年开发的一种工具,主要用于将单词转换为向量表示,并在向量空间中找到单词之间的语义关系。Word2Vec模型有两种架构:连续词袋模型(Continuous Bag-of-Words,简称CBOW)和跳跃式模型(Skip-Gram)。

        在CBOW模型中,模型试图从上下文中推断出当前单词,而在Skip-Gram模型中,模型试图从当前单词中推断出上下文单词。Word2Vec的目标是学习到一个向量空间,使得在这个向量空间中,语义上相似的单词在空间上也比较接近。具体地说,Word2Vec将单词表示为高维向量,这些向量被设计为捕捉到单词在上下文中出现的概率分布。这些向量被训练出来后,可以用于各种自然语言处理任务,如文本分类、语言翻译和情感分析等。

        在一般情况下,Skip-gram算法对于训练较小的语料库或者低频单词表现较好,而CBOW算法对于训练较大的语料库或者高频单词表现较好。

        话不多说,直接上代码。

import pandas as pd
from gensim.models import Word2Vec

# 读入数据
# 读取训练文本
with open('output.txt', 'r', encoding='utf-8') as f:
    sentences = [line.strip().split() for line in f]

# 训练Word2Vec模型
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4, sg=1)
model.save('word2vec.model')


# 读取另一个文件,提取单词的特征向量并保存到vector.csv
df = pd.read_csv('word.csv',encoding="gbk")
word_list = df['Word'].tolist()
vectors = []
for word in word_list:
    if word in model.wv:
        vectors.append(model.wv[word])
    else:
        vectors.append([0] * 100)  # 如果单词不在词汇表中,填充为0向量
vectors_df = pd.DataFrame(vectors)
vectors_df.to_csv('2.csv', index=False, header=None)

然后我解释一下每一步都是干什么的。

with open('output.txt', 'r', encoding='utf-8') as f:
    sentences = [line.strip().split() for line in f]

         打开名为 "output.txt" 的文件并读取其中的文本,将其转化为一个嵌套列表的形式,每个列表表示文本中的一句话,每个句子中的单词被拆分成单独的元素。

      

model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4, sg=1)
model.save('word2vec.model')

        使用 Word2Vec 对句子进行训练。其中,vector_size 表示特征向量的维度,window 表示在每个单词周围的最大距离,min_count 表示单词的最小出现次数,workers 表示并行训练的线程数,sg 表示使用的算法类型(sg=1表示使用Skip-gram算法进行训练,而sg=0表示使用CBOW算法进行训练)。最后将训练好的模型保存在名为 "word2vec.model" 的文件中。                

        

df = pd.read_csv('word.csv', encoding="gbk")
word_list = df['Word'].tolist()

        使用 pandas 库读取名为 "word.csv" 的文件,提取其中 "Word" 列的数据,将其转化为列表形式。这个数据就是我们需要提取特征向量的数据

vectors = []
for word in word_list:
    if word in model.wv:
        vectors.append(model.wv[word])
    else:
        vectors.append([0] * 100)

        对于列表中的每个单词,判断其是否在训练好的 Word2Vec 模型中。如果存在,则提取其特征向量并添加到 vectors 列表中;否则将其向量设为全为 0 的向量。

        问题就在这,你要是训练用的文本不够多,没有你要提取向量的单词,你结果就是0.

vectors_df = pd.DataFrame(vectors)
vectors_df.to_csv('WordVector.csv', index=False, header=None)

将 vectors 列表转化为 pandas 数据帧格式,并将其保存为名为 "WordVector.csv" 的文件

  output.txt就是模型的训练数据,本来Google已经提供了训练数据了但我一直下载不成功。Google那个数据更大,应该要训练挺长时间的。Word2Vec模型——将文本转换成向量的方法

数据网址:https://code.google.com/archive/p/word2vec/

如果下载成功了那个,就可以把训练模型的代码改一下。(路径写对就行)

# 加载预训练模型
model_path = 'path/to/GoogleNews-vectors-negative300.bin.gz'
model = KeyedVectors.load_word2vec_format(model_path, binary=True)

然后看数据

Word.csv长这样

Word2Vec模型——将文本转换成向量的方法

 结果提取的向量长这样,每一行对应一个单词的特征向量 ,一共100列就是100维的特征向量。

Word2Vec模型——将文本转换成向量的方法文章来源地址https://www.toymoban.com/news/detail-420121.html

到了这里,关于Word2Vec模型——将文本转换成向量的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【自然语言】使用词袋模型,TF-IDF模型和Word2Vec模型进行文本向量化

    一、任务目标 python代码写将 HarryPorter 电子书作为语料库,分别使用词袋模型,TF-IDF模型和Word2Vec模型进行文本向量化。 1. 首先将数据预处理,Word2Vec 训练时要求考虑每个单词前后的五个词汇,地址为 作为其上下文 ,生成的向量维度为50维 2.分别搜索 courtroom 和 wizard 这两个词

    2024年04月14日
    浏览(31)
  • NLP实战:使用Word2vec实现文本分类

    目录 一、数据预处理 1、加载数据 2. 构建词典 3.生成数据批次和迭代器 二、模型构建 1.搭建模型 2.初始化模型 3.定义训练与评估函数 三、训练模型 1. 拆分数据集并运行模型 2. 测试指定数据 🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者

    2024年02月10日
    浏览(27)
  • 第N4周:使用Word2vec实现文本分类

    🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊|接辅导、项目定制 # 一、课题背景和开发环境 📌第N4周:使用Word2vec实现文本分类📌 Python 3.8.12 gensim 4.3.1 numpy 1.21.5 - 1.24.3 portalocker 2.7.0 pytorch 1.8.1+cu111 torchtext==0.9.1 📌本周任务:📌 结合Word2Vec文本内

    2024年02月13日
    浏览(26)
  • Word2Vec的CBOW模型

    Word2Vec中的CBOW(Continuous Bag of Words)模型是一种用于学习词向量的神经网络模型。CBOW的核心思想是根据上下文中的周围单词来预测目标单词。 例如,对于句子“The cat climbed up the tree”,如果窗口大小为5,那么当中心单词为“climbed”时,上下文单词为“The”、“cat”、“up”

    2024年02月02日
    浏览(32)
  • 大语言模型系列-word2vec

    在前文大语言模型系列-总述已经提到传统NLP的一般流程: 传统的分词向量化的手段是进行简单编码(如one-hot),存在如下缺点: 如果词库过大, one-hot编码生成的向量会造成维度灾难 one-hot编码生成的向量是稀疏的,它们之间的距离相等,无法捕捉单词之间的语义关系。

    2024年01月18日
    浏览(26)
  • Coggle 30 Days of ML(23年7月)任务六:训练FastText、Word2Vec词向量

    任务六:学会训练FastText、Word2Vec词向量 说明:在这个任务中,你将学习如何训练FastText和Word2Vec词向量模型,这些词向量模型可以捕捉文本中的语义信息。 实践步骤: 准备大规模文本语料库。 使用FastText或gensim库中的Word2Vec类,设置相应的参数(如词向量维度、窗口大小、训

    2024年02月16日
    浏览(26)
  • 自然语言处理(三):基于跳元模型的word2vec实现

    回顾一下第一节讲过的跳元模型 跳元模型(Skip-gram Model)是一种用于学习词向量的模型,属于Word2Vec算法中的一种。它的目标是通过给定一个中心词语来预测其周围的上下文词语。 这节我们以跳元模型为例,讲解word2vec的实现 文章内容来自李沐大神的《动手学深度学习》并加

    2024年02月11日
    浏览(26)
  • Word2Vec详解

    Word2Vec 基本思想:通过训练将每一个词映射成一个固定长度的向量,所有向量构成一个词向量空间,每一个向量(单词)可以看作是向量空间中的一个点,意思越相近的单词距离越近。 如何把词转换为向量? 通常情况下,我们可以维护一个查询表。表中每一行都存储了一个特

    2024年02月13日
    浏览(27)
  • 机器学习——Word2Vec

    参考资料: https://zhuanlan.zhihu.com/p/114538417 https://www.cnblogs.com/pinard/p/7243513.html 统计语言模型是基于 语料库 构建的 概率模型 ,用来计算一个词串 W = ( w 1 , w 2 , ⋯   , w T ) W=(w_1,w_2,cdots,w_T) W = ( w 1 ​ , w 2 ​ , ⋯ , w T ​ ) 构成句子的概率 : p ( W ) = p ( w 1 , w 2 , ⋯   . w T ) = p

    2024年02月11日
    浏览(28)
  • 论文精读--word2vec

    word2vec从大量文本语料中以无监督方式学习语义知识,是用来生成词向量的工具 把文本分散嵌入到另一个离散空间,称作分布式表示,又称为词嵌入(word embedding)或词向量 We propose two novel model architectures for computing continuous vector representations of words from very large data sets. The qua

    2024年02月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包