项目名称的词嵌入(整数,one-hot 编码)

数据挖掘 Python nlp 词嵌入 单词
2022-02-15 20:44:48

我正在寻找使用整数编码或单热编码来获得两个项目名称之间相似性的方法。

例如,“车道连接器”与“汽车起重机”。
我有 100,000 个项目名称,由 2~3 个单词组成,如上所述。
此外,物品有其尺寸(36mm、12M、2400*1200...)和单位(ea、m2、m3、hr...)

我想将 (item name, size, unit) 作为矢量。为此,我需要使用某种方式将文本更改为数字。我发现的只是 word2vec 的东西,但我的案例没有上下文语料库。所以我认为不可能从我的数据中学习一些上下文。

数据集的示例图像

2个回答

我不确定这个数据集是否可行。Word2Vec 用于生成词嵌入,其工作原理是句子中的“词关联”。

所以我不认为你可以在这个看起来没有任何关联的数据集上应用 Word2Vec,除了在一些你可以匹配(执行聚类)一些参数的地方,比如:

  1. 单位
  2. 商品名称的大小/尺寸

有兴趣了解此类问题的一些解决方案。

好的,所以我的理解是您只有一个单词列表,并且想要获取这些单词的单词向量。您是正确的,您无法训练 word2vec 模型,因为它需要语料库。但是您可以做的是使用预训练模型(word2vec 或 glove)。我建议你使用 word2vec,因为 gensim 有一个非常简单的实现。您可以在此处下载 Google 的预训练模型然后您可以使用以下代码获取word_embed给定的word_list.

import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
vocab = model.vocab.keys()
word_embed = {}
for word in word_list:
    if word in vocab:
        word_embed.append(model[word])

此外,您必须对您的单词列表进行一些预处理,以便您可以从预训练的嵌入中获得最大匹配(例如删除等)并且如果在预训练的嵌入中仍然找不到单词您可以随机初始化它,也可以取嵌入的平均值。