我是Apache Mahout的新手。我试图在我的环境中使用你的代码,但我遇到了问题。我知道帖子很旧,你可能不会回复我的查询。但我正在写作,因为我被卡住了。
我尝试在我的环境中配置Maven,但由于公司策略,我无法成功配置它,因此我决定手动解决依赖关系,并逐个安装所有必需的依赖项。但我无法找到最后一个图书馆,我试着在网上看了2天,但没有运气。也许有人可以帮助我。
我正在使用Eclipse STS。我确实尝试过Eclipse Mars2,但同样的问题。我安装了以下一组项目特定库。
Commons-cli-2.0.jar,Google-collection-1.0.jar,hadoop-0.20.1-core.jar,log4j-1.2.13.jar,mahout-core0.2-source.jar,mahout-core0 .3-source.jar,mahout-core0.4-job.jar,mahout-core0.7.jar,mahout-core0.8.jar,mahout-math-0.8.jar,mahout-utils-0.5.jar,slf4j -API-1.6.1.jar,slf4j-log4j12-16.1.jar,JRE系统库(JavaSE-1.8。
我为图书馆尝试了各种排列组合,希望能完成我的工作。不幸的是,它没有发生,可能你可以帮助我。
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 {
//char var1;
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" );
//var1 = text.csv;
try {
Path input = new Path( "D:\\Apache\\text.csv" );
Path output = new Path( "D:\\Apache\\output" );
TrainClassifier.trainNaiveBayes( input, 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();
}
}
}
以下是错误消息: -
线程“main”中的异常java.lang.NoSuchMethodError:org.apache.mahout.common.HadoopUtil.overwriteOutput(Lorg / apache / hadoop / fs / Path;)V
at org.apache.mahout.classifier.bayes.mapreduce.bayes.BayesDriver.runJob(BayesDriver.java:39)
at org.apache.mahout.classifier.bayes.TrainClassifier.trainNaiveBayes(TrainClassifier.java:54)
在Starter.main(Starter.java:42)
我试图在整个互联网上寻找“org.apache.mahout.common.HadoopUtil.overwriteOutput”,但我没有得到它们,有名为“org.apache.mahout.common.HadoopUtil”的库,但它不包含所需的子库。
请帮忙。