C#中的标签云

Lay*_*yla 15 c# tag-cloud

我正在制作一个小型的C#应用程序,并希望从简单的纯文本中提取标签云.有没有可以为我做的功能?

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)


小智 9

我真的建议使用http://thetagcloud.codeplex.com/.这是一个非常干净的实现,负责标记的分组,计数和呈现.它还提供过滤功能.


Nat*_*n W 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()
Run Code Online (Sandbox Code Playgroud)