7

文の境界の検索を処理する Java ライブラリを知っている人はいますか? 私は、言語が使用できるすべての文末記号を知っているスマートな StringTokenizer 実装になると考えています。

BreakIterator での私の経験は次のとおりです。

ここで例を使用すると、次の日本語があります。

今日はパソコンを買った。高性能のマックは早い!とても快適です。

アスキーでは、次のようになります。

\ufeff\u4eca\u65e5\u306f\u30d1\u30bd\u30b3\u30f3\u3092\u8cb7\u3063\u305f\u3002\u9ad8\u6027\u80fd\u306e\u30de\u30c3\u30af\u306f\u65e9\u3044\uff01\u3068\u3066\u3082\u5feb\u9069\u3067\u3059\u3002

私が変更したサンプルの部分は次のとおりです。

  Locale currentLocale = new Locale ("ja","JP");
  BreakIterator sentenceIterator = 
     BreakIterator.getSentenceInstance(currentLocale);
  String someText = "今日はパソコンを買った。高性能のマックは早い!とても快適です。";

境界インデックスを見ると、次のように表示されます。

0|13|24|32

しかし、これらのインデックスは文末に対応していません。

4

2 に答える 2

4

国際化された BreakIterator クラスを調べたいとします。文の境界の良い出発点です。

于 2009-01-27T13:16:18.327 に答える
3

あなたが書いた:

私は、言語が使用できるすべての文末記号を知っているスマートな StringTokenizer 実装になると考えています。

ここでの基本的な問題は、文末記号が文脈に依存することです。

ジョーンズ博士はどのようにして 5 を計算したのでしょう! 再帰なし?

これは 1 つの文として認識されるはずですが、可能な文末記号で分割すると、3 つの文になります。

したがって、これは最初に考えるよりも複雑な問題です。機械学習技術を使用してアプローチできます。たとえば、 OpenNLPプロジェクト、特にSentenceDetectorMEクラスを調べることができます。

于 2009-01-27T16:13:23.137 に答える