1

私はScala/Javaの初心者なので、これが比較的簡単な解決策である場合は申し訳ありませんが、外部ファイルのモデル(Apache Open NLPモデル)にアクセスしようとしていますが、どこが間違っているのかわかりません。これがJavaでそれを行う方法であり、これが私が試していることです:

import java.io._

val nlpModelPath = new java.io.File( "." ).getCanonicalPath + "/lib/models/en-sent.bin"
val modelIn: InputStream = new FileInputStream(nlpModelPath)

これは正常に機能しますが、そのバイナリファイルのモデルに基づいてオブジェクトをインスタンス化しようとすると失敗します。

val sentenceModel = new modelIn.SentenceModel // type SentenceModel is not a member of java.io.InputStream
val sentenceModel = new modelIn("SentenceModel") // not found: type modelIn

DataInputStreamも試しました。

val file = new File(nlpModelPath)
val dis = new DataInputStream(file)
val sentenceModel = dis.SentenceModel() // value SentenceModel is not a member of java.io.DataInputStream

何が欠けているのかわかりません-おそらく、Streamをメソッドをプルできるバイナリオブジェクトに変換するためのメソッドですか?ポインタをありがとうございます。

4

1 に答える 1

7

問題は、間違った構文を使用していることです(個人的には使用しないでください。ただし、JavaやScalaをしばらく使い続ける予定がある場合は、初心者向けのJavaの本や、チュートリアルを最初に読んでみませんか? )。

Javaで書くコード

SentenceModel model = new SentenceModel(modelIn);

Scalaでも同様に見えます:

val model: SentenceModel = new SentenceModel(modelIn)
// or just 
val model = new SentenceModel(modelIn)

この構文で得た問題は、SentenceModelの定義をインポートするのを忘れたため、コンパイラーがSentenceModelとは何かを理解できないことです。

追加

import opennlp.tools.sentdetect.SentenceModel

.scalaファイルの先頭にあり、これで修正されます。

于 2012-12-24T00:52:29.223 に答える