Я делаю небольшое приложение C# и хотел бы извлечь облако тегов из простого простого текста. Есть ли функция, которая может это сделать для меня?Облако тегов в C#
ответ
Я не уверен, если это именно то, что ищу, но это может помочь вам начать работу:
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()
Вот ASP.NET Cloud COntrol, которые могут помочь вам хотя бы приступить к работе, включая полный источник.
Построение облака тегов, как я вижу, состоящий из двух частей процесса:
Во-первых, вам нужно разделить и сосчитать свои жетоны. В зависимости от того, как структурирован документ, а также языка, на котором он написан, это может быть так же просто, как подсчет слов, разделенных пробелом. Однако это очень наивный подход, поскольку слова типа a, 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);
}
Вы можете хранить категорию и количество элементов, которые он имеет в каком-то коллекции, или таблицу базы данных ,
Из этого вы можете получить счетчик для определенной категории и иметь определенные границы. Таким образом, ваш параметр является категорией, а ваше возвращаемое значение - счетчиком.
Итак, если счетчик> 10 & < 20, примените стиль .CSS к ссылке, которая будет иметь определенный размер.
Вы можете сохранить эти счета как ключи в коллекции, а затем получить значение, в котором ключ соответствует вашему возвращаемому значению (как я уже упоминал выше).
У меня нет исходного кода для этого процесса, но вы не найдете простой функции, чтобы сделать все это для вас. Контроль, да (как указано выше).
Это очень обычный подход и стандартный способ сделать это из того, что я видел в учебных журналах и т. Д., И первого подхода, о котором я подумал бы (не обязательно самого лучшего).
Возможно, вы захотите взглянуть на проект WordCloud, проект CodeProject. Он включает в себя 430 остановок слов (например, , an
, a
и т. Д.) И использует алгоритм строгания Портера, который сводит слова к их корню так, что «стебель ствола стебля» считается одним вхождением одного и того же слова.
Это все на C# - единственное, что вам нужно было бы сделать, это изменить его для вывода HTML вместо визуализации, которую он создает.
Я бы рекомендовал использовать http://thetagcloud.codeplex.com/. Это очень чистая реализация, которая заботится о группировке, подсчете и рендеринге тегов. Он также обеспечивает возможности фильтрации.
Посмотрите на http://sourcecodecloud.codeplex.com/
The Zoomable TagCloud Generator, который извлекает ключевые слова из данного источника (текстовый файл и из других источников) и отображает TagCloud как масштабирование пользовательского интерфейса (Зуй)
взглянуть на этот ответ для алгоритма:
Algorithm to implement a word cloud like Wordle
в «дезорганизатор» упоминается в ответах ку ld служить вашей цели. С небольшим изменением вы можете позволить этому «Disorganizer» служить изображению, как вы хотели. PS: Код написан на C# https://github.com/chandru9279/zasz.me/blob/master/zasz.me/
Взгляните на это. Это сработало для меня. В папке примеров с именем WebExample есть проект, который поможет вам в этом. https://github.com/chrisdavies/Sparc.TagCloud
- 1. C# LINQ Облако тегов
- 2. "облако тегов" генераторы?
- 3. Как работает облако тегов
- 4. Облако тегов библиотека Java
- 5. Облако тегов и альгинация
- 6. Облако тегов ралли
- 7. 3D сфера облако тегов
- 8. HTML облако тегов в Python
- 9. Создать облако тегов конкретных размеров
- 10. пузыря облако тегов с расстоянием
- 11. Как создать облако тегов изображений
- 12. статьи Облако тегов PHP MySQL
- 13. Как создать облако тегов ссылок
- 14. Отображать количество слов/облако тегов в пропорции
- 15. Как создать облако 3D-тегов в Java
- 16. Как создать облако тегов в sharepoint?
- 17. Href и облако тегов в JSP
- 18. разрыв строки в d3 Облако тегов
- 19. Как реализовать облако тегов в sharepoint 2007?
- 20. Развертка SSRS в текстовом поле облако тегов
- 21. Как создать облако тегов в act_as_taggable_on?
- 22. Показать облако тегов Twitter в Wordpress
- 23. Как создать облако тегов в ASP.NET?
- 24. Скрыть облако тегов в приложении rails
- 25. Облако тегов на основе взвешенного usaage
- 26. Облако тегов: ключевые слова и содержание
- 27. Acts_As_Taggable_On облако тегов для нескольких моделей
- 28. С RethinkDB, как реализовать облако тегов?
- 29. Как получить облако тегов на gitweb?
- 30. Как оптимизировать sql-запрос - облако тегов
Ссылка, которую вы предоставили, теперь мертва. – 2011-08-21 15:30:04
Все еще мертв. Предполагается ли он указывать на http://www.codeproject.com/Articles/14661/Cloud-Control-for-ASP-NET? – 2013-09-21 14:55:41