私は、ドクショナリー(freq)の各エントリのドキュメント頻度をカウントする次の手順を持っています
foreach (var termIndex in freq.Select(entry => GetTermIndex(entry.Key)))
{
_docFreq[i][termIndex]++;
}
また、用語インデックスを取得するための手順
rivate int GetTermIndex(string term)
{
int i;
if (_wordsIndex.TryGetValue(term, out i))
return i;
else
return 0;
}
ここで、すべての用語は別の辞書(_wordsIndex)で索引付けされます。
上記の手順に基づいて、freqのentry.Keyが存在しない場合、GetTermIndexは0を返し、それが_docFreq(_docFreq [i] [0])をカウントアップします。これが問題です。だから、どうすればentry.Keyが存在しないときにカウントを避けることができますか?私は次のようなことをしようとしました
rivate int GetTermIndex(string term)
{
int i;
if (_wordsIndex.TryGetValue(term, out i))
return i;
else
return -1;
}
ただし、もちろん、_docFreq [i] [-1]のインデックスがないため、「インデックスは配列の境界外にありました」というエラーが表示されました。
何か助けてもらえますか?どうもありがとう