apache mahout_Apache Mahout:入门

apache mahout

最近,我有一个有趣的问题要解决:如何使用自动化对不同来源的文本进行分类? 前一段时间,我读到一个有关该项目以及许多其他文本分析工作的项目– Apache Mahout 。 尽管它不是一个非常成熟的版本(当前版本为0.4 ),但它非常强大且可扩展。 在另一个出色的项目Apache Hadoop的基础上 ,它能够分析巨大的数据集。

因此,我做了一个小项目,以了解Apache Mahout的工作方式。 我决定使用Apache Maven 2来管理所有依赖关系,因此我将首先从POM文件开始。

<!--?xml version="1.0" encoding="UTF-8"?-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelversion>4.0.0</modelversion><groupid>org.acme</groupid><artifactid>mahout</artifactid><version>0.94</version><name>Mahout Examples</name><description>Scalable machine learning library examples</description><packaging>jar</packaging><properties><project.build.sourceencoding>UTF-8</project.build.sourceencoding><apache.mahout.version>0.4</apache.mahout.version></properties><build><plugins><plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-compiler-plugin</artifactid><configuration><encoding>UTF-8</encoding><source>1.6<target>1.6</target><optimize>true</optimize></configuration></plugin></plugins></build><dependencies><dependency><groupid>org.apache.mahout</groupid><artifactid>mahout-core</artifactid><version>${apache.mahout.version}</version></dependency><dependency><groupid>org.apache.mahout</groupid><artifactid>mahout-math</artifactid><version>${apache.mahout.version}</version></dependency><dependency><groupid>org.apache.mahout</groupid><artifactid>mahout-utils</artifactid><version>${apache.mahout.version}</version></dependency><dependency><groupid>org.slf4j</groupid><artifactid>slf4j-api</artifactid><version>1.6.0</version></dependency><dependency><groupid>org.slf4j</groupid><artifactid>slf4j-jcl</artifactid><version>1.6.0</version></dependency></dependencies>
</project>

然后,我研究了可用于文本分类问题的Apache Mahout示例和算法。 最简单,最准确的方法是朴素贝叶斯分类器 。 这是一个代码片段:

package org.acme;import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import java.util.List;import org.apache.hadoop.fs.Path;
import org.apache.mahout.classifier.ClassifierResult;
import org.apache.mahout.classifier.bayes.TrainClassifier;
import org.apache.mahout.classifier.bayes.algorithm.BayesAlgorithm;
import org.apache.mahout.classifier.bayes.common.BayesParameters;
import org.apache.mahout.classifier.bayes.datastore.InMemoryBayesDatastore;
import org.apache.mahout.classifier.bayes.exceptions.InvalidDatastoreException;
import org.apache.mahout.classifier.bayes.interfaces.Algorithm;
import org.apache.mahout.classifier.bayes.interfaces.Datastore;
import org.apache.mahout.classifier.bayes.model.ClassifierContext;
import org.apache.mahout.common.nlp.NGrams;public class Starter {public static void main( final String[] args ) {final BayesParameters params = new BayesParameters();params.setGramSize( 1 );params.set( "verbose", "true" );params.set( "classifierType", "bayes" );params.set( "defaultCat", "OTHER" );params.set( "encoding", "UTF-8" );params.set( "alpha_i", "1.0" );params.set( "dataSource", "hdfs" );params.set( "basePath", "/tmp/output" );try {Path input = new Path( "/tmp/input" );TrainClassifier.trainNaiveBayes( input, "/tmp/output", params );Algorithm algorithm = new BayesAlgorithm();Datastore datastore = new InMemoryBayesDatastore( params );ClassifierContext classifier = new ClassifierContext( algorithm, datastore );classifier.initialize();final BufferedReader reader = new BufferedReader( new FileReader( args[ 0 ] ) );String entry = reader.readLine();while( entry != null ) {List< String > document = new NGrams( entry, Integer.parseInt( params.get( "gramSize" ) ) ).generateNGramsWithoutLabel();ClassifierResult result = classifier.classifyDocument( document.toArray( new String[ document.size() ] ), params.get( "defaultCat" ) );          entry = reader.readLine();}} catch( final IOException ex ) {ex.printStackTrace();} catch( final InvalidDatastoreException ex ) {ex.printStackTrace();}}
}

这里有一个重要的注意事项:开始分类之前必须教系统。 为此,有必要提供不同文本分类的示例(更多–更好)。 它应该是简单的文件,其中每一行都以用制表符分隔的类别与文本本身开头。 铁

SUGGESTION  That's a great suggestion
QUESTION  Do you sell Microsoft Office?
...

您可以提供更多的文件,可以获得更精确的分类。 所有文件都必须放在“ / tmp / input”文件夹中,它们将首先由Apache Hadoop处理。 :)

参考: JCG合作伙伴的 Apache Mahout入门   Andriy Redko {devmind}的 Andrey Redko。


翻译自: https://www.javacodegeeks.com/2012/02/apache-mahout-getting-started.html

apache mahout

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬链接和软连接(符号链接)

硬链接:不同路径的文件指定的是同一个inode硬链接不能跨分区存在硬链接不能链接到目录(要避免循环引用)删除硬链接只会减少文件被硬链接的次数,源文件不会动.软链接:是一个独立的文件,有自己独立的inode&#xff0c;引用的是路径本身,不是inode删除软链接,跟源文件没任何关系软…

基于nbu oj c语言答案,Just oj 2018 C语言程序设计竞赛(高级组)F:Star(结构体排序+最小生成树)...

Time Limit: 1 s Memory Limit: 128 MBProblem Description31世纪&#xff0c;人类世界的科技已经发展到了空前的高度&#xff0c;星际移民&#xff0c;星际旅游早已经不再是问题。人类已经掌握了开发星系的能力。但是&#xff0c;无论发展到何种地步&#xff0c;资源一直…

与JBoss BPM Travel Agency更新了现代BPM数据集成

不久前&#xff0c;我们启动了一个规模较大的JBoss Travel Agency演示项目&#xff0c;以展示JBoss BPM Suite的一些更有趣的功能。 我们提供了一系列视频 &#xff0c;不仅向您展示了如何安装它&#xff0c;项目中各种规则和流程工件的含义&#xff0c;还向您介绍了在实际使用…

c语言中坐标xoy轴在哪里,用C语言在linux下获取鼠标指针的相对位置

1. 关于"/dev/input/mice"相信很多人都用过Linux&#xff0c;也许你发现不管是在X-window下面&#xff0c;还是在Console下面&#xff0c;鼠标都是可以操作的。那么你有没有考虑过这些鼠标都是从哪来的&#xff1f;不错&#xff01;他们都是从"/dev/input/mice&…

codeblock不能调试

问题&#xff1a;codeblock 不能调试&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 首先&#xff0c;项目的保存路径不能是中文路径。 其次&#xff0c;必须创建工程。 最后&#xff0c;build选项里select target选成debug codeblock如何创建工程&#xff1a;http://j…

与詹金斯一起将GitLab中的Gradle项目发布到Artifactory

我将详细展示如何定期构建您的项目&#xff0c;然后如何进行发布。 它涉及许多工具的协作&#xff0c;我发现这些工具难以正确设置&#xff0c;这就是我编写此代码的原因。 目标 我将向您展示如何实现以下两种方案。 第一个是如何进行常规开发的非发行版&#xff1a; 实现一些…

比较排序算法的时间复杂度 c语言,c语言四种排序算法时间复杂度比较(10页)-原创力文档...

1、方案设计&#xff1a;我这次实验通过随机生成300&#xff10;0个随机数&#xff0c;把随机数存到数组中,用这同一组随机数据分别进行四种排序&#xff0c;直接插入排序、直接选择排序、冒泡排序和快速排序。还通过了调用txt文件把运算所需时间导出&#xff0c;分别输出各个算…

三维漫游的实现

一、本文主要是展示一个demo&#xff0c;实现的是画一个三维的立方体&#xff0c;通过滑动屏幕来旋转方向&#xff0c;上下左右来移动。直接上代码&#xff1a; MainActivity&#xff1a;package com.example.zp.a3dword;import android.graphics.Bitmap;import android.graphi…

MySQL JDBC驱动程序如何处理准备好的语句

准备的语句类型 在研究《 高性能Java持久性》一书中的“ 语句缓存”一章时&#xff0c;我有机会比较了Oracle&#xff0c;SQL Server&#xff0c;PostgreSQL和MySQL处理预准备语句的方式。 感谢Jess Balint &#xff08;MySQL JDBC驱动程序贡献者&#xff09;&#xff0c;他在…

Nodejs学习(三)-安装nodejs supervisor,提高点效率吧。

安装好了express准备写项目&#xff0c;可是发现随便改一下js都要使用npm start重新启动才能生效&#xff0c;这个很不好&#xff0c;搜索一下发现有这么一个模块supervisor。那就安装一下吧。 1.安装&#xff0c;这个必须是全局安装那就开始吧。 npm -g install supervisor 设…

网络语言不c,哪些网络用语不文明?

满意答案林昨末sk2013.02.26采纳率&#xff1a;47% 等级&#xff1a;11已帮助&#xff1a;8049人Q1. 你认为在网络上出现的不文明用语情况_B___&#xff1f;A.是人们宣泄情绪的一种重要方式 B.是当今社会的一个缩影&#xff0c;没有办法C.不应当提倡&#xff0c;应加大管理力…

android 无限旋转动画,android ——不停旋转动画

xml文件android:fromDegrees"359"android:toDegrees"0"android:duration"1000"android:repeatCount"-1"android:pivotX"50%"android:pivotY"50%"/>代码/开始旋转/public voidstartRotateAnimation(View view, …

九章算法强化班 - 课程大纲

第1章 FLAG算法面试难度提高&#xff1f;如何准备&#xff1f; 各类IT企业的面试算法难度及风格 如何解决中等难度以上的算法题 如果解决follow up问题 Two sum   1. Two sum follow up I   2. Two sum follow up II - Triangle count Kth largest element   1. 第…

JavaOne演讲者选择了您不应该错过的10个会话

确保您的会议安排中包含这些JavaOne会话 JavaOne 2015从这个星期日开始&#xff0c;数百个会话同时进行&#xff0c;因此很难筛选所有会话并选择要参加的会话。 这就是为什么我们邀请5位我们最喜欢的JavaOne发言人让我们了解他们的会议&#xff0c;并选择他们最期待的会议。 好…

谷歌发布最新版安卓Android,谷歌正式除名华为,安卓12华为首发无望,但鸿蒙将迎难顶上!...

原标题&#xff1a;谷歌正式"除名"华为&#xff0c;安卓12华为首发无望&#xff0c;但鸿蒙将迎难顶上&#xff01;前几天谷歌正式发布了新一代的安卓12系统。这也是安卓的第十二个大更新版本&#xff0c;从安卓1.0发布的2008年算起&#xff0c;安卓系统已经走过13个年…

android sd卡 格式化 rom,Android开发之获取SD卡及手机ROM容量的方法

本文实例讲述了Android获取SD卡及手机ROM容量的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这里通过一个简单的小例子&#xff0c;来获取SD卡的容量和手机ROM的容量&#xff0c;代码如下&#xff1a;package com.urovo.sdcardspace;import java.io.File;impor…

未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight

使用wpf开发时&#xff0c;在ViewModel中引用了DevExpress注册的GalaSoft.MvvmLight命名空间&#xff0c;使用其ViewModelBase&#xff0c;在View界面中绑定事件时出现错误&#xff1a; 错误 13 未知的生成错误“因为没有预加载&#xff0c;所以无法解析程序集“GalaSoft.MvvmL…

maven原型_Maven原型创建技巧

maven原型我最近需要为姜黄SOA项目创建一些Maven原型。 对于不了解的人来说&#xff0c; Maven原型是一种基于一些预先罐装的项目模板生成项目的方法。 对于当前的姜黄SOA原型&#xff0c;它将创建一个多模块Maven项目&#xff0c;其中包含Interface和Service项目以及基本的WSD…

android 副mic测试,【收藏】Android Audio Framework CTS Verifier 测试方法

This new suite of tests requires human intervention and some external hardware including a Loopback Plug, a USB reference microphone and external speakers. For devices without 3.5 mm (⅛”) headset port, the user will be able to skip the test and mark it a…

python的数与字符串

数的类型&#xff1a; >>符号整数型(int)&#xff1a;0、1、-1 >>长整型(long)&#xff1a;88888888、999999999 >>浮点型(float)&#xff1a;2.77777、3.4445544 >>布尔型(bool)&#xff1a;True、False >>复数型(complex)&#xff1a;42j、-92…