場合によっては、問題を単純化しすぎたり、一部のライブラリにすでに存在する機能を実装するために多大な労力を費やしたりする可能性があります。したがって、これは直接的な答えではなく、この問題に取り組む際にどのような道をたどるべきかについての提案になります。
実装したいプロセスは情報検索と呼ばれます。それは非常に広範で複雑ですが、幸いにもこの分野で多くの研究があります。その一部は、単語のngramを抽出することです(ngramは、連続する文字または単語のシーケンスのセットです)。
あなたが先に考えるべきいくつかの追加の問題をあなたに見せましょう:
- 単語の文字の大文字化は重要ですか?
- ドットは、文の終わりを示すために使用したい唯一の記号ですか?
- ストップワードを除外しますか?ストップワードは、「a」、「the」、「I」、「my」などのフレーズに含めたくない単語です。
- 言葉を止めたいですか?単語を元の形式からルート形式に変換します。たとえば、複数形から単数形に変換します。バスケットボール->バスケットボール
そして、HTMLから純粋なテキストを抽出するために:
- ページに表示されているテキストのみを抽出しますか?
- ヒントも抽出しますか?(画像の上にマウスを置いたときに表示されるもののように)
- その他の非表示テキスト(メタタグなど)
原材料から情報を検索して抽出するライブラリがあります。「原材料」とは、検索エンジンがドキュメントにインデックスを付けるために、ドキュメント(html、doc、pdf、画像など)を処理し、テキストに変換する必要があることを意味します(たとえば、フレーズを抽出します)。ドキュメントのインデックスが作成されると、検索できます。.NET用のそのようなライブラリの1つは、Lucene.NETです。さまざまなステマー、アナライザー、フィルターをサポートします。
よくわかりませんが、htmlからテキストを抽出するためのライブラリもあると思います。
基本的に、あなたのアプローチは、それほど小さくないエラーレベルが許容できるいくつかのより単純なシナリオで機能する可能性があります。私は最近、情報検索に興味を持ち、それが本当に複雑で興味深いことに気づきました。目標によっては、このトピックを研究することでメリットが得られる場合があります。ここには、stackoverflowやその他のインターネットに関する多くの情報があります。
そして、この方法を選択した場合、Lucene.NETよりもLucene(元のLucene JAVAバージョン、Lucene.NETは.NETへの移植)に関する情報がはるかに多くなります。したがって、Lucene.NETの回答が見つからない場合は、Luceneのディスカッションをすぐに検索してください。