في الآونة الأخيرة ، أردت بشدة معرفة عدد مرات العثور على كلمة "قهوة" في جمهور صديقي ، وكذلك بناء سحابة جميلة من الكلمات ، بناءً على تكرار ظهورها في المنشورات.
إذا كنت مهتمًا بكيفية القيام بذلك حرفيًا على ركبتيك باستخدام C # ، فالرجاء ، أسفل cat.
تعليقلأن تمت كتابة هذا التطبيق على ركبتي وكانت المهمة الوحيدة هي تسلي فضولي ، فقد تقرر تقسيمه إلى مرحلتين: الحصول على الكلمات وحفظها في ملف ، وتنظيف جميع حروف الجر منه باستخدام الأقلام ، ثم إنشاء سحابة من الملف المستلم.
بالنسبة لبعض المهام الأكثر جدية ، يجدر استخدام قواميس حروف الجر والنهايات أو بعض الخيارات البديلة.
الحصول على البيانات من VK
أولاً ، قم بتثبيت
المكتبة المناسبة. نقوم بإنشاء تطبيق VK.
var services = new ServiceCollection(); var vkApi = new VkApi(services);
سنسمح بذلك ، على الرغم من إمكانية تخطي هذه المرحلة ، ولكن بعد ذلك سوف يقل عدد "الجدران" المتوفرة في VK انخفاضًا حادًا.
vkApi.Authorize(new ApiAuthParams { AccessToken = " ",Settings = Settings.All});
أو:
vkApi.Authorize(new ApiAuthParams { Login = "Login", Password = "Password", Settings = Settings.All });
حصلنا على آخر 100 مشاركة على الجدار المحدد.
var posts=vkApi.Wall.Get(new WallGetParams { OwnerId = (long)Id,
من المجموعة الحالية نصنع خطًا كبيرًا واحدًا.
foreach (var post in posts.WallPosts) { if (!string.IsNullOrEmpty(post.Text)) data += post.Text; }
علاوة على ذلك ، يمكنك مسح السطر المحدد من علامات الترقيم.
data = Regex.Replace(data, "\\!|\\?|\\(|\\)|\"|\\#|\\,|»|«|-", string.Empty);
حسنًا ، دعنا نحصل على مجموعة من الكلمات.
var words = data.Split(default(Char[]), StringSplitOptions.RemoveEmptyEntries).ToList();
في المرحلة ما قبل الأخيرة ، نؤلف قاموسًا بتكرار الكلمات.
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); } }
في النهاية ، نفرزها ونحفظها في ملف ، إذا رغبت في ذلك.
wordsDictionary = wordsDictionary.OrderByDescending(x => x.Value) .ToDictionary(x => x.Key, x => x.Value);
الانتقال إلى إنشاء كلمة سحابة
للقيام بذلك ، يجب عليك إضافة نظام التبعية. السحب إلى المشروع وهذه
الحزمة .
إضافة التبعية إلى طلبنا.
using WordCloudGen = WordCloud.WordCloud;
ونحن تشكيل الصورة.
var wc = new WordCloudGen(1024, 1024); wc.Draw(wordsDictionary.Keys.ToList(), wordsDictionary.Values.ToList()) .Save("cloudwords.jpg"); Console.WriteLine("pict create");
في الختام ، أود أن أقول شكراً للمستخدم
worldbeater وأن أذكر أن مكتبة VK تحظى بدعم كبير في
tg . بالمناسبة ، حدثت كلمة "قهوة" لـ 100 مشاركة 142 مرة.