首页 > 其他分享 >Word2Vec

Word2Vec

时间:2024-12-13 14:35:46浏览次数:4  
标签:Word2Vec word2vec import model corpus 向量

文本向量化:对于机器来说,字符是没有含义的,只是有区别。只使用字符无法去刻画字与字、词与词、文本与文本之间的关系。文本转化为向量可以更好地刻画文本之间的关系。向量化后,可以启用大量的机器学习算法,具有很高的价值

  • one-hot编码
    如果有很多词,编码向量维度会很高,而且向量十分稀疏(大部分位置都是零),计算负担很大(维度灾难)编码向量不能反映字词之间的语义相似性,只能做到区分
  • word2vec-词向量
    我们希望得到一种词向量,使得向量关系能反映语义关系,比如:cos(你好, 您好) > cos(你好,天气)即词义的相似性反映在向量的相似性。国王 - 男人 = 皇后 -女人,即向量可以通过数值运算反映词之间的关系,同时,不管有多少词,向量维度应当是固定的。
  • Word embedding? Word vector?
    本质上是一样的,都是以向量代表字符
    一般说Word Embedding是指随机初始化的词向量或字向量
    Word2Vec一般指一种训练Word Embedding的方法,使得其向量具有一定的性质(向量相似度反映语义相似度)
  1. CBOW模型
    用窗口中的词(或者说周围词)来表示(预测)中间词
    image

  2. SkipGram模型
    用中间词来表示周围词
    image


import json
import jieba
import numpy as np
import gensim
from gensim.models import Word2Vec
from collections import defaultdict

'''
词向量模型的简单实现
'''

#训练模型
#corpus: [["cat", "say", "meow"], ["dog", "say", "woof"]]
#corpus: [["今天", "天气", "不错"], ["你", "好", "吗"]]
#dim指定词向量的维度,如100
def train_word2vec_model(corpus, dim):
    model = Word2Vec(corpus, vector_size=dim, sg=1)
    model.save("model.w2v")
    return model

#输入模型文件路径
#加载训练好的模型
def load_word2vec_model(path):
    model = Word2Vec.load(path)
    return model

def main():
    sentences = []
    with open("corpus.txt", encoding="utf8") as f:
        for line in f:
            sentences.append(jieba.lcut(line))
    model = train_word2vec_model(sentences, 100)
    return model

if __name__ == "__main__":
    # model = main()  #训练

    model = load_word2vec_model("model.w2v")  #加载

    while True:  #找相似
        string = input("input:")
        try:
            print(model.wv.most_similar(string))
        except KeyError:
            print("输入词不存在")

标签:Word2Vec,word2vec,import,model,corpus,向量
From: https://www.cnblogs.com/yyyccs/p/18604476

相关文章

  • 【词向量表示】Word2Vec原理及实现
    目录Word2VecHowachieveLookuptableCodingPre-dataingModelNegativesamepleWord2Vec单词与单词之间的向量往往不在同一个向量空间,例如,传统的编码方式:one-hot编码,不同单词[1,0,0]和[0,1,0]之间的余弦相似度为0。因此,Word2Vec希望能够通过训练得到一个新的词向量表达方式,......
  • Word2Vec
    Word2VecWord2Vec有两种形式,一种是Skip-gram,另一种是CBOW。Skip-gram:已知中心词\(w_c\),预测上下文词\(w_o\)CBOW:已知上下文词\(C=\{w_{c−m},…,w_{c−1},w_{c+1},…,w_{c+m}\}\),预测中心词\(w_c\)1.Softmax损失函数公式:\[L_{word2vec}=-\frac{1}{|B|}\sum_{(w_i......
  • Word2vec的应用
    目录1.分词2.模型训练 3.可视化 4.知识点个人理解pipinstallgensim-ihttps://pypi.tuna.tsinghua.edu.cn/simple#若在jupyternotebook中安装:!pipinstallgensim-ihttps://pypi.tuna.tsinghua.edu.cn/simple#导包importjiebaimportreimportnumpya......
  • 如何用 word2vec 计算两个句子之间的相似度
    源代码示例可供参考https://pan.quark.cn/s/aeb85eaf95e2用Word2Vec计算两个句子之间的相似度主要涉及以下几个步骤:将句子分词、获取词向量、计算句子向量、计算句子向量之间的相似度。其中,获取词向量是基础也是关键,它直接影响后续句子向量的计算准确性和相似度计算的效果。......
  • Word2Vec模型介绍
    Word2Vec是一种用于生成词向量的模型,由TomasMikolov等人在2013年提出。它通过从大量语料库中学习,捕捉词汇之间的语义关系。Word2Vec主要包括两种模型架构:1.CBOW(ContinuousBagofWords)模型CBOW模型通过上下文词来预测中心词。它的工作原理如下:输入:上下文词(例如,选取......
  • Word2Vec模型之CBOW
    CBOW(ContinuousBagofWords)是一种常用于自然语言处理的词嵌入模型,属于Word2Vec的一部分。CBOW模型的目标是通过上下文词来预测中心词。它通过在大规模语料库中学习词汇之间的共现关系,生成词向量表示。CBOW模型的工作原理上下文窗口:CBOW模型的核心思想是利用上下文窗口中的词......
  • 预训练的 Word2Vec 向量来初始化词嵌入矩阵
    使用预训练的Word2Vec向量来初始化词嵌入矩阵的过程涉及以下几个步骤:1.下载预训练的Word2Vec向量获取模型:预训练的Word2Vec向量通常可以从模型发布者的官方网站或开源平台下载。例如,Google提供了大规模的预训练Word2Vec向量。文件格式:预训练的Word2Vec向量一......
  • 深度学习每周学习总结N6:使用Word2vec实现文本分类
    ......
  • 深度学习(中文word2vec)
    这里用了gensim和jiba分词库,jensim原生是支持英文的,如果想使用中文word2vec,还需要自己训练一下。中文语料库可以在这里下载:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 stopwords.txt这里下载:https://files.cnblogs.com/files/tiandsp/st......
  • NLP - word2vec详解
    Word2Vec是一种用于将词汇映射到高维向量空间的自然语言处理技术。由Google在2013年提出,它利用浅层神经网络模型来学习词汇的分布式表示。Word2Vec有两种主要模型:CBOW(ContinuousBagofWords)和Skip-gram。1.模型介绍ContinuousBagofWords(CBOW)CBOW模型的目标是通......