C#中的标签云

我正在制作一个小型的C#应用程序,并希望从简单的纯文本中提取标签云 。 有function可以帮我吗?

正如我所看到的,构建标签云是一个两部分过程:

首先,您需要拆分和计算您的令牌。 根据文档的结构以及编写的语言,这可以像计算空格分隔的单词一样简单。 然而,这是一种非常天真的方法,因为像a,of,a等的单词将具有最大的字数并且作为标签不是非常有用。 我建议实现某种单词黑名单,以排除最常见和无意义的标签。

一旦得到(标记,计数)方式的结果,您可以使用类似于以下代码的东西:

(Searches是SearchRecordEntity列表,SearchRecordEntity保存标记及其计数,SearchTagElement是具有TagCategory属性的SearchRecordEntity的子类,而ProcessedTags是保存结果的SearchTagElements列表)

double max = Searches.Max(x => (double)x.Count); List processedTags = 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/ 。 这是一个非常干净的实现,负责标记的分组,计数和呈现。 它还提供过滤function。

这是一个ASP.NET Cloud COntrol ,它可能至少可以帮助您入门,包括完整的源代码。

看看http://sourcecodecloud.codeplex.com/ 在此处输入图像描述

您可能想看一下CodeProject上的WordCloud项目。 它包括430个停止词(如, ana等),并使用Porter词干算法,它将词语缩减到它们的根目录,以便“词干词干词干”全部计为同一个词的1次出现。

这一切都在C#中 – 你唯一要做的就是修改它来输出HTML而不是它创建的可视化。

看看这个。 它对我有用。 在名为WebExample的Examples文件夹下有一个项目,可帮助您解决此问题。 https://github.com/chrisdavies/Sparc.TagCloud

我不确定这是否正是您所寻找的,但它可能会帮助您开始:

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() 

您可以在某种集合或数据库表中存储类别及其具有的项目数量。

由此,您可以获得某个类别的计数并具有一定的界限。 所以你的参数是类别,你的返回值是一个计数。

因此,如果计数> 10且<20,则将.CSS样式应用于具有特定大小的链接。

您可以将这些计数存储为集合中的键,然后获取键与返回值匹配的值(如上所述)。

我没有得到这个过程的源代码,但你也找不到一个简单的函数来为你做这一切。 一个控件,是的(如上所述)。

这是一种非常传统的方法,也是我从杂志教程等中看到的标准方法,也是我想到的第一种方法(不一定是最好的方法)。

看看这个算法的答案:

实现像Wordle这样的文字云的算法

答案中提到的“DisOrganizer”可以满足您的目的。 只需稍加改动,您就可以让这个“Disorganizer”按照您想要的方式提供图像。 PS:代码是用C# https://github.com/chandru9279/zasz.me/blob/master/zasz.me/编写的

Zoomable TagCloud Generator从给定的源(文本文件和其他源)中提取关键字,并将TagCloud显示为缩放用户界面(ZUI)