自然語言處理工具包MALLET教程-中文版安裝使用指南
Mallet:自然語言處理工具包
MALLET是基於java的自然語言處理工具箱,包括分檔得分類、句類、主題模型、資訊抽取等其他機器學習在文字方面的應用,雖然是文字的應用,但是完全可以拿到多媒體方面來,例如機器視覺。
MALLET包含了足夠的文字分類的演算法,還有特徵提取的演算法等。文字分類的演算法像是NaïveBayes, Maximum Entropy, and Decision Trees等,而且也對程式碼做了優化。
MALLET也包含sequence tagging的工具和演算法,例如資訊抽取的應用等,演算法有HiddenMarkov Models, Maximum Entropy Markov Models, and Conditional Random Fields.
MALLET也包含主題模型:topic modeling toolkit containsefficient, sampling-based implementations of Latent Dirichlet Allocation,Pachinko Allocation, and Hierarchical LDA.
MALLET當然還有其他功能,很強大。下面是api和一個pdf的連結:[API][教程]。
==============關於MALLET的安裝配置==================
這裡有一個安裝配置的說明,我把它轉載過來了:
Mallet 使用說明
Mallet是專門用於機器學習方面的軟體包,此軟體包基於java。通過mallet工具,可以進行自然語言處理,文字分類,主題建模。文字聚類,資訊抽取等。下面是從如何配置mallet環境到如何使用mallet進行介紹。
一.實驗環境配置
1. 下載並安裝JDK,並正確設定環境變數
需設定三個環境變數:
² JAVA_HOME:該環境變數的值就是Java所在的目錄,
例如C:\ProgramFiles\Java\jdk1.6.0_10
² PATH:指定一個路徑列表,用於搜尋可執行檔案。
該環境變數值為:%JAVA_HOME%\bin
² CLASSPATH:指定一個路徑列表,是用於搜尋Java 編譯或者執行時需要用到的類。該環境變數的值為:%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar
² 執行àcmd
² 分別輸入javac和java,沒有出錯則表示配置成功。
2. 下載apache-ant,不需安裝,只需正確設定環境變數。
apache-ant是一個基於Java的編譯工具。
² 配置
ANT_HOME:設定為apache-ant的解壓目錄,例如:C:\server\apache-ant-1.8.0
classpath: %ANT_HOME%\lib
Path :%ANT_HOME%\bin
² 測試
² 執行àcmd
² 輸入 ant
結果如下則表示配置成功
Buildfile: build.xml does notexist!Build failed
配置環境變數:
² MALLET_HOME=MALLET的解壓目錄,例如C:\mallet
² Path中新增 %MALLET_HOME%\bin
² classpath:%mallet_home%\class;%mallet_home%\lib;%mallet_home%\lib\mallet-deps.jar
² 執行àcmd,進入到mallet的解壓目錄
² 輸入 ant
如果出現Buildsuccessful字樣,則表示配置成功
二.Mallet簡要說明
全稱:MAchine Learningfor LanguagE Toolkit
Mallet是一java的軟體包,專門用於統計自然語言處理,文字分類,主題建模,資訊抽取,以及其它涉及文字的機器學習方面的應用。
a) 文字分類:它的基本思想是,用大量的訓練樣本訓練分類器,再用些測試樣本測試分類器的效能,然後儲存訓練好的分類器模型。當將未知類別的文字輸入已訓練好的分類模型時,可輸出此未知類別樣本所屬各個類別的的概率。
b) 主題建模:主題建模用於分析大量的未標示(類別未知)的文字。通過分析這些文字,可以得出一些(個數可指定,也可預設)主題,每個主題由一些經常出現在一起的片語成。可以儲存建模好的主體模型,以備推斷一未知文字所屬主題時所用。
c) Mallet可以把文字轉換為數學上的表達形式,從而更有效的對文字進行機器學習。這個過程是通過“管道(pipe)”系統實現的,它可以進行分詞,移除停用詞,把序列轉換為向量等方面的操作。具體程式碼可見mallet\src\cc\mallet\pipe。
三.Mallet使用步驟
文字分類:
1.C:\mallet>mallet import-dir--input sample-data\classify-input\* --output classify-input.mallet
此命令等價於:
C:\mallet>javacc.mallet.classify.tui.Text2Vectors --inputsample-data\ classify-input \* --output classify-input.vectors
此命令是把classify-input(此名稱可以根據自己的需要改,我在此命名此資料夾名為classify-input)目錄下的資料夾中的所有資料轉為特徵向量的形式,mallet可用已轉換好的資料格式進行訓練、測試分類器等操作。
注:在此,classify-input下有三個資料夾,分別為sport、science、food。執行此命令後,系統會自動將資料分為三類,類別名稱為sport、science、food,三個資料夾下的資料類別分別於所屬資料夾名稱一一對應。
此命令等價於:
C:\mallet>java cc.mallet.classify.tui.Vectors2Classify--input classify-input.vectors --trainer NaiveBayes --training-portion0.8 --output-classifier classifier1.classifier
此命令是訓練、測試分類器。--input引數的值classify-input.mallet是第一步中生成的特徵向量,--trainer引數的值NaiveBayes是指訓練分類器的演算法,可以指定其他演算法,例如MaxEnt等。--training-portion引數的值這裡是0.8,可以根據需要設定,0.8的意思是隨機抽取classify-input.mallet資料中的80%當訓練資料,剩下的當測試資料,用於測試已訓練好的分類器的準確性等等效能指標。--output-classifier引數的值classifier1.classifier是所存已訓練好的分類器的名稱。
3.C:\mallet>javacc.mallet.classify.tui.Text2Classify --input sample-data\data\classify-test.txt --output ---classifier classifier1.classifier
此命令是用已訓練好的分類器來對一未知類別文字進行分類。--input引數值sample-data\data\classify-test.txt是要進行分類的未知類別文字的位置。--output後面引數值“-”意思是直接在命令列中輸出所屬各個類別的概率。--classifier引數的值是指使用的分類器名稱(即,訓練好的分類器)。
注:對未知類別文字進行分類時不需進行資料預處理,直接輸入文字即可,文字中一行代表一個分類例項。
主題建模
1.C:\mallet>mallet import-dir --input sample-data\topic-input --outputtopic-input.mallet --keep-sequence --remove-stopwords
此命令是將topic-input目錄下的所有文字轉換為特徵序列,--keep-sequence引數必須有,否則會出錯,因為主題建模時所用資料來源就是特徵序列,而不是特徵向量,所以必須用--keep-sequence此引數來限制轉換資料的格式。--remove-stopwords的意思是移除停用詞。
2.C:\mallet>mallet train-topics --input topic-input.mallet --num-topics 2--output-doc-topics docstopics --inferencer-filenameinfer1.inferencer
此命令是用第一步的資料進行主題建模,引數--num-topics的值2意思是限定主題個數為2,可以根據需要設定其他值,預設的主題數為10.。--output-doc-topics引數的意思是輸出文件-主題矩陣,存到docstopics檔案中。--inferencer-filename引數的意思是對將訓練好的主題模型進行儲存,以備後用,在此,此主題模型存到引數值infer1.inferencer中,可根據習慣自行命名。
3. C:\mallet>mallet import-dir --input sample-data\data--output topic-test.mallet --keep-sequence --remove-stopwords
同1說明。
4. C:\mallet>malletinfer-topics --input topic-test.mallet --inferencer infer1.inferencer--output-doc-topics testdocstopics
用訓練好的主題模型對未標示的文字topic-test進行主題推斷。--inferencer引數的意思是用已經訓練好的主題模型infer1.inferencer進行對未知文字的主題推斷。--output-doc-topics引數的意思是輸出文件-主題矩陣,存到docstopics檔案中。
注:
² 文字分類時未知文字必須用一文件表示,文件中每行代表一分類例項。而主題建模時可以對單個文件主題建模,可以對一目錄下的所有文件進行主題建模,例如主題建模第三步,可以用import-dir命令。
C:\mallet>malletimport-file --input sample-data\data\topic-test.txt --outputtopic-test.mallet --keep-sequence --remove-stopwords
² import-file,import-dir,train-topics,infer-topics,train-classifier等等這些命令可以通過以下操作進行查詢:
C:\mallet>mallet
查詢每條命令的引數可以通過以下命令列操作進行:
例如:C:\mallet>mallet import-dir--help
可以根據自己的需要選用引數。