ほとんどのセンテンス スプリッターは、テキスト ストリームを正しい位置で分割できます。
テキストが文であるかどうかを判断するモデルを探しています。
簡単な解決策:パーサー(たとえば、無料でJavaのStanfordパーサーですが、多くのオプションがあります)を使用して文を解析します。パーサーが解析ツリーを返す場合(つまり、適切な構造が見つかった場合)、それを文と呼びます。そうでない場合は、そうではないと言います。このアプローチでは、余分な労力は必要ありません。
注意点は、その性質上、統計パーサーは、実際には文法的でない文の「最良の推測」解析を返す可能性があるということです。したがって、このスキームでは、非文法的な文が「ok」と表示される可能性があります。
一方、システムに応じて適切な文法であるかどうかについて非常に具体的にしたい場合は、独自の文脈自由文法(CFG)を作成し、CFGベースのパーサーを使用して文を解析できます。 (1つを見つけるか、CKYアルゴリズムなどを実装できます)。これにより、文が指定した文法仕様を満たしているかどうかが正確にわかります。
もちろん、この質問は、多くの言語学者があなたを争うであろう「文であるとはどういう意味か」という危険な主題に触れています。また、「無色の緑のアイデアは猛烈に眠る」などの意味ではないように思われる文法的な文の問題や、その他の無数の意味上の問題を回避します。