【问题标题】:Generate equidistant multidimensional vectors as Embedding matrix生成等距多维向量作为嵌入矩阵
【发布时间】:2024-05-29 18:05:02
【问题描述】:

我需要生成一个嵌入矩阵来代替图层。我先验地知道这 10 个特征之间的相似性(彼此之间的距离相等),我无法通过训练生成矩阵,因为我没有足够的数据。

为此,我必须生成 10 个任意大小(即 10)的向量,但它们都具有相同的大小并且彼此等距,单个维度的值是介于 -1 和 1 之间的数字,所有这在 python 中。

有人知道这是怎么做到的吗?

【问题讨论】:

    标签: python tensorflow vector keras embedding


    【解决方案1】:

    我相信你有一些词作为特征,你想将它们表示为嵌入向量。

    有几种方法可以创建词嵌入,我将提到其中的一些,从最简单到复杂但非常强大的方法。

    1.计数向量。

    这是一种从您的独特标记中创建向量的方法。例如,如果词汇表包含三个单词,比如 ["and", "basketball", "more"] ,那么文本 "more and more" 将映射到向量 [1, 0, 2] :单词 "and ”出现一次,“basketball”这个词根本没有出现,“more”这个词出现了两次。这种文本表示被称为词袋,因为它完全失去了词的顺序。

    2。 TF-IDF(词频逆文档频率)

    计数向量的问题在于它忽略了重要的 词,因为与普通词相比,它的外观更少。在上面的例子中,术语“篮球”被忽略了,而“更多”被赋予了重要性。克服这种 TF-IDF 方法最适合,例如, 假设“and”、“basketball”和“more”这三个词分别出现在训练集中的 200、10 和 100 个文本实例中:在这种情况下,最终向量将是 [1/log(200), 0/log(10), 2/log(100)] ,约等于 [0.19, 0., 0.43] .

    3.预训练的词向量。

    这些是在*或其他一般来源上可用的数百万文本数据上训练的嵌入向量,它将包含所有可用的英语常用术语。有很多开源的预训练词向量是可用的,都是。

    1. Google 新闻矢量。
    2. 手套
    3. Facebook 的 fastText。

    您可以根据模型的可用性选择向量维度,例如您可以为每个单词选择 50,100,200,300 维度的向量。

    from gensim.models import Word2Vec
    
    #loading the downloaded model
    model = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True, norm_only=True)
    
    #the model is loaded. It can be used to perform all of the tasks mentioned above.
    
    # getting word vectors of a word
    dog = model['dog']
    

    更多细节和其他创建词嵌入的方法,可以参考NCC写的this beautiful article

    希望这能回答您的问题,祝您学习愉快!

    【讨论】:

    • @Nixam 您在寻找任何具体的答案吗?如果是这样,请详细说明您的问题。我可以相应地更改我的答案。