Stanford_NLP_TOOLS:CRFClassifier

public class CRFClassifier<IN extends CoreMap>

extends AbstractSequenceClassifier<IN>

使用CRF模型进行层序划分的类。这个类具有处理不同格式文档的功能,但是当使用标准ColumnDocumentReaderAndWriter 类用来训练或者测试模型时,输入文件中要一行一个token(几列标志性的东西,比如单词、POSchunkanswer class)。ColumnDocumentReaderAndWriter 默认训练集是有3列输入的,分别是:单词、posgold 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给定的概率。

posted @ 2012-11-29 11:39  ZH奶酪  阅读(4016)  评论(0编辑  收藏  举报