word2vec添加向量

img


在使用自己训练的word2vec模型时,中间出现这个错误,应该怎么把这个词的向量加进去呢 或者怎么改呢

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7439011
  • 这篇博客你也可以参考下:获取Word2vec训练得到的所有词与词向量
  • 除此之外, 这篇博客: word2vec获取词向量,查找相似词中的 word2vec获取词向量,查找相似词 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    首先安装gensim, 训练或者下载别人训练好的word2vec模型

    # coding=utf-8
    from gensim.models import Word2Vec
    from gensim.models import KeyedVectors
     
    #model = Word2Vec.load('./model/wiki.zh.text.model')   #用模型
    model = KeyedVectors.load_word2vec_format('./model/wiki.zh.text.vector')    # 用转换成txt的词向量文件
    testwords = ['孩子', '数学', '学术', '白痴', '篮球']
    for i in range(5):
        res = model.most_similar(testwords[i])
        print(testwords[i])
        print(res)
    

    结果如下图
    在这里插入图片描述

  • 您还可以看一下 钱兴会老师的从零开始自然语言处理课程中的 Word2Vec词向量构建小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    对于添加新词向量并更新或修改的问题,可以按以下步骤进行:

    1.首先,需要将新词转换成向量形式。可以使用word2vec提供的方法或者其他预训练好的模型进行转换,也可以使用其他方法如one-hot encoding等。比如可以使用gensim库提供的方法,示例代码如下:

    from gensim.models import Word2Vec

    model = Word2Vec.load("path/to/your/trained/model")

    new_word = "new_word" new_vec = model.wv[new_word] # 获取新词的向量表示

    2.然后,需要更新模型中的权重参数,以将新词的向量加入训练。一种简单直接的方法是直接修改模型中的权重参数,将新词的向量加入。示例代码如下:

    修改模型中的权重参数

    model.wv.vectors = np.vstack((model.wv.vectors, new_vec)) model.wv.index2entity.append(new_word)

    重新构建模型的参数索引和层次结构

    model.wv.init_sims(replace=True)

    这里,将新词的向量依次加入模型的参数矩阵中,并更新模型的索引和层次结构。需要注意的是,修改后需要重新初始化模型的参数,以保证参数向量的单位长度,以及更准确地进行近似期望的计算。

    3.最后,可以重新进行模型的训练,以更新所有参数矩阵,包括加入的新词向量。可以使用之前的训练数据,或者更多的数据继续训练。示例代码如下:

    model.train(sentences=new_train_data, total_examples=model.corpus_count, epochs=model.iter)

    这里,重新调用model.train()方法,传入新的训练数据并指定训练轮数,以更新模型的所有参数矩阵。

    如果出现错误提示,可以根据具体的错误信息进行调试,如是否加载了正确的模型,是否正确获取了新词的向量等等。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^