PDA

View Full Version : برنامه اعراب گذار...



shagerd
دوشنبه 30 مهر 1386, 01:51 صبح
سلام ...

من میخوام برنامه ای بنویسم به این شکل که روی متون عربی و فارسی بتونه اعراب گذاری کنه...

چطوری باید تعریف کنم که روی متنی که نوشته شده اعراب گذاری بشه ؟؟؟

ممنون میشم کمکم کنید ...:لبخندساده:

choobin84
دوشنبه 30 مهر 1386, 08:15 صبح
به نظر من این کار بسیار مشکله
باید در مورد هوش مصنوعی یه چیزایی بلد باشین و اینکه بتونید مثلا برای حرف الف ا سه شکل اِ و اَ و ... را تعریف کنید چطوری می خواهید این تفاوت را برای کلمه محسن ایجاد کنید که مُحسن ، مِحسُن خونده نشه

alireza643
دوشنبه 30 مهر 1386, 09:45 صبح
دو حالت داره
اول اینکه خودتون دستی این کار رو میخواهید انجام بدید(که نمیخواهید)
یا به صورت اتوماتیک.
یه زمانی تو کار به این مشکل برخورد کرده بودم من برای رفع مشکل از یه دیتابیس اکسس استفاده کردم. به این شکل که کلمه رو بدون اعراب در یک فیلد و شکل اصلاحی (با اعراب رو در یک فیلد دیگه نگه داری میکردم) برای کلماتی هم که دو یا چند حالت داشت همه حالت ها رو تو فیلد دوم آورده بودم (خِیر، خَیِّر). وقتی کار شروع میشد همه کلماتی که تک حالتی بودن رو جاگذاری میکردم و کلماتی که چند حالتی بودن رو از کاربر سوال میکردم که کدوم حالت رو نمایش بدم.
درست کردن دیتابیس هم زیاد وقت گیر نیست. میتونی یه برنامه بنویسی که وقتی یه متنی رو بهش میدید برای شما همه کلمات رو استخراج کنه و اگر تو دیتابیس نبودن اونها رو وارد دیتابیس کنه. برای بدست آوردن متن هم میتونید از کتاب هایی که روی اینترنت هست استفاده کیند.
من یه دستابیس دارم که کتابهای حافظ، سعدی، مولانا، جلال آل احمد و یه سری متن از وب سایت های مختلف رو توش وارد کردم همش سرو ته 20000 تا کلمه فکر نکنم بشه . اصلاح کلمات هم کمتر از 2 روز کاری، وقت گیر هست.
موفق باشید.

shagerd
دوشنبه 30 مهر 1386, 15:13 عصر
من میخوام اعراب گذاری رو دستی انجام بدم ... یعنی متنی رو که آماده دارم مثلا داخل یه تکست باکس یا بنویسم یا کپیش کنم بعد اعرابها رو آماده بالا بزارم و کاربر هر کلمه یا حرفیرو که میخواد به دلخواه خودش اعراب مورد نظرش رو اعمال کنه...
این اعرابها کد خاصی دارن؟؟ چطوری میتونم اعرابها رو آماده کنم که مثلا هر اعراب با کلیک روی button مورد نظر اعمال شه ... ؟؟؟ آخر سر هم با کپی تو هرمحیطی که کاربر بخواد انتقال پیدا کنه ...

متشکرم :لبخند ساده:

hassan razavi
دوشنبه 30 مهر 1386, 15:45 عصر
اگه سوال دیگه ای داشتید مطرح کنید. فکر کنم جواب سوالتون همین باشه

alireza643
دوشنبه 30 مهر 1386, 16:17 عصر
این اعرابها کد خاصی دارن؟؟
بله این اعراب ها کد خاصی دارن که و این کد رو میتونید به کمک برانامه charmap پیدا کنید.

چطوری میتونم اعرابها رو آماده کنم که مثلا هر اعراب با کلیک روی button مورد نظر اعمال شه ... ؟؟؟
وقتی کاربر روی یکی از دکمه ها کلیک کرد شما مراحل زیر رو به ترتیب دنبال کنید
اول محلی که در حال حاضر کرسر قرار داره رو پیدا کنید.
دوم بررسی کنید ببنید که امکان ایجاد این اعراب هست یا نه برای مثال کلمه ی (خیر) رو در نظر بگیرید که مثلا کرسر بین ی و ر در این شرایط اعراب متعلق به ی هست و شما باید بررسی کنید که کاربر قبلا برای این حرف اعرابی وارد نکرده باشه که اگر این کار رو کرده باشه کد کاراکتر قبلی کد یکی از اعراب ها هست که امکان اعراب گذاری مجدد وجود نداره و شما باید به کاربر پیغام مناسبی بدید.
در کل در این مرحله باید بررسی کنید که کاراکتری که روش اعراب گذاری میشه حتما یکی از حروف الفبا باشه.
در مرحله آخر شما به هر کدوم از دکمه ها یه کد اختصاص دادی که فقط کافیه اون کد مخصوص به کاراکتر رو در همین محلی که الان کرسر وجود دراه Insert کنید.
موفق باشید.

