Tag-Wolke in C #

stimmen
13

Ich mache eine kleine # C - Anwendung und mag ein extrahieren Tag - Wolke aus einem einfachen Klartext. Gibt es eine Funktion , die das für mich tun könnte?

Veröffentlicht am 10/12/2008 um 01:34
quelle vom benutzer
In anderen Sprachen...                            


10 antworten

stimmen
11

eine Tag-Wolke zu bauen ist, wie ich es, ein zweiteiliges Verfahren finden Sie unter:

Zuerst müssen Sie teilen und Ihre Token zu zählen. Je nachdem, wie das Dokument strukturiert ist, sowie die Sprache geschrieben in, könnte dies so einfach sein wie die durch Leerzeichen getrennte Wörter zu zählen. Dies ist jedoch ein sehr naiver Ansatz, wie er Worte wie die, von, a, etc ... die größten Wortanzahl hat und ist nicht sehr nützlich als Tags. Ich würde vorschlagen, eine Art Wort schwarzer Liste der Umsetzung, um die am häufigsten verwendeten und bedeutungslos Tags auszuschließen.

Sobald Sie das Ergebnis in einer (Tag, count) Art und Weise haben, könnten Sie etwas ähnlich den folgenden Code verwenden:

(Suchen Sie eine Liste von SearchRecordEntity, SearchRecordEntity den Tag und seine Zählung hält, ist SearchTagElement eine Unterklasse von SearchRecordEntity, die das TagCategory Attribut hat, und ProcessedTags ist eine Liste der SearchTagElements, die das Ergebnis hält)

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);
}
Beantwortet am 10/12/2008 um 01:54
quelle vom benutzer

stimmen
9

Ich würde wirklich empfehlen die Verwendung von http://thetagcloud.codeplex.com/ . Es ist eine sehr saubere Implementierung , die Pflege der Gruppierung, Zählen und Wiedergabe von Tags nimmt. Es bietet auch Filterfunktionen.

Beantwortet am 10/06/2009 um 13:10
quelle vom benutzer

stimmen
4

Hier ist eine ASP.NET Cloud Control , die helfen könnten Sie zumindest beginnen, volle Quelle enthalten.

Beantwortet am 10/12/2008 um 01:47
quelle vom benutzer

stimmen
3

Werfen Sie einen Blick auf http://sourcecodecloud.codeplex.com/ Geben Sie hier image description

Beantwortet am 08/02/2012 um 15:03
quelle vom benutzer

stimmen
3

Sie können einen Blick auf nehmen wollen Wordcloud , ein Projekt auf Codeproject. Es umfasst 430 Wörter stoppt (wie the, an, a, etc.) und verwendet den Porter stamm Algorithmus, der für so Worte ihre Wurzel reduziert , die „Stamm stammdämmt“ sind alle als 1 Vorkommen des gleichen Wortes gezählt.

Es ist alles in C # - das einzige, was Sie es es zur Ausgabe von HTML ändern tun müsste anstelle der Visualisierung schafft.

Beantwortet am 10/12/2008 um 02:21
quelle vom benutzer

stimmen
0

Schau dir das an. Er arbeitete für mich. Es ist ein Projekt unter den Beispielen WebExample benannten Ordner , die Sie dies für die Lösung helfen. https://github.com/chrisdavies/Sparc.TagCloud

Beantwortet am 21/08/2013 um 12:21
quelle vom benutzer

stimmen
0

Werfen Sie einen Blick auf diese Antwort für einen Algorithmus:

Algorithmus, um eine Wortwolke wie Wordle zu implementieren

Die „DisOrganizer“ in den Antworten erwähnt könnten Ihren Zweck dienen. Mit ein wenig ändern, können Sie diese „Disorganizer“ lassen ein Bild dienen, so , wie Sie wollten. PS: Der Code ist in C geschrieben # https://github.com/chandru9279/zasz.me/blob/master/zasz.me/

Beantwortet am 19/06/2012 um 13:18
quelle vom benutzer

stimmen
0

Sie könnten eine Kategorie speichern und die Menge der Elemente in einer Art Sammlung hat, oder Datenbanktabelle.

Von diesem können Sie die Zählung für eine bestimmte Kategorie bekommen und haben bestimmte Grenzen. So Ihre Parameter sind die Kategorie, und Ihr Rückgabewert ist eine Zählung.

Also, wenn die Zählung> 10 & <20, dann einen .CSS Stil auf den Link anzuwenden, die von einer bestimmten Größe sein werden.

Sie können diese Zählungen als Schlüssel in einer Sammlung speichern und dann den Wert bekommen, wo der Schlüssel zu Ihrem Rückgabewert übereinstimmt (wie ich oben erwähnt).

Ich habe nicht zur Hand Quellcode für diesen Prozess erhalten, aber Sie werden nicht eine einfache Funktion zu tun, all dies für Sie entweder finden. Eine Steuer, ja (wie oben).

Dies ist ein sehr konventioneller Ansatz und der Standard-Weg, es zu tun, was ich in der Zeitschrift Tutorials gesehen habe, etc, und der erste Ansatz, den ich von (nicht unbedingt die besten) denken würde.

Beantwortet am 10/12/2008 um 02:17
quelle vom benutzer

stimmen
0

Ich bin mir nicht sicher, ob dies ist genau das, was Sie suchen, aber es kann Ihnen den Einstieg:

(In VB, aber ich bin der Umstellung auf C # jetzt) ​​LINQ, die Wortfrequenz zählt

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()
Beantwortet am 10/12/2008 um 01:44
quelle vom benutzer

stimmen
-1

Der Zoomable TagCloud Generator , die Schlüsselwörter aus einer bestimmten Quelle (Textdatei und anderen Quellen) extrahiert und zeigt die TagCloud als Zooming User Interface (ZUI)

Beantwortet am 13/06/2012 um 20:52
quelle vom benutzer

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