您好,登錄后才能下訂單哦!
本篇內容介紹了“OpenNLP怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
#第一章 引言#
##概述##
Apache OpenNLP包是一個基于機器學習的工具,用于處理自然語言。它支持常用的NLP任務,例如分詞(tokenization),句子切分(sentence segementation),命名試題提取(named entity extraction),chunking,句法分析(parsing),coreference resolution。要構建更加高級的文本處理服務,這些任務通常是必須的。OpenNLP還包括最大熵和基于感知的機器學習。
OpenNLP項目的目標是為上述任務創建一個成熟的工具集。另外一個目標是為各種各樣的語言提供大量的預構建(pre-build)模型,和從這些模型派生的帶注解的文本資源。
##通用包結構##
OpenNLP包括許多組件,讓你可以構建一個完整的自然語言處理管道。這些組件包括:sentence detector, tokenizer, name finder, document categorizer, part-of-speech tagger, chunker, parser, coreference resolution。組件包含(不同的)部件,允許你執行獨立的自然語言處理任務,例如訓練一個模型,或者經常評估一個模型。通過他的API很容易理解他們的每一個工具。此外,(OpenNLP)提供了一個命令行(CLI),可以方便的進行試驗和訓練。
##API 通用例子##
OpenNLP組件具有相似的API。通常,執行一個任務,你應該提供一個模型和一個輸入。
通常,通過為一個模型類的構造函數提供一個具有模型的FileInputStream來加載一個模型。
InputStream modelIn = new FileInputStream("lang-model-name.bin"); try { SomeModel model = new SomeModel(modelIn); } catch (IOException e) { //handle the exception } finally { if (null != modelIn) { try { modelIn.close(); } catch (IOException e) { } } }
在模型被加載后,這個組件工具自身可以被實例化。
ToolName toolName = new ToolName(model);
在這個工具被實例化之后,這個處理任務可以被執行。對這個工具,輸入輸出格式是特定的,但是,通常,輸出時一個String數組,輸入是一個String或者String數組。
String output[] = toolName.executeTask("This is a sample text.");
##命令行接口 (CLI)##
###概述###
OpenNLP提供了一個命令行腳本,對它的所有工具來說作為一個獨特的切入點。腳本位于OpenNLP二進制包的bin目錄下。包含Windows版本:opennlp.bat和Linux以及Linux兼容的系統:opennlp。
###安裝###
OpenNLP腳本使用JAVA_CMD和JAVA_HOME變量來決定使用哪一個命令來執行Java虛擬機。
OpenNLP腳本使用“OPENNLP_ HOME“變量來決定OpenNLP二進制包的位置。推薦使用這個變量指向當前OpenNLP版本二進制包,并且更新PATH變量,使其包含 $OPENNLP _HOME/bin 或者 %OPENNLP _ HOME%\bin 。
這樣的配置允許方便的調用OpenNLP。下面的例子假設做了這樣的配置。
###通用例子###
Apache OpenNLP提供了一個通用的命令行腳本來訪問它所有的工具:
$ opennlp
這個腳本打印當前包的版本并且列出所有可用的工具:
OpenNLP <VERSION>. Usage: opennlp TOOL where TOOL is one of: Doccat learnable document categorizer DoccatTrainer trainer for the learnable document categorizer DoccatConverter converts leipzig data format to native OpenNLP format DictionaryBuilder builds a new dictionary SimpleTokenizer character class tokenizer TokenizerME learnable tokenizer TokenizerTrainer trainer for the learnable tokenizer TokenizerMEEvaluator evaluator for the learnable tokenizer TokenizerCrossValidator K-fold cross validator for the learnable tokenizer TokenizerConverter converts foreign data formats (namefinder,conllx,pos) to native OpenNLP format DictionaryDetokenizer SentenceDetector learnable sentence detector SentenceDetectorTrainer trainer for the learnable sentence detector SentenceDetectorEvaluator evaluator for the learnable sentence detector SentenceDetectorCrossValidator K-fold cross validator for the learnable sentence detector SentenceDetectorConverter converts foreign data formats (namefinder,conllx,pos) to native OpenNLP format TokenNameFinder learnable name finder TokenNameFinderTrainer trainer for the learnable name finder TokenNameFinderEvaluator Measures the performance of the NameFinder model with the reference data TokenNameFinderCrossValidator K-fold cross validator for the learnable Name Finder TokenNameFinderConverter converts foreign data formats (bionlp2004,conll03,conll02,ad) to native OpenNLP format CensusDictionaryCreator Converts 1990 US Census names into a dictionary POSTagger learnable part of speech tagger POSTaggerTrainer trains a model for the part-of-speech tagger POSTaggerEvaluator Measures the performance of the POS tagger model with the reference data POSTaggerCrossValidator K-fold cross validator for the learnable POS tagger POSTaggerConverter converts conllx data format to native OpenNLP format ChunkerME learnable chunker ChunkerTrainerME trainer for the learnable chunker ChunkerEvaluator Measures the performance of the Chunker model with the reference data ChunkerCrossValidator K-fold cross validator for the chunker ChunkerConverter converts ad data format to native OpenNLP format Parser performs full syntactic parsing ParserTrainer trains the learnable parser BuildModelUpdater trains and updates the build model in a parser model CheckModelUpdater trains and updates the check model in a parser model TaggerModelReplacer replaces the tagger model in a parser model All tools print help when invoked with help parameter Example: opennlp SimpleTokenizer help
OpenNLP工具具有相似的命令行結構和選項。要發現工具選項,運行它,不帶任務參數:
$ opennlp ToolName
這個工具將會輸入兩個幫助塊。
第一塊描述了這個命令行工具的通用結構:
Usage: opennlp TokenizerTrainer[.namefinder|.conllx|.pos] [-abbDict path] ... -model modelFile ...
這個命令行工具的通用結構包括必須的工具名(TokenizerTrainer),可選的格式參數([.namefinder|.conllx|.pos]),可選的參數([-abbDict path] ...)和必須的參數(-model modelFile ...)。
格式參數能夠使直接處理非本地化數據,不用轉換。每一個格式都有它自己的參數,如果相應的工具執行時不帶參數或者帶參數help,他們將會顯示:
$ opennlp TokenizerTrainer.conllx help Usage: opennlp TokenizerTrainer.conllx [-abbDict path] [-alphaNumOpt isAlphaNumOpt] ... Arguments description: -abbDict path abbreviation dictionary in XML format. ...
要轉換當前格式,并制定一個特殊的格式,在工具名后面添加一個.,和格式的名字:
$ opennlp TokenizerTrainer.conllx -model en-pos.bin ...
第二個幫助信息塊描述了獨特的參數:
Arguments description: -type maxent|perceptron|perceptron_sequence The type of the token name finder model. One of maxent|perceptron|perceptron_sequence. -dict dictionaryPath The XML tag dictionary file ...
大多數用于處理的工具都需要提供至少一個模型:
$ opennlp ToolName lang-model-name.bin
當工具通過這樣方式執行,模型被加載,工具等待來自標準輸入設備的輸入。輸入被處理,并且被打印到一個標準輸出。
可以替代,或者說,最常用的使用方法是使用控制臺輸入輸出重定向選項來提供一個輸入或者輸出文件:
$ opennlp ToolName lang-model-name.bin < input.txt > output.txt
大多數用于模型訓練的工具需要首先提供一個模型名字,可選的一些訓練選項(例如模型類型,迭代次數),和數據。
一個模型名稱是一個文件名。
訓練選項通常包括迭代次數,中斷,abbreviations dictionary和其他一些東西。有時,可以通過一個訓練選項文件提供這些選項。在這種情況下,這項選項將被忽略,并且來自文件的選項會被使用。
對于數據,你需要指定數據的路徑(文件名),通常還需要指定語言和編碼。
命令行下運行一個工具訓練的通用例子大概是:
$ opennlp ToolNameTrainer -model en-model-name.bin -lang en -data input.train -encoding UTF-8
或者帶格式:
$ opennlp ToolNameTrainer.conll03 -model en-model-name.bin -lang en -data input.train \ -types per -encoding UTF-8
大多數用于模型評估的工具類似于那些用于任務執行的工具,并且首先需要提供一個模型名字,可選的一些評估選項(例如是否打印被錯誤分類的例子),還有測試數據。命令行下運行一個評估的通用例子大概是:
$ opennlp ToolNameEvaluator -model en-model-name.bin -lang en -data input.test -encoding UTF-8
“OpenNLP怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。