DL4J中文文档/语言处理/SentenceIterator

句子迭代器

SentenceIterator (句子迭代器)用于 Word2vec 和 词袋 。

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

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

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

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

一些典型的例子如下:

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

对于那些使用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来创建自定义语句迭代器。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值