DL4J:如何使用GoogleNews向量计算两个新句子之间的语义相似度

时间:2018-01-31 19:05:41

标签: nlp deeplearning4j dl4j

我正在阅读DL4J的基本教程。我打算比较两个看不见的句子之间的相似性。 我使用一个简单的例子来比较使用GoogleNews-vectors-negative300.bin.gz完成W2V后的两个单词。 当我尝试使用GoogleNews-vectors-negative300.bin.gz进行句子比较时,如下所示:

File gModel = new File("GoogleNews-vectors-negative300.bin.gz");
Word2Vec vecGoogle = WordVectorSerializer.readWord2VecModel(gModel);

ParagraphVectors vecGoogleForSentences = new ParagraphVectors.Builder()
.useExistingWordVectors(vecGoogle)
.build();

System.out.println(Transforms.cosineSim(vecGoogleForSentences.inferVector("I like bananas and mangoes"), vecGoogleForSentences.inferVector("I like mangoes")));

我收到错误:

  

org.nd4j.linalg.exception.ND4JIllegalStateException:模型正在   传递,因为现有没有syn1 / syn1Neg可用

有人可以解释一下我在这里打什么,或者我如何使用矢量GoogleNews-vectors-negative300.bin.gz在语义上比较2个看不见的句子? 我正在尝试的是基于DL4J demo code中的建议:

非常感谢提前!

1 个答案:

答案 0 :(得分:0)

更简单的方法是计算句子中所有单词的平均向量(将向量除以n)并计算它们的余弦相似度。