Mallet 使用說明

Mallet:天然語言處理工具包php

發表於128 天前 ⁄ 技術科研 ⁄ 評論數 6 ⁄ 被圍觀 1006 Views+html

MALLET是基於java的天然語言處理工具箱,包括分檔得分類、句類、主題模型、信息抽取等其餘機器學習在文本方面的應用,雖然是文本的應用,可是徹底能夠拿到多媒體方面來,例如機器視覺。java

MALLET包含了足夠的文本分類的算法,還有特徵提取的算法等。文本分類的算法像是Naïve Bayes, Maximum Entropy, and Decision Trees等,並且也對代碼作了優化。算法

MALLET也包含sequence tagging的工具和算法,例如信息抽取的應用等,算法有Hidden Markov Models, Maximum Entropy Markov Models, and Conditional Random Fields.apache

MALLET也包含主題模型:topic modeling toolkit contains efficient, sampling-based implementations of Latent Dirichlet Allocation, Pachinko Allocation, and Hierarchical LDA.api

MALLET固然還有其餘功能,很強大。下面是api和一個pdf的連接:[API] [教程]。dom

==============關於MALLET的安裝配置==================機器學習

這裏有一個安裝配置的說明,我把它轉載過來了:工具

Mallet 使用說明性能

 

Mallet是專門用於機器學習方面的軟件包,此軟件包基於java。經過mallet工具,能夠進行天然語言處理,文本分類,主題建模。文本聚類,信息抽取等。下面是從如何配置mallet環境到如何使用mallet進行介紹。

 

一.實驗環境配置

1.       下載並安裝JDK,並正確設置環境變量

需設置三個環境變量:

²        JAVA_HOME:該環境變量的值就是Java所在的目錄,

例如C:\Program Files\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的編譯工具。

²       下載 http://ant.apache.org/bindownload.cgi,解壓 放到你要的目錄

²       配置

      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 not exist!
Build failed

3.下載mallet 最新版本mallet-2.0.5,地址:http://mallet.cs.umass.edu/download.php

       配置環境變量:

²        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

若是出現Build successful字樣,則表示配置成功

 

二.Mallet簡要說明

 

全稱:MAchine Learning for 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>java cc.mallet.classify.tui.Text2Vectors --input sample-data\ classify-input \* --output classify-input.vectors

 

此命令是把classify-input(此名稱能夠根據本身的須要改,我在此命名此文件夾名爲classify-input)目錄下的文件夾中的全部數據轉爲特徵向量的形式,mallet可用已轉換好的數據格式進行訓練、測試分類器等操做。

注:在此,classify-input下有三個文件夾,分別爲sport、science、food。執行此命令後,系統會自動將數據分爲三類,類別名稱爲sport、science、food,三個文件夾下的數據類別分別於所屬文件夾名稱一一對應。

 

2.      C:\mallet>mallet train-classifier --input classify-input.mallet --trainer NaiveBayes --training-portion 0.8 --output-classifier classifier1.classifier  

此命令等價於:

C:\mallet>java cc.mallet.classify.tui.Vectors2Classify --input classify-input.vectors --trainer NaiveBayes --training-portion 0.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>java cc.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 --output topic-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-filename infer1.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>mallet infer-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>mallet import-file --input sample-data\data\topic-test.txt --output topic-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

能夠根據本身的須要選用參數。

 

 

 

 

 

 

 

參考:http://blog.csdn.net/xianggelilaling/article/details/5634815/

   http://blog.sina.com.cn/s/blog_7d4224260102wo99.html

相關文章
相關標籤/搜索