[英]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.