Mallet:自然语言处理工具包
来源:互联网 发布:上海数据港上市时间 编辑:程序博客网 时间:2024/05/06 04:29
转自:http://www.131x.com/zhaosq/BBSShow.aspx?id=1727
Mallet:自然语言处理工具包ClickNum:157|ReplyNum:1MALLET是基于java的自然语言处理工具箱,包括分档得分类、句类、主题模型、信息抽取等其他机器学习在文本方面的应用,虽然是文本的应用,但是完全可以拿到多媒体方面来,例如机器视觉。
MALLET包含了足够的文本分类的算法,还有特征提取的算法等。文本分类的算法像是Naïve Bayes, Maximum Entropy, and Decision Trees等,而且也对代码做了优化。
MALLET也包含sequence tagging的工具和算法,例如信息抽取的应用等,算法有Hidden Markov Models, Maximum Entropy Markov Models, and Conditional Random Fields.
MALLET也包含主题模型:topic modeling toolkit contains efficient, 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:\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
可以根据自己的需要选用参数
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
2. 训练分类器
C:/mallet>bin/mallet train-classifier --input classify-input.mallet --trainer NaiveBayes --output-classifier classifier1.classifier --training-portion 0.8 --num-trials 10
--trainer 选择训练的算法,如MaxEnt, NaiveBayes, C45, DecisionTree等,具体可以看 JavaDoc APIcc.mallet.classify package。本例中选择NaiveBays,此项为可选。
--training-portion 0.8,指80%的数据作为训练数据,剩下20%的作为测试数据,也可不填此项,全部数据作为训练。
--num-trials 10,表示测试10次,可选
--cross-validation 10. 也可直接使用此命令做十折交叉检验
此命令是训练、测试分类器。--input 参数的值classify-input.mallet 是第一步中生成的特征向量,--trainer 参数的值NaiveBayes 是指训练分类器的算法,可以指定其他算法,例如 MaxEnt等。 --training-portion 参数的值这里是0.8 ,可以根据需要设定,0.8 的意思是随机抽取classify-input.mallet 数据中的80% 当训练数据,剩下的当测试数据,用于测试已训练好的分类器的准确性等等性能指标。--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 --num-trials 3
3. 预测,分类未标注文本
C:/mallet>bin/mallet classify-file --input test.txt --output - --classifier classifier1.classifier
C:/mallet>bin/mallet classify-dir --input test/* --output - --classifier classifier1.classifier
此命令是用已训练好的分类器来对一未知类别文本进行分类。--input 参数值test.txt 是要进行分类的未知类别文本的位置。--output 后面参数值“- ”意思是直接在命令行中输出所属各个类别的概率,也可存成文本形式。--classifier 参数的值是指使用的分类器名称(即,训练好的分类器)。 需在bin/mallet.bat中添加
if "%CMD%"=="train-classifier" set CLASS=cc.mallet.classify.tui.Vectors2Classify
注:对未知类别文本进行分类时不需进行数据预处理,直接输入文本即可,文本中一行代表一个分类实例。
或者可用其他分类方法:
C:/mallet>java cc.mallet.classify.tui.Text2Classify --input test.txt --output - --classifier classifier1.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. 同1 说明。
C:/mallet>mallet import-dir --input sample-data/data --output topic-test.mallet --keep-sequence --remove-stopwords
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>bin/mallet import-dir --help
可以根据自己的需要选用参数。
三、序列数据
1、数据输入可以和svmlight的数据输入相同。
target feature:value feature:value ...
标签 特征:特征值 特征:特征值...
用如下语句将其转换成mallet格式
C: /mallet>bin/mallet import-svmlight --input train test --output train.mallet test.mallet
- Mallet:自然语言处理工具包
- Mallet:自然语言处理工具包
- 自然语言处理工具包MALLET教程-中文版安装使用指南
- 自然语言处理中文 工具包
- 自然语言处理中文 工具包
- 自然语言处理中文 工具包
- 自然语言处理NLP工具包
- 自然语言处理中文 工具包
- 自然语言处理工具包
- Python自然语言处理-自然语言工具包(NLTK)
- JAVA自然语言处理NLP工具包
- JAVA自然语言处理NLP工具包
- Java自然语言处理NLP工具包
- Java自然语言处理NLP工具包
- 汉语自然语言处理工具包下载
- 【转载】【JAVA自然语言处理NLP工具包】
- 笔记-常用自然语言处理工具包一览
- 自然语言处理工具包jieba的使用
- 聚类算法之简单聚类算法(C++)
- 嗯。加油!
- matlab中的mex编译
- ARM lcd 显示 问题
- xmpp更换头像
- Mallet:自然语言处理工具包
- uBoot和Linux的参数传递关系
- 用UDEV服务解决RAC ASM存储设备名
- 总线地址、物理地址、虚拟地址相关概念澄清
- 团队建设之做好技术团队管理
- 你,唯独不可以平庸
- callback函数
- nchar nvarchar char varchar 区别
- android传感器学习之获取传感器的值