shagerd
دوشنبه 30 مهر 1386, 17:34 عصر
اگه سوال دیگه ای داشتید مطرح کنید. فکر کنم جواب سوالتون همین باشه


اولا متشکرم از اینکه جواب دادید...

برنامه اصلا اجرا نمیشه ارور MissingMethodeException داره ... چرا؟؟کجاش مشکل داره مگه ؟؟


SendKeys.Send("+ش")
SendKeys.Send("+س");
... این +س و +ش چیه؟؟ شما انواع الفها رو تعریف کردید یا فقط اعرابها ...
من فقط خود اعرابها را میخوام و کلمات و جمله ها توسط کاربر تایپ میشن ...
دقیقا بگید که تو این مثال این کدها چین؟ ...

ممنون میشم ...

hassan razavi
دوشنبه 30 مهر 1386, 20:15 عصر
شما با گرفتن دکمه های ش+Shift و س+Shift و ی+Shift می توانید اعرابهای اَ آُ آِ را تایپ کنید.
دستور Send هم دقیقا همینکار رو میکنه و وقتی یکی از اون 3 دکمه را می زنید انگاری که یکی از ترکیبهای بالا را زدید.

برای Erorr : لطفا چک کنید ببینید در Language & Setting تون فارسی رو دارید؟
می تونید برنامه رو هم خط به خط Debug کنید تا دقیقا ببینید خطا از کجاست. ولی من که نوشتمش هیچ خطایی نداشت و درست کار میکرد.

PC2st
دوشنبه 30 مهر 1386, 22:42 عصر
بجای فرستادن کلید اعراب ها (مثلا Shift+E)، میتونید یونیکد اعراب ها رو به متن اضافه کنید، اعراب عربی از یونیکد 064B به بعد شروع میشوند. من نمونه برنامه رو ندیدم، پس اگر صحبت ام بی ربط بود لطفا گیر ندید. :-)

shagerd
سه شنبه 01 آبان 1386, 00:56 صبح
Method not found: 'Void System.Windows.Forms.Application.SetCompatibleText RenderingDefault(Boolean)'

از public form , form1.load کلا از تردها ایراد میگیره...

چرا؟؟؟

alireza643
سه شنبه 01 آبان 1386, 12:44 عصر
بجای فرستادن کلید اعراب ها (مثلا Shift+E)، میتونید یونیکد اعراب ها رو به متن اضافه کنید، اعراب عربی از یونیکد 064B به بعد شروع میشوند. من نمونه برنامه رو ندیدم، پس اگر صحبت ام بی ربط بود لطفا گیر ندید. :-)

من همین کار رو انجام دادم یعنی کد هر کدوم از اعراب ها رو از تو CHARMAP پیدا کردم و بعد از این کد ها استفاده کردم ولی برنامه من با c++ هست در کل فرمایش شما کاملا صحیح و اصولی هست. متشکر از راهنمایی چون من دقیقا همین منظور رو داشتم ولی نمیدونستم چطور بیان کنم.

hassan razavi
سه شنبه 01 آبان 1386, 18:49 عصر
چون فارسی روی ویندوزتون نصب نیست. به قسمت Language & Regional Setting کنترل پانل مراحعه کنید

shagerd
سه شنبه 01 آبان 1386, 20:57 عصر
فارسی همیشه رو سیستم من نصبه ... تعجب میکنم این خطا مال چیه...

shagerd
سه شنبه 01 آبان 1386, 20:59 عصر
من همین کار رو انجام دادم یعنی کد هر کدوم از اعراب ها رو از تو CHARMAP پیدا کردم و بعد از این کد ها استفاده کردم ولی برنامه من با c++ هست در کل فرمایش شما کاملا صحیح و اصولی هست. متشکر از راهنمایی چون من دقیقا همین منظور رو داشتم ولی نمیدونستم چطور بیان کنم.

میتونم خواهش کنم برنامه تونو بزارید اینجا تا ببینم چه جوری نوشتینش؟!

ممنون میشم...

shagerd
چهارشنبه 02 آبان 1386, 16:26 عصر
چون فارسی روی ویندوزتون نصب نیست. به قسمت Language & Regional Setting کنترل پانل مراحعه کنی

فکر کنم مشکل خطا از خود دات نتم باشه !! بهرحل متشکرم از راهنماییتون...