הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 02-12-09, 21:02   # 1
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

מחפש דרך להשוואה בין מספר טקסטים

שלום

יש לי שלושה טקסטים שהמשתמש הזין (פשוט טקסט)

אני רוצה להשוות ביניהם ולדעת מי מבין הטקסטים יותר דומה למי

יש לציין שהטקסטים בעברית

איך הייתם עושים את זה??
__________________
  Reply With Quote
ישן 02-12-09, 21:06   # 2
Slash
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 35
הודעות: 522

Slash לא מחובר  

השאלה איך אתה מגדיר דומה ?
__________________
Aziza Web Magazine

Always account for variable change
  Reply With Quote
ישן 02-12-09, 21:07   # 3
Hanan
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
גיל: 38
הודעות: 841

Hanan לא מחובר  

הייתי מנסה עם base64_decode... או md5 אבל שוב תלוי מה אורך הטקסט...
תנסה את מה שאמרתי..

ותשווה אח"כ
PHP קוד:
if ($text1 == $text2$msg .= 'text1 same as text2';
if (
$text1 == $text3$msg .= 'text1 same as text3'
וכ'ו וכ'ו..
__________________
פרוייקטים: חדשות, קייטרינג, מילים לשירים, זר מתוק

בניית אתרים - Wise Group Media LTD
  Reply With Quote
ישן 02-12-09, 21:24   # 4
Daniel
אחראי פורום
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
הודעות: 2,875

Daniel לא מחובר  

ציטוט:
נכתב במקור על ידי Hanan צפה בהודעה
הייתי מנסה עם base64_decode... או md5 אבל שוב תלוי מה אורך הטקסט...
תנסה את מה שאמרתי..

ותשווה אח"כ
PHP קוד:
if ($text1 == $text2$msg .= 'text1 same as text2';
if (
$text1 == $text3$msg .= 'text1 same as text3'
וכ'ו וכ'ו..
מדוע md5 או base64 יהיו קשורים?

md5 הוא אלגוריתם הצפנה וכל הרעיון באלגוריתמים כאלה שאם אני אצפין "my name is nitsan" או "my name is aitsan" (הבדל של אות אחת) הכל יהיה שונה לגמריי.

base64 בעצם מבצע העברת בסיס, למה זה יעזור?




ולנושא -

תסתכל על http://php.net/manual/en/function.similar-text.php
ועל http://www.php.net/manual/en/function.levenshtein.php
  Reply With Quote
ישן 02-12-09, 22:35   # 5
Hanan
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
גיל: 38
הודעות: 841

Hanan לא מחובר  

אתה יודע זה לא שאני משווה טקסטים כל היום אני לא עוסק בחקר. השיטות שהצגתי אפשריות גם. כמו שאמרת "הבדל של אות אחת הכל יהיה שונה לגמריי". משמה -> עדיין אתה יכול לבדוק 2 strings האם הם זהים.

נקודה למחשבה... והצגת פונקציות יותר טובות...
__________________
פרוייקטים: חדשות, קייטרינג, מילים לשירים, זר מתוק

בניית אתרים - Wise Group Media LTD
  Reply With Quote
ישן 03-12-09, 16:08   # 6
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

תריץ לולאה שמשווה תו תו ובסוף רושמת כמה שוני יש בינהם.
או ללכת על משהו קיים:
http://php.net/manual/en/function.similar-text.php

השוואה בין קבצים/מסמכים:
אתה עובר על הקבצים שורה שורה ומשווה, אם יש שוני אתה יכול גם לבדוק מה השוני.
  Reply With Quote
ישן 03-12-09, 23:11   # 7
Ben Bokra
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Nov 2009
הודעות: 37

Ben Bokra לא מחובר  

תשתמש במחרוזת או בביטוי רוגליים .
__________________
בברכה בן , מנכ"ל חברת סורסווב .
פאלפון : 0509640507 / כל ימות השבוע החל מ12 בצהריים עד 3 לפנות בוקר [בשבת החל ממוצ"ש (6:50) בערב עד 3 לפנות בוקר] .
מסנג'ר : admin@sourceweb.co.il , איסיקיו : 583-605-584
  Reply With Quote
ישן 03-12-09, 23:22   # 8
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

אני רוצה להשוות בין 3 טקסטים.. לא 2!

או אפילו 4... כאשר אני יכול להזין מספר קבצים והאלגוריתם יראה לי טקסטים משותפים לכולם נגיד או ימרקר לי..

תודה!!
__________________
  Reply With Quote
ישן 04-12-09, 11:46   # 9
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

היי ניצן, בניתי לך פונקצייה שמבוססת על הsimilar_text הזה, היא מקבל מערך של stringים ומחזירה לך מערך עם האחוזים:
PHP קוד:
function match_array_strings($array)
{
    if(!
is_array($array)) return array();
    
$count count($array);
    
$match = array();
    for(
$i=0;$i<$count;$i++)
        for(
$j=$i+1;$j<$count;$j++)
            
similar_text($array[$i],$array[$j],$match[$i.'-'.$j]);
    return 
$match;

לדוגמה, עבור:
PHP קוד:
$input[] = 'my name is shay';
$input[] = 'your name is shay';
$input[] = 'your name was shay';
$input[] = 'my name is shai';

print_r(match_array_strings($input)); 
מוחזר:
PHP קוד:
Array
(
    [
0-1] => 87.5
    
[0-2] => 78.787878787879
    
[0-3] => 93.333333333333
    
[1-2] => 91.428571428571
    
[1-3] => 81.25
    
[2-3] => 72.727272727273

בהצלחה!

עריכה: עם שינוי קטן ניתן לעשות שזה לא יהיה רק 0-1 אלא גם 1-0 וכדומה, מה שמקל על הפנייה למערך אבל יכביד על הזיכרון אם יהיו הרבה טקסטים. הפונקצייה שעושה זאת:
PHP קוד:
function match_array_strings($array)
{
    if(!
is_array($array)) return array();
    
$count count($array);
    
$match = array();
    for(
$i=0;$i<$count;$i++)
        for(
$j=$i+1;$j<$count;$j++)
        {
            
similar_text($array[$i],$array[$j],$match[$i.'-'.$j]);
            
$match[$j.'-'.$i] = $match[$i.'-'.$j];
        }
    return 
$match;

__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.

Last edited by Shay Ben Moshe; 04-12-09 at 11:50..
  Reply With Quote
ישן 04-12-09, 11:50   # 10
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

הוא לא מחפש משהו שיראה לו אילו מחרוזות דומות באחוזים, הוא רוצה משהו שיבדוק מילים בטקסט ויציג הבדלים.

לא נראה לי שתמצא אלגוריטם טוב לזה בPHP במיוחד לא לכמה טקסטים במקביל ובעברית.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 18:04.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