gpt4 book ai didi

java - Mallet:字母不匹配异常

转载 作者:行者123 更新时间:2023-12-05 07:49:31 24 4
gpt4 key购买 nike

我尝试使用 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

有人知道 Alphabet 为什么会崩溃吗?

最佳答案

这并不是一个真正的答案,但我发现 Mallet 中的异常(exception)情况到目前为止并没有提供太多信息。我也遇到了这个错误,更改了解析数据行的正则表达式并在末尾删除了一个空行使其消失了。

即这部分的正则表达式

CsvIterator reader = new CsvIterator(new FileReader(tempTrainPath), "(\\w+)\\s+(\\S+)\\s+(.*)", 3, 2, 1);
testInstances.addThruPipe(reader);

在一整天的调试结束后,我实在是太恼火了,无法确定这两者中的哪一个才是真正的罪魁祸首。但也许此信息可以帮助其他人。

关于java - Mallet:字母不匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com