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.Text2Vectors --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