@yits יש לי פתרון פשוט בהרבה!!
לעשות OCR חינמי.... יש היום דברים ממש מדוקיים גם לעברית...
אלף שין
-
OCR כפתרון לבעיית PDF עם פונטים שלא מזוהים כעברית -
ספריית החיפוש meilisearch ב-בC#@sivan22 מה מהירות החיפוש באינדקס זה?
אם זה מדאי כבד אפשר ליצור אינדקס עצמאי [לא צריך דווקא ספריה מוכנה...]הרעיון של אינדקס הוא די פשוט
A background index! That's a great idea to speed up search times. Creating an inverted index is a common technique to accelerate searching large amounts of text data. Here's a high-level overview of how you can create a background index:What is an inverted index?
An inverted index is a data structure that maps each unique term (word, phrase, keyword, etc.) to a list of documents that contain that term. This allows for efficient searching, as you can quickly retrieve the documents containing a given term.
How to create a background index?
To create a background index, you'll need to follow these steps:
- Preprocess the data: Read in your files, split them into individual documents, and tokenize them into individual words (tokens). You may also want to apply stemming, stopword removal, and other text processing techniques to reduce the dimensionality of the data.
- Build the index: Create an empty index data structure, such as a dictionary or a hash table, that will store the mapping between terms and documents. Iterate through the tokenized documents and update the index with each document. For each term, add the document ID to the list of documents that contain that term.
- Write the index to disk: Once the index is built, write it to disk as a file or a database. This will allow you to store the index independently of the original data and retrieve it quickly for searching.
- Build an index writer process: Create a separate process or thread that runs in the background, continuously updating the index as new documents are added, removed, or modified. This process will ensure that the index remains up-to-date.
How to query the index?
To query the index, you'll need to:
- Tokenize the search query: Break down the search query into individual words (tokens).
- Lookup terms in the index: Iterate through the tokens and look up each one in the index. This will give you a list of documents that contain each term.
- Intersect the results: Combine the lists of documents that contain each token to get the final result set.
- Retrieve and rank the results: Use the final result set to retrieve the actual documents and rank them according to their relevance.
Some considerations:
- Index size: The size of the index can grow rapidly as the number of documents increases. You may need to implement techniques like compression, sparse matrices, or distributed indexing to manage the index size.
- Index latency: Building and updating the index can take time, which may impact the freshness of the data. You may need to implement mechanisms to handle delayed updates or use a combination of real-time and batch updates.
- Search optimization: The querying process can also be optimized using techniques like caching, caching query results, or using specialized search algorithms.
- Index rebuilding: When rebuilding the index, you may need to consider strategies like incremental updating, iterative rebuilding, or even splitting the index into smaller pieces.
Bonus tip: Use existing libraries and tools
Many programming languages and libraries provide built-in support for creating and querying inverted indices. For example:
- Lucene.NET (C#): A popular search engine library for .NET that includes support for building and querying inverted indices.
- Elastic Search ( Java A distributed search engine that provides high-performance search capabilities and automatically builds inverted indices.
- Apache Solr (Java): A popular search server that allows you to create and query inverted indices.
Remember to consider the trade-offs between index size, query performance, and data freshness when designing your background index. Good luck!
למעשה יש כמה שיפורים קטנים ממש להוסיף ואז זה מושלם!
[למשל חלוקה של האינדקס לקבצים שונים לפי תווים וכן חלוקת כל מסמך למקטעים]. -
ספריית החיפוש meilisearch ב-בC# -
שיתוף | אב טיפוס של תוכנת תרגום אופלייןנראה שאתה מפעיל את המודל Hugging Face OPUS-MT-he-en באמצעות Microsoft.ML.OnnxRuntime ב-.NET, ואתה נתקל ב'OnnxRuntimeException' עם הודעת השגיאה:
קוד סטטוס שאינו אפס הוחזר בזמן הפעלת צומת איסוף. שם:'/model/decoder/shared/Gather' הודעת סטטוס: רכיב מדדים מחוץ לגבולות הנתונים, idx=65838 חייב להיות בטווח הכולל [-62955,62954]'
שגיאה זו היא די ספציפית, וסביר להניח שהיא קשורה לדגם שבו אתה משתמש. להלן מספר סיבות ופתרונות אפשריים:
- אי-תאימות מודל: ודא שדגם OPUS-MT-he-en תואם לספריית Microsoft.ML.OnnxRuntime. אתה יכול לבדוק את התיעוד של הדגם כדי לראות אם הוא נבדק עם זמן ריצה זה.
- אינדקסים מחוץ לתחום: הודעת השגיאה מתייחסת לרכיב מדדים מחוץ לגבולות הנתונים. זה עשוי להצביע על כך שהמודל מנסה לגשת לאינדקס שנמצא מחוץ לטווח המדדים התקפים עבור נתוני הקלט. בדוק את נתוני הקלט שלך כדי לוודא שהם בטווח הצפוי.
- תצורת צומת: הודעת השגיאה מזכירה צומת
Gather
, שהוא צומת שאוסף אלמנטים מטנזור. ודא שהצומת מוגדר כהלכה ושהמדדים המשמשים לאיסוף נמצאים בטווח החוקי. - עיבוד מוקדם של הדגם: בדוק אם שלבי העיבוד המקדים של הדגם נכונים. ייתכן שהבעיה קשורה לאופן שבו המודל מצפה שנתוני הקלט יהיו בפורמט.
כדי לפתור בעיה זו, תוכל לנסות את הפעולות הבאות:
- בדוק את התיעוד והדוגמאות של הדגם כדי לוודא שאתה משתמש בו נכון.
- בדוק את נתוני הקלט ואת תצורת המודל כדי לשלול כל מדדים מחוץ לתחום או צמתים שגויים.
- נסה להפחית את מורכבות המודל או להתאים את ארכיטקטורת הרשת כדי לראות אם זה פותר את הבעיה.
- אם אתה עדיין תקוע, שקול לפנות לקהילת Hugging Face או למנהלי Microsoft.ML.OnnxRuntime לקבלת סיוע נוסף.
אני מקווה שזה עוזר!