Mallet源文件中重要的子目录:
classify:监督式的分类算法
types:重要的数据结构类型,像Instance实例,FeatureVector特征向量
pipe:特征选择,变换实例
每个分类方法用两个类实现:trainer和classifier
trainer把训练数据做为输入,创建classifier做为输出。每一个trainer都是ClassifierTrainer的子类
classifier有参数在训练时学习。
重要的类:
(一)classify目录中:
1.Classifier:所有classifier的父类。它的抽象方法classify()在每个子类中被定义。print()函数也很有用,但是只定义在一些classifier中。Accuracy,Precision,F1,Recall的计算也在类中
2.ClassifierTrainer:所有trainer类的父类,它的抽象方法training()要在子类中定义
public abstract Classifier train (InstanceList trainingSet,
返回一个新的Classifier.
类中还有一些静态的命令行函数
3.Classification:它存储对一个实例分类的结果。包括实例,使用的分类器,分类产生的label。还有比较label正确性的方法。
4.Trial:一个方便的类运行实例队列通过分类器,并且存储实例队列,分类器,分类结果对每一个实例。同样有计算f1,accuracy的方法。常用构造器Trial(Classifier c, InstanceList ilist).
5.命令行类:都定义在/classify/tui目录中
(二)types目录中
1.Instance类:一个实例对应着属性-值表中的一行。它主要有四个成员,前两个是最重要的
2.InstanceList类:实例列表。最简单的加实例到实例列表的方法是add(PipeInputIterator),load()加载文件到instanceList.
3.FeatureVector类:featureVector是稀疏向量。字典,存储了每一个向量。特征向量存了每个特征的值。data域最终表示为特征向量
4.FeatureSelection类:包括Alphabet(对应着一个个特征),BitSet表示被选中的特征子集合。
常用的构造器:FeatureSelection(Alphabet dictionary);
其中RankedFeatureVector的继承图示:
5.labeling:是一个接口,代表一个实例可能被标识的标签。它存储了每个标签的值。labels是实现labeling接口的类。
(三)Pipe目录中
1.Pipe类:所有pipes的父类,同时也是抽象类,主要方法pipe()在子类中定义.该类用来对各种数据进行处理,转化格式。
Instance pipe(Instance carrier);
//Process an Instance.
Instance pipe(java.lang.Object data, java.lang.Object target,
java.lang.Object name, java.lang.Object source,
Instance parent, PropertyList properties)
//Create and process an Instance.
2.各种pipe类的子类,下面列出常用的几个类:
(1) Filename2CharSequence: Given a filename contained in a string, read in contents of file into a CharSequence.
(2) CharSequence2TokenSequen
(3)
(4)
(5)
以上五步将文件转成特征向量,主要使用的步骤,其他的可以根据需要选择使用