صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 12

موضوع: مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

  1. #1
    عضو انجمن
    تاریخ عضویت
    Jul 2014
    نوشته ها
    199
    تشکر تشکر کرده 
    118
    تشکر تشکر شده 
    75
    تشکر شده در
    70 پست

    Question مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    سلام و درود

    دو تا رشته داریم که شما فرض کنید عنوان دو مطلب خبری هست.

    من یه تابعی میخوام که بتونه این دو رشته فارسی رو کلمه به کلمه با هم مقایسه کنه و درصد تشابه بده.

    لطفا راهنمایی کنید.

    تشکر

  2. # ADS




     

  3. #2
    عضو انجمن
    تاریخ عضویت
    Jul 2014
    نوشته ها
    199
    تشکر تشکر کرده 
    118
    تشکر تشکر شده 
    75
    تشکر شده در
    70 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    بچه ها هیچ کدی به نظرتون نمیاد که باهاش بتونم درصد بگیرم از تشابه دو عبارت فارسی؟

  4. #3
    عضو انجمن
    تاریخ عضویت
    Aug 2011
    نوشته ها
    146
    تشکر تشکر کرده 
    36
    تشکر تشکر شده 
    264
    تشکر شده در
    167 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    رشته بزرگتر رو با استفاده از strlen پیدا کن
    با explode هر رشته رو به آرایه ای از کلمه در بیار
    با حلقه for یا while کلمه های رشته کوچکتر رو در بزرگتر جستجو کن و برابری رو پیدا کن
    درصد رو بر حسب تعداد برابری در تعداد کلمات رشته دوم بدست بیار.
    جشنواره وب ایران یا جشنواره معرفی دوستان!!!

  5. تعداد تشکر ها از MJmoonwalk به دلیل پست مفید


  6. #4
    عضو انجمن
    تاریخ عضویت
    Jul 2014
    نوشته ها
    199
    تشکر تشکر کرده 
    118
    تشکر تشکر شده 
    75
    تشکر شده در
    70 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    درود

    راستش طبق چیزهایی که گفتید من یه کدی نوشتم.

    https://pastebin.com/hv5bztvx

    ولی توی while اش موندم.

    میشه یه راهنمایی بکنید؟
    ویرایش توسط naghmesra : March 31st, 2017 در ساعت 02:28

  7. #5
    عضو انجمن
    تاریخ عضویت
    Aug 2011
    نوشته ها
    146
    تشکر تشکر کرده 
    36
    تشکر تشکر شده 
    264
    تشکر شده در
    167 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    کد PHP:
    function similar_check ($str1$str2) {
        
        
    $str1_len mb_strlen($str1'UTF-8');
        
    $str2_len mb_strlen($str2'UTF-8');
        
        if (
    $str1_len $str2_len) {
            
    $big_str $str1;
            
    $small_str $str2;
        }
        else {
            
    $big_str $str2;
            
    $small_str $str1;
        }
        
        
    $big_arr explode (" "$big_str);
        
    $small_arr explode (" "$small_str);
        
    $big_count count ($big_arr);
        
    $small_count count ($small_arr);
        
        
    $same_found 0;
        foreach(
    $small_arr as $word)
        {
            
    $word trim($word);
            foreach(
    $big_arr as $word2)
            {
                
    $word2 trim($word2);
                if(
    $word1 == $word2$same_found++;
            }
        }
        
    $percent = ($same_found/$big_count)*100;

    امتحانش نکردم همینجوری نوشتم.
    جشنواره وب ایران یا جشنواره معرفی دوستان!!!

  8. تعداد تشکر ها از MJmoonwalk به دلیل پست مفید


  9. #6
    عضو انجمن omid1991 آواتار ها
    تاریخ عضویت
    Jun 2013
    محل سکونت
    نمین
    نوشته ها
    217
    تشکر تشکر کرده 
    412
    تشکر تشکر شده 
    495
    تشکر شده در
    284 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    نقل قول نوشته اصلی توسط MJmoonwalk نمایش پست ها
    کد PHP:
    function similar_check ($str1$str2) {
        
        
    $str1_len mb_strlen($str1'UTF-8');
        
    $str2_len mb_strlen($str2'UTF-8');
        
        if (
    $str1_len $str2_len) {
            
    $big_str $str1;
            
    $small_str $str2;
        }
        else {
            
    $big_str $str2;
            
    $small_str $str1;
        }
        
        
    $big_arr explode (" "$big_str);
        
    $small_arr explode (" "$small_str);
        
    $big_count count ($big_arr);
        
    $small_count count ($small_arr);
        
        
    $same_found 0;
        foreach(
    $small_arr as $word)
        {
            
    $word trim($word);
            foreach(
    $big_arr as $word2)
            {
                
    $word2 trim($word2);
                if(
    $word1 == $word2$same_found++;
            }
        }
        
    $percent = ($same_found/$big_count)*100;

    امتحانش نکردم همینجوری نوشتم.
    لاین 27
    کد PHP:
    متغییر $word1
     وجود نداره تو لاین 23 درستش کنید
    return فانکشن یادتون رفته 
    اگه اینارو درست کنید کار میکنه

  10. تعداد تشکر ها از omid1991 به دلیل پست مفید


  11. #7
    عضو جدید phpcoding آواتار ها
    تاریخ عضویت
    Mar 2017
    نوشته ها
    53
    تشکر تشکر کرده 
    1
    تشکر تشکر شده 
    46
    تشکر شده در
    33 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    نقل قول نوشته اصلی توسط naghmesra نمایش پست ها
    سلام و درود

    دو تا رشته داریم که شما فرض کنید عنوان دو مطلب خبری هست.

    من یه تابعی میخوام که بتونه این دو رشته فارسی رو کلمه به کلمه با هم مقایسه کنه و درصد تشابه بده.

    لطفا راهنمایی کنید.

    تشکر
    ساده ترین و بهترین راه تابعیه که از پیش رزرو شده و توسط خود php تهیه شده : similar_text
    نمونه :
    کد PHP:
    $brothers=array();
    $brothers[0]="amirali esteki";
    $brothers[1]="amirabas esteki";
    similar_text($brothers[0],$brothers[1],$output);
    echo 
    $output
    پارامتر اول کلمه یا جمله اول . پارامتر دوم کلمه یا جمله دوم . پارامتر سوم درصد تشابه جمله که در کش ذخیره میشه و میتونید هر جا و هر زمان صداش بزنید

    با تشکر
    ویرایش توسط phpcoding : March 31st, 2017 در ساعت 04:01
    انجام پروژه های:php-c#-c++-java-basic-css-html-javascript-python
    مشاوره با مسئول پروژه ها-حامد دعایی:+989901567129
    تماس با برنامه نویس-امیرعلی استکی:+989017735378



  12. تعداد تشکر ها از phpcoding به دلیل پست مفید


  13. #8
    عضو انجمن
    تاریخ عضویت
    Jul 2014
    نوشته ها
    199
    تشکر تشکر کرده 
    118
    تشکر تشکر شده 
    75
    تشکر شده در
    70 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    سلام و درود

    بله تابع ارسالی توسط MJmoonwalk البته با نکات omid1991 کار کرد.
    فقط نفهمیدم دلیل استفاده از تابع trim چی هست؟

    ساده ترین و بهترین راه تابعیه که از پیش رزرو شده و توسط خود php تهیه شده : similar_text
    به نظر شما از تابع similar_text استفاده کنم یا تابع ارسالی توسط دوستان؟
    توجه کنید ما دو عبارت فارسی داریم.

    تشکر

  14. #9
    عضو جدید phpcoding آواتار ها
    تاریخ عضویت
    Mar 2017
    نوشته ها
    53
    تشکر تشکر کرده 
    1
    تشکر تشکر شده 
    46
    تشکر شده در
    33 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    نقل قول نوشته اصلی توسط naghmesra نمایش پست ها
    سلام و درود

    بله تابع ارسالی توسط MJmoonwalk البته با نکات omid1991 کار کرد.
    فقط نفهمیدم دلیل استفاده از تابع trim چی هست؟



    به نظر شما از تابع similar_text استفاده کنم یا تابع ارسالی توسط دوستان؟
    توجه کنید ما دو عبارت فارسی داریم.

    تشکر
    دلیل استفاده از trim به احتمال زیاد این بوده که کاراکتر های اضافی حذف بشن
    و اما در مورد سوالتون خطاب به من :
    مسلما چیزی که خود php طراحی کرده باشه تا تابع دست نویس دوستان زمین تا آسمون فرقشه . به قول داداش دوقلوی من فرقش مث پیکانو پیکان وانته
    تابع دست نویس دوستان هم خوبه به نظرم . من طرز کد نویسیشون رو یه بررسی جزئی کردم . اگر کد رو واقعا خودشون نوشتن باشن کارشون خوبه کدشون هم خوبه مشکلی نداره
    ولی در این مورد : خود من به شخصه به عنوان یه برنامه نویس تا زمانی که تابع similar_text هست و میشه ازش استفاده کرد هیچ موقع اقدام به نوشتن توابع دست نویس نمیکنم
    برای عبارت فارسی هم بسیار کار راحتیه . اصلا مشکلی نیست که . کلمات خود را از تابع mb_strtolower رد کنید و پارامتر دومش رو هم utf-8 قرار بدید . اینم نمونه کد نوشته شده توسط خودم + توضیحاتی که دادم :
    کد PHP:
    $brothers=array();
    $brothers[0]="amirali esteki";
    $brothers[1]="amirabas esteki";
    similar_text(mb_strtolower($brothers[0],"utf-8"),mb_strtolower($brothers[1],"utf-8"),$output);
    echo 
    $output
    ویرایش توسط phpcoding : March 31st, 2017 در ساعت 14:42
    انجام پروژه های:php-c#-c++-java-basic-css-html-javascript-python
    مشاوره با مسئول پروژه ها-حامد دعایی:+989901567129
    تماس با برنامه نویس-امیرعلی استکی:+989017735378



  15. تعداد تشکر ها از phpcoding به دلیل پست مفید


  16. #10
    عضو انجمن
    تاریخ عضویت
    Jul 2014
    نوشته ها
    199
    تشکر تشکر کرده 
    118
    تشکر تشکر شده 
    75
    تشکر شده در
    70 پست

    پیش فرض پاسخ : مقایسه دو رشته فارسی چند کلمه ای با هم و دریافت درصد تشابه

    درود

    کد PHP:
    function similar_check ($str1$str2) {
        
        
    $str1_len mb_strlen($str1'UTF-8');
        
    $str2_len mb_strlen($str2'UTF-8');
        
        if (
    $str1_len $str2_len) {
            
    $big_str $str1;
            
    $small_str $str2;
        }
        else {
            
    $big_str $str2;
            
    $small_str $str1;
        }
        
        
    $big_arr explode (" "$big_str);
        
    $small_arr explode (" "$small_str);
        
    $big_count count ($big_arr);
        
    $small_count count ($small_arr);
        
        
    $same_found 0;
        foreach(
    $small_arr as $word)
        {
            
    $word trim($word);
            foreach(
    $big_arr as $word2)
            {
                
    $word2 trim($word2);
                if(
    $word1 == $word2$same_found++;
            }
        }
        
    $percent = ($same_found/$big_count)*100;

    کد بالا گاها درصد بالای 100 در 100 میده.
    مثلا اگر عبارت اول رو بزنید "سلام درود سلام" و عبارت دوم رو بزنید "درود سلام درود" درصد میشه 133 درصد.
    کاریش میشه کرد؟

    تشکر

صفحه 1 از 2 12 آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. پاسخ ها: 7
    آخرين نوشته: March 4th, 2016, 21:34
  2. پاسخ ها: 16
    آخرين نوشته: October 14th, 2015, 13:30
  3. درخواست لایسنس سی پنل سرور اختصاصی و لایسنس لایت اسپید
    توسط iranwhsrver در انجمن درخواست انواع لایسنس
    پاسخ ها: 3
    آخرين نوشته: October 6th, 2014, 09:32
  4. پاسخ ها: 79
    آخرين نوشته: June 16th, 2013, 12:21
  5. پاسخ ها: 61
    آخرين نوشته: April 20th, 2013, 20:12

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •