Облако тегов в С#
Я делаю небольшое приложение С# и хотел бы извлечь облако тегов из простого простого текста. Есть ли функция, которая может это сделать для меня?
Ответы
Ответ 1
Построение облака тегов - это, как я вижу, процесс из двух частей:
Во-первых, вам нужно разделить и подсчитать токены. В зависимости от того, как структурирован документ, а также языка, на котором он написан, это может быть так же просто, как подсчет слов, разделенных пробелом. Однако это очень наивный подход, поскольку слова типа a, a и т.д. Будут иметь наибольшее количество слов и не очень полезны в качестве тегов. Я бы предложил реализовать какой-то черный список слов, чтобы исключить самые распространенные и бессмысленные теги.
Как только у вас есть результат в методе (tag, count), вы можете использовать что-то похожее на следующий код:
(Поиск - это список SearchRecordEntity, SearchRecordEntity содержит тег и его счетчик, SearchTagElement - это подкласс SearchRecordEntity, который имеет атрибут TagCategory, а ProcessedTags - это List of 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);
}
Ответ 2
Я бы рекомендовал использовать http://thetagcloud.codeplex.com/. Это очень чистая реализация, которая заботится о группировке, подсчете и рендеринге тегов. Он также предоставляет возможности фильтрации.
Ответ 3
Вот ASP.NET Cloud COntrol, который может помочь вам хотя бы начать работу, включая полный источник.
Ответ 4
Вы можете посмотреть WordCloud, проект CodeProject. Он включает в себя 430 слов остановки (например, the
, an
, a
и т.д.) И использует алгоритм, основанный на использовании Porter, который сводит слова к их корню, так что "стебель стебля стебля" считается одним из одно и то же слово.
Все это в С# - единственное, что вам нужно было бы сделать, это изменить его для вывода HTML вместо создаваемой визуализации.
Ответ 5
Взгляните на http://sourcecodecloud.codeplex.com/
![enter image description here]()
Ответ 6
Я не уверен, что это именно то, что вы ищете, но это может помочь вам начать:
LINQ, который подсчитывает частоту слов (в VB, но я сейчас конвертирую в С#)
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()
Ответ 7
Вы можете сохранить категорию и количество элементов, которые она имеет в какой-либо коллекции или таблице базы данных.
Из этого вы можете получить счетчик для определенной категории и иметь определенные границы. Таким образом, ваш параметр является категорией, а ваше возвращаемое значение - счетчиком.
Итак, если счетчик > 10 и < 20, то примените стиль .CSS к ссылке, которая будет иметь определенный размер.
Вы можете сохранить эти счета как ключи в коллекции, а затем получить значение, в котором ключ соответствует вашему возвращаемому значению (как я уже упоминал выше).
У меня нет исходного кода для этого процесса, но вы не найдете простой функции, чтобы сделать все это для вас. Элемент управления, да (как указано выше).
Это очень обычный подход и стандартный способ сделать это из того, что я видел в учебных журналах и т.д., и первого подхода, о котором я подумал бы (не обязательно самого лучшего).
Ответ 8
Посмотрите на этот ответ для алгоритма:
Алгоритм для реализации облака слов, например Wordle
"DisOrganizer", упомянутый в ответах, может служить вашей цели. С небольшим изменением вы можете позволить этому "Disorganizer" служить изображению, как вы хотели. PS: Код написан на С# https://github.com/chandru9279/zasz.me/blob/master/zasz.me/
Ответ 9
Взгляните на это. Это сработало для меня. В папке примеров с именем WebExample есть проект, который поможет вам в этом.
https://github.com/chrisdavies/Sparc.TagCloud
Ответ 10
Zoomable TagCloud Generator, который извлекает ключевые слова из данного источника (текстовый файл и другие источники) и отображает TagCloud как пользовательский интерфейс масштабирования (ZUI )