Mallet:自然语言处理工具包

发表于128 天前 ⁄ 技术科研 ⁄ 评论数 6 ⁄ 被围观 1006 Views+

MALLET是基于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

可以根据自己的需要选用参数。

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

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

Mallet 使用说明的更多相关文章

  1. Atitit.项目修改补丁打包工具 使用说明

    Atitit.项目修改补丁打包工具 使用说明 1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1. ...

  2. awk使用说明

    原文地址:http://www.cnblogs.com/verrion/p/awk_usage.html Awk使用说明 运维必须掌握的三剑客工具:grep(文件内容过滤器),sed(数据流处理器), ...

  3. “我爱背单词”beta版发布与使用说明

    我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院  拒 ...

  4. Oracle 中 union 和union all 的简单使用说明

    1.刚刚工作不久,经常接触oracle,但是对oracle很多东西都不是很熟.今天我们来了解一下union和union all的简单使用说明.Union(union all): 指令的目的是将两个 S ...

  5. Map工具系列-02-数据迁移工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  6. Map工具系列-03-代码生成BySQl工具使用说明

    所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...

  7. jQuery验证控件jquery.validate.js使用说明

    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuery plugin: Validation 使用说明 转载 ...

  8. gdbsever 使用说明

    gdbsever 使用说明 在新塘N3292x平台下 编译 gdbsever ./configure --target=arm-linux --host=arm-linux arm-linux-gdb ...

  9. mongoVUE的增删改查操作使用说明

    mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...

随机推荐

  1. 按钮显示PopupWindow,setOutsideTouchable(true)时,点击按钮再次打开的问题

    先给大家看看这个:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%9F%A5%E8%AF%86%E5%BA%93/21462.shtml ...

  2. dsp28377控制DM9000收发数据——第二版程序,能够实现手术功能,但是容易掉帧;使用读取中断寄存器的方式判断中断

    G:\controlSUITE\device_support\F2837xD\v180\F2837xD_examples_Cpu1\emif1_16bit_asram\cpu01\emif1_16bi ...

  3. 原生js获取鼠标坐标方法全面讲解-zmq

    原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...

  4. 24.Redis2.8主从集群sentinel

    0.集群架构(此处只说两种;本文2种,避免sentinel成为单节点) 第一种: 第二种: 1.下载redis2.8.x版本,2.8.x都是稳定版 redis-2.8.24.tar.gz 2.解压,安 ...

  5. NSJSONSerialization(json序列化)

    //通过调用isValidJSONObject来判断Foundation对象是否可以转换为JSON数据 NSJSONSerialization isValidJSONObject:obj 我们能利用N ...

  6. centos6.5 安装linux 环境

    准备工作 安装make yum -y install gcc automake autoconf libtool make 安装g++ yum install gcc gcc-c++下面正式开始--- ...

  7. zookeeper 故障重连机制

    一.连接多个服务器,用逗号隔开 如果在连接时候zk服务器宕机 To create a client session the application code must provide a connec ...

  8. php访问远程服务器上的文件

    test.php <?php $fp=fopen('http://www.baidu.com', 'r'); while (!feof($fp)) { $chunk=fgets($fp); ec ...

  9. javascript中的事件冒泡、事件捕获和事件执行顺序

    谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. DOM事件标准定义了两种事件流,这两种事件流有着显著的不同并且可能对你的应用有 ...

  10. Android之拨号界面图片风格,无信息默认显示界面修改

    Android之拨号界面图片风格,无信息默认显示界面修改 点开Dialer app,出现拨号,联系人,收藏三个选项卡,也就是三个Fragment,在三个界面都没有信息的时候会显示一个时钟,联系人,收藏 ...