Mallet 使用说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MAchine Learning for LanguagE Toolkit (Mallet) 是一java 的软件包,专门用于统计自然语言处理,文本分类,主题建模,信息抽取,以及其它涉及文本的机器学习方面的应用。

a) 文本分类:它的基本思想是,用大量的训练样本训练分类器,再用些测试样本测试分类器的性能,然后保存训练好的分类器模型。当将未知类别的文本输入已训练好的分类模型时,可输出此未知类别样本所属各个类别的的概率。

b) 主题建模:主题建模用于分析大量的未标示(类别未知)的文本。通过分析这些文本,可以得出一些(个数可指定,也可默认)主题,每个主题由一些经常出现在一起的词组成。可以保存建模好的主体模型,以备推断一未知文本所属主题时所用。

c) Mallet 可以把文本转换为数学上的表达形式,从而更有效的对文本进行机器学习。这个过程是通过“管道(pipe )”系统实现的,它可以进行分词,移除停用词,把序列转换为向量等方面的操作。具体代码可见mallet\src \cc\mallet\pipe 。

使用步骤:

一、文本分类:

1. 处理数据格式:将文本变成mallet数据文件

C:\mallet>bin\mallet import-dir --input sample-data\classify-input\* --output classify-input.mallet

--input 输入文件或文件夹

--output 输出文件.mallet

此命令是把classify-input (此名称可以根据自己的需要改,我在此命名此文件夹名为classify-input )目录下的文件夹中的所有数据转为特征向量的形式,mallet 可用已转换好的数据格式进行训练、测试分类器等操作。

注:在此,classify-input 下有三个文件夹,分别为sport 、science 、food 。执行此命令后,系统会自动将数据分为三类,类别名称为sport 、science 、food ,三个文件夹下的数据类别分别于所属文件夹名称一一对应。

此命令等价于:

C:\mallet>java cc.mallet.classify.tui.Text2V ectors --input sample-data\ classify-input \* --output classify-input.vectors

输入单个文件可以用import-file命令,注意:input和output命令后可以跟多个文件,如

C:\mallet>bin\mallet import-svmlight --input train test --output train.mallet test.mallet

2. 训练分类器

C:\mallet>bin\mallet train-classifier --input classify-input.mallet --trainer NaiveBayes --output-classifier classifier1.classifier --training-portion 0.8 --num-trials 10

--trainer 选择训练的算法,如MaxEnt, NaiveBayes, C45, DecisionTree等,具体可以看JavaDoc API cc.mallet.classify package。本例中选择NaiveBays,此项为可选。

--training-portion 0.8,指80%的数据作为训练数据,剩下20%的作为测试数据,也可不填此项,全部数据作为训练。

--num-trials 10,表示测试10次,可选

--cross-validation 10. 也可直接使用此命令做十折交叉检验

此命令是训练、测试分类器。--input 参数的值classify-input.mallet 是第一步中生成的特征向量,--trainer 参数的值NaiveBayes 是指训练分类器的算法,可以指定其他算法,例如MaxEnt等。--training-portion 参数的值这里是0.8 ,可以根据需要设定,0.8 的意思是随机抽取classify-input.mallet 数据中的80% 当训练数据,剩下的当测试数据,用于测试已训练好的分类器的准确性等等性能指标。--output-classifier 参数的值classifier1.classifier 是所存已训练好的分类器的名称。

此命令等价于:

C:\mallet>java cc.mallet.classify.tui.V ectors2Classify --input classify-input.vectors --trainer NaiveBayes --training-portion 0.8 --output-classifier classifier1.classifier --num-trials 3

3. 预测,分类未标注文本

C:\mallet>bin\mallet classify-file --input test.txt --output - --classifier classifier1.classifier

C:\mallet>bin\mallet classify-dir --input test\* --output - --classifier classifier1.classifier

此命令是用已训练好的分类器来对一未知类别文本进行分类。--input 参数值test.txt 是要进行分类的未知类别文本的位置。--output 后面参数值“- ”意思是直接在命令行中输出所属各个类别的概率,也可存成文本形式。--classifier 参数的值是指使用的分类器名称(即,训练好的分类器)。需在bin\mallet.bat中添加

if "%CMD%"=="train-classifier" set CLASS=cc.mallet.classify.tui.V ectors2Classify

注:对未知类别文本进行分类时不需进行数据预处理,直接输入文本即可,文本中一行代表一个分类实例。

或者可用其他分类方法:

C:\mallet>java cc.mallet.classify.tui.Text2Classify --input test.txt --output - --classifier classifier1.classifier

二、主题建模

1. 转换数据格式

C:\mallet>mallet import-dir --input sample-data\topic-input --output topic-input.mallet --keep-sequence --remove-stopwords

此命令是将topic-input 目录下的所有文本转换为特征序列,--keep-sequence 参数必须有,否则会出错,因为主题建模时所用数据源就是特征序列,而不是特征向量,所以必须用--keep-sequence 此参数来限制转换数据的格式。--remove-stopwords 的意思是移除停用词。

相关文档
最新文档