我是 Mahout 的新手,我尝试为 seq2sparse 编写自己的分析器。我使用默认版本的 CDH4:Mahout 0.7 和 Lucene 3.6。
这是我的分析器代码:
package com.analyzer;
import java.io.Reader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.LengthFilter;
import org.apache.lucene.analysis.LowerCaseFilter;
import org.apache.lucene.analysis.PorterStemFilter;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.standard.StandardTokenizer;
import org.apache.lucene.util.Version;
public class MyAnalyzer extends Analyzer {
@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
Version version = Version.LUCENE_36;
TokenStream result = new StandardTokenizer(version, reader);
result = new LowerCaseFilter(version, result);
result = new LengthFilter(result, 3, 50);
result = new StopFilter(version, result, StandardAnalyzer.STOP_WORDS_SET);
result = new PorterStemFilter(result);
return result;
}
}
我将它构建在一个 JAR 文件中并移至 $MAHOUT_HOME/lib 文件夹。当我使用以下命令检查时,我的 JAR 已正确添加到类路径:
$MAHOUT_HOME/bin/mahout classpath
但是当我从 Mahout 调用 seq2sparse 工具时:
$MAHOUT_HOME/bin/mahout seq2sparse -i input_folder -o output_folder --minDF 2 --maxDFPercent 70 --norm 1 -a com.analyzer.MyAnalyzer
我收到此错误:
Exception in thread "main" java.lang.ClassNotFoundException: com.analyzer.MyAnalyzer
如果我使用来自 Lucene 的分析器(如 org.apache.lucene.analysis.WhitespaceAnalyzer)调用,则没有错误并且工作成功完成。
如何正确添加和使用我自己的分析仪?