PDA

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



f_g1348
چهارشنبه 21 تیر 1391, 08:04 صبح
با سلام
دوستان در برنامه من یک textbox وجود دارد که کاربر درون آن چند جمله فارسی می ریزد و سپس می خواهم در این متن کلمات یکتا مشخص شده و سپس تعداد هر کدام در هر جمله شمارش شود .
راه کار پیشنهادی خودم این است که کلمات را درون آرایه ریخته و تک تک با هم مقایسه کنم و به جای تکراری ها فضای خالی بگذارم ( البته تا قبل از نقطه )
در vb.net به اینصورت می نوشتم

'شمارش تعداد كلمات يكتا در كل متن جهت تعريف ماتريس شباهت
counter = 0 ' شمارنده تعداد كلمات
For j = 0 To word_count

temp1 = arr1(j)
If temp1 <> "" And temp1 <> "." Then
counter += 1 ' نقطه را هم مي شمارد
sim_tem(counter - 1) = temp1 ' ليستي از كلمات يكتا در متن
For i = j + 1 To word_count
If arr1(i) <> "" Then
If temp1 = arr1(i) Then
arr1(i) = ""

End If
End If

Next i
End If

Next j
حال اگر کسی راه دیگری و بهتری می داند ممنون میشم راهنمایی کند

tooraj_azizi_1035
چهارشنبه 21 تیر 1391, 11:12 صبح
سلام

کلمه یکتا در کل متن با کلمه یکتا در هر جمله فرق داره.
اگه منظورت پیدا کردن کلماتی هستند که در کل جمله فقط یکی از آنها وجود دارد این جواب:


IEnumerable<string> uniqueWords= wholeText.Distinct();


باید سعی کنی اگه خیلی با رشته ها سر و کار داری چرخ رو دوباره اختراع نکنی. بلکه با متدهای آماده کار کنی.

f_g1348
پنج شنبه 22 تیر 1391, 11:39 صبح
دقیقاً منظور من با مثال زیر معلوم میشه :
من در من چرا . من تو من در .
در جمله اول :
من 2 بار
در 1 بار
چرا 1 بار
در جمله دوم :
من 2 بار
تو 1 بار
در 1 بار

f_g1348
شنبه 24 تیر 1391, 07:35 صبح
کسی نیست راهنمایی کنه !؟

f_g1348
شنبه 24 تیر 1391, 09:47 صبح
علامت <= یعنی چی ؟
درثانی من نمی خواهم کلماتی که یکبار فقط ظاهر شدند را بشمارم ، من می خواهم هر کلمه فقط یکبار شمرده شود و تکرار آن شمرده نشود ( البته در هر جمله )

f_g1348
شنبه 24 تیر 1391, 10:03 صبح
چند بار هم توضیح دادم و در مثال هم آمده
در یک جمله من تعداد کلمات را بصورت منحصر بفرد می خواهم مثلاً در جمله :
من من تو من تو .
تعداد کل کلمات 5 تا است ولی بصورت منحصربفرد 2 تا میشه که شامل کلمه من 3 بار و تو 2 بار
من بدین صورت می خواهم

Mahmoud.Afrad
شنبه 24 تیر 1391, 10:46 صبح
int count = textBox3.Text.Split(new char[] { ' ', '.', '\n', '\r' }).Distinct().Where(word => word != "").ToList().Count;

f_g1348
شنبه 24 تیر 1391, 10:58 صبح
آقا دستت درد نکنه ولی میشه یکم توضیح بدی که چطور کار میکنه ؟
و چطور میتونم حالا این کلمات منحصر بفرد را درون آرایه ذخیره کنم ؟