Deeplearning4j
Community ForumND4J JavadocDL4J Javadoc
ZH 1.0.0-beta6
ZH 1.0.0-beta6
  • 核心概念
  • 开始
    • 快速入门
    • 速查表
    • 示例教程
    • 初学者
    • Eclipse贡献者
    • 从源码构建
    • 贡献
    • 基准测试准则
    • 关于
    • 发行说明
  • 配置
    • GPU/CPU设置
    • CPU 与 AVX
    • 内存管理
    • Maven
    • SBT/Gradle和其它构建工具
    • cuDNN
    • 快照
    • 内存工作间
  • ND4J
    • 快速入门
    • 概述
  • SAMEDIFF
    • 变量
    • 操作
    • 添加操作
  • 调优与训练
    • 故障排查
    • 可视化
    • 评估
    • 迁移学习
    • 早停
    • T-SNE数据可视化
  • 分布式深度学习
    • 介绍与入门
    • 在Spark上使用DL4J:操作指南
    • 技术说明
    • Spark数据管道指南
    • API参考
    • 参数服务器
  • Keras导入
    • 概述
    • 入门
    • 支持功能
      • 正则化器
      • 损失
      • 初始化器
      • 约束
      • 激活
      • 优化器
    • Functional模型
    • Sequential模型
  • ARBITER
    • 概述
    • 层空间
    • 参数空间
  • DATAVEC
    • 概述
    • 记录
    • 概要
    • 序列化
    • 转换
    • 分析
    • 读取器
    • 执行器
    • 过滤器
    • 运算
  • 语言处理
    • 概述
    • Word2Vec
    • Doc2Vec
    • SentenceIterator
    • Tokenization
    • Vocabulary Cache
  • 模型
    • 计算图
    • 多层网络
    • 循环神经网络
    • 层
    • 顶点
    • 迭代器
    • 监听器
    • 自定义层
    • 模型持久化
    • 动物园用法
    • 激活
    • 更新器
  • 移动端
    • Android概述
    • Android先决条件
    • Android分类器
    • Android图片分类器
  • FAQ
  • 新闻
  • 支持
  • 为什么要深度学习?
Powered by GitBook
On this page

Was this helpful?

Edit on Git
Export as PDF
  1. 语言处理

SentenceIterator

DL4J中用于语言处理的单词、文档和句子的迭代。

PreviousDoc2VecNextTokenization

Last updated 5 years ago

Was this helpful?

Sentence Iterator (句子迭代器)用于 和 。

它将一些文本以向量的形式输入到神经网络中,也涵盖了文本处理中的文档概念。

在自然语言处理中,文档或句子通常用来封装算法应该学习的上下文。

一些例子包括分析推文和成熟的新闻文章。句子迭代器的目的是把文本分成可处理的位。注意句子迭代器是输入不可知的。因此,一些文本(文档)可以来自文件系统、Twitter API或Hadoop。

根据如何处理输入,句子迭代器的输出将被传递给分词器,用于处理单个词,这些通常是单词,但也可以是ngram、skipgrams或其他单元。分词器是由一个(分词器工厂)根据每句话创建的。分词器工厂是被传递到文本处理向量化器中的。

一些典型的例子如下:

SentenceIterator iter = new LineSentenceIterator(new File("your file"));

假设文件中的每一行都是一个句子。

还可以将字符串列表作为如下语句:

Collection<String> sentences = ...;
SentenceIterator iter = new CollectionSentenceIterator(sentences);

这将假定每个字符串是一个句子(文档)。记住,这可能是一个推文或文章列表,两者都适用。

可以对文件进行如下迭代:

SentenceIterator iter = new FileSentenceIterator(new File("your dir or file"));

这将逐行解析文件,并在每行返回单个句子。

对于任何复杂的情况,我们推荐一个实际的机器学习级管道,UimaSentenceIterator 。

UimaSentenceIterator够进行分词、词性标注和语义化等。UimaSentenceIterator迭代一组文件并可以分割句子。你可以根据传入的AnalysisEngine来定制它的行为。

AnalysisEngine是文本处理管道概念。DL4J附带了所有这些常见任务的标准分析引擎,允许你自定义传入的文本以及如何定义语句。AnalysisEngines是管道的线程安全版本。我们还包括基于的用于处理常见任务的管道。

对于那些使用UIMA或者对UIMA感到好奇的人来说,在类型系统内,它使用cleartk类型系统用于分词、句子和其他注释。

下面是如何创建UimaSentenceItrator:

SentenceIterator iter = UimaSentenceIterator.create("path/to/your/text/documents");

你也可以直接实例化:

SentenceIterator iter = new UimaSentenceIterator(path,AnalysisEngineFactory.createEngine(AnalysisEngineFactory.createEngineDescription(TokenizerAnnotator.getDescription(), SentenceAnnotator.getDescription())));

对于熟悉Uima的人来说,这是广泛使用Uimafit创建分析引擎。还可以通过扩展SentenceIterator来创建自定义语句迭代器。

Word2vec
词袋
Tokenizer Factory
UIMA
OpenNLP
cleartk