Estoy haciendo una pequeña aplicación C# y me gustaría extraer una nube de etiquetas desde un simple texto plano. ¿Hay alguna función que pueda hacer eso por mí?Nube de etiquetas en C#
Respuesta
no estoy seguro de si esto es exactamente lo que busca pero puede ayudar a empezar:
LINQ que cuenta la frecuencia de palabras (en VB pero yo estoy convirtiendo a C# ahora)
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()
Aquí hay un ASP.NET Cloud COntrol, que podría ayudarlo al menos a comenzar, fuente completa incluida.
La construcción de una nube de etiquetas es, en mi opinión, un proceso de dos partes:
En primer lugar, es necesario dividir y contar sus fichas. Dependiendo de cómo está estructurado el documento, así como del idioma en el que está escrito, esto podría ser tan fácil como contar las palabras separadas por espacios. Sin embargo, este es un enfoque muy ingenuo, ya que las palabras como,, de, a, etc. tendrán el mayor número de palabras y no son muy útiles como etiquetas. Sugiero implementar algún tipo de lista negra de palabras para excluir las etiquetas más comunes y sin sentido.
Una vez que tenga el resultado en un (etiqueta, count) forma, se podría usar algo similar al siguiente código:
(Búsquedas hay una lista de SearchRecordEntity, SearchRecordEntity sostiene la etiqueta y su recuento, SearchTagElement es una subclase de SearchRecordEntity que tiene el atributo TagCategory y ProcessedTags es una lista de SearchTagElements que mantiene el resultado)
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);
}
se puede almacenar una categoría y la cantidad de artículos que tiene en algún tipo de colección, o una tabla de base de datos .
De eso, puede obtener el conteo de cierta categoría y tener ciertos límites. Entonces su parámetro es la categoría, y su valor de retorno es un conteo.
Así que si el recuento es> 10 & < 20, luego aplique un estilo .CSS al enlace que tendrá un cierto tamaño.
Puede almacenar estos recuentos como claves en una colección, y luego obtener el valor donde la clave coincide con su valor de retorno (como mencioné anteriormente).
No tengo el código fuente a mano para este proceso, pero tampoco encontrará una función simple para hacer todo esto por usted. Un control, sí (como arriba).
Este es un enfoque muy convencional y la forma estándar de hacerlo a partir de lo que he visto en los tutoriales de revistas, etc., y el primer enfoque que pensaría (no necesariamente el mejor).
Es posible que desee echar un vistazo a WordCloud, un proyecto en CodeProject. Incluye 430 palabras de detención (como the
, an
, a
, etc.) y utiliza el algoritmo de derivación Porter, que reduce las palabras a su raíz para que "raíz madre derivada" se cuenten como 1 ocurrencia de la misma palabra.
Todo está en C#: lo único que tendría que hacer es modificarlo para generar HTML en lugar de la visualización que crea.
Realmente recomendaría usar http://thetagcloud.codeplex.com/. Es una implementación muy limpia que se encarga de agrupar, contar y representar etiquetas. También proporciona capacidades de filtrado.
Secundado, lo acabo de implementar y hace todo lo que necesito de fábrica. – Simon
Tome un vistazo a http://sourcecodecloud.codeplex.com/
El Zoomable TagCloud Generator que extrae palabras clave de una determinada fuente (archivo de texto y otras fuentes) y muestra el TagCloud como zoom interfaz de usuario (ZUI)
Tenga una mirada en esta respuesta de un algoritmo:
Algorithm to implement a word cloud like Wordle
El "desorganizador" que se menciona en las respuestas COU Sirve a tu propósito. Con un pequeño cambio, puede dejar que este "Desorganizador" sirva una imagen, de la manera que desee. PD: El código está escrito en C# https://github.com/chandru9279/zasz.me/blob/master/zasz.me/
Eche un vistazo a esto. Funcionó para mí Hay un proyecto en la carpeta Ejemplos llamado WebExample que te ayudará a resolver esto. https://github.com/chrisdavies/Sparc.TagCloud
- 1. generadores de "nube de etiquetas"?
- 2. Al escalar etiquetas en una nube de etiquetas
- 3. Plugin de nube de etiquetas de Django
- 4. Control de nube de etiquetas para WPF
- 5. ¿Cómo puedo crear una nube de etiquetas en ASP.NET?
- 6. Ayuda a comprender el algoritmo para nube de etiquetas
- 7. Adaptación de la nube de etiquetas al espacio disponible
- 8. Diseñando un tipo diferente de nube de etiquetas
- 9. Mostrando solo las etiquetas más populares en la nube de etiquetas acts_as_taggable_on
- 10. ¿Cómo diseñar una tabla MySql para una nube de etiquetas?
- 11. ¿Hay una API Java de nube de palabras/etiquetas dinámica en alguna parte?
- 12. ¿Cómo puedo generar una nube de etiquetas en Java con OpenCloud?
- 13. OpenCV en la nube
- 14. Desarrollando en la nube
- 15. Neo4j en la nube
- 16. nube de etiquetas del almacén de datos del motor de aplicaciones de Google con python
- 17. Lógica de cálculo del tamaño de fuente de la nube de etiquetas
- 18. ¿Existe una implementación de nube de etiquetas estándar o de código abierto para SWT?
- 19. d3.js Tamaño de la nube de etiquetas de un Json/array?
- 20. HTML semántico: ¿Debo usar la etiqueta <nav> para una nube de etiquetas?
- 21. Tag preferible nube de visualización Formatos
- 22. ¿Cuál es la diferencia entre nube privada y nube pública?
- 23. Despliegue de Java ESBs en la nube
- 24. nube arquitectura de sincronización basada
- 25. ¿Cómo incrusto etiquetas Mercurial en mi código C/C++?
- 26. etiquetas html en las etiquetas de opción
- 27. Implementando y alojando scala en la nube?
- 28. ¿Qué es la computación en la nube?
- 29. ¿Qué son las etiquetas de documentación C#?
- 30. Archivos en la nube de Rackspace: carga de imágenes en archivos de la nube de rackspace usando PHP
El enlace que proporcionó está ahora muerto. –
Todavía muerto. ¿Se supone que apunta a http://www.codeproject.com/Articles/14661/Cloud-Control-for-ASP-NET? –