חיפוש עברי בספריה הלאומית
"כל מאגרי הספריה הלאומית, עכשיו באינטרנט", זעקו הכותרות. כחובב טקסטים, הלכתי לראות על מה מדובר.
באתר הספריה (http://web.nli.org.il) יש גישה לקטלוג ולארכיונים שונים, כאשר בראש האתר עומדת תיבת טקסט לחיפוש חופשי. כמובן שזה הדבר הראשון שניסיתי באתר...
ובכן, עושה רושם שבעיית החיפוש העברי אכן היתה ידועה ונלקחה בחשבון בבניית האתר. נראה שאיזו שהיא תשומת לב אכן ניתנה לטיפול מורפולוגי כלשהו, אך חבל שהתוצאות רחוקות מלהיות טובות, ואפילו נכונות.
כמה דוגמאות מייצגות ומסקנותיהן (בקצרה) בצידן:
- חיפוש עבור "רבין" מביא תוצאות לא רלוונטיות כלל ב-6 התוצאות הראשונות (עם המילה "רביניו" מודגשת). הקלטת שמע מאת עוזר רבין מופיעה שביעית, ראשונה מבין התוצאות עבור "רבין". זהו recall גרוע במיוחד. הסיבה לכך היא מתן משקל זהה לצורות מדויקות וצורות החשודות כדומות, וכדאי לשים לב שמדובר על מילה בעלת הטיות אפשריות מעטות מאד.
- אותיות מש"ה וכל"ב כלל לא מטופלות כראוי - חיפוש עבור "הלב" לא מחזיר תוצאות בהן מופיעה המילה "לב", ומאוחזרות רק הטיות של המילה "לב" עם התחילית ה'. זו אינה הדרך הנכונה הנכונה לבצע זאת - נרצה לדרג אחזורים מדוייקים גבוה יותר, אך לא לאבד אחזורים רלוונטיים שנכתבו במקור ללא אותיות מש"ה וכל"ב.
- גרשיים. לא נתמכים. בכלל. חיפוש עבור צה"ל, רמב"ם, רמב"ן לא מניב אף תוצאה (אבל צהל, רמבם כן).
- כתיב מלא / חסר - לא נתמך כלל. חיפושים עבור אמא / אימא, חנוכיה / חנוכייה, ספריה / ספרייה ועוד מחזירים תוצאות שונות לחלוטין.
כל הדוגמאות הנ"ל גורמות לי להאמין שמדובר על query expansion מסוג כלשהו, ובכל אופן ברור שמדובר על מנוע חיפוש קליל ביותר עבור מאגר הספרים הלאומי. החיפוש אינו ממצה, ובעל precision & recall נמוכים ביותר. בכמה הרצאות שנתתי בנושא כבר הראיתי דוגמאות לכך באתרים כמו ווינט, ויקיפדיה העברית ותפוז, אך דווקא מהספריה הלאומית ציפיתי ליותר...
פרוייקט HebMorph, עליו ניתן לקרוא הרבה גם באתר זה, נועד בדיוק למטרה זו, והוא בקוד פתוח (עם אופציה לשימוש מסחרי). בשימוש קצר ב-demo החי ניתן להתרשם מכך שהמנוע כבר מטפל גם בנקודות שאוזכרו...
Practical Hebrew search – Open2011 presentation
Attached with this post is the presentation I gave today at Open2011 in Tel-Aviv.
The sample app can be found here: http://hebmorph.code972.com/. It is also going to be HebMorph's home in a few weeks when I'll be done generating all the necessary content.
As promised, I will be posting more details on some interested findings on Hebrew search, and comparisons with Google search. I want to have a bit more comprehensive posts about that, so it will be up in a few weeks time.
HebMorph at SIGTRS 07/10
Today I gave a talk at SIGTRS on Hebrew search and HebMorph. Attached with this post is the slideshow from the presentation. More info on HebMorph is accessible through the project's page.
A PDF with the presentation summary in Hebrew is available as well (6 pages): HebMorph SIGTRS presentation summary. It describes what exactly HebMorph is, what problems it tries to solve, and how.
More flexible Hebrew indexing with HebMorph
In the past week I've been working on making Hebrew indexing with HebMorph more flexible. Now it is possible to perform different type of searches, and also control the way lemmas are filtered. You can also perform exact searches and morphological searches on one field, without indexing the contents twice. See below for more details on how its done.
Open-source Hebrew information retrieval (HebMorph, part 3)
Indexing Hebrew texts for later retrieval is not a trivial task. Although several solutions exist, I have pointed out that they are not necessarily providing the best results. Either way, there is no freely available solution allowing to index Hebrew even at the very basic level.
HebMorph was started with this in mind. It is a free, open-source effort for making Hebrew properly searchable by various IR software libraries, while maintaining decent recall, precision and relevance in retrievals. During the work on this project, we will try and come up with different approaches to indexing Hebrew, and provide the tools to perform reliable comparisons between them. This project's ultimate goal is providing various IR libraries with the best Hebrew IR capabilities possible.
Finding Hebrew lemmas (HebMorph, part 2)
As shown in the previous post, building a Hebrew-aware search engine is not trivial. Several attempts (mainly commercial) were made to deal with that. In this post I'm going to try and draw a complete picture of what they did, and show other routes that may exist. In the next post I'll discuss HebMorph itself.
Challenges with indexing Hebrew texts (HebMorph, part 1)
Unfortunately, there is no magic trick for correctly indexing and searching Hebrew texts. Semitic languages like Hebrew, Arabic, and Aramaic are the hardest to morphologically analyze and disambiguate, and as a result creating a perfect IR solution for them, if at all possible, requires a lot of research and a very long process of trial and error. Some claim Hebrew is the most complex language of all from an NLP perspective. I don't know other Semitic languages well enough to comment on this, but I do know Hebrew to be complicated enough...
Since someone had to do this lengthy and tiresome work someday, I decided to go forward and do the heavy lifting myself instead of waiting for someone else to pick it up. That, and the fact I needed such a solution for another product I'm working on. This effort - HebMorph - is all about making Hebrew properly searchable by various IR software libraries, while maintaining decent recall, precision and relevancy in retrievals. As of this writing, it is still in a design phase, and is available from the github repository.
In a series of posts, I'm going to investigate this subject, and hopefully draw a complete picture. I'll start by explaining Hebrew morphology and how it affects common IR methods. From there, I'll present several possible ways to attack the problem, and finally discuss what exactly HebMorph does and what are its goals and roadmap.