非常に大きいAとBの2つの記事があります。Aで3つ以上の連続した単語を取得し、それらがBに表示されるかどうかを確認し、それらが表示される回数を数えます。たとえば、「本」「彼」と「彼女」がAに表示される場合、それらはBに何回表示されますか。
Bのコンテンツ全体を分割してから、Aの3つの単語すべてをStringTokenでチェックすることを考えましたが、アルゴリズムの効率についてはよくわかりません。
非常に大きいAとBの2つの記事があります。Aで3つ以上の連続した単語を取得し、それらがBに表示されるかどうかを確認し、それらが表示される回数を数えます。たとえば、「本」「彼」と「彼女」がAに表示される場合、それらはBに何回表示されますか。
Bのコンテンツ全体を分割してから、Aの3つの単語すべてをStringTokenでチェックすることを考えましたが、アルゴリズムの効率についてはよくわかりません。
ハッシュテーブルとは何かを調べ、ファイルBをスキャンして単語を1つずつ探します(大きなファイルのメモリ使用量を気にしない場合は分割できます)。見つかった各単語をハッシュテーブルに入れるか(見つからない場合)、数を増やして単語が見られる回数を取得します。
次に、スキャンするだけです。Aの上で、ローリングスライディングウィンドウを使用して、3つの単語の各セットを探します。このようにして、何も書き直さずに後でウィンドウの長さを増やすことができます。
参考までに、宿題の質問にはそのようにタグを付ける必要があります。
結果に到達するには、Bのコンテンツ全体を1回スキャン/解析する必要があることは明らかです。あなたはそれを避けることはできません。行ごとに読んでください。すべての行について、指定されたクエリ用語とその行の数を検索します。最終結果を得るには、行ごとに生成されたカウントを追加し続けます。
同じ/異なる用語のBのコンテンツに対してこのような計算を何度も実行する場合は、Bの転置インデックスを作成するのが最善の方法です。