חלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד
-
יש לי מלא קבצים עם מלא מקורות לסימנים בשו"ע או תשובות בשו"ת או אותיות וכו'
בקבצים האלו המקורות מסומנים בצורה כזו לדוגמא סי' שח כתוב כך ש"ח עם גרשיים ואם זה סימן ח זה כתוב כך ח'
כעת אני רוצה להוריד את כולם ולעבור על למעלה מכמה מיליוני מילים ואין הצר שווה ...
הבעיה היא שיש מלא סוגי "- יש הדגשה "הדגשה"
- יש ראשי תיבות סתמיים במסמך
- יש " שיש אותם גם בראשי תיבות וגם בסימנים לדוגמא ר"ס זה יכול להיות גם ריש סימן וגם סי' רס.
האם יש איה סיכוי לאיזה רצף קוד שיכול לעשות את המירב (או שזה ממש בגדר בינה מלאכותית... אולי המומחים ידעו לומר איפה זה אוחז שם .. )
חשבתי על פתרון (אמנם הוא לא פותר לי את הבעיה באופן מלא)
לזהות את המילה שלפני
סי'
סימן
אות
סו"ס
וכו'.. וכו'..
ואם יש אחריה מילה עם " למחוק אותה.
הבעיה היא שלפעמים מופיע כמה סימנים תר"ד, תקא, וכו' (הפסיקים לא מוכרחים)...השאלה בכללית האם זה שווה את המאמצים (ולכמה אחוזי תוצאה אני יגיע), או שפשוט בנידו"ד לא נאמר אין יאוש כלל...
אשמח לשמוע גם חוות דעת (וכמובן בע"ה אם יש פתרונות...) או עוד כיווני חשיבה איך לצלוח את הבעיה..
תודה רבה.. -
@Y-Excel-Access כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
משמעותי מאוד איך סיכמת את החומר
למה כוונתך?
@Y-Excel-Access כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
יש לך דוגמה שאפשר להראות שהיא מספיק משקפת?
@Y-Excel-Access כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
נ.ב. אשמח מאוד לראות את הקוד שלך, גם אם לא כיסה הכל...
הקוד שלי עודנו בראשי ועדיין לא העלתי אותו על הכתב (אני שאלתי את שאלתי כאן כדי לדעת אם יהיה שווה לי הזמן להתחיל עם זה)..
אם זה כ"כ משנה ונפק"מ אני יכתוב את זה -
עשיתי דברים כאלו בעבר. היות שאני לא גוגל לא התבססתי על אלוגריתמים של בינה מלאכותית ולמידת מכונה, אלא על ניתוח מחרוזות על פי מוסכמות שקעבתי וביטויים רגולריים מתוחכמים+רשימות בסיסיות.
אני מניח שגם אתה תעבוד ככה.
ובכן, זה אפשרי, לעולם לא במאה אחוז הצלחה.
כמה אחוז הצלחה וכמה מידת השקעה? תלוי בטקסט שלך.
ככל שמידת המורכבות וחוסר העקביות שלו עולה, זה ידרוש ממך יותר עבודה על מנת להגביר את סיכויי ההצלחה באמצעות קומבינות ופלסטרים שונים ומשונים.ולכן זה תלוי בעיקר בכמות הטקסט ובחשיבות שלו עבורך. אם כמות הטקסט לא גדולה אבל מורכבותו כן - לפעמים עדיף לעשות זאת ידנית. כי העבודה שדרושה היא סזיפית במובן מסויים ודורשת המון התאמות וחוזר חלילה. זה צריך להיות משתלם.
-
@אוריי כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
יש ראשי תיבות סתמיים במסמך
אפשר לזהות ר"ת שהם לא יכולים להיות סימן ולהתעלם מהם.
לדוגמא: המילים אע"פ או שו"ת לא יכולים לייצג שום מספר בגימטרייה, אז זה ודאי ראשי תיבות שצריך להתעלם מהם.
אפשר לכתוב קוד שיזהה האם ר"ת כלשהוא יכול לייצג מספר או לא. -
@davidnead כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
ולכן זה תלוי בעיקר בכמות הטקסט ובחשיבות שלו עבורך. אם כמות הטקסט לא גדולה אבל מורכבותו כן - לפעמים עדיף לעשות זאת ידנית. כי העבודה שדרושה היא סזיפית במובן מסויים ודורשת המון התאמות וחוזר חלילה. זה צריך להיות משתלם.
@אוריי כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
לעבור על למעלה מכמה מיליוני מילים ואין הצר שווה ...
-
@אוריי כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
@davidnead כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
ולכן זה תלוי בעיקר בכמות הטקסט ובחשיבות שלו עבורך. אם כמות הטקסט לא גדולה אבל מורכבותו כן - לפעמים עדיף לעשות זאת ידנית. כי העבודה שדרושה היא סזיפית במובן מסויים ודורשת המון התאמות וחוזר חלילה. זה צריך להיות משתלם.
@אוריי כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
לעבור על למעלה מכמה מיליוני מילים ואין הצר שווה ...
השאלה כמה חשוב לך המטרה ואתה מוכן להשקיע בשבילה.
זרקו פה לעיל 2-3 רעיונות שיקדמו אותך לזיהוי מילה שהיא ראשי תיבות וכדומה. אבל בסופו של תהליך אם תיכנס אליו אתה תצטרך לשלב עשרות רבות אם לא מאות של רעיונות כאלו כדי להגיע לתוצאה. צריך יצירתיות ונכונות לעבודה סזיפית.
רצויה היכרות טובה מאוד עם ביטויים רגולריים.
רצוי רשימות/מאגרים בסיסיים כמו רשימת מסכתות וראשית תיבות שלהם, רשימת ספרי ראשונים ואחרונים בסיסיים וראשי תיבות מקובלים, ועוד. הכל תלוי באופי הטקסט כמון, שאיני מכירו.
תוכל להעזר בי בפרטי לשאלות ספציפיות, ככל שיאפשר לי הפנאי המצומצם שלי. -
עלה לי כעת עוד מחשבה ע"פ מש"כ @קומפיונט
שאני יכול ליצור קוד שיחזיר לי את כל הר"ת בכל המסמכים לתוך טבלת אקסל, ופשוט לעבור אחד אחד ולחלק ל3 קטגוריות- צריך להשאיר.
- ודאי למחוק.
- ספק.
לאחר מכן על הספק לעשות בדיקה איזו מילה יש לו לפני ולפי"ז למחוק או להשאיר ומה שנשאר בספק שיסמן לי אותו בסגנון נפרד ולעבור ע"ז ידנית.
השאלה היא האם זו הדרך הנכונה?
והאם זה לא מידי אגרסיבי לקוד vba החלש לעשות מליוני פעולות בצורה כזו?עריכה: ראוי לציין שהחומר הוא די עקבי ...
-
@davidnead כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
רצויה היכרות טובה מאוד עם ביטויים רגולריים
את האמת
את החלק הזה חסר לי מאוד
חיפשתי בעבר מדריך טוב ולא מצאתי ..
כאן בפורום מצאתי איזה מאמר קטן אבל ממש לא מקיף -
@אוריי כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
עלה לי כעת עוד מחשבה ע"פ מש"כ @קומפיונט
שאני יכול ליצור קוד שיחזיר לי את כל הר"ת בכל המסמכים לתוך טבלת אקסל, ופשוט לעבור אחד אחד ולחלק ל3 קטגוריות- צריך להשאיר.
- ודאי למחוק.
- ספק.
לאחר מכן על הספק לעשות בדיקה איזו מילה יש לו לפני
בדיוק רציתי לכתוב כעין הרעיון הזה
תכתוב קוד עם כמה חיפושים, ותפצל אותם לשתי רמות:
- חיפושים שמוצאים לך מילים שבסבירות גבוהה/גבוהה מאוד שהם מספרים
- ספקות - חיפושים שמוצאים לך מועמדים אפשריים, דברים שצריך בינה אנושית או מלאכותית ולראות את ההקשר כדי להחליט
לפני שאתה עושה את ההחלפות בפועל, תעתיק את המילים שמצאת עם ההקשר (המילים שלפני/אחרי) לתוך רשימה שתוכל לסקור בקלות (אפשר קובץ אקסל או סתם רשימת טקסט) כדי שתוכל למצוא את כל מקרי הקצה האפשריים
ברשימה של הקרובים לודאי, העבודה שלך הוא לסנן מתוכם את הזיהויים הלא נכונים שאמורים להיות ספקות,
ברשימה של הספקות יש שתי עבודות, א) לדאוג שמצאת את כל הספקות האפשריים (זה לכאורה לא משהו מאתגר) ב) למצוא דרכים לשפר את החיפוש כך שתוכל להעביר כמה שיותר דברים לרשימה הראשונהתוך כדי העבודה, תתן את הדעת להשקיע הכי הרבה בכללים שיכולים להניב הכי הרבה תוצאות. אם תמצא מקרה קצה שמן הסתם קורה פעם פעמיים בכל הקובץ, תשקיע בזה פחות.
אחרי שיש לך חיפושים טובים לשתי הרשימות תעשה על הרשימה של הקרובים לודאי החלפה גלובלית, ועל הרשימה השניה תוכל לצבוע את כל התוצאות ואז לעבור אחד אחד, או לעבוד על חיפושים יותר חכמים שכל אחד יטפל במקרה קצה אחד ולאט לאט תשפר את התוצאות
-
@אוריי כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
@davidnead כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
רצויה היכרות טובה מאוד עם ביטויים רגולריים
את האמת
את החלק הזה חסר לי מאוד
חיפשתי בעבר מדריך טוב ולא מצאתי ..
כאן בפורום מצאתי איזה מאמר קטן אבל ממש לא מקיףשים לב שוורד יש לו שפת תווים כלליים משלו, (וגם יש כמה באגים במנוע)
כאן יש דף עם תיעוד טוב:
https://wordmvp.com/FAQs/General/UsingWildcards.htmתוכל גם לשאול כאן (״איך אני כותב ביטוי למצוא משהו שמתאים לתבנית XYZ״) ועד כמה שיהיה לי זמן וחשק אשמח לענות
-
ראשית המאמר כאן בפורום הוא אחד הטובים שקראתי בעברית, והוא עזר לי בעבר להיכנס לעולם הזה.
שנית אין חומר בעברית שמקיף את הנושא, לפחות לא חומר מקוון. ביטויים רגולריים זה נושא עשיר ומפותח, ורוב האנשים המשתמשים בהם משתמשים רק ביכולות הבסיסיות.
יש איזשהו אתר מיושן באנגלית שכל פעם אני מסתבל למצוא אותו שיש שם תיעוד רב והסברים רבים.לגבי וורד והסימנים המיוחדים שלו - אני חושב שזה ממש לא יכול להיות הדרך לעבודה כזו. זה צריך להיות קוד טהור.
-
@davidnead כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
יש איזשהו אתר מיושן באנגלית שכל פעם אני מסתבל למצוא אותו שיש שם תיעוד רב והסברים רבים.
https://www.regular-expressions.info?
יש שם המון מידע -
@davidnead כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
לגבי וורד והסימנים המיוחדים שלו - אני חושב שזה ממש לא יכול להיות הדרך לעבודה כזו. זה צריך להיות קוד טהור.
מדובר על קבצי וורד, אני לא חושב שלכתוב פרוייקט בשפה אחרת (שהשואל לא מכיר) הוא פתרון מתאים פה.
ב-VBA אין מימוש של regex נורמלי, רק המוזרים של וורד.
(אולי אפשר לייבא ספרייה)
(אני שופט לפי היסטוריית הפוסטים ש @אוריי מסתדר טוב ב-VBA אבל לא בקי בשפות ופלטפורמות אחרות) -
ראשית כל ברצוני להודות לכל המשיבים שעמלו מזמנם היקר...
לסיכום:
מה שאני צריך לעשות כדי להגיע לתוצאה המיטבית זה כך:- ליצור רשימה של כל הסימנים שיש באקסל או באקסס (כולל גרשיים ומקפים לפי הצורך) א' ב' ג' ... י"א.. י"ב וכו' ולסדר את המילים הרעות כגון תרצ"ח וכו' (או גם וגם).
- לעבור על הרשימה ולסמן אלו אופציות ודאי לא יכול להיות חוץ מסימנים.
- לחפש את כל התוצאות שנשארו ולקבל אותם לתוך טבלה (אקסס או אקסל), עמודה ראשונה 3 מילים לפני, עמודה שניה התוצאה, עמודה שלישית 3 מילים אחרי.
- לעבור על הרשימה ולסמן אלו תוצאות שיש לפניהם מילים שמכריחות סימן ואלו זה וודאי ר"ת בפני עצמם.
- ואת כל השאר שנשארו ספק לסמן בסגנון נפרד ולעבור עליהם ידנית.
כעת עומדות לפני 2 שאלות:
- האם לעשות את הטבלה באקסס או באקסל?
- היות ויש לי עשרות קבצים כאלו (למעלה ממאה) האם לעשות קוד באקסס \ אקסל שיגש לקובץ וורד או ליצור קוד בוורד שיגש לdb שלו שזה אקסס \ אקסל.
-
@yossiz כתב בחלום \ אתגר | זיהוי ראשי תיבות של סימני מקורות בקבצי וורד:
ב-VBA אין מימוש של regex נורמלי, רק המוזרים של וורד.
(אולי אפשר לייבא ספרייה)אפשרי בהחלט. שם הספריה:
Microsoft VBScript Regular Expressions- אפשר להתקין בקישור מוקדם (Early Binding) מתפריט עורך ה-VBA:
Tools > References > Microsoft VBScript Regular Expressions
ולסמן V על הספריה הנ"ל, ואז להשתמש בקוד כך:
Dim RegExp As New RegExp Function RemoveAllButNumbers(s As String) As String With RegExp .Pattern = "\D" .Global = True RemoveAllButNumbers = .Replace(s, "") End With End Function
- או לקשר ישירות בקוד (Late Binding) כך:
Function RemoveAllButNumbers(s As String) As String With CreateObject("VBScript.RegExp") .Pattern = "\D" .Global = True RemoveAllButNumbers = .Replace(s, "") End With End Function
- אפשר להתקין בקישור מוקדם (Early Binding) מתפריט עורך ה-VBA:
-
עברתי קצת על הקובץ, וכן, אני לא רואה בקלות משהו אחיד לכל הראשי תיבות.
אבל אפשר כמובן להוציא מן הכלל הרבה עבודה לפני שמתחילים ידנית, וכמו שכתבת.
רק אוסיף עוד - צריך לבדוק גם אם יש לפני או אחרי מילת הראשי תיבות תווים. לדוגמא אם יש אח"כ נקודה, פסיק, או סגור סוגריים וכדו' וזו תהיה עוד אינדיקציה לעבוד איתה, ולא רק המילים עצמם שלפני ואחרי.פיתחתי משהו דומה - תיקון והגהת טקסט, והלוגיקה דומה קצת. אבל לא מצאתי פתרון קסם...
להחלפות מסוג כזה הפתרון הכי טוב שלי היה להתנהל לפי כללים ברורים מראש בהקלדת החבורות בכל מה שאני ארצה לשנות.בהצלחה!
-