hadoop2.5.2 mahout0.10.1 测试文本分类器

原文链接:http://blog.csdn.net/landebug/article/details/46520339



说明:本文是对下面这篇文章的一个更新,下面这篇文章环境采用的是mahout0.9 + hadoop2.2.0,本人的是mahout0.10.1+hadoop2.5.2

--------------------------------------------------------------------------

mahout0.9 + hadoop2.2 中文文本分类实战(上)链接

--------------------------------------------------------------------------

网上大多数的mahout文本分词的例子都是基于hadoop1.x+mahout0.7 或者hadoop2.x+mahout0.9,其中各种坑,着实让人头疼,经过两天的苦战,终于在hadoop2.5.2上运行成功


1、将测试数据上传到hdfs中(数据来源于炼数成金-Hadoop 应用开发实战案例第17节课程)下载地址

先看一下数据 camera computer hosehold mobile MP3每个文件夹里有若干文件,每个文件是一篇文章


上传到hdfs的digital目录中(上传要半个小时左右)

[python]  view plain copy
  1. #hadoop fs -mkdir digital  
  2. #hadoop fs -put /home/chin/digital/raw/*         digital/  


2、安装mahout0.10.1

[html]  view plain copy
  1. #wget http://mirror.bit.edu.cn/apache/mahout/0.10.1/apache-mahout-distribution-0.10.1.tar.gz  
  2. #tar -xzvf apache-mahout-distribution-0.10.1-src.tar.gz -C /opt/  
  3. #ln -s /opt/apache-mahout-distribution-0.10.1 /opt/mahout  
  4. #cd /opt/mahout/  


3、向mahout-examples-0.10.1-job.jar添加分词程序


默认的mahout是不支持中文分词的,这需要我们把分词程序弄到mahout的jar包中。

这里利用了原作者已经写好的分词程序,先把几个jar包下载下来(mmseg4j-solr-2.2.0.jar mmseg4j-core-1.9.1.jar mmseg4j-analysis-1.9.1.jar)里边包含了作者写好的分词程序,下载链接

把mahout目录下的mahout-examples-0.10.1-job.jar文件拷出来,跟上边三个jar包一起,把4个jar包用压缩工具解压,把mmseg4j-solr-2.2.0 mmseg4j-core-1.9.1 mmseg4j-analysis-1.9.1文件夹中除了META-INF,其他都中拷贝到mahout-examples-0.10.1-job,再把mahout-examples-0.10.1-job压缩成mahout-examples-0.10.1-job.zip,把后缀改一下mahout-examples-0.10.1-job.jar,把mahout目录下的mahout-examples-0.10.1-job.jar替换一下




或者下载我已经替换好了的jar包 下载地址


4、mahout操作


4.1 生成了序列化文件(sequential or mapreduce???)

    

[python]  view plain copy
  1. #mahout seqdirectory -i digital -o seq          -ow -xm sequential  



结果在seq文件夹生成了  chunk-0文件


    4.2 将序列化文件分词,变成向量文件

    

[ruby]  view plain copy
  1. #mahout seq2sparse -i seq  -o vectors -lnorm -nv -wt tfidf -a com.chenlb.mmseg4j.analysis.SimpleAnalyzer  
-a com.chenlb.mmseg4j.analysis.SimpleAnalyzer 是指定自定义的分词程序,如果你的数据是分好词的,需要改成-a org.apache.lucene.analysis.core.WhitespaceAnalyzer,更多请参考这篇文章  连接


运行完成




    4.3 划分训练集和测试集

    

[ruby]  view plain copy
  1. #mahout split -i vectors/tfidf-vectors --trainingOutput train --testOutput test --randomSelectionPct 40 --overwrite --sequenceFiles -xm sequential  


    4.4 训练模型

    

[ruby]  view plain copy
  1. #mahout trainnb  -i train -o model         -li labelindex         -ow         -c  


运行结果



把labelindex 导出看一下


    4.5 测试模型

    

[ruby]  view plain copy
  1. #mahout testnb         -i test        -m model         -l labelindex         -ow         -o testresult         -c  



好了终于跑出结果来了


问题:

我在hadoop2.2.0 + mahout0.9下在进行到4.4步,报了一个错,

java.lang.IllegalArgumentException: Wrong numLabels: 0. Must be > 0! 异常,导致进行不下去了 这篇文章,提到“生成的 labelindex 文件是错的“,确实是生成的labelindex的问题,但是没有办法解决,只好舍弃在hadoop2.2.0下测试了



参考文章:


mahout0.9 + hadoop2.2 中文文本分类实战(上)
http://my.oschina.net/u/1047640/blog/262468


Mahout 中文分类 (1)
http://blog.csdn.net/u010422304/article/details/17966281


在hadoop2.0上使用mahout1.0(-SNAPSHOT)提供的lda
http://blog.csdn.net/huilixiang/article/details/43053581

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值