逆索引を作成しようとしています。テキスト ファイルの行を読んでいます。テキスト ファイルには、各行の最初の位置にドキュメントの ID がdocId
あり、残りの行にはこのドキュメントに関するキーワードがあります。転置インデックスを作成するには、まずこのテキスト ファイルをトークン化する必要があります。私が書いた関数でそれを行い、すべての単語をベクトルに保存しました。私の唯一の不満はdocId
、ベクトルに文字列としても保存することです。必要に応じて、トークン化関数のヘッダーを次に示します。
void tokenize(string& s, char c, vector<string>& v)
ファイルをトークン化した後、すべての単語をマップに配置する関数を作成する必要があります。順序付けられていないマップを使用することを考えています。マップでは、すべての単語が 1 回表示されます。また、単語の頻度をどこかに保存する必要もあります。をマップのキーとして使用するのは良い考えだと思いましたが、テキスト ファイルには複数の単語が含まれているのに、単語を表示docId
できるのは 1 つしかないことに気付きました。docId
docId
では、どうすればこの問題を解決できるでしょうか。どこから始めればよいですか?