SentenceIterator

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

Sentence Iterator (句子迭代器)用于 Word2vec词袋

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

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

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

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

一些典型的例子如下:

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来创建自定义语句迭代器。

Last updated