libsvm:从 word2vec 读取向量

libsvm: read vectors from word2vec

有没有一种简单的方法可以在 libsvm 中使用 w2v 的输出向量? w2v 有两种输出格式:二进制和文本。在文本格式中,每一行都以一个单词开头,后跟一个 space 分隔的向量。例如:

something -0.197045 -0.292196 -0.107292 -0.168469 0.114897 -0.006383 -0.000056 0.068514 -0.079548 0.251488 0.185607 0.248675 -0.058647 0.062771 0.129014 -0.024715 -0.168974 -0.035367 -0.009597 0.090379 0.030133 0.017338 0.062264 -0.219165 -0.214198 0.226869 -0.058710 0.034563 -0.046304 0.2

找到了 ruby 的方法:

首先要求 libsvm wrapper:

require 'libsvm'

读取矢量文件(假设为文本形式):

lines = File.readlines('vectors.txt')

插入哈希

words = {} lines[1..-1].each{ |l| sp = l.strip.split; words[sp[0]] = sp[1..-1].map(&:to_f) }

最后使用 libsvm:

examples = words.values.map { |ary| Libsvm::Node.features(ary) }