最大熵是天然語言處理中常常用到的一種統計方 法。網上也有不少最大熵方面的工具包,目前你們用得最多的應該是張樂博士寫的最大熵工具包了。該工具包既能夠採用命令行形式運行,也能夠直接調用接口函 數,爲你們的研究工做帶來了很大的方便。可是,對於剛接觸到該工具包的人來講,使用起來仍是有些麻煩的。html
1、命令行形式使用方法函數
一、利用命令行形式,首先要準備好特徵文件。特徵文件的格式在最大熵工具包的使用說明書(manual20041229.pdf)的P24。工具
特徵文件中,一行就是一個事件(event),其格式首先是該event對應的類別label,而後是特徵feature,二者都是string類型的。若是feature後邊有「:」,則後邊是該feature的值。Label與feature之間,以及feature與feature之間以空格間隔。例如一個事件形式以下:測試
Outdoor Sunny Sad Humid Outdoor 命令行
則,該event的label爲Outdoor,特徵有四個,包括Sunny,Sad,Humid,Outdoor。該事件中的特徵沒有給出特徵值,若是沒有顯式給出,則其特徵值默認爲1。htm
準備好特徵文件以後,能夠採用命令進行訓練:接口
maxent –m Modelname –i iteraterNum –v train.txt事件
例如:maxent –m Modelname –i 30 –v train.txtget
則你將會獲得一個名字爲Modelname的最大熵模型。string
測試過程,首先也是利用一樣的特徵模板抽取特徵構成特徵文件test.txt做爲系統輸入,而後測試的命令爲:
maxent -p –m Modelname –o output.txt test.txt
將輸出對每一個事件的預測結果
或者採用命令:
maxent -p –m Modelname –detail –o output.txt test.txt
將輸出詳細的機率信息
2、調用函數API
n 使用函數接口
l 運行環境:VC7.1
l 加入頭文件:#include <maxentmodel.hpp>
l 類名:MaxentModel
l 訓練過程:
加入特徵事件:
n begin_add_event();
n add_event(const vector< string > &context, const outcome_type &outcome, size_t count=1)
n end_add_event()
l 訓練:train(size_t iter=15, const std::string &method="lbfgs", double sigma=0.0, double tol=1E-05)
保存模型:save(const string &model, bool binary=false)
-----------------------------------------------------------------------------------------------------------------
l 測試:
n 加載模型:load (const string &model)
n 加入特徵,方法同訓練
n 模型估計使用函數:eval_all((const vector< string > &context, std::vector< pair< outcome_type, double > > &outcomes, bool sort_result=true)
3、最大熵工具包下載