Облако тегов в C#

15
задан Linger 19 July 2012 в 03:31
поделиться

6 ответов

Здание облака тегов, поскольку я вижу его, два процесса части:

Первый, необходимо разделить и считать маркеры. В зависимости от того, как документ структурирован, а также язык, в котором он записан, это могло быть столь же легко как подсчет разделенных пробелом слов. Однако это - очень наивный подход, как слова как, a, и т.д.... будет иметь самый большой подсчет слов и не очень полезно как теги. Я предложил бы реализовать своего рода черный список слова для исключения наиболее распространенных и бессмысленных тегов.

, После того как у Вас есть результат в (тег, количество) путь, Вы могли использовать что-то подобное следующему коду:

(Поиски список 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);
}
12
ответ дан 1 December 2019 в 01:39
поделиться

Вот Облачное Управление ASP.NET , который мог бы помочь Вам, по крайней мере, начать, полный включенный источник.

4
ответ дан 1 December 2019 в 01:39
поделиться

Можно хотеть смотреть на WordCloud, проект на CodeProject. Это включает 430 слов остановок (как the, an, a, и т.д.) и использует алгоритм стемминга Портера, который уменьшает слова до их корня для того, так, чтобы "остановленная основа стемминга" все считалась как 1 возникновение того же слова.

Это - все в C# - единственная вещь, необходимо было бы сделать это, изменяют его для вывода HTML вместо визуализации, которую это создает.

3
ответ дан 1 December 2019 в 01:39
поделиться

Я не уверен, точно ли это, что Ваш поиск, но это может помочь Вам начать:

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()
0
ответ дан 1 December 2019 в 01:39
поделиться

Вы могли сохранить категорию и количество объектов, которые оно имеет в своего рода наборе или таблице базы данных.

, От которого, можно получить счет для определенной категории и иметь определенные границы. Таким образом, Ваш параметр является категорией, и Ваше возвращаемое значение является количеством.

Поэтому, если количество> 10 & < 20, затем примените стиль.CSS к ссылке, которая будет иметь определенный размер.

можно сохранить эти количества как ключи в наборе и затем получить значение, где ключ соответствует возвращаемому значению (как я упомянул выше).

у меня нет исходного кода под рукой для этого процесса, но Вы не найдете, что простая функция делает все это для Вас также. Управление, да (как выше).

Это - очень стандартный подход и стандартный способ сделать его от того, что я видел в учебных руководствах по журналу, и т.д., и первом подходе, о котором я думал бы (не обязательно лучшее).

0
ответ дан 1 December 2019 в 01:39
поделиться

Я бы очень рекомендовал использовать http://thetagcloud.codeplex.com/ . Это очень чистая реализация, которая заботится о группировке, подсчете и отображении тегов. Он также предоставляет возможности фильтрации.

9
ответ дан 1 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: