【问题标题】:Persistence on Java CI-Bayes objectJava CI-Bayes 对象的持久性
【发布时间】:2010-12-26 22:21:02
【问题描述】:
有没有人坚持使用 CI-Bayes 的训练集?我有来自这个站点的示例代码:http://www.theserverside.com/news/thread.tss?thread_id=49773
代码如下:
FisherClassifier fc=new FisherClassifierImpl();
fc.train("The quick brown fox jumps over the lazy dog's tail","good");
fc.train("Make money fast!", "bad");
String classification=fc.getClassification("money", "unknown"); // should be "bad"
所以我需要能够将训练集存储在本地文件中。
以前有人做过吗?
【问题讨论】:
标签:
java
persistence
bayesian
【解决方案1】:
要将java Object 持久化到本地文件中,Object 必须首先实现Serializable 接口。
import java.io.Serializable;
public class MyClass implements Serializable {...
然后,您希望从哪个类中持久化此训练集,应包含如下方法:
public void persistTrainingSet(FisherClassifier fc) {
String outputFile = <path/to/output/file>;
try {
FileOutputStream fos = new FileOutputStream(outputFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(fc);
oos.close();
}
catch (IOException e) {
//handle exception
}
finally {
//do any cleaning up
}
}
【解决方案2】:
我有。在用 CI-Bayes 做了几个项目之后,我建议你去别处看看(当然这是很久以前的事了)。使用每次使用前都需要训练的推理引擎是一个非常糟糕的主意,如果你真的考虑状态管理的问题,它会很复杂(例如,你想只存储训练数据吗?或者也许是训练好的分布?链?)。
CI-Bayes 也是一种复杂的代码库。它模仿了一本关于智能的书中出现的一些 Python 代码。 Java版本的设计不是很好。它也没有使用 TDD,没有真正的 JavaDoc 可言。
也就是说,您可以很快得到一个简单的分类器。不过,长期目标是您询问的目标。