4

我正在尝试在 Clojure 项目中使用 Scala 库,但遇到了一些问题。您将如何在 Clojure 中实现以下 Scala 代码?

object LabelDomain extends CategoricalDomain[String]
class Label(val token: Token, s: String) extends LabeledCategoricalVariable(s) {
  def domain = LabelDomain
}

object FeaturesDomain extends CategoricalDimensionTensorDomain[String]
class Features(val token: Token) extends BinaryFeatureVectorVariable[String] {
  def domain = FeaturesDomain
}

object model extends ChainModel[Label,  Features, Token](
      LabelDomain,
      FeaturesDomain,
      l => l.token.attr[Features],
      l => l.token,
      t => t.attr[Label])

CategoricalDomain并且CategoricalDimensionTensorDomain是特征。 LabeledCategoricalVariable并且BinaryFeatureVectorVariable是抽象类。 ChainModel是一类。

4

1 回答 1

0

看起来您正在尝试将FACTORIE与 clojure 一起使用。作为一个既喜欢 clojure 又在构建 FACTORIE 的实验室工作的人,我不会推荐这个。FACTORIE 的代码库以非常命令式的风格编写,并且充满了可变状态。如果我在 clojure 中使用 FACTORIE 对象,我会发现它非常令人迷惑。FACTORIE 还积极使用 scala 功能,这些功能无法很好地转化为已编译的 java(这是 clojure 和 scala 必须交互的级别)。

如果您已经有一个大型 clojure 代码库并且需要一个线性链 CRF 的良好实现(基于您对ChainModel上面的使用),我建议您查看MALLET。它是纯java,由同一个实验室开发。

于 2013-12-14T18:57:50.990 回答