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

голоса
13

Я делаю небольшой C # приложение , и хотел бы извлечь облако тегов из простого обычного текста. Есть функция , которая может сделать это для меня?

Задан 10/12/2008 в 01:34
источник пользователем
На других языках...                            


10 ответов

голоса
11

Создание облака тегов, как я понимаю, процесс две части:

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

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

(Поисковые запросы список 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);
}
Ответил 10/12/2008 в 01:54
источник пользователем

голоса
9

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

Ответил 10/06/2009 в 13:10
источник пользователем

голоса
4

Вот ASP.NET Cloud Control , которая может помочь вам , по крайней мере начать, включен полный источник.

Ответил 10/12/2008 в 01:47
источник пользователем

голоса
3

Посмотрите на http://sourcecodecloud.codeplex.com/ введите описание изображения здесь

Ответил 08/02/2012 в 15:03
источник пользователем

голоса
3

Вы можете взглянуть на Wordcloud , проект по CodeProject. Она включает в себя 430 останавливают слова (например the, an, aи т.д.) и использует алгоритм , вытекающий Porter, что уменьшает их слова корня , так что для «стеблей , вытекающий стебель» все считается как 1 вхождением того же словом.

Это все в C # - единственное, что вы должны сделать, это изменить его для вывода HTML вместо визуализации он создает.

Ответил 10/12/2008 в 02:21
источник пользователем

голоса
0

Взгляните на это. Он работал для меня. Существует проект под Примеры папку с именем WebExample , который поможет вам в решении этого. https://github.com/chrisdavies/Sparc.TagCloud

Ответил 21/08/2013 в 12:21
источник пользователем

голоса
0

Посмотрите на этот ответ для алгоритма:

Алгоритм реализации облако слов, как Wordle

«Дезорганизатор» упоминается в ответах может служить вашей цели. С небольшим изменением, вы можете позволить этому «дезорганизатор» служить изображение, как вы хотели. PS: код написан на C # https://github.com/chandru9279/zasz.me/blob/master/zasz.me/

Ответил 19/06/2012 в 13:18
источник пользователем

голоса
0

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

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

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

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

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

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

Ответил 10/12/2008 в 02:17
источник пользователем

голоса
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()
Ответил 10/12/2008 в 01:44
источник пользователем

голоса
-1

TagCloud Генератор Масштабируемого , который извлекает ключевые слова из данного источника (текстового файла и из других источников) и отображает TagCloud как Zooming User Interface (ZUI)

Ответил 13/06/2012 в 20:52
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more