标签:
1.首先在解压缩的mahout文件中可以看到core包,该包是调用mahout api必须引入的jar包,
另外,该包里的driver.classes.default.props中记录了每个命令跟调用类的映射对应关系。
1.1 打开mahout源码包(可以通过maven部署在elicpse上),分析一下testClassifier类:
1.2 main函数会用很大的篇幅来处理命令输入的参数,BayesParameters params=new BayesParameters (),
params就是用来存储这些参数的.
1.3 根据这些参数,确定运行的是线性还是并行的作业,并启动一个作业,进入bayes的driver类中
1.4 runJob的参数就是params.进入mapper
1.5 mapper中的configure函数相当于新api中的setup函数,是在map之前需要做的工作,
1.5.1首先读取driver中的params,
algorithm用来指定算法,datastore用来存储结果,根据选择的类型,new出相应对象,比如选择朴素bayes,
algorithm= new BayesAlgorithm(), datastore =new InMemoryBayesDatastore(params)
1.5.2 然后生成并初始化分类器对象,classifier =new ClassifierContext(algorithm,datastore),classifier.initialize()
之后获取默认分类defaultCategory和构成特征词数目gramSize,这样在configure函数中就建立了分类器
1.6map函数<Text key,Text value,OutputCollector<>output>,key指类别,value指分词结果
1.6.1 首先建立ngrams集合,用来存储特征集合
1.6.2 然后调用分类器的分类方法,ClassifierResult result=classifier.classifyDocument(ngrams.toArray(new String(ngrams.size())),defaultCategory)
1.6.3最终,通过result.getlabel()得到相应类别
标签:
原文地址:http://www.cnblogs.com/mlj5288/p/4446418.html