gpt4 book ai didi

machine-learning - 使用gensim的fasttext包装器训练词嵌入后,如何嵌入新句子?

转载 作者:行者123 更新时间:2023-11-30 09:42:24 25 4
gpt4 key购买 nike

阅读完 gensim 的教程后 docs ,我不明白从经过训练的模型生成新嵌入的正确方法是什么。到目前为止,我已经像这样训练了 gensim 的快速文本嵌入:

from gensim.models.fasttext import FastText as FT_gensim

model_gensim = FT_gensim(size=100)

# build the vocabulary
model_gensim.build_vocab(corpus_file=corpus_file)

# train the model
model_gensim.train(
corpus_file=corpus_file, epochs=model_gensim.epochs,
total_examples=model_gensim.corpus_count, total_words=model_gensim.corpus_total_words
)

然后,假设我想获取与该句子关联的嵌入向量:

sentence_obama = 'Obama speaks to the media in Illinois'.lower().split()
sentence_president = 'The president greets the press in Chicago'.lower().split()

如何使用我之前训练过的 model_gensim 获取它们?

最佳答案

您可以依次查找每个单词的向量:

wordvecs_obama = [model_gensim[word] for word in sentence_obama]

对于 7 个单词的输入句子,您将在 wordvecs_obama 中获得 7 个单词向量的列表。

由于其固有功能,所有 FastText 模型都不会将较长的文本转换为单个向量。 (具体来说,您训练的模型没有默认的方法来执行此操作。)

原始 Facebook FastText 代码中有一种“分类模式”,涉及不同的训练风格,其中文本在训练时与已知标签相关联,并且句子的所有词向量在训练期间组合在一起,并且当模型稍后被要求对新文本进行分类时。但是,FastText 的 gensim 实现目前不支持此模式,因为 gensim 的目标是提供无监督而非监督算法。

您可以通过对这些词向量进行平均来估算 FastText 模式的作用:

import numpy as np
meanvec_obama = np.array(wordvecs_obama).mean(axis=0)

根据您的最终目的,类似的东西可能仍然有用。 (但是,该平均值对于分类的作用不如词向量最初在 FastText 模式下使用已知标签针对该目标进行训练那样有用。)

关于machine-learning - 使用gensim的fasttext包装器训练词嵌入后,如何嵌入新句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57079642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com