這篇文章主要講解了“OpenNLP的Tokenizer怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“OpenNLP的Tokenizer怎么用”吧!
成都創(chuàng)新互聯公司是一家專業(yè)提供汨羅企業(yè)網站建設,專注與成都網站設計、成都網站制作、HTML5建站、小程序制作等業(yè)務。10年已為汨羅眾多企業(yè)、政府機構等服務。創(chuàng)新互聯專業(yè)網絡公司優(yōu)惠進行中。
OpenNLP Tokenizers分割一個輸入字符序列為tokens。Tokens通常是一個單詞,標點符號,數字等等。
Pierre Vinken, 61 years old, will join the board as a nonexecutive director Nov. 29. Mr. Vinken is chairman of Elsevier N.V., the Dutch publishing group. Rudolph Agnew, 55 years old and former chairman of Consolidated Gold Fields PLC, was named a director of this British industrial conglomerate.
The following result shows the individual tokens in a whitespace separated representation.
Pierre Vinken , 61 years old , will join the board as a nonexecutive director Nov. 29 . Mr. Vinken is chairman of Elsevier N.V. , the Dutch publishing group . Rudolph Agnew , 55 years old and former chairman of Consolidated Gold Fields PLC , was named a nonexecutive director of this British industrial conglomerate . A form of asbestos once used to make Kent cigarette filters has caused a high percentage of cancer deaths among a group of workers exposed to it more than 30 years ago , researchers reported .
OpenNLP提供了多個Tokenizer實現:
Whitespace Tokenizer - 一個空格Tokenizer,沒有空格的序列被識別為tokens
Simple Tokenizer - 一個字符類的Tokenizer ,相同字符類的序列為tokens
Learnable Tokenizer - 一個最大熵Tokenizer,基于概率模型檢測token邊界
大多數詞性標注(part-of-speech taggings),句法分析(parsers)等,以這種方式使用文本tokenized工作。確保你的tokenizer產生期望的tokens類型,使用later文本處理組件是非常重要的。
使用OpenNLP(和其他許多系統(tǒng)),tokenization是一個兩個階段的處理:首先,識別句子邊界,然后識別其中每一個句子的tokens。
###Tokenizer Tools### ###Tokenizer API### Tokenizers可以通過它定義的API集成到一個應用程序。WhitespaceTokenizer的共享示例可以通過靜態(tài)字段WhitespaceTokenizer.INSTANCE得到。SimpleTokenizer的共享實例可以使用同樣的方式從SimpleTokenizer.INSTANCE得到。在實例化TokenizerME(learnable Tokenizer)前,必須先創(chuàng)建一個Token模型。下面的代碼示例展示了怎樣加載一個模型。
InputStream modelIn = new FileInputStream("en-token.bin"); try { TokenizerModel model = new TokenizerModel(modelIn); } catch (IOException e) { e.printStackTrace(); } finally { if (modelIn != null) { try { modelIn.close(); } catch (IOException e) { } } }
在模型加載后,可以實例化TokenizerME。
Tokenizer tokenizer = new TokenizerME(model);
Tokenizer提供兩個Tokenize方法,兩個方法都期望一個包含未被Tokenized的文本的輸入String對象。如果可能最好是一個句子,但是取決于learnable Tokenizer的訓練,這不是必須的。第一個返回一個String數組,數組中每一個String是一個token。
String tokens[] = tokenizer.tokenize("An input sample sentence.");
輸出是一個包含這些tokens的數組。
"An", "input", "sample", "sentence", "."
第二個方法,TokenizePos方法返回一個Span數組,每一個Span包含這個輸入String的tokens的開始和結束字符偏移量。
Span tokenSpans[] = tokenizer.tokenizePos("An input sample sentence.");
這個tokenSpans數組有5個元素。調用Span.getCoveredText得到一個span的文本,它得到一個Span和輸入的文本。TokenizerME可以輸出被檢測的tokens的概率。getTokenProbabilities 方法必須立即調用,在tokenize的方法被調用之后。
TokenizerME tokenizer = ... String tokens[] = tokenizer.tokenize(...); double tokenProbs[] = tokenizer.getTokenProbabilities();
tokenProbs 數組的每一個token在線包括一個double值,這個值大小從0到1,1是最大的可能的概率,0是最小的可能的概率值。
##Tokenizer Training## ###Training Tool### ###Training API### Tokenizer提供了API來訓練新的tokenization模型。訓練需要三個基本步驟:
應用程序必須打開一個示例數據流
調用TokenizerME.train方法
保存TokenizerModel到一個文件或者直接使用它
下面的示例代碼解釋了這三步:
Charset charset = Charset.forName("UTF-8"); ObjectStreamlineStream = new PlainTextByLineStream(new FileInputStream("en-sent.train"), charset); ObjectStream sampleStream = new TokenSampleStream(lineStream); TokenizerModel model; try { model = TokenizerME.train("en", sampleStream, true, TrainingParameters.defaultParams()); } finally { sampleStream.close(); } OutputStream modelOut = null; try { modelOut = new BufferedOutputStream(new FileOutputStream(modelFile)); model.serialize(modelOut); } finally { if (modelOut != null) modelOut.close(); }
感謝各位的閱讀,以上就是“OpenNLP的Tokenizer怎么用”的內容了,經過本文的學習后,相信大家對OpenNLP的Tokenizer怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!