PDA

View Full Version : تشخیص زبان



king-net
چهارشنبه 30 آذر 1390, 17:09 عصر
درود .
میخوام زبان یک متن رو توسط php بتونم تشخص بدم . :افسرده:
مثلا اگه این جمله رو دادم : "این نوشته جهت آزمایش می باشد " تشخیص بده که فارسی هستش

امیـرحسین
چهارشنبه 30 آذر 1390, 18:37 عصر
به این آدرس یه نگاه بنداز: http://jrgraphix.net/research/unicode_blocks.php
وقتی کاراکتر به کد یونیکد تبدیل شه در جدول یونیکد میشه پیداش کرد که مقادیر این جدول بازه‌ای هستند یعنی مثلا از یک مقداری تا یک مقدار دیگه‌ای فقط کارکترهای لاتین هستند.
فارسی چند تا محدوده داره.
اینکه چطور رو کاراکتر رو به هگزادسیمال یونیکد تبدیل کنیم رو متاسفانه نمی‌دونم.

king-net
چهارشنبه 30 آذر 1390, 22:35 عصر
گوگل تو سرویس ترنسلیتش از تشخیص خودکار استفاده میکنه اما چطور ؟ :متفکر:

irGeek
پنج شنبه 01 دی 1390, 00:26 صبح
منم همون راه قبلی که گفتن به ذهنم میرسه ودر مورد تبدیل کد نمایش به کد عددی‚ در فایل ضمیمه یک چیز هایی داره! ببینیدش.

امیـرحسین
پنج شنبه 01 دی 1390, 12:19 عصر
irGeek دست شما درد نکنه بابت اون فایلی که attach کردید.
یه کلاس استاتیک جزو فایلها هست به نام unicode.class.php توسط اون کلاس میشه شبیه زیر عمل کرد:

$char = 'پ';
$ord = unicode::ord_utf8($char);
$upperRange = base_convert('\x06FF', 16, 10);
$lowerRange = base_convert('\x0600', 16, 10);
echo "Arabic range: ". ($ord<=$upperRange && $ord>=$lowerRange ? 'Yes' : 'No');
با این چک‌ها میشه فهمید کارکترها در چه محدوده‌ای هستند ولی اینکه بشه مثلا فارسی رو از عربی تشخیص داد نیاز به دیتابیس داره.
راستش من خودم خیلی به این موضوع علاقمندم و میخوام یاد بگیرم....

king-net
پنج شنبه 01 دی 1390, 17:03 عصر
فکر نکنم بشه زیاد رو این روش تکیه کرد چون ما فقط دو سه تا زبان نمی خوایم ، می خوایم بیشتر زبان ها ررو پوشش بدیم پس بهتره یک الگوریتم قوی پیشنهاد بشه تا اینجا بتونیم با هم پیاده سازیش کنیم :متفکر:

ravand
پنج شنبه 01 دی 1390, 18:26 عصر
irGeek دست شما درد نکنه بابت اون فایلی که attach کردید.
یه کلاس استاتیک جزو فایلها هست به نام unicode.class.php توسط اون کلاس میشه شبیه زیر عمل کرد:

$char = 'پ';
$ord = unicode::ord_utf8($char);
$upperRange = base_convert('\x06FF', 16, 10);
$lowerRange = base_convert('\x0600', 16, 10);
echo "Arabic range: ". ($ord<=$upperRange && $ord>=$lowerRange ? 'Yes' : 'No');
با این چک‌ها میشه فهمید کارکترها در چه محدوده‌ای هستند ولی اینکه بشه مثلا فارسی رو از عربی تشخیص داد نیاز به دیتابیس داره.
راستش من خودم خیلی به این موضوع علاقمندم و میخوام یاد بگیرم....


كدي كه شما دادي برام اخطار ميده چجوري بايد ازش استفاده كنم؟

pejman_view
پنج شنبه 01 دی 1390, 18:58 عصر
سلام

برای تشخیص زبان به نظر من باید چند مرحله رو پشت سر بگذاریم، اول اینکه در گوگل فکر می کنم اولین کاری که می کنه کاراکتر زبان را تشخیص می دهد مربوط به کدام زبان هاست فرضاً کلمه "عین" که بین هر دو زبان عربی و فارسی رایج است حالا بنظرت دیتابیس رو چک کنه یکم طول می کشه نه؟ خوب میاد از روی بعضی از موارد جئولوژیک و ... مانند IP، زبان پیش فرض در گوگل و ... در دیتابیس آن زبان دنبال آن کلمه می گردد و اگر پیدا نشد وارد مرحله بعد یعنی زبان های مشابه می شود.

البته نظر شخصی بنده است و گوگل هم می دانید که از ما خیلی باهوش تره و استادای خیلی بزرگی روی این متدها کار می کنه...

king-net
پنج شنبه 01 دی 1390, 19:25 عصر
گوگل رو ول کنیم خودمان چه کنیم ؟ :لبخند:

امیـرحسین
پنج شنبه 01 دی 1390, 19:38 عصر
كدي كه شما دادي برام اخطار ميده چجوري بايد ازش استفاده كنم؟
کلاس unicode که irGeek آپلود کرده بود رو include کردید؟
اگه نه چه اخطاری؟ واسه من کار کرد.

M.Rahi
پنج شنبه 01 دی 1390, 19:43 عصر
سلام
خب گوگل بانک لغات تمام زبانهای زنده دنیا رو داره پس میتونه حروف وارد شده را در تک تک جداول زبانها سرچ کرده و اگر مثلا در لغت وارد شده حروف (الف تا ی) وجود داشت اعلام کن که فارسی هست وگرنه حروف زبان بعدی را چک کن و الآخر ...
البته قطع به یقین گوگل از الگوریتم های حرفه ای تری استفاده میکنه تا سرعت کار بیشتر بشه.
اما روش فوق جواب میده
الان شما توی سرچ باکس گوگل وقتی یک لغت وارد میکنید، حرف اول آن لغت را تشخیص داده و با توجه به راست چین یا چپ چین بود زبان آن لغت، Direction تکست باکس را تغییر میده.

king-net
پنج شنبه 01 دی 1390, 20:00 عصر
نه عزیز من برای تشخیص اصلا کاری به پایگاه داده نداره مگه خوله که یک واژه رو توی میلیاردها واژه فقط برای تشخیص زبان استفاده کنه ؟ گوگل همش الگوریتم هستش مثلا شما حرف ی رو بزنی میزنه فارسی اما ي رو بزنی میزنه عربی ، این یکی از الگوریتم هاش هستش حالا اگه دوستان الگوریتمی پیدا کردن لطف کنن بگن تا ما هم استفاده کنیم

pejman_view
پنج شنبه 01 دی 1390, 20:07 عصر
سلام

خوب پیشنهاد من راهترین راه اینه که از خود گوگل استفاده کنی ! خود گوگل API ، تشخیص زبان رو بصورت رایگان در اختیارتون قرار داده.

king-net
پنج شنبه 01 دی 1390, 20:36 عصر
آره اونو دیدم اما می خوام وابسته به گوگل نباشم و بحث الانمون هم اینه که خودمون بتونیم پیاده سازی کنیم