1. 程式人生 > >DL4J中文文件/語言處理/Doc2Vec

DL4J中文文件/語言處理/Doc2Vec

在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"));}

延伸閱讀