DeepLearning4J Doc2Vec 输入结构
DeepLearning4J Doc2Vec input structure
我在这里看到不到 500 个与 deeplearning4J 相关的问题,而且是大多数年前的问题,首先是一个不同的问题:DL4J 死了吗?我真的必须为了构建我的人工智能而处理可怕的、可怕的 Python 吗?我不想!
现在是真正的问题,我觉得有点愚蠢,但确实有点缺乏文档和谷歌搜索(见上面的问题):过去几天我一直在阅读有关使用 DL4J 构建简单文档分类器的文章,这看起来很简单, 尽管后续 material 再次稀疏得吓人。
我构建了一个ParagraphVector
,添加一些标签,传入训练数据并进行训练。我还想通了,数据是作为 LabelAwareIterator
传入的。使用文件结构我什至发现了这个 documentation by DL4J how to structure the data. But what if I want to read the data from say an API or similar and not through file structuring? I am guessing I need a LabelAwareDocumentIterator,但是数据应该如何构建以及如何将其输入?我读到有关将文本结构化为 table 并将标签作为列的结构,但这似乎相当粗略且非常不精确。
非常感谢您的帮助,以及比我目前找到的更好的资源。谢谢!
--更新
通过阅读源代码(通常只检查实现是个好主意),看起来我真正想要的是 SimpleLabelAwareIterator
。该代码可读性很好。还没有真正理解 LabelAwareDocumentIterator
的用途。无论如何,简单的只需要一个 LabelledDocuments
的列表。 LabelledDocuments
只有一个字符串内容和一个标签列表。到目前为止一切顺利,今晚将尝试实施。如果成功了,我会post这个作为答案。
更新中的方法成功了。我现在正在使用一个 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");
我在这里看到不到 500 个与 deeplearning4J 相关的问题,而且是大多数年前的问题,首先是一个不同的问题:DL4J 死了吗?我真的必须为了构建我的人工智能而处理可怕的、可怕的 Python 吗?我不想!
现在是真正的问题,我觉得有点愚蠢,但确实有点缺乏文档和谷歌搜索(见上面的问题):过去几天我一直在阅读有关使用 DL4J 构建简单文档分类器的文章,这看起来很简单, 尽管后续 material 再次稀疏得吓人。
我构建了一个ParagraphVector
,添加一些标签,传入训练数据并进行训练。我还想通了,数据是作为 LabelAwareIterator
传入的。使用文件结构我什至发现了这个 documentation by DL4J how to structure the data. But what if I want to read the data from say an API or similar and not through file structuring? I am guessing I need a LabelAwareDocumentIterator,但是数据应该如何构建以及如何将其输入?我读到有关将文本结构化为 table 并将标签作为列的结构,但这似乎相当粗略且非常不精确。
非常感谢您的帮助,以及比我目前找到的更好的资源。谢谢!
--更新
通过阅读源代码(通常只检查实现是个好主意),看起来我真正想要的是 SimpleLabelAwareIterator
。该代码可读性很好。还没有真正理解 LabelAwareDocumentIterator
的用途。无论如何,简单的只需要一个 LabelledDocuments
的列表。 LabelledDocuments
只有一个字符串内容和一个标签列表。到目前为止一切顺利,今晚将尝试实施。如果成功了,我会post这个作为答案。
更新中的方法成功了。我现在正在使用一个 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");