簡體   English   中英

DeepLearning4J Doc2Vec 輸入結構

[英]DeepLearning4J Doc2Vec input structure

正如我在這里看到的與 deeplearning4J 相關的不到 500 個問題以及大多數年前的問題,首先是一個不同的問題:DL4J 死了嗎? 為了構建我的人工智能,我真的必須處理可怕的、可怕的 Python 嗎? 我不想!

現在是真正的問題,我覺得有點愚蠢,但文檔和谷歌搜索有點缺乏(見上面的問題):過去幾天我一直在閱讀關於使用 DL4J 構建一個簡單的文檔分類器的內容,這似乎很簡單,盡管遵循 -向上的材料再次稀少得可怕。

我構建了一個ParagraphVector ,添加一些標簽,傳入訓練數據並進行訓練。 我還發現,數據作為LabelAwareIterator 使用文件結構,我什至發現了 DL4J 的文檔如何構建數據。 但是,如果我想從 API 或類似文件中讀取數據,而不是通過文件結構,該怎么辦? 我猜我需要一個LabelAwareDocumentIterator ,但是數據應該如何結構化以及如何輸入? 我閱讀了有關將結構化作為文本表和 label 作為列的信息,但這似乎相當粗略且非常不精確。

非常感謝您的幫助,以及比我迄今為止發現的更好的資源。 謝謝!

- 更新

通過閱讀源代碼(通常是檢查實現的好主意),看起來我真正想要的是SimpleLabelAwareIterator 該代碼可讀性很好。 還沒有真正理解LabelAwareDocumentIterator的用途。 無論如何,簡單的只需要一個LabelledDocuments列表。 LabelledDocuments只有一個字符串內容和一個標簽列表。 到目前為止這么好將在今晚嘗試實施。 如果它成功了,我會發布這個作為答案。

更新中的方法奏效了。 我現在使用一個 SimpleLabelAwareIterator,我用一個 LabelledDocuments 列表填充。 短代碼示例:

    ArrayList<LabelledDocument> labelledDocumentList = new ArrayList<LabelledDocument>();

    for(Document input : documents){
      LabelledDocument doc = new LabelledDocument();
      doc.setContent(input.content);
      doc.addLabel(input.label);
      labelledDocumentList.add(doc);
    }
    
    SimpleLabelAwareIterator iter = new simpleLabelAwareIterator(labelledDocumentList);
    
    TokenizerFactory t = new UimaTokenizerFactory();
    ParagraphVectors vec = new ParagraphVectors.Builder()
                        .minWordFrequency(1)
                        .labels(Arrays.asList("A", "B"))
                        .layerSize(100)
                        .stopWords(new ArrayList<String>())
                        .windowSize(5).iterate(iter).tokenizerFactory(t).build();
    
    vec.fit();
    tools.saveObject(vec, "models/modelName");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM