דילוג לתוכן
0
  • דף הבית
  • חוקי הפורום
  • מדריכים
  • פוסטים אחרונים
  • לא נפתר
  • פופולרי
  • משתמשים
  • חיפוש בפורום
  • תרומות לאוצריא
  • צור קשר
  • דף הבית
  • חוקי הפורום
  • מדריכים
  • פוסטים אחרונים
  • לא נפתר
  • פופולרי
  • משתמשים
  • חיפוש בפורום
  • תרומות לאוצריא
  • צור קשר
עיצובים
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו אתר

פורום אוצריא

אוצריא - דף הבית
|
קח שותפות בהוספת ספרים
|
תרום לאוצריא חיפוש
  1. דף הבית
  2. הצעות לשיפור - תוכנת אוצריא
  3. הצעת ייעול | הוספת מילון ראשי תיבות

הצעת ייעול | הוספת מילון ראשי תיבות

מתוזמן נעוץ נעול הועבר נפתר הצעות לשיפור - תוכנת אוצריא
16 פוסטים 6 כותבים 156 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • יום חדש מתחילי מנותק
    יום חדש מתחילי מנותק
    יום חדש מתחיל
    מנהל ספריית אוצריא
    כתב ב נערך לאחרונה על ידי
    #7

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

    תגובה 1 תגובה אחרונה
    0
    • י. פל.י מנותק
      י. פל.י מנותק
      י. פל.
      כתב ב נערך לאחרונה על ידי
      #8

      הכנסתי כבר.

      תגובה 1 תגובה אחרונה
      1
      • י. פל.י י. פל. סימן נושא זה כנפתר ב
      • יום חדש מתחילי מנותק
        יום חדש מתחילי מנותק
        יום חדש מתחיל
        מנהל ספריית אוצריא
        כתב ב נערך לאחרונה על ידי
        #9

        @י.-פל. מתי? באיזה גירסא?

        תגובה 1 תגובה אחרונה
        0
        • י. פל.י מנותק
          י. פל.י מנותק
          י. פל.
          כתב ב נערך לאחרונה על ידי
          #10

          עוד לא עלה, בDB החדש.

          תגובה 1 תגובה אחרונה
          4
          • מיכאלושמ מנותק
            מיכאלושמ מנותק
            מיכאלוש
            כתב נערך לאחרונה על ידי
            #11

            אם יעזור למישהוא להלן קובץ עם כל הראשי תיבות שנמצאים בספרי אוצריא כמובן לא מפוענחים אם מישהוא רוצה לפתוח אותם או לתת לAI ...

            ראשי תיבות.xlsx

            פלמנמוניפ תגובה 1 תגובה אחרונה
            1
            • מיכאלושמ מיכאלוש

              אם יעזור למישהוא להלן קובץ עם כל הראשי תיבות שנמצאים בספרי אוצריא כמובן לא מפוענחים אם מישהוא רוצה לפתוח אותם או לתת לAI ...

              ראשי תיבות.xlsx

              פלמנמוניפ מנותק
              פלמנמוניפ מנותק
              פלמנמוני
              כתב נערך לאחרונה על ידי
              #12

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

              A תגובה 1 תגובה אחרונה
              1
              • פלמנמוניפ פלמנמוני

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

                A מנותק
                A מנותק
                arieldaniely
                כתב נערך לאחרונה על ידי
                #13

                @פלמנמוני כתב בהצעת ייעול | הוספת מילון ראשי תיבות:

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

                לדעתי כדאי לבדוק קודם מה כבר קיים, שלא יעבדו סתם...

                תגובה 1 תגובה אחרונה
                0
                • האדם החושבה מנותק
                  האדם החושבה מנותק
                  האדם החושב
                  מפתח
                  כתב נערך לאחרונה על ידי
                  #14

                  https://abbreviation.dicta.org.il/

                  אפשר לעבוד מול הapi שלהם אם יש למישהו רשימה של ראשי תיבות בלי פיענוח.

                  מיכאלושמ תגובה 1 תגובה אחרונה
                  1
                  • האדם החושבה האדם החושב

                    https://abbreviation.dicta.org.il/

                    אפשר לעבוד מול הapi שלהם אם יש למישהו רשימה של ראשי תיבות בלי פיענוח.

                    מיכאלושמ מנותק
                    מיכאלושמ מנותק
                    מיכאלוש
                    כתב נערך לאחרונה על ידי
                    #15

                    @האדם-החושב רעיון טוב....

                    import requests
                    import json
                    import time
                    import re
                    from google.colab import files
                    
                    # --- הגדרות ---
                    API_URL = "https://nakdan-u1-0.loadbalancer.dicta.org.il/api"
                    CHUNK_SIZE = 1500
                    LOG_FILE = "debug_log.txt"
                    JSON_FILE = "abbreviations_result.json"
                    
                    # משתנים גלובליים
                    logs = []
                    all_potential_misses = set() # מאגר לכל המילים שלא פוענחו
                    
                    def log(message):
                        timestamp = time.strftime("%H:%M:%S")
                        full_msg = f"[{timestamp}] {message}"
                        print(full_msg)
                        logs.append(full_msg)
                    
                    def smart_chunking(text, max_size):
                        """חלוקה חכמה לפי סופי שורות"""
                        chunks = []
                        current_chunk = []
                        current_length = 0
                        lines = text.split('\n')
                        for line in lines:
                            line_len = len(line) + 1
                            if current_length + line_len > max_size:
                                if current_chunk:
                                    chunks.append("\n".join(current_chunk))
                                    current_chunk = []
                                    current_length = 0
                                if line_len > max_size:
                                    # טיפול בשורה ארוכה מאוד
                                    words = line.split(' ')
                                    temp_chunk = []
                                    temp_len = 0
                                    for word in words:
                                        if temp_len + len(word) + 1 > max_size:
                                            chunks.append(" ".join(temp_chunk))
                                            temp_chunk = []
                                            temp_len = 0
                                        temp_chunk.append(word)
                                        temp_len += len(word) + 1
                                    if temp_chunk:
                                        current_chunk = temp_chunk
                                        current_length = temp_len
                                else:
                                    current_chunk.append(line)
                                    current_length += line_len
                            else:
                                current_chunk.append(line)
                                current_length += line_len
                        if current_chunk:
                            chunks.append("\n".join(current_chunk))
                        return chunks
                    
                    def call_api(data_payload):
                        """פונקציה גנרית לקריאה ל-API"""
                        headers = {"Content-Type": "application/json;charset=UTF-8"}
                        try:
                            response = requests.post(API_URL, json=data_payload, headers=headers, timeout=45)
                            if response.status_code == 200:
                                return response.json()
                        except:
                            pass
                        return None
                    
                    def strip_prefixes(word):
                        """
                        מנסה להסיר אותיות שימוש (מש"ה וכל"ב) מתחילת המילה
                        מחזיר את המילה הנקייה אם נשאר בה גרשיים, אחרת מחזיר None
                        """
                        # מסיר אותיות מ/ש/ה/ו/כ/ל/ב/ד מתחילת המילה, רק אם יש אחריהן עוד גרשיים
                        # למשל: ב"המק -> המק | ו"יוסף -> יוסף
                        clean = re.sub(r'^[משהוכלבד]+', '', word)
                        
                        # אם נשארנו עם מילה שיש בה גרשיים והיא לפחות 2 תווים
                        if '"' in clean and len(clean) >= 2:
                            return clean
                        return word # אם אי אפשר לנקות, מחזיר את המקור
                    
                    def retry_missed_words(missed_words_list, existing_results):
                        """
                        מנגנון הזדמנות שנייה: לוקח מילים שנכשלו, מנקה אותיות שימוש ושולח שוב
                        """
                        if not missed_words_list:
                            return existing_results
                        
                        log(f"🔄 מתחיל סבב ב' (Retry) עבור {len(missed_words_list)} מילים שלא פוענחו...")
                        
                        # מיפוי בין המילה הנקייה למילה המקורית
                        # דוגמה: {'המק': 'ב"המק'}
                        clean_to_original = {}
                        batch_text = []
                        
                        for word in missed_words_list:
                            clean_word = strip_prefixes(word)
                            if clean_word != word: # רק אם היה שינוי
                                clean_to_original[clean_word] = word
                                batch_text.append(clean_word)
                            else:
                                # מנסים לשלוח גם את המקור שוב, אולי כבודד יצליח
                                batch_text.append(word)
                                clean_to_original[word] = word
                    
                        # שולחים במנות של 500 מילים כדי לא להעמיס
                        chunk_size = 500
                        new_found_count = 0
                        
                        for i in range(0, len(batch_text), chunk_size):
                            batch = batch_text[i:i+chunk_size]
                            text_string = " ".join(batch) # שולחים כרשימת מילים
                            
                            payload = {
                                "task": "abbrexp",
                                "data": text_string,
                                "useTokenization": True,
                                "genre": "rabbinic"
                            }
                            
                            data = call_api(payload)
                            
                            if data and 'data' in data:
                                for item in data['data']:
                                    if 'abbreviation' in item and item['abbreviation']:
                                        abbr = item['abbreviation']
                                        found_clean_word = abbr.get('word')
                                        options = abbr.get('options')
                                        
                                        if found_clean_word and options:
                                            # אנחנו צריכים למצוא מה הייתה המילה המקורית (עם האותיות שימוש)
                                            # ה-API מחזיר את המילה שהוא מצא (למשל "המק")
                                            # אנחנו צריכים לשמור את התוצאה תחת המפתח המקורי "ב"המק"
                                            
                                            # חיפוש הפוך פשוט (יתכן פספוס קטן אם יש כפילויות, אבל זניח)
                                            original_word = clean_to_original.get(found_clean_word)
                                            
                                            if original_word:
                                                existing_results[original_word] = options
                                                new_found_count += 1
                    
                            time.sleep(0.2)
                            
                        log(f"✅ סבב ב' הסתיים: הוצלו עוד {new_found_count} ראשי תיבות!")
                        return existing_results
                    
                    # --- גוף התוכנית ---
                    
                    print("אנא בחר קובץ טקסט...")
                    uploaded = files.upload()
                    if uploaded:
                        input_filename = next(iter(uploaded))
                        log(f"הקובץ {input_filename} נטען.")
                    
                        with open(input_filename, 'r', encoding='utf-8') as f:
                            full_text = f.read()
                    
                        chunks = smart_chunking(full_text, CHUNK_SIZE)
                        log(f"מתחיל עיבוד ב-{len(chunks)} מקטעים...")
                    
                        final_results = {}
                        
                        # שלב 1: מעבר ראשי
                        for i, chunk in enumerate(chunks):
                            # זיהוי פוטנציאלי במקטע (מילים עם גרשיים)
                            words_in_chunk = set(re.findall(r'\b[א-ת]+"[א-ת]+\b', chunk))
                            
                            payload = {
                                "task": "abbrexp",
                                "data": chunk,
                                "useTokenization": True,
                                "genre": "rabbinic"
                            }
                            
                            data = call_api(payload)
                            
                            found_in_chunk = set()
                            
                            if data and 'data' in data:
                                for item in data['data']:
                                    if 'abbreviation' in item and item['abbreviation']:
                                        abbr = item['abbreviation']
                                        word = abbr.get('word')
                                        options = abbr.get('options')
                                        if word and options:
                                            final_results[word] = options
                                            found_in_chunk.add(word)
                            
                            # חישוב מה התפספס במקטע הזה
                            missed = words_in_chunk - found_in_chunk
                            all_potential_misses.update(missed)
                            
                            print(f"\rעיבוד: {int((i+1)/len(chunks)*100)}% (נמצאו: {len(found_in_chunk)}, חשודים כפספוס: {len(missed)})", end="")
                            time.sleep(0.1)
                    
                        print("\nסיימנו סבב ראשון.")
                        
                        # שלב 2: ניסיון הצלה
                        # מסננים מילים שכבר נמצאו (למקרה שהן הופיעו במקטע אחר וכן זוהו)
                        really_missed = [w for w in all_potential_misses if w not in final_results]
                        
                        if really_missed:
                            final_results = retry_missed_words(really_missed, final_results)
                    
                        # שמירה
                        log(f"סה\"כ ראשי תיבות מפוענחים: {len(final_results)}")
                        
                        with open(JSON_FILE, 'w', encoding='utf-8') as f:
                            json.dump(final_results, f, ensure_ascii=False, indent=4)
                            
                        with open(LOG_FILE, 'w', encoding='utf-8') as f:
                            f.write("\n".join(logs))
                    
                        files.download(JSON_FILE)
                        files.download(LOG_FILE)
                    

                    והנה התוצאה
                    ראשי תיבות.json
                    מקווה שיצרתי את ה JSON במבנה הנכון....

                    פלמנמוניפ תגובה 1 תגובה אחרונה
                    4
                    • מיכאלושמ מיכאלוש

                      @האדם-החושב רעיון טוב....

                      import requests
                      import json
                      import time
                      import re
                      from google.colab import files
                      
                      # --- הגדרות ---
                      API_URL = "https://nakdan-u1-0.loadbalancer.dicta.org.il/api"
                      CHUNK_SIZE = 1500
                      LOG_FILE = "debug_log.txt"
                      JSON_FILE = "abbreviations_result.json"
                      
                      # משתנים גלובליים
                      logs = []
                      all_potential_misses = set() # מאגר לכל המילים שלא פוענחו
                      
                      def log(message):
                          timestamp = time.strftime("%H:%M:%S")
                          full_msg = f"[{timestamp}] {message}"
                          print(full_msg)
                          logs.append(full_msg)
                      
                      def smart_chunking(text, max_size):
                          """חלוקה חכמה לפי סופי שורות"""
                          chunks = []
                          current_chunk = []
                          current_length = 0
                          lines = text.split('\n')
                          for line in lines:
                              line_len = len(line) + 1
                              if current_length + line_len > max_size:
                                  if current_chunk:
                                      chunks.append("\n".join(current_chunk))
                                      current_chunk = []
                                      current_length = 0
                                  if line_len > max_size:
                                      # טיפול בשורה ארוכה מאוד
                                      words = line.split(' ')
                                      temp_chunk = []
                                      temp_len = 0
                                      for word in words:
                                          if temp_len + len(word) + 1 > max_size:
                                              chunks.append(" ".join(temp_chunk))
                                              temp_chunk = []
                                              temp_len = 0
                                          temp_chunk.append(word)
                                          temp_len += len(word) + 1
                                      if temp_chunk:
                                          current_chunk = temp_chunk
                                          current_length = temp_len
                                  else:
                                      current_chunk.append(line)
                                      current_length += line_len
                              else:
                                  current_chunk.append(line)
                                  current_length += line_len
                          if current_chunk:
                              chunks.append("\n".join(current_chunk))
                          return chunks
                      
                      def call_api(data_payload):
                          """פונקציה גנרית לקריאה ל-API"""
                          headers = {"Content-Type": "application/json;charset=UTF-8"}
                          try:
                              response = requests.post(API_URL, json=data_payload, headers=headers, timeout=45)
                              if response.status_code == 200:
                                  return response.json()
                          except:
                              pass
                          return None
                      
                      def strip_prefixes(word):
                          """
                          מנסה להסיר אותיות שימוש (מש"ה וכל"ב) מתחילת המילה
                          מחזיר את המילה הנקייה אם נשאר בה גרשיים, אחרת מחזיר None
                          """
                          # מסיר אותיות מ/ש/ה/ו/כ/ל/ב/ד מתחילת המילה, רק אם יש אחריהן עוד גרשיים
                          # למשל: ב"המק -> המק | ו"יוסף -> יוסף
                          clean = re.sub(r'^[משהוכלבד]+', '', word)
                          
                          # אם נשארנו עם מילה שיש בה גרשיים והיא לפחות 2 תווים
                          if '"' in clean and len(clean) >= 2:
                              return clean
                          return word # אם אי אפשר לנקות, מחזיר את המקור
                      
                      def retry_missed_words(missed_words_list, existing_results):
                          """
                          מנגנון הזדמנות שנייה: לוקח מילים שנכשלו, מנקה אותיות שימוש ושולח שוב
                          """
                          if not missed_words_list:
                              return existing_results
                          
                          log(f"🔄 מתחיל סבב ב' (Retry) עבור {len(missed_words_list)} מילים שלא פוענחו...")
                          
                          # מיפוי בין המילה הנקייה למילה המקורית
                          # דוגמה: {'המק': 'ב"המק'}
                          clean_to_original = {}
                          batch_text = []
                          
                          for word in missed_words_list:
                              clean_word = strip_prefixes(word)
                              if clean_word != word: # רק אם היה שינוי
                                  clean_to_original[clean_word] = word
                                  batch_text.append(clean_word)
                              else:
                                  # מנסים לשלוח גם את המקור שוב, אולי כבודד יצליח
                                  batch_text.append(word)
                                  clean_to_original[word] = word
                      
                          # שולחים במנות של 500 מילים כדי לא להעמיס
                          chunk_size = 500
                          new_found_count = 0
                          
                          for i in range(0, len(batch_text), chunk_size):
                              batch = batch_text[i:i+chunk_size]
                              text_string = " ".join(batch) # שולחים כרשימת מילים
                              
                              payload = {
                                  "task": "abbrexp",
                                  "data": text_string,
                                  "useTokenization": True,
                                  "genre": "rabbinic"
                              }
                              
                              data = call_api(payload)
                              
                              if data and 'data' in data:
                                  for item in data['data']:
                                      if 'abbreviation' in item and item['abbreviation']:
                                          abbr = item['abbreviation']
                                          found_clean_word = abbr.get('word')
                                          options = abbr.get('options')
                                          
                                          if found_clean_word and options:
                                              # אנחנו צריכים למצוא מה הייתה המילה המקורית (עם האותיות שימוש)
                                              # ה-API מחזיר את המילה שהוא מצא (למשל "המק")
                                              # אנחנו צריכים לשמור את התוצאה תחת המפתח המקורי "ב"המק"
                                              
                                              # חיפוש הפוך פשוט (יתכן פספוס קטן אם יש כפילויות, אבל זניח)
                                              original_word = clean_to_original.get(found_clean_word)
                                              
                                              if original_word:
                                                  existing_results[original_word] = options
                                                  new_found_count += 1
                      
                              time.sleep(0.2)
                              
                          log(f"✅ סבב ב' הסתיים: הוצלו עוד {new_found_count} ראשי תיבות!")
                          return existing_results
                      
                      # --- גוף התוכנית ---
                      
                      print("אנא בחר קובץ טקסט...")
                      uploaded = files.upload()
                      if uploaded:
                          input_filename = next(iter(uploaded))
                          log(f"הקובץ {input_filename} נטען.")
                      
                          with open(input_filename, 'r', encoding='utf-8') as f:
                              full_text = f.read()
                      
                          chunks = smart_chunking(full_text, CHUNK_SIZE)
                          log(f"מתחיל עיבוד ב-{len(chunks)} מקטעים...")
                      
                          final_results = {}
                          
                          # שלב 1: מעבר ראשי
                          for i, chunk in enumerate(chunks):
                              # זיהוי פוטנציאלי במקטע (מילים עם גרשיים)
                              words_in_chunk = set(re.findall(r'\b[א-ת]+"[א-ת]+\b', chunk))
                              
                              payload = {
                                  "task": "abbrexp",
                                  "data": chunk,
                                  "useTokenization": True,
                                  "genre": "rabbinic"
                              }
                              
                              data = call_api(payload)
                              
                              found_in_chunk = set()
                              
                              if data and 'data' in data:
                                  for item in data['data']:
                                      if 'abbreviation' in item and item['abbreviation']:
                                          abbr = item['abbreviation']
                                          word = abbr.get('word')
                                          options = abbr.get('options')
                                          if word and options:
                                              final_results[word] = options
                                              found_in_chunk.add(word)
                              
                              # חישוב מה התפספס במקטע הזה
                              missed = words_in_chunk - found_in_chunk
                              all_potential_misses.update(missed)
                              
                              print(f"\rעיבוד: {int((i+1)/len(chunks)*100)}% (נמצאו: {len(found_in_chunk)}, חשודים כפספוס: {len(missed)})", end="")
                              time.sleep(0.1)
                      
                          print("\nסיימנו סבב ראשון.")
                          
                          # שלב 2: ניסיון הצלה
                          # מסננים מילים שכבר נמצאו (למקרה שהן הופיעו במקטע אחר וכן זוהו)
                          really_missed = [w for w in all_potential_misses if w not in final_results]
                          
                          if really_missed:
                              final_results = retry_missed_words(really_missed, final_results)
                      
                          # שמירה
                          log(f"סה\"כ ראשי תיבות מפוענחים: {len(final_results)}")
                          
                          with open(JSON_FILE, 'w', encoding='utf-8') as f:
                              json.dump(final_results, f, ensure_ascii=False, indent=4)
                              
                          with open(LOG_FILE, 'w', encoding='utf-8') as f:
                              f.write("\n".join(logs))
                      
                          files.download(JSON_FILE)
                          files.download(LOG_FILE)
                      

                      והנה התוצאה
                      ראשי תיבות.json
                      מקווה שיצרתי את ה JSON במבנה הנכון....

                      פלמנמוניפ מנותק
                      פלמנמוניפ מנותק
                      פלמנמוני
                      כתב נערך לאחרונה על ידי
                      #16

                      @מיכאלוש כתב בהצעת ייעול | הוספת מילון ראשי תיבות:

                      מקווה שיצרתי את ה JSON במבנה הנכון....

                      תקין, וטופל

                      תגובה 1 תגובה אחרונה
                      5

                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון