如何在对象内部新建一个类?

时间:2014-02-20 03:54:11

标签: scala

我正在尝试使用Nak(Scala的机器学习包)。但是,它们无法轻松访问NaiveBayes或Maximum Entropy等基本方法。我想手动完成,但我没能创建NaiveBayes类的实例。他们的部分NaiveBayes代码如下所示:

object NaiveBayes {
  class Trainer[L,T](wordSmoothing: Double=0.05, classSmoothing: Double= 0.01) extends Classifier.Trainer[L,Counter[T,Double]] {
    type MyClassifier = NaiveBayes[L,T]

    override def train(data: Iterable[Example[L,Counter[T,Double]]]) = {
      new NaiveBayes(data,wordSmoothing,classSmoothing)
    }
  }
}

我无法访问Trainer课程......我不知道为什么。完整的代码可以在这里找到:

https://github.com/scalanlp/nak/blob/master/src/main/scala/nak/classify/NaiveBayes.scala

我尝试编写如下代码:

Trainer train = new Trainer()NaiveBayes.Trainer train = new ...

它只是不起作用......

1 个答案:

答案 0 :(得分:2)

Trainer采用类型参数,因此如果无法推断它们,则必须指定它们。例如:

val trainer = new NaiveBayes.Trainer[???,???]()

其中问号应替换为LT的类型参数。根据Classifier.scala中的评论,L应该是您的标签类型,而T应该是您观察的类型。