זיהוי של ״בני ברק״ גם אם שולחים אליי ״בניי ברק״ או בני ברכ״
-
אני בונה שלוחת api בימות המשיח של הרשמה לאיזה ארגון ,
העניין הוא שעל פרטים כמו שם פרטי ומשפחה, לא מפריע להם אם התמלול יהיה לא מדויק לגמרי כגון במקום כהן שיכתוב כוהן, עם זה אין בעיה, הבעיה היא בכתובת שאם זה לא מדוייק אז לא נשלח אליו דיוור וכו.
יש לי רשימה של הערים שמהם ניתן להצטרף לארגון, ובכל עיר שאפשר להצטרף ממנה, יש לי רשימה עם הרחובות.
עכשיו הסתבכתי איך אני יכול לדעת בקוד , שהמילה בניי ברק שמתקבלת אצלי מהזיהוי דיבור, היא בני ברק שכתוב לי ברשימה?
או שרחוב ראשי , הוא רחוב רשי בבני ברק?
הקוד כתוב בpython.
עריכה:
אני מקבל אליי הקלטה, ומזהה דיבור על ידי גוגל.
אז אולי הפתרון לשלוח לגוגל את הרשימת מילים שזה יכול להיות אחת מהם. -
@צבי-ש אני השתמשתי לזה (מציאת התאמה מזיהוי דיבור לשמות ערים) בNode.js בספריית fusejs.io, (אני הגדרתי את הthreshold ל0.3 כי הוא היה מדי סלחני), ואז אתה מנסה למצוא התאמה לעיר, ובשלב שני אותו דבר, לרחוב באותה עיר.
אין לי נסיון בזה בפייתון, אבל יש כל מיני חבילות כאלה, תחפש אחת נוחה ותשתמש.
הגדרת רשימת מילים קשורות (שמות ערים או רחובות) כמו שכתבת גם עשויה לעזור, אולי כדאי לשלב ביניהם.
אפשרות נוספת היא להשתמש בAPI של מפות דוגמת גוגל maps, הוא אמור להתמודד עם כאלה דברים. -
@צדיק-תמים תודה רבה,
חיפשתי בגוגל
fuzzy matching library python
התוצאה הראשונה הייתה
https://medium.com/codex/best-libraries-for-fuzzy-matching-in-python-cbb3e0ef87ddואכן הם הביאו שם ספרייה בשם jaro-winkler
ואכן השתמשתי בה והיא פתרה לי את הבעיה:
import jaro str1 = "בניי ברק" str2 = "בני ברק" print(jaro.jaro_winkler_metric(str1,str2))
וההתאמה שהוא מצא לי הייתה 0.9708333333333333
ואילו על זה
import jaro str1 = "בני ברכ" str2 = "בני ברק" print(jaro.jaro_winkler_metric(str2,str1))
ההתאמה שלו הייתה 0.9333333333333333
(אולי ההתאמה קצת שונה בגלל שזה לא אות כפולה, שזה טעות יותר מצויה, אלא זה אות אחרת לגמרי.)
-
דובר בעבר:
https://tchumim.com/topic/566@צדיק-תמים ישר כח על הספריה, לא הכרתי.
במקרה שלא מדובר ברשימת ערים סוגרה ומוכרת מראש, או אם הספריה היא לא מאה אחוז אז אולי יעזור לך גוגל gecoding אני משתמש איתה (רק שבמקרה שלי זה טעויות הקלדה ולא תמלול), בדרך כלל התוצאה הראשונה זה הדבר הנכון.
-
@dovid כתב בזיהוי של ״בני ברק״ גם אם שולחים אליי ״בניי ברק״ או בני ברכ״:
@צבי-ש לא הבנתי מה הבאת מjaro-winkler,
אתה מתלונן שזה לא טוב או אתה משבח אותו?
זה לכאורה פותר לך את הבעיה, לא?פותר לי, כתבתי את זה להראות את הפיתרון , בשביל הבאים שיבואו ויתקעו עם השאלה הזאת.
-