public class CRFClassifier<IN extends CoreMap>
extends AbstractSequenceClassifier<IN>
使用CRF模型進行層序划分的類。這個類具有處理不同格式文檔的功能,但是當使用標准ColumnDocumentReaderAndWriter 類用來訓練或者測試模型時,輸入文件中要一行一個token(幾列標志性的東西,比如單詞、POS、chunk和answer class)。ColumnDocumentReaderAndWriter 默認訓練集是有3列輸入的,分別是:單詞、pos、gold class,但是這個可以通過map屬性來指定。
當使用-textFile命令在一個文件上運行的時候,文件要是普通英文文本(或者簡單的html/xml),通過PlainTextDocumentReaderAndWriter可以進行做一下簡單的英文標記測試。用來讀取文本的類可以通過 -plainTextDocumentReaderAndWriter來改變。-tokenizeOptions 標記提供了一些其他的標記器選項。
To read from stdin, use the flag -readStdin. The same reader/writer will be used as for -textFile.
要從標准輸入讀取文本的話,就是用-readStdin。至於-textFile,也可以使用同樣的reader/writer。
典型命令行使用:
為了將一個(含有(提供好的序列化的分類器)的訓練好的模型)在文本文件上運行:
java -mx500m edu.stanford.nlp.ie.crf.CRFClassifier -loadClassifier conll.ner.gz -textFile samplesentences.txt
在一個屬性文件(訓練、測試、運行時)中指定全部參數:
java -mx1g edu.stanford.nlp.ie.crf.CRFClassifier -prop propFile
To train and test a simple NER model from the command line:
通過命令行訓練和測試一個簡單的NER(命名實體識別)模型:
java -mx1000m edu.stanford.nlp.ie.crf.CRFClassifier -trainFile trainFile -testFile testFile -macro > output
用多個文件進行訓練:
java -mx1000m edu.stanford.nlp.ie.crf.CRFClassifier -trainFileList file1,file2,... -testFile testFile -macro > output
使用-testFiles選項和逗號分割的列表來進行多文件測試。
各種特征值通過FeatureFactory來定義。默認使用的是NERFeatureFactory,你可以查看特征值模版和在訓練NER分類器中需要使用的特征值的屬性或標記。還有一個edu.stanford.nlp.wordseg.SighanFeatureFactory,以及各種繼承者,例如用來進行中文分詞的ChineseSegmenterFeatureFactory。特征值可以通過Properties文件(推薦)或者命令行的標記來指定。各種標記被讀入到一個SeqClassifierFlags 對象,除非用戶想添加新的特征,否則用戶不用關注它。
CRFClassifier也可以在程序中使用,當新建一個實例的時候,你一定要指定Properties對象。然后你要調用訓練函數來訓練分類器或者加載一個分類器。另一種得到CRFClassifier的方法就是通過靜態函數getClassifier(String)來返回一個反序列化的分類器。之后你可能就會標注文檔,可以使用合適的classify()或者AbstractSequenceClassifier中合適的classify函數。可以通過printProbsDocument()或getCliqueTrees() 詢問CRF給定的概率。