我正在制作一个小型的C#应用程序,并希望从简单的纯文本中提取标签云.有没有可以为我做的功能?
正如我所看到的,构建标签云是一个两部分过程:
首先,您需要拆分和计算您的令牌.根据文档的结构以及编写的语言,这可以像计算空格分隔的单词一样简单.然而,这是一种非常天真的方法,因为像a,of,a等的单词将具有最大的字数并且作为标签不是非常有用.我建议实现某种单词黑名单,以排除最常见和无意义的标签.
一旦你得到(标记,计数)方式的结果,你可以使用类似于以下代码的东西:
(Searches是SearchRecordEntity列表,SearchRecordEntity保存标记及其计数,SearchTagElement是具有TagCategory属性的SearchRecordEntity的子类,而ProcessedTags是保存结果的SearchTagElements列表)
double max = Searches.Max(x => (double)x.Count); ListprocessedTags = new List (); 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); }
我真的建议使用http://thetagcloud.codeplex.com/.这是一个非常干净的实现,负责标记的分组,计数和呈现.它还提供过滤功能.
看看http://sourcecodecloud.codeplex.com/