PDA

View Full Version : سوال: بدست آوردن بیشترین کلمات استفاده شده در یک رشته



بیتا حکمت
پنج شنبه 02 بهمن 1393, 16:36 عصر
یک رشته رو در نظر بگیرید . میخوام کلماتی که بیشترین تکرار رو در رشته دارند ، بدست بیارم مثلا" به یک کامبوباکس اضافه کنم . در واقع با این روش میخوام کلمات کلیدی هر متن رو بدست بیارم .
مثل کلمات کلیدی که در سایت ها استفاده میشن .

aminmousavi
پنج شنبه 02 بهمن 1393, 17:14 عصر
سلام دوست عزیز .

string words = "Hello World This is a great world, This World is simply great".ToLower();


var results = words.Split(' ').Where(x => x.Length > 3)
.GroupBy(x => x)
.Select(x => new { Count = x.Count(), Word = x.Key })
.OrderByDescending(x => x.Count);


foreach (var item in results)
{
MessageBox.Show(item.Word + " - " + item.Count.ToString());
}


رفرنس : http://stackoverflow.com/questions/8707208/find-the-highest-occuring-words-in-a-string-c-sharp

Saman_12
پنج شنبه 02 بهمن 1393, 17:16 عصر
خوب متن باید به طور کامل اسکن بشه.
با توجه به اینکه جدا سازی کلمات با اسپیس نقطه ویرگول و... صورت میگیره و همینطور فرض اینکه متن استاندارد هست :
کافیه یه دیکشنری تعریف کرده و کلمه به کلمه کاوش کنید بعد اگر کلمه در دیکشنری نبود اظافه میشه و تعداد یک رو میگیره و اگر بود به تعدادش یکی اظافه میشه.

مطمئنا بحث شده جستجو کنید اگر به مشکلی برخورد کردید مطرح کنید.

SabaSabouhi
شنبه 04 بهمن 1393, 08:28 صبح
سلام
دوستمون aminmousavi جوابشون خیلی خوبه. فقط من یه پیش‌نهاد کوچیک دارم که کاملش می‌کنه.
بجای ( ' ' )split بهتره حالت‌های نقطه‌گذاری کاملتر بررسی بشه.



Split( " ,.:\t\'\"".ToCharArray() )


صباصبوحی