עבור לתוכן

מציאת מילים בעלי סמיכות בניתוח (Parsing) טקסט

Featured Replies

פורסם

אני מעוניין לבצע ניתוח (Parsing) על טקסט ולזהות סמיכות בין מילים. אני שומר את המילים בתוך dictionary מסוג <string, int> (ז"א, סוג של list אשר שומר string מסויים ואת מספר הפעמים - ה-count-ים - שהופיע בטקסט).

אם יש לי את המילים "בית ספר", "עורך דין", "בית משפט" בטקסט, אני מעוניין שהאלגוריתם יזהה (למשל) שהמילה "בית" ושהמילה "ספר" הן מילים סמוכות ושיחשיב את שתי המילים בתור "צירוף" / כמקום אחד ב-dictionary עם count יחיד ולא כ-2 מקומות עם שני count-ים נפרדים.

חשבתי על אפשרות השוואה של כל מילה ומילה בטקסט למאגר של כל מילות הסמיכות הקיימות. אם המילה הנוכחית היא התחלה של אחד מה"צירופים" שבמאגר, תתבצע השוואה בין המילה העוקבת לנוכחית לבין הסיומת של ה"צירוף" שנמצא (כמובן שאבצע מיון על המאגר בכדי לחפש בו ביעילות של log n).

האם קיים מאגר כמו המאגר שהוזכר לעיל? אשמח לקישור לאתר / להורדה.

אם אין כזה מאגר:

אני לא מודע לעובדות המדוייקות, אבל אני מניח שאי אפשר לבצע זאת ע"י אלגוריתם בנכונות של 100%. כל אלגוריתם שמתקרב לנכונות של 80-90% יתקבל בברכה.

פורסם

אם יש לך כמות מספיק גדולה של טקסט אז אתה יכול לספור את זוגות המילים, ואם יש זוג מילים שכמות המופעים שלו גדולה ביחס לכמות המופעים של כל אחת מהמילים שמרכיבות אותו (נניח, המילה "בית" והמילה "ספר" מופיעות 10 פעמים כל אחת, והצמד "בית ספר" מופיע 7 פעמים) אז אתה יכול להניח שמדובר בסמיכות. כמובן תצטרך כמות טקסט גדולה ולשחק עם זה קצת על מנת לקבוע את החסמים הנכונים.

פורסם

אפשר לעשות זאת בנכונות של מאה אחוז, כל עוד יש לך את כל המילים שאתה רוצה. ביטוי רגולרי פשוט מאפשר בניה של זה. אבנה משהו קטן והערוך.

פורסם

הבעיה היא כמובן שלהשיג מאגר של כל צירופי המילים בשפה העברית הוא לא משהו שנראה לי קיים איפשהו.

אתה בעצם מדבר על מסד נתונים של מילון לשפה העברית, לא מכיר שום דבר כזה זמין.

פורסם

התבלבלתי, חשבתי שאתה מחפש על דרך לעשות זאת וזה מה שכתבתי. לא חשבתי שאתה מחפש מאגר. הפתרון של שניצל נראה לי הכי הגיוני. אשמח לעבוד על זה במידה ותתקע.

.

פורסם

hspell (מה שגוגל משתמשת בו) אבל הבניה והמבנה של המאגר הרבה יותר מסובכים מהמבנה הפשטני שתיארת

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים