使用word2vec检索n-gram



我有一个文本列表。我把每一个文本变成一个标记列表。例如,如果其中一个文本是'I am studying word2vec',则相应的令牌列表将是(假设我考虑n=1、2、3的n-gram(['I', 'am', 'studying ', 'word2vec, 'I am', 'am studying', 'studying word2vec', 'I am studying', 'am studying word2vec']

  1. 这是转换任何文本以应用most_similar()的正确方法吗

(我也可以删除至少包含一个停止词的n-gram,但这不是我问题的重点。(

我将这个令牌列表称为texts。现在我构建模型:

model = Word2Vec(texts)

那么,如果我使用

words = model.most_similar('term', topn=5)

  1. 有没有办法确定我会得到什么样的结果?例如,如果term是1克,那么我会得到五个1克的列表吗?如果term是2克,那么我会得到五个2克的列表吗

一般来说,确定"什么样的结果;如果你尝试某些事情,你会得到的就是尝试那些事情,并观察你实际得到的结果。

在为word2vec训练准备文本时,通常不会将输入文本转换为所显示的形式,并添加一堆空格分隔的单词n-gram。相反,字符串'I am studying word2vec'通常只会被预处理/标记为像['I', 'am', 'studying', 'word2vec']这样的(unigram(标记列表。

然后,该模型将为每个单词学习一个向量,而不为多图学习向量。由于它只知道这样的一个单词向量,所以它从.most_similar()报告的所有结果也将是一个单词。

您可以根据对文本的某种统计或语义理解,对文本进行预处理,将一些单词组合成多单词实体。通常,这个过程会将相关单词的运行转换为下划线连接的单个标记。例如,'I visited New York City'可能变成['I', 'visited', 'New_York_City']

但任何这样的预处理决策都与word2vec算法本身是分开的,该算法只将你输入的任何"单词"视为1:1键,用于在训练中查找向量。它只知道令牌,不知道n-gram。

最新更新