最大熵是自然语言处理中经常用到的一种方法。有很多最大熵方面的工具包,目前普遍用得最多的是张乐博士写的最大熵工具包了。该工具包既可以采用命令行形式运行,也可以直接调用接口函数,但是通常采用命令行形式运行更普遍一些。本文介绍的就是如何用命令行运行最大熵工具包Maxent。
首先要下载最大熵工具包Maxent。我是在优快云下载的,需要用户名和积分,如果没有可以回复本日志。点击这里到优快云下载最大熵工具包Maxent。当然,官方还给了一个下载地址,点击这里到官方下载最大熵工具包,不过我在这里没有找到。
接下来要做的就是准备数据文件。文件格式如下:
(event) .=. (label) (feature)[:(Sunny)] (feature)[:(Sad)] (feature)[:(Humid)]
(feature) .=. string
(fvalue) .=. float
(label) .=. string
(line) .=. (event)
其中,一行是一个Event,代表一个实例。实例由标记开头,然后跟着所有特征,特征和特征之间用空格隔开。
比如如下红颜色是train.txt中的全部内容:
Outdoor Sunny Happy Dry
Outdoor Sunny Happy Humid
Indoor Rainy Sad Dry
这就意味着,有3个训练样例,其中前两个标记为Outdoor(可以理解为“出去玩”),后一个是indoor(可以理解为“不出去玩”)。以第一个例子为例,我们可以看出这个例子的标记为Outdoor,第一个特征的值为Sunny,第二个特征的值为Happy,依此类推。可以看出,这样的文件格式其实很类似于LibSVM(一个SVM模型的工具)所要求的输入格式。
maxent trainFile -m modelFile
如果你需要指定迭代次数,则可以用:
maxent trainFile -m modelFile -i iterCount
如果需要Maxent在训练过程中输出信息,则可以用:
maxent trainFile -v -m modelFile
这样将会得到一个名字为modelFile的最大熵模型,测试过程需要将modelFile作为输入,同时还需要有符合上面所要求的Maxent格式的测试数据文件。
测试命令如下:
maxent -p –m modelFile –o output.txt test.txt
输出为该模型对每个事件的预测结果,注意,只有预测结果。如果需要输出详细概率,则使用:
maxent -p –m modelFile -–detail –o output.txt test.txt(此处detail前面为两个-,即“--detail")