Ram*_*eza 12
正如我所看到的,构建标签云是一个两部分过程:
首先,您需要拆分和计算您的令牌.根据文档的结构以及编写的语言,这可以像计算空格分隔的单词一样简单.然而,这是一种非常天真的方法,因为像a,of,a等的单词将具有最大的字数并且作为标签不是非常有用.我建议实现某种单词黑名单,以排除最常见和无意义的标签.
一旦你得到(标记,计数)方式的结果,你可以使用类似于以下代码的东西:
(Searches是SearchRecordEntity列表,SearchRecordEntity保存标记及其计数,SearchTagElement是具有TagCategory属性的SearchRecordEntity的子类,而ProcessedTags是保存结果的SearchTagElements列表)
double max = Searches.Max(x => (double)x.Count);
List<SearchTagElement> processedTags = new List<SearchTagElement>();
foreach (SearchRecordEntity sd in Searches)
{
var element = new SearchTagElement();
double count = (double)sd.Count;
double percent = (count / max) * 100;
if (percent < 20)
{
element.TagCategory = "smallestTag";
}
else if (percent < 40)
{
element.TagCategory = "smallTag";
}
else if (percent < 60)
{
element.TagCategory = "mediumTag";
}
else if (percent < 80)
{
element.TagCategory = "largeTag";
}
else
{
element.TagCategory = "largestTag";
}
processedTags.Add(element);
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否正是您所寻找的,但它可能会帮助您开始:
计算词频的 LINQ(在 VB 中,但我现在正在转换为 C#)
Dim Words = "Hello World ))))) This is a test Hello World"
Dim CountTheWords = From str In Words.Split(" ") _
Where Char.IsLetter(str) _
Group By str Into Count()
Run Code Online (Sandbox Code Playgroud)