使用带有预训练向量的 gensim 短语

geo*_*lik 5 python machine-learning phrase gensim

我正在尝试使用预先训练好的词嵌入来考虑短语。流行的预训练嵌入,例如GoogleNews-vectors-negative300.bin.gz对短语和一元词组有单独的嵌入,例如,New_York两个一元词组New和 的嵌入York。简单的单词标记化和字典查找忽略了二元嵌入。

Gensim 提供了一个很好的短语模型,给定一个文本序列,它可以学习紧凑的短语,例如,New_York而不是两个一元组NewYork。这是通过聚合和比较 unigram 和 bigram 之间的计数统计信息来完成的。1. 是否可以在Phrase不估计其他地方的计数统计数据的情况下使用预训练的嵌入?

  1. 是否可以在Phrase不估计其他地方的计数统计数据的情况下使用预训练的嵌入?
  2. 如果没有,有没有一种有效的方法来使用这些二元组?我可以想象一种使用循环的方法,但我认为它很丑陋(下)。

这是丑陋的代码。

from ntlk import word_tokenize
last_added = False
sentence = 'I love New York.'
tokens =  ["<s>"]+ word_tokenize(sentence) +"<\s>"]
vectors = []
for index, token in enumerate(tokens):
    if last_added:
        last_added=False
        continue
    if "%s_%s"%(tokens[index-1], token) in model:
        vectors.append("%s_%s"%(tokens[index-1], token))
        last_added = True
    else:
        vectors.append(tokens[index-1])
        lase_added = False
Run Code Online (Sandbox Code Playgroud)