# vectorsには上記の変換を行った疎行列が約40000格納される vectors = Marshal.load(File.read(input)) # クエリの行列 input = vectors[id] # 類似度が上位5個を保存 max_score = Array.new(5, {score: 0, index: 0}) vectors.each_with_index do |vector, index| double = vector[0] & input[0] score = 0 double.each do |s| score += vector[1][vector[0].index(s)] * input[1][input[0].index(s)] end score = score.fdiv(Math.sqrt(input[1].reduce(0){|vec, s| v

