このループを高速化する方法はありますか? 各単語がドキュメントに出現する頻度をカウントします。
_documentVectorSpace は、ドキュメントに関するさまざまな情報を含むオブジェクトのリストです。
_documentVectorSpace[i].Terms はドキュメント内の単語の配列です。
_distinctTerms は、すべてのドキュメントに含まれるすべての一意の単語の HashSet です。
Parallel.For(0, _documentVectorSpace.Count, i =>
{
int count = 0;
double[] vec = new double[_distinctTerms.Count];
foreach (string term in _distinctTerms)
{
vec[count++] = Weight(_documentVectorSpace[i].Terms, term);
}
_documentVectorSpace[i].VectorSpace = vec;
});
ここで、重みは次のように定義されます。
private float Weight(string[] document, string term)
{
return document.Where(s => s == term).Count();
}