你知道如何让这个循环更快吗?它计算每个单词在文档中出现的频率。
_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();
}