不明なテキストを特定の長さにトリミングするためのソリューションを探しています。完全な文のみを保持します。
だから、このようなテキスト
"Were you born 1. 3. 1987 in Prague? Štěpán Jr. lives there for 3 years now! "
に変換する必要があります
"Were you born 1. 3. 1987 in Prague? "
文字数制限は 50、40 (および --find-next-sentence-ending では 20)。
私は多くのSOの質問を読みました-答えのほとんどはバリエーションでした
substr($text, 0, strrpos('.', $text) + 1);
しかし、上記の文などでは明らかに失敗します。スタンフォード テキスト パーサーまたは OpenNLP の使用を提案する人もいます。それらは本当にクールですが、通常のアプリケーションでは使用できません。テキストをトリミングするためだけに、Ruby/PHP サーバーに Java をインストールすることはありません。したがって、言語にとらわれず、表示される典型的なケースを処理できる、80/20 のソリューションを探しています。
これよりも問題のある文は考えられませんでした(次の文の先頭に日付、非ドットの文末、非ASCII文字が含まれ、「制限」文の途中に非終了のドットが含まれています)。
また、フォークして遊ぶための GIST (https://gist.github.com/4051035) も作成しました。フォークすると、ユーザーはこの問題のさまざまな解決策にクリックスルーできることが保証されるので、それを使用してください ;)この質問をコミュニティ ウィキにしますが、質問に対しては機能しないようです - 回答に対してのみです。したがって、コメントに提案/関連するSOの質問を追加してください。ありがとう。