達成しようとしているタスクは、正規表現が適しているものとは異なるカテゴリに分類されます。
テキストから任意の質問を抽出するという問題を解決するには、いくつかの適切な正規表現だけでなく、それ以上のものが必要です。優れた自然言語処理ツールキットの検討を開始する必要があります。そしておそらく、最初に品詞のタグ付けを行います。次に、構文と文の解析を行ってから、「これは文ですか?」という質問に答える必要があります。NLP パイプラインが識別した各文を調べることによって。
この知識があれば、少なくとも、達成したいタスクはかなり難しく、不可能ではありませんが、良いパフォーマンスを得るには多くの微調整が必要になることを理解する必要があります (通常はAccuracy および Precision メトリックで測定されます)。どちらでも 100% に近い結果が得られる可能性はほとんどありませんが、優れた PoS タガーと優れたセンテンス パーサーを使用すれば、まともな結果が得られるはずです。
編集
質問に対する最近の編集に照らして、正規表現と手書きのルールでいくつかの基本的なカバレッジを得ることができるかもしれませんが、それでも多くの複雑なケースを区別することはできません. 自然言語処理ツールキット ルートは、より一般的なソリューションとして依然として好まれています。
自然言語に一致する特効薬の正規表現を考え出すのに時間をかけすぎないでください。自然言語は規則的ではないので、うまくいきません! 一部のキーワードを識別するために正規表現を使用することは問題ありませんが、それ以上は単純な手書きのルールを使用し、優れた自然言語パイプラインのルーでトークン化する方がよいでしょう..
アップデート
このタスクに真剣に取り組んでいる場合は、sharpnlp.codeplex.comを出発点としてご覧ください。C# を使用する必要がない場合、人気のあるものとしてNLTKを思い浮かべる NLP ツールキットは他にもあります。2 番目のステップとして、NLP の入門書を手に入れてください。主題は広大で本当にクールです。私が多くのことを学んだ素晴らしい本は、Jurafski と Martin によるSpeech and Language Processingです。
そして、最終的な考えとして、これが私が最低限行うことです:
- 正規化を実行します(不要なシンボルを削除し、重複します)
- 基本的な文の分割を試みます (句読点で分割:
. , ; ? !
)
- すべての文字を小文字に変換する
- すべての番号をタグに置き換えます (つまり )
- 正規化された各文に対して品詞のタグ付けを実行します
- 次に、すべての「ハウツー」の質問がテキストのどこにあるかを判断するために進むことができます。
- 場所を取得したら、それらを元のテキストにマッピングし、そこから元の「ハウツー」の質問を抽出できるはずです
幸運を!