【发布时间】:2016-05-16 19:50:41
【问题描述】:
我尝试用 Java 中的 Mallet 实现一个文档分类器。我已经有一个基本包含特征值的文件。所以我不想运行整个raw text 处理管道。
我的特征文件中的一行现在看起来像这样(2 个特征,ID 和 NrOfToken,文档标签是“A”)
ID=3 NrofTokens=279.0 A
我尝试读入这个文件并将其放入这样的分类器中:
Pipe instancePipe = new SerialPipes(new Pipe[] {
new CharSequence2TokenSequence(),
new TokenSequence2FeatureSequence(),
new Target2Label(),
});
InstanceList trainData = new InstanceList(instancePipe);
InstanceList testData = new InstanceList(instancePipe);
Reader trainFileReader = new InputStreamReader(new FileInputStream(fileTrain), "UTF-8");
trainData.addThruPipe(new LineGroupIterator(trainFileReader, Pattern.compile("^\\s*$"), true));
Reader testFileReader = new InputStreamReader(new FileInputStream(fileTest), "UTF-8");
testData.addThruPipe(new LineGroupIterator(testFileReader, Pattern.compile("^\\s*$"), true));
// Create a classifier trainer, and use it to create a classifier
@SuppressWarnings("rawtypes")
ClassifierTrainer naiveBayesTrainer = new NaiveBayesTrainer();
Classifier classifier = naiveBayesTrainer.train(trainData);
目前我收到此异常:
java.lang.IllegalArgumentException: Alphabets don't match: Instance: [6, null], InstanceList: [6, 0]
at cc.mallet.types.InstanceList.add(InstanceList.java:335)
at cc.mallet.types.InstanceList.addThruPipe(InstanceList.java:267)
at
有人知道字母表为什么会坏吗?
【问题讨论】:
-
有人可以帮忙解决这个问题吗?在运行来自mallet.cs.umass.edu 的主题建模代码时,我也面临这个问题。
-
有人在 2020 年使用木槌版本 3.0.8 面临同样的问题吗?我发现它发生在极少数情况下。我也找了官方文档,但没有找到任何解决方案。