如何将几种热编码转换为dence矢量



现在我正在做一个NLP实验。我所想的与Word2Verc非常相似。我想我的方式一定已经存在了。也许有现成的代码。但我不知道在哪里可以找到。

Word2Verc的输入词矢量是热门。所以每个单词向量的大小等于vocb的大小。

但我的输入词向量是几个一热向量的链接。也许它可以被称为"几个热"。它比热的要短得多,但仍然稀疏。我仍然想用Word2Vec的方案来否认它。

我使用了Gensim的Word2Vec模型。它似乎只接受令牌作为输入。这意味着它在内部将令牌转换为一个热向量,对吧?我想知道是否存在接受自定义输入矢量的Word2Vec代码。

在实践中,像Gensim中的Word2Vec模型从未真正实现一个热表示(稀疏或非稀疏(。相反,他们使用查找键(字符串(来提取密集向量,无论是在训练中(在调整向量的情况下(还是在训练后(在返回向量以在其他地方使用时(。

(抽象地说,密集向量仍然是神经网络的内部权重,从虚拟的"一个热门"输入层到较小维度的隐藏层。但在实现中,它是从字典中查找矩阵中一行的单词关键字,该行是传统的"单词向量"。(

如果你有N个单词的集群,你想使用现有的模型,每个单词只有一个向量,你可能只想单独查找所有N个单词,然后将它们相加或求平均值。这实际上是神经网络在训练过程中所做的,在某些模式下(如CBOW(,N个单词是预测一个目标"中心"单词的输入。

(相反,如果你正在训练你自己的word2vec模型,并且已知某些三元图是你想要学习新的唯一向量的相关实体,可能与同一单词的单元图向量无关,这将需要对你的训练数据进行一定程度的预处理,以从根本上将这些三元图提升为伪单词,并让它们经历相同的迭代t降雨过程就像通常情况下真正的unigram一样。(

以下评论后的其他想法:

我有点不清楚什么样的文本/目标可能会引起你的特定需求,但模糊地说,除了考虑多个单词的平均值外,你可能还想研究word2vec的FastText变体。

FastText将为训练中看到的单词的子串学习(与完整单词向量一起(额外向量。对于词形(词根(能很好地暗示意义的语言,或者拼写错误的情况&除了数据中的其他损坏,这些子词向量稍后可以帮助合成在训练过程中没有看到的新的词汇表外("OOV"(单词的猜测向量。

它通过组合从训练数据中学习的其他子词向量来实现这一点。因此,一个OOV单词(无论是否在训练数据中拼写错误(与所看到的单词共享大量子字符串,最终会得到一个非常相似的向量。

在某种程度上,你可以对你的原始片段进行预处理,将你的原始多重图组合成单个"多重图";单词";,根据一些最好的猜测,FastText仍然学习片段向量的方式可能会确保你仍然在学习关于子片段的一些东西。

此外:Gensim中的Phrases模型实现了一种统计方法,有时将unigram令牌组合成对,基于这样的想法,即如果某些对以(可配置的(统计显著的速率一起出现,则可能会更好地建模为新的组合bigram";单词";。

无论参数调整多少,结果通常都不美观,也不符合人类对哪些单词组是真正合乎逻辑的短语的感觉。(通常,一些不需要的配对会被组合在一起,而想要的配对会丢失。(

但是,这种组合,无论是缺点还是缺点,有时都有助于对分类或信息检索等下游任务进行客观评估。(而且,重复应用Phrases可以创建事实上的三元图、四元图等(

最新更新