DL4J中文文件/語言處理/Doc2Vec
阿新 • • 發佈:2018-11-19
在DL4J中的Doc2Vec, 或段落向量
Doc2Vec的主要目的是將任意文件與標籤關聯,因此需要標籤。Doc2Vec是Word2Vec的一個擴充套件,它學習關聯標籤和單詞,而不是用單詞關聯單詞。DL4J實現它的意圖是為了服務於Java、Scala和Culjule社群。
第一步是提出一個表示文件“含義”的向量,然後可以將其用作有監督的機器學習演算法的輸入,來把文件與標籤相關聯。
在ParagraphVectors構建器模式中,labels()
方法指向用於訓練的標籤。在下面的示例中,你可以看到與情感分析相關的標籤:
.labels(Arrays.asList("negative", "neutral","positive"))
下面是段落向量分類的可執行的完整示例:
public void testDifferentLabels() throws Exception { ClassPathResource resource = new ClassPathResource("/labeled"); File file = resource.getFile(); LabelAwareSentenceIterator iter = LabelAwareUimaSentenceIterator.createWithPath(file.getAbsolutePath()); TokenizerFactory t = new UimaTokenizerFactory(); ParagraphVectors vec = new ParagraphVectors.Builder() .minWordFrequency(1).labels(Arrays.asList("negative", "neutral","positive")) .layerSize(100) .stopWords(new ArrayList<String>()) .windowSize(5).iterate(iter).tokenizerFactory(t).build(); vec.fit(); assertNotEquals(vec.lookupTable().vector("UNK"), vec.lookupTable().vector("negative")); assertNotEquals(vec.lookupTable().vector("UNK"),vec.lookupTable().vector("positive")); assertNotEquals(vec.lookupTable().vector("UNK"),vec.lookupTable().vector("neutral"));}