巨大なテキストファイル(使用可能なRAMメモリよりも大きい)があります。すべての単語の頻度をカウントし、単語と頻度カウントを新しいファイルに出力する必要があります。結果は、頻度カウントの降順で並べ替える必要があります。
私のアプローチ:
- 指定されたファイルを並べ替える-外部並べ替え
- 各単語の頻度を順番にカウントし、カウントを別のファイルに(単語と一緒に)保存します
- 頻度カウントに基づいて出力ファイルをソートします-外部ソート。
それを行うためのより良いアプローチがあるかどうか知りたいです。ディスクベースのハッシュテーブルについて聞いたことがありますか?またはB+木ですが、これまで試したことはありません。
注:SOで同様の質問が行われるのを見たことがありますが、メモリよりも大きいデータの問題に対処する必要はありません。
編集:コメントに基づいて、実際の辞書は今日のコンピューターの記憶に収まるはずであることに同意しました。しかし、記憶に収まらないほど巨大な単語の架空の辞書を見てみましょう。