最近,我有一个有趣的问题要解决:如何使用自动化对不同来源的文本进行分类? 前一段时间,我读到一个有关该项目以及许多其他文本分析工作的项目– 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入门   Andri Redko {devmind}的 Andrey Redko。

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

Apache Mahout:入门相关推荐

  1. Apache Mahout 简介 通过可伸缩、商业友好的机器学习来构建智能应用程序

    在信息时代,公司和个人的成功越来越依赖于迅速有效地将大量数据转化为可操作的信息.无论是每天处理数以千计的个人电子邮件消息,还是从海量博客文章中推测用户的意图,都需要使用一些工具来组织和增强数据. 这其 ...

  2. Apache Mahout 简介

    Apache Mahout 简介 通过可伸缩.商业友好的机器学习来构建智能应用程序 当研究院和企业能获取足够的专项研究预算之后,能从数据和用户输入中学习的智能应用程序将变得更加常见.人们对机器学习技巧 ...

  3. Apache Mahout:适合所有人的可扩展机器学习框架

    原文链接:http://blog.csdn.net/gdp5211314/article/details/7173505 简介: Apache Mahout 专家 Grant Ingersoll 引领 ...

  4. Apache Mahout中推荐算法Slope one源码分析

    2019独角兽企业重金招聘Python工程师标准>>> 关于推荐引擎 如今的互联网中,无论是电子商务还是社交网络,对数据挖掘的需求都越来越大了,而推荐引擎正是数据挖掘完美体现:通过分 ...

  5. Apache Solr入门教程

    转自:http://blog.csdn.net/u011936655/article/details/51960005 Apache Solr入门教程(初学者之旅) 写在前面:本文涉及solr入门的各 ...

  6. Apache Mahout 0.9、10.1、11. CardinalityException: Required cardinality 60 but got 29

    我们可以使用Apache Mahout来快速创建高效扩展性又好的机器学习应用.Mahout结合了诸如H2O算法.Scala.Spark和Hadoop MapReduce等模块,为开发人员提供了一个构建 ...

  7. apache mahout_使用Apache Mahout创建在线推荐系统

    apache mahout 最近, 我们一直在为Yap.TV实施推荐系统:您可以在安装应用程序并转到" Just for you"标签后才能看到它的运行情况. 我们以Apache ...

  8. elastic 修改map_Amazon Elastic Map Reduce使用Apache Mahout计算建议

    elastic 修改map Apache Mahout是一个"可扩展的机器学习库",其中包括各种单节点和分布式推荐算法的实现. 在上一篇博客文章中, 我描述了如何在单个节点上实现在 ...

  9. 使用Apache Mahout创建在线推荐系统

    最近, 我们一直在为Yap.TV实施推荐系统:在安装应用程序并转到" Just for you"选项卡后,您可以看到它的运行情况. 我们以Apache Mahout为基础进行建议. ...

最新文章

  1. 神经网络的收敛标准有最优值吗?
  2. 校园计算机故障解决方论文法,计算机故障与处理-计算机专业毕业论文.pdf
  3. Acer 4750 安装黑苹果_黑苹果系统安装通用教程图文版
  4. Hadoop精华问答 | 关于Hadoop核心技术的精华问答
  5. vue 页面url参数_Vue下URL地址栏参数改变却不能刷新界面
  6. grootJsAPI文档
  7. 用SecureCRT连接采用NAT方式上网的虚拟机
  8. oracle分析函数汇总
  9. des加密 lua_lua des加密解密 各种加密解密函数 - 奇闻 - 91文库
  10. bochs运行xp_bochs xp镜像完整免费版
  11. Markdown入门指南【我为什么要推荐你学习Markdown?】
  12. 2019NIvidia ASIC PD笔试题概念解析
  13. 工控安全都有哪些风险
  14. 【云和恩墨业务介绍】之数据库性能优化服务
  15. GPUImage滤镜
  16. C# 获取某个时间的0点0分和23点59分59秒
  17. 苹果开发者账号官方翻译篇-账号简介
  18. No compiler is provided in this environment. Perhaps you are run
  19. CentOS Linux虚拟机内存耗费太大
  20. 达人评测:i5-1135g7相当于什么水平-i5-1135g7是低压吗

热门文章

  1. 以Linux系统(Ubuntu)开发生活(一)
  2. fork/join和线程池_从fork-join /线程池调用的Singelton bean中的访问spring请求范围缓存...
  3. web安全测试视频课程专题_有关有效企业测试的视频课程
  4. jquery 延迟加载代码_延迟加载是一种代码气味
  5. Java:如何创建轻量级数据库微服务
  6. midlet_如何在J2ME中创建MIDlet
  7. junit:junit_JUnit ExpectedException规则:超越基础
  8. 带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云
  9. 实现threadlocal_ThreadLocal如何实现?
  10. JVM体系结构:JVM和JVM体系结构概述