设为首页 收藏本站
查看: 1551|回复: 0

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

[复制链接]

尚未签到

发表于 2015-11-11 11:06:37 | 显示全部楼层 |阅读模式
  说明:本文是对下面这篇文章的一个更新,下面这篇文章环境采用的是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每个文件夹里有若干文件,每个文件是一篇文章
   DSC0000.jpg


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

#hadoop fs -mkdir digital
#hadoop fs -put /home/chin/digital/raw/*         digital/
  
   DSC0001.jpg


  2、安装mahout0.10.1
  

#wget http://mirror.bit.edu.cn/apache/mahout/0.10.1/apache-mahout-distribution-0.10.1.tar.gz
#tar -xzvf apache-mahout-distribution-0.10.1-src.tar.gz -C /opt/
#ln -s /opt/apache-mahout-distribution-0.10.1 /opt/mahout
#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替换一下
  

DSC0002.jpg


DSC0003.jpg


  或者下载我已经替换好了的jar包 下载地址
  
  4、mahout操作


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

#mahout seqdirectory -i digital -o seq          -ow -xm sequential
  
   DSC0004.jpg


   DSC0005.jpg


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

   DSC0006.jpg


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


     

#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,更多请参考这篇文章 连接
  
   DSC0007.jpg


  运行完成
   DSC0008.jpg


   DSC0009.jpg


   DSC00010.jpg


      4.3 划分训练集和测试集


     

#mahout split -i vectors/tfidf-vectors --trainingOutput train --testOutput test --randomSelectionPct 40 --overwrite --sequenceFiles -xm sequential


DSC00011.jpg   
   DSC00012.jpg


      4.4 训练模型


     

#mahout trainnb  -i train -o model         -li labelindex         -ow         -c
  
   DSC00013.jpg


  运行结果
   DSC00014.jpg


   DSC00015.jpg


  把labelindex 导出看一下
   DSC00016.jpg


      4.5 测试模型


     

#mahout testnb         -i test        -m model         -l labelindex         -ow         -o testresult         -c
  
   DSC00017.jpg


DSC00018.jpg


  好了终于跑出结果来了
  


  问题:
  我在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.iyunv.com/u010422304/article/details/17966281





在hadoop2.0上使用mahout1.0(-SNAPSHOT)提供的lda

http://blog.iyunv.com/huilixiang/article/details/43053581




  


  



版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137830-1-1.html 上篇帖子: 停止hadoop2.2.0时提示no namenode to stop 下篇帖子: eclipse配置hadoop mapreduce开发环境
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表