View Full Version : سوال: بدست آوردن بیشترین کلمات استفاده شده در یک رشته
بیتا حکمت
پنج شنبه 02 بهمن 1393, 17:36 عصر
یک رشته رو در نظر بگیرید . میخوام کلماتی که بیشترین تکرار رو در رشته دارند ، بدست بیارم مثلا" به یک کامبوباکس اضافه کنم . در واقع با این روش میخوام کلمات کلیدی هر متن رو بدست بیارم .
مثل کلمات کلیدی که در سایت ها استفاده میشن .
aminmousavi
پنج شنبه 02 بهمن 1393, 18: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, 18:16 عصر
خوب متن باید به طور کامل اسکن بشه.
با توجه به اینکه جدا سازی کلمات با اسپیس نقطه ویرگول و... صورت میگیره و همینطور فرض اینکه متن استاندارد هست :
کافیه یه دیکشنری تعریف کرده و کلمه به کلمه کاوش کنید بعد اگر کلمه در دیکشنری نبود اظافه میشه و تعداد یک رو میگیره و اگر بود به تعدادش یکی اظافه میشه.
مطمئنا بحث شده جستجو کنید اگر به مشکلی برخورد کردید مطرح کنید.
SabaSabouhi
شنبه 04 بهمن 1393, 09:28 صبح
سلام
دوستمون aminmousavi جوابشون خیلی خوبه. فقط من یه پیشنهاد کوچیک دارم که کاملش میکنه.
بجای ( ' ' )split بهتره حالتهای نقطهگذاری کاملتر بررسی بشه.
Split( " ,.:\t\'\"".ToCharArray() )
صباصبوحی
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.