2 回答
TA贡献1963条经验 获得超6个赞
嵌入
让我们退后一步,了解什么是 word2vec。Word2vec(如 Glove、FastText 等)是一种将单词表示为向量的方法。ML 模型不理解单词,它们只理解数字,因此当我们处理单词时,我们希望将它们转换为数字(向量)。One-hot encoding 是一种将单词编码为向量的幼稚方式。但是对于大词汇量,one-hot 编码变得太长了。单热编码词之间也没有语义关系。
DL 带来了词的分布式表示(称为词嵌入)。这些词嵌入的一个重要特性是相关词之间的向量距离与不相关词之间的距离相比很小。IEdistance(apple,orange) < distance(apple,cat)
那么这些嵌入模型是如何训练的呢?嵌入模型是在(非常)庞大的文本语料库上训练的。当您拥有大量文本语料库时,模型将了解到在同一上下文中(多次)使用了苹果是橙色的。它将了解到苹果和橙子是相关的。所以要训练一个好的嵌入模型,你需要大量的文本语料库(不是独立词,因为独立词没有上下文)。
然而,很少有人从头开始训练词嵌入模型,因为好的嵌入模型在开源中可用。但是,如果您的文本是特定领域的(比如医学),那么您可以对公开可用的词嵌入进行迁移学习。
词汇量不足 (OOV) 词
像 word2vec 和 Glove 这样的词嵌入不能返回 OOV 词的嵌入。然而,像 FastText 这样的嵌入(感谢@gojom 指出)通过将 OOV 词分解成 n-gram 字符并通过总结构成词的子词向量来构建向量来处理 OOV 词。
问题
来到你的问题,
案例 1:假设用户输入了一个单词WAL,首先它不是一个有效的英语单词,因此它不会出现在词汇表中,并且很难想到它的含义完整向量。像 FastText 这样的嵌入通过将它们分解成 n-gram 来处理它们。这种方法为拼错的单词或俚语提供了良好的嵌入。
案例 2:假设用户输入一个单词WALL,如果您打算类似地使用向量来查找最接近的单词,它将永远不会接近,Walmart因为它们在语义上是不相关的。它会更接近于像window, paint, door.
结论
如果您搜索的是语义相似的词,那么使用向量嵌入的解决方案会很好。另一方面,如果您的搜索基于词典,那么向量嵌入将无济于事。
TA贡献1900条经验 获得超5个赞
如果您想walmart从像 一样的片段中查找wal,则更有可能使用以下内容:
通过所有条目的子字符串或前缀搜索;或者
字符 n-gram 的反向索引;或者
针对所有条目或可能候选的子集计算的某种编辑距离
也就是说,从您的示例所需的输出来看,这并不是词向量的真正工作,即使某些算法(如 FastText)能够根据词片段与训练过的词的重叠提供粗略的向量。
如果实际上您想找到类似的商店,理论上词向量可能很有用。但是给出您的示例输入的问题是,这种词向量算法需要上下文中使用的标记示例,来自在类似自然语言的关系中共同出现的标记序列。并且您需要大量具有不同上下文示例的数据,以捕捉相互关系的微妙层次。
虽然您现有的单列短实体名称(商店)无法提供,但如果您有更丰富的数据源,也许您有其他适用的东西。一些想法可能是:
单个客户访问过的商店列表
携带相同产品/UPC 的商店列表
来自更大语料库的文本(例如网络爬行文本,或者维基百科),其中每个商店名称都有足够的上下文用法。(您只需丢弃从此类训练中创建的所有其他单词 - 但您感兴趣的令牌的向量可能仍然在您的领域中使用。)
添加回答
举报
