scala - 用于 Scala 对象和特征的 Clojure 互操作

标签 scala clojure clojure-java-interop

我正在尝试在 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])
CategoricalDomainCategoricalDimensionTensorDomain是特质。LabeledCategoricalVariableBinaryFeatureVectorVariable是抽象类。ChainModel是一个类。

最佳答案

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

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

关于scala - 用于 Scala 对象和特征的 Clojure 互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18016942/

相关文章:

Clojure 中的动态 let ?

clojure - 将抽象/空变量传递给函数 Clojure

java - 从 Java 调用 clojure (Clojure Interop)

java - 从 Scala 实现具有递归类型和边界的 Java 接口(interface)

scala - 执行条件转换的惯用方法

mysql - Scala中从数据库获取数据写入Json格式

Scala - Spark sql 结构上的行模式匹配

在 Clojure 中调试?

Clojure命名空间: method to see defined objects?

clojure - 无法理解 :state in Clojure