Vor kurzem wollte ich unbedingt herausfinden, wie oft das Wort "Kaffee" in der Öffentlichkeit meines Freundes vorkommt, und eine schöne Wortwolke aufbauen, basierend auf der Häufigkeit ihres Auftretens in Posts.
Wenn Sie daran interessiert sind, wie Sie es mit C # buchstäblich auf Ihren Knien machen können, dann bitte unter Katze.
HinweisWeil Diese Anwendung wurde auf mein Knie geschrieben und die einzige Aufgabe bestand darin, meine Neugier zu amüsieren. Es wurde beschlossen, sie in zwei Phasen zu unterteilen: die Wörter abrufen und in einer Datei speichern, alle Präpositionen mit Stiften entfernen und dann aus der empfangenen Datei eine Wolke erstellen.
Für eine ernstere Aufgabe lohnt es sich, Wörterbücher mit Präpositionen, Endungen oder anderen alternativen Optionen zu verwenden.
Daten von VK abrufen
Installieren Sie zunächst die entsprechende
Bibliothek . Wir erstellen die VK-Anwendung.
var services = new ServiceCollection(); var vkApi = new VkApi(services);
Wir werden genehmigen, obwohl diese Phase übersprungen werden kann, aber dann wird die Anzahl der verfügbaren "Wände" in VK stark abnehmen.
vkApi.Authorize(new ApiAuthParams { AccessToken = " ",Settings = Settings.All});
oder:
vkApi.Authorize(new ApiAuthParams { Login = "Login", Password = "Password", Settings = Settings.All });
Wir erhalten die letzten 100 Beiträge an der ausgewählten Wand.
var posts=vkApi.Wall.Get(new WallGetParams { OwnerId = (long)Id,
Aus der vorhandenen Sammlung machen wir eine große Linie.
foreach (var post in posts.WallPosts) { if (!string.IsNullOrEmpty(post.Text)) data += post.Text; }
Außerdem können Sie die ausgewählte Zeile aus Satzzeichen entfernen.
data = Regex.Replace(data, "\\!|\\?|\\(|\\)|\"|\\#|\\,|»|«|-", string.Empty);
Lassen Sie uns eine Sammlung von Wörtern bekommen.
var words = data.Split(default(Char[]), StringSplitOptions.RemoveEmptyEntries).ToList();
Im vorletzten Stadium erstellen wir ein Wörterbuch mit der Häufigkeit von Wörtern.
var wordsDictionary = new Dictionary<string, int>(); foreach (var word in words) { if (wordsDictionary.ContainsKey(word.ToLower())) wordsDictionary[word.ToLower()] += 1; else { wordsDictionary.Add(word.ToLower(),1); } }
Am Ende sortieren wir es und speichern es, falls gewünscht, in einer Datei.
wordsDictionary = wordsDictionary.OrderByDescending(x => x.Value) .ToDictionary(x => x.Key, x => x.Value);
Fahren Sie mit dem Erstellen einer Wortwolke fort
Dazu müssen Sie dem Projekt und diesem
Paket die Abhängigkeit System.Drawing hinzufügen.
Fügen Sie unserer Anwendung Abhängigkeit hinzu.
using WordCloudGen = WordCloud.WordCloud;
Und wir bilden das Bild.
var wc = new WordCloudGen(1024, 1024); wc.Draw(wordsDictionary.Keys.ToList(), wordsDictionary.Values.ToList()) .Save("cloudwords.jpg"); Console.WriteLine("pict create");
Abschließend möchte ich mich beim User
Worldbeater bedanken und daran erinnern, dass die Bibliothek für VK in
tg große Unterstützung bietet. Das Wort "Kaffee" für 100 Beiträge kam übrigens 142 Mal vor.