1. 程式人生 > >DL4J中文文件/語言處理/SentenceIterator

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來建立自定義語句迭代器。