VC كلمة سحابة على الركبة

في الآونة الأخيرة ، أردت بشدة معرفة عدد مرات العثور على كلمة "قهوة" في جمهور صديقي ، وكذلك بناء سحابة جميلة من الكلمات ، بناءً على تكرار ظهورها في المنشورات.
إذا كنت مهتمًا بكيفية القيام بذلك حرفيًا على ركبتيك باستخدام 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,//   id    - Count = 100 }); 

من المجموعة الحالية نصنع خطًا كبيرًا واحدًا.

 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 مرة.

Source: https://habr.com/ru/post/ar458524/


All Articles