我正在制作一个小型 C#应用程序,并希望从简单的纯文本中提取标记云。有没有能为我做到这一点的功能?
答案 0 :(得分: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);
}
答案 1 :(得分:9)
我真的建议使用http://thetagcloud.codeplex.com/。这是一个非常干净的实现,负责标记的分组,计数和呈现。它还提供过滤功能。
答案 2 :(得分:5)
答案 3 :(得分:4)
这是一个ASP.NET Cloud COntrol,可能会帮助您至少开始使用,包括完整的来源。
答案 4 :(得分:3)
您可能需要查看CodeProject上的WordCloud项目。它包括430个单词(如the
,an
,a
等),并使用Porter词干算法,将单词缩减为根,以便“词干词干”全部计为同一个单词的一次出现。
一切都在C#中 - 你唯一要做的就是修改它来输出HTML而不是它创建的可视化。
答案 5 :(得分:1)
查看算法的答案:
Algorithm to implement a word cloud like Wordle
答案中提到的“DisOrganizer”可以满足您的目的。只需稍加改动,您就可以让这个“Disorganizer”以您想要的方式提供图像。 PS:代码是用C#https://github.com/chandru9279/zasz.me/blob/master/zasz.me/
编写的答案 6 :(得分:1)
看看这个。它对我有用。在名为WebExample的Examples文件夹下有一个项目,它可以帮助您解决这个问题。 https://github.com/chrisdavies/Sparc.TagCloud
答案 7 :(得分:0)
我不确定这是不是你想要的,但它可能会帮助你开始:
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()
答案 8 :(得分:0)
您可以在某种集合或数据库表中存储类别及其拥有的项目数量。
由此,您可以获得某个类别的计数并具有一定的界限。所以你的参数是类别,你的返回值是一个计数。
因此,如果计数> 10&amp; &lt; 20,然后将.CSS样式应用于具有特定大小的链接。
您可以将这些计数存储为集合中的键,然后获取键与返回值匹配的值(如上所述)。
我没有手头有这个过程的源代码,但你也找不到一个简单的功能来为你做这一切。一个控件,是(如上所述)。
这是一种非常传统的方法,也是我从杂志教程等中看到的标准方法,也是我想到的第一种方法(不一定是最好的方法)。
答案 9 :(得分:-1)
Zoomable TagCloud Generator从给定来源(文本文件和其他来源)中提取关键字并将TagCloud显示为缩放用户界面(ZUI)