2013-08-02 3 views
4

Clojure 프로젝트에서 스칼라 라이브러리를 사용하려고하지만 일부 문제가 발생했습니다. Clojure에서 다음 스칼라 코드를 어떻게 구현할 것인가?스칼라 개체 및 특성에 대한 Clojure interop

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은 클래스입니다.

+0

Scala가 Clojure와 얼마나 잘 어울리는 지 궁금해해야합니다. 라이브러리 상호 운용성 관점에서. 또한 ... 여러분의 예에서 여러 가지 정의 된 이름에 대해 좀 더 자세히 설명해야한다고 생각합니다. 매우 희소합니다. –

+0

@RandallSchulz 관련 게시물 유형을보다 구체적으로 업데이트했습니다. – calstad

+0

아마도이 질문은 크게 단순화 될 수 있습니까? 용어 ('범주 형', '[텐서] (http://en.wikipedia.org/wiki/Tensor)', '도메인'등)은 질문과 아무 관련이 없더라도 사람들을 겁주고 있습니다. . –

답변

0

클로저로 FACTORIE을 사용하려는 것 같습니다. Clojure를 좋아하고 FACTORIE를 만드는 실험실에서 일하는 사람으로서 나는 이것을 추천하지 않을 것입니다. FACTORIE의 코드베이스는 매우 긴급한 스타일로 작성되어 있으며 가변적 인 상태로 채워져 있습니다. 내가 클로저에있는 FACTORIE 오브젝트에 손을 대면 나는 매우 혼란 스럽다. FACTORIE는 또한 컴파일 된 자바 (clojure와 scala가 상호 작용해야하는 레벨)로 잘 변환되지 않는 방식으로 스칼라 기능을 적극적으로 사용합니다.

큰 클로저 코드 기반이 있고 선형 체인 CRF를 구현해야한다면 (ChainModel을 기반으로 함) MALLET을 권장합니다. 그것은 순수한 자바이고 동일한 연구실에서 개발되었습니다.