वीसी शब्द घुटने पर बादल

हाल ही में, मैंने तेजी से यह पता लगाना चाहा कि मेरे मित्र की जनता में "कॉफी" शब्द कितनी बार पाया जाता है, साथ ही साथ शब्दों के एक सुंदर बादल का निर्माण भी किया जाता है, जो पदों में उनकी उपस्थिति की आवृत्ति के आधार पर होता है।
यदि आप सी # का उपयोग करके अपने घुटनों पर शाब्दिक रूप से इसे करने में रुचि रखते हैं, तो कृपया, बिल्ली के नीचे।

टिप्पणी
क्योंकि यह एप्लिकेशन मेरे घुटनों पर लिखा गया था और एकमात्र कार्य मेरी जिज्ञासा को शांत करना था, इसे 2 चरणों में विभाजित करने का निर्णय लिया गया था: शब्दों को प्राप्त करें और एक फ़ाइल में सहेजें, इसे से सभी पूर्वसर्गों को कलम से साफ करें, और फिर प्राप्त फ़ाइल से एक क्लाउड बनाएं।
कुछ और गंभीर काम के लिए, यह पूर्वसर्गों, अंत या कुछ अन्य वैकल्पिक विकल्पों के शब्दकोशों का उपयोग करने के लायक है।

वीके से डेटा प्राप्त करना


सबसे पहले, उपयुक्त पुस्तकालय स्थापित करें। हम VK एप्लिकेशन बनाते हैं।

var services = new ServiceCollection(); var vkApi = new VkApi(services); 

हम अधिकृत करेंगे, हालांकि इस चरण को छोड़ दिया जा सकता है, लेकिन फिर वीके में उपलब्ध "दीवारों" की संख्या में तेजी से कमी आएगी।

  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); 

एक शब्द बादल बनाने के लिए आगे बढ़ रहा है


ऐसा करने के लिए, आपको प्रोजेक्ट और इस पैकेज में निर्भरता System.Drawing को जोड़ना होगा।

हमारे आवेदन में निर्भरता जोड़ें।

 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"); 

अंत में, मैं उपयोगकर्ता वर्ल्डबिटर को धन्यवाद कहना चाहता हूं और याद दिलाता हूं कि वीके के लिए लाइब्रेरी को tg में बहुत समर्थन है। वैसे, 100 पदों के लिए "कॉफी" शब्द 142 बार हुआ।

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


All Articles