2

単一の文字列に対するOpenNLPSentenceDetectorAPIのコードは次のとおりです。

package opennlp;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import opennlp.tools.sentdetect.SentenceDetectorME;
import opennlp.tools.sentdetect.SentenceModel;

public class SentenceDetector {

    public static void main(String[] args) throws FileNotFoundException {
        InputStream modelIn = new FileInputStream("en-sent.zip");
        SentenceModel model = null;
        try {
           model = new SentenceModel(modelIn);  
        }
        catch (IOException e) {
          e.printStackTrace();
        }
        finally {
          if (modelIn != null) {
            try {
              modelIn.close();
            }
            catch (IOException e) {
            }
          }
        }
        SentenceDetectorME sentenceDetector = new SentenceDetectorME(model);
           String sentences[] = sentenceDetector.sentDetect(" First sentence. Second sentence.");

           for(String str : sentences)
               System.out.println(str);
    }
}

今私の質問は、テキストファイル全体を渡して、単一の文字列の代わりに文の検出を実行するにはどうすればよいですか?

4

1 に答える 1

2

簡単な方法:ファイル全体を文字列として読み取り、通常の方法でパスします。次のメソッドは、ファイルの内容を文字列として読み取ります。

public String readFileToString(String pathToFile) throws Exception{
    StringBuilder strFile = new StringBuilder();
    BufferedReader reader = new BufferedReader(new FileReader(pathToFile));
    char[] buffer = new char[512];
    int num = 0;
    while((num = reader.read(buffer)) != -1){
        String current = String.valueOf(buffer, 0, num);
        strFile.append(current);
        buffer = new char[512];
    }
    reader.close();
    return strFile.toString();
}
于 2012-10-15T12:57:35.940 に答える