我正在制作一个小型C#应用程序,并想从简单的纯文本中提取标签云。有没有可以为我做到这一点的功能?
10 回答
在我看来,构建标签云是一个两部分的过程:
首先,您需要拆分并计算您的代币。根据文档的结构以及编写的语言,这可能就像计算空格分隔的单词一样简单。然而,这是一种非常幼稚的方法,因为像 the、of、a 等这样的词将具有最大的字数,并且作为标签不是很有用。我建议实施某种单词黑名单,以排除最常见和无意义的标签。
以 (tag, count) 方式获得结果后,您可以使用类似于以下代码的内容:
(Searches 是 SearchRecordEntity 的列表,SearchRecordEntity 保存标签及其计数,SearchTagElement 是 SearchRecordEntity 的具有 TagCategory 属性的子类,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);
}
我真的会推荐使用http://thetagcloud.codeplex.com/。这是一个非常干净的实现,负责标签的分组、计数和渲染。它还提供过滤功能。
这是一个ASP.NET Cloud 控件,它至少可以帮助您入门,包括完整的源代码。
你可能想看看WordCloud,CodeProject 上的一个项目。它包括 430 个停止词(如the
、an
、a
等)并使用 Porter 词干算法,该算法将词减少到它们的词根,以便“词干词干”都被视为同一词的 1 次出现。
这一切都在 C# 中 - 你唯一需要做的就是修改它以输出 HTML 而不是它创建的可视化。
看看这个。它对我有用。示例文件夹下有一个名为 WebExample 的项目,可以帮助您解决此问题。 https://github.com/chrisdavies/Sparc.TagCloud
看看这个算法的答案:
答案中提到的“DisOrganizer”可以满足您的目的。稍作改动,您就可以让这个“Disorganizer”以您想要的方式提供图像。PS:代码是用C#写的https://github.com/chandru9279/zasz.me/blob/master/zasz.me/
您可以在某种集合或数据库表中存储一个类别及其拥有的项目数量。
从中,您可以获得某个类别的计数并具有一定的界限。所以你的参数是类别,你的返回值是一个计数。
因此,如果计数 >10 & <20,则将 .CSS 样式应用于具有一定大小的链接。
您可以将这些计数作为键存储在集合中,然后获取键与您的返回值匹配的值(如上所述)。
我手头没有这个过程的源代码,但是你也找不到一个简单的函数来为你做这一切。一个控件,是的(如上所述)。
这是一种非常传统的方法,也是我在杂志教程等中看到的标准方法,也是我想到的第一种方法(不一定是最好的)。
我不确定这是否正是您要寻找的,但它可能会帮助您入门:
计算词频的 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()
从给定源(文本文件和其他源)中提取关键字并将 TagCloud 显示为缩放用户界面 (ZUI) 的可缩放标签云生成器