如何解决DeepLearning4J Doc2Vec 输入结构
我在这里看到的与 deeplearning4J 相关的问题不到 500 个问题,而且大多数年前,首先是一个不同的问题:DL4J 死了吗?我真的必须处理可怕的、可怕的 Python 来构建我的人工智能吗?我不想!
现在真正的问题,我觉得有点愚蠢,但实际上文档和谷歌搜索有点缺乏(见上面的问题):过去几天我一直在阅读关于使用 DL4J 构建一个简单的文档分类器的文章,这看起来很简单,虽然后续资料又少得吓人。
我构建了一个 ParagraphVector
,添加了一些标签,传入训练数据并进行训练。我还发现,数据是作为 LabelAwareIterator
传入的。使用文件结构,我什至通过 DL4J 找到了这个 documentation 如何构造数据。但是如果我想从 API 或类似的东西中读取数据而不是通过文件结构来读取数据呢?我猜我需要一个 LabelAwareDocumentIterator,但是数据应该如何结构化以及如何输入?我读过关于将结构化为文本表格和标签作为列的内容,但这似乎相当粗略且非常不精确。
非常感谢您的帮助,以及比我目前找到的更好的资源。谢谢!
--更新
通过阅读源代码(通常是检查实现的好主意),看起来我真正想要的是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");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。