تصحيح الإملاء والبحث الغامض: 1 مليون مرة أسرع من خلال خوارزمية تصحيح الإملاء المتماثل
تقلل خوارزمية تصحيح الإملاء المتماثل الحذف من تعقيد جيل المرشح والمواقد للمسافة المعطى Damerau-Levenshtein. إنها ستة أوامر ذات حجم أسرع (من النهج القياسي مع حذف + Transposes + استبدال + إدراج) واللغة المستقلة.
مقابل الخوارزميات الأخرى ، لا يلزم سوى حذف الحذف ، ولا توجد عمليات نقل + استبدال + إدراج. يتم تحويل Transposes + استبدال + إدراج مصطلح الإدخال إلى حذف من مصطلح القاموس. بدائل وإدراج مكلفة وتعتمد على اللغة: على سبيل المثال ، لدى الصينيين 70،000 حرف Unicode Han!
تأتي السرعة من جيل المرشح تحرير الحذف فقط وحصر الحصر .
تحتوي كلمة أحرف 5 أحرف في المتوسط على حوالي 3 ملايين أخطاء إملائية محتملة ضمن أقصى مسافة تحريرها 3 ،
لكن Symspell يحتاج إلى توليد 25 حذف فقط لتغطيةهم جميعًا ، سواء في فترة ما قبل الحساسية أو في وقت البحث. سحر!
إذا كنت تحب Symspell ، فجرّب SeekStorm- مكتبة بحث كاملة عن النص الكامل وخادم متعدد النصوص في Rust (مفتوح المصدر).
Copyright (c) 2022 Wolf Garbe
Version: 6.7.2
Author: Wolf Garbe <[email protected]>
Maintainer: Wolf Garbe <[email protected]>
URL: https://github.com/wolfgarbe/symspell
Description: https://seekstorm.com/blog/1000x-spelling-correction/
MIT License
Copyright (c) 2022 Wolf Garbe
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
https://opensource.org/licenses/MIT
يوفر البحث تصحيح إملائي سريع جدًا للكلمات الفردية.
0.033 مللي ثانية/كلمة (تحرير المسافة 2) و 0.180 مللي ثانية/كلمة (تحرير المسافة 3) (جوهر واحد على 2012 MacBook Pro)
1،870 مرة أسرع من BK Tree (انظر المعيار 1: حجم القاموس = 500،000 ، أقصى مسافة تحرير = 3 ، مصطلحات الاستعلام مع مسافة تحرير عشوائي = 0 ... أقصى مسافة تحرير ، مطوّل = 0)
1 مليون مرة أسرع من خوارزمية نورفيغ (انظر المعيار 2: حجم القاموس = 29،157 ، أقصى مسافة تحرير = 3 ، مصطلحات الاستعلام مع مسافة تحرير ثابت = أقصى مسافة تحرير ، مطوّل = 0)
1000X خوارزمية تصحيح الإملاء الأسرع
سلسلة تقريبية سريعة مطابقة مع مسافات تحرير كبيرة في البيانات الضخمة
تنظيف البيانات السريع للغاية لأسماء المنتجات وأسماء الشركات وأسماء الشوارع
مركب sub-millisecond يدرك تصحيح الإملاء التلقائي
Symspell vs. Bk-Tree: 100x أسرع من البحث عن سلسلة وتفتيش إملائي
تجزئة الكلمات السريعة للنص الصاخب
The Pruning Radix Trie - trie trie على المنشطات
يدعم LookupCompound مركب تصحيح الإملاء التلقائي لسلاسل الإدخال متعددة الكلمات .
1. مركب الانقسام والتفكك
Lookup () يفترض كل سلسلة إدخال كمصطلح واحد . يدعم LookupCompound أيضًا تقسيم / تفكك المركب بثلاث حالات:
يمكن أن تختلط أخطاء تقسيم الأخطاء وأخطاء التسلسل وأخطاء الإحلال وأخطاء النقل وأخطاء الحذف وأخطاء الإدراج عن طريق نفس الكلمة.
2. تصحيح الإملاء التلقائي
أمثلة:
- whereis th elove hehad dated forImuch of thepast who couqdn'tread in sixthgrade and ins pired him
+ where is the love he had dated for much of the past who couldn't read in sixth grade and inspired him (9 edits)
- in te dhird qarter oflast jear he hadlearned ofca sekretplan
+ in the third quarter of last year he had learned of a secret plan (9 edits)
- the bigjest playrs in te strogsommer film slatew ith plety of funn
+ the biggest players in the strong summer film slate with plenty of fun (9 edits)
- Can yu readthis messa ge despite thehorible sppelingmsitakes
+ can you read this message despite the horrible spelling mistakes (9 edits)
0.2 مللي ثانية / كلمة (تحرير المسافة 2) 5000 كلمة / ثانية (جوهر واحد على 2012 MacBook Pro)
يقسم WordSegressation سلسلة إلى كلمات عن طريق إدخال المساحات المفقودة في المواضع المناسبة.
أمثلة:
- thequickbrownfoxjumpsoverthelazydog
+ the quick brown fox jumps over the lazy dog
- itwasabrightcolddayinaprilandtheclockswerestrikingthirteen
+ it was a bright cold day in april and the clocks were striking thirteen
- itwasthebestoftimesitwastheworstoftimesitwastheageofwisdomitwastheageoffoolishness
+ it was the best of times it was the worst of times it was the age of wisdom it was the age of foolishness
التطبيقات:
أداء:
4 مللي ثانية لتجزئة سلسلة char 185 إلى 53 كلمة (جوهر واحد في 2012 MacBook Pro)
كلمة واحدة + إدخال: عرض اقتراحات الإملاء
أدخل بدون إدخال: إنهاء البرنامج
كلمات متعددة + إدخال: عرض اقتراحات الإملاء
أدخل بدون إدخال: إنهاء البرنامج
سلسلة بدون مسافات + إدخال: عرض نص مجزأ
أدخل بدون إدخال: إنهاء البرنامج
يمكن بناء مشاريع التجريبية والتجريبية والتجزئة مع رمز Visual Studio المجاني ، الذي يعمل على نظام التشغيل Windows و MacOS و Linux.
//create object
int initialCapacity = 82765 ;
int maxEditDistanceDictionary = 2 ; //maximum edit distance per dictionary precalculation
var symSpell = new SymSpell ( initialCapacity , maxEditDistanceDictionary ) ;
//load dictionary
string baseDirectory = AppDomain . CurrentDomain . BaseDirectory ;
string dictionaryPath = baseDirectory + " ../../../../SymSpell/frequency_dictionary_en_82_765.txt " ;
int termIndex = 0 ; //column of the term in the dictionary text file
int countIndex = 1 ; //column of the term frequency in the dictionary text file
if ( ! symSpell . LoadDictionary ( dictionaryPath , termIndex , countIndex ) )
{
Console . WriteLine ( " File not found! " ) ;
//press any key to exit program
Console . ReadKey ( ) ;
return ;
}
//lookup suggestions for single-word input strings
string inputTerm = " house " ;
int maxEditDistanceLookup = 1 ; //max edit distance per lookup (maxEditDistanceLookup<=maxEditDistanceDictionary)
var suggestionVerbosity = SymSpell . Verbosity . Closest ; //Top, Closest, All
var suggestions = symSpell . Lookup ( inputTerm , suggestionVerbosity , maxEditDistanceLookup ) ;
//display suggestions, edit distance and term frequency
foreach ( var suggestion in suggestions )
{
Console . WriteLine ( suggestion . term + " " + suggestion . distance . ToString ( ) + " " + suggestion . count . ToString ( " N0 " ) ) ;
}
//load bigram dictionary
string dictionaryPath = baseDirectory + " ../../../../SymSpell/frequency_bigramdictionary_en_243_342.txt " ;
int termIndex = 0 ; //column of the term in the dictionary text file
int countIndex = 2 ; //column of the term frequency in the dictionary text file
if ( ! symSpell . LoadBigramDictionary ( dictionaryPath , termIndex , countIndex ) )
{
Console . WriteLine ( " File not found! " ) ;
//press any key to exit program
Console . ReadKey ( ) ;
return ;
}
//lookup suggestions for multi-word input strings (supports compound splitting & merging)
inputTerm = " whereis th elove hehad dated forImuch of thepast who couqdn'tread in sixtgrade and ins pired him " ;
maxEditDistanceLookup = 2 ; //max edit distance per lookup (per single word, not per whole input string)
suggestions = symSpell . LookupCompound ( inputTerm , maxEditDistanceLookup ) ;
//display suggestions, edit distance and term frequency
foreach ( var suggestion in suggestions )
{
Console . WriteLine ( suggestion . term + " " + suggestion . distance . ToString ( ) + " " + suggestion . count . ToString ( " N0 " ) ) ;
}
//word segmentation and correction for multi-word input strings with/without spaces
inputTerm = " thequickbrownfoxjumpsoverthelazydog " ;
maxEditDistance = 0 ;
suggestion = symSpell . WordSegmentation ( input ) ;
//display term and edit distance
Console . WriteLine ( suggestion . correctedString + " " + suggestion . distanceSum . ToString ( " N0 " ) ) ;
//press any key to exit program
Console . ReadKey ( ) ;
أهداف Symspell .NET Standard V2.0 ويمكن استخدامها في:
يمكن بناء مشاريع Symspell و Demo و Democompound و Benchmark باستخدام رمز Visual Studio المجاني ، الذي يعمل على Windows و MacOS و Linux.
جودة القاموس أمر بالغ الأهمية لجودة التصحيح. من أجل تحقيق هذا المصدرين للبيانات تم الجمع بين التقاطع: كتب Google Books Ngram التي توفر ترددات الكلمات التمثيلية (ولكنها تحتوي على العديد من الإدخالات مع أخطاء إملائية) و Scowl - قوائم الكلمات الموجهة المدقق التي تضمن مفردات إنجليزية حقيقية (ولكن لا تحتوي على ترددات كلمة مطلوب لترتيب الاقتراحات ضمن نفس مسافة التحرير).
تم إنشاء التردد _dictionary_en_82_765.txt عن طريق تقاطع القائمتين المذكورة أدناه. عن طريق تصفية هذه الكلمات فقط التي تظهر في كلا القائمتين يتم استخدامها. تم تطبيق المرشحات الإضافية وقائمة الناتجة المقطوعة إلى ≈ 80،000 كلمة متكررة.
يمكنك إنشاء قاموس التردد الخاص بك لغتيتك أو المجال الفني المتخصص. تدعم خوارزمية تصحيح Symspell الإملائية اللغات ذات الأحرف غير اللاتينية ، مثل السيريلية أو الصينية أو الجورجية.
يتضمن Symspell قاموس التردد الإنجليزي
تقع هنا قواميس للصينية والإنجليزية والفرنسية والألمانية والعبرية والإيطالية والروسية والإسبانية هنا:
symspell.frequencydictionary
يمكن العثور على قواميس التردد في العديد من اللغات الأخرى هنا:
مستودع كلمات التردد
قواميس التردد
قواميس التردد
C# (رمز المصدر الأصلي)
https://github.com/wolfgarbe/symspell
.NET (حزمة nuget)
https://www.nuget.org/packages/symspell
لم يتم اختبار منافذ الجهات الخارجية التالية أو إعادة تنفيذ لغات البرمجة الأخرى بنفسي ما إذا كانت منفذًا دقيقًا أو خالٍ من الأخطاء أو يقدمون نتائج متطابقة أو أسرع من الخوارزمية الأصلية.
تستهدف معظم المنافذ Symspell الإصدار 3.0 . لكن الإصدار 6.1. يوفر سرعة أعلى بكثير وانخفاض استهلاك الذاكرة!
webassembly
https://github.com/justinwilaby/spellchecker-wasm
واجهة برمجة تطبيقات الويب (Docker)
https://github.com/leonerath/symspellapi (الإصدار 6.3)
C ++
https://github.com/athes21/symspellcpp (الإصدار 6.5)
https://github.com/erhanbaris/symspellplusplus (الإصدار 6.1)
كريستال
https://github.com/chenkovsky/aha/blob/master/src/aha/sym_spell.cr
يذهب
https://github.com/sajari/fuzzy
https://github.com/eskriett/spell
هاسكل
https://github.com/cbeav/symspell
جافا
https://github.com/mightguy/customized-symspell (الإصدار 6.6)
https://github.com/RXP90/jsymspell (الإصدار 6.6)
https://github.com/lundez/javasymspell (الإصدار 6.4)
https://github.com/RXP90/jsymspell
https://github.com/gpranav88/symspell
https://github.com/searchhub/predict
https://github.com/jpsingarayar/spellblaze
جافا سكريبت
https://github.com/mathieuloutre/node-symspell (الإصدار 6.6 ، يحتاج إلى node.js)
https://github.com/itslenny/symspell.js
https://github.com/dongyuwei/Symspell
https://github.com/icecreamyou/symspell
https://github.com/yomguithereal/mnemonist/blob/master/symspell.js
جوليا
https://github.com/arkoniak/symspell.jl
كوتلين
https://github.com/wavesonics/symspellkt
الهدف-C
https://github.com/amitbhavsariphone/symspell (الإصدار 6.3)
بيثون
https://github.com/mammothb/symspellpy (الإصدار 6.7)
https://github.com/viig99/symspellcpppy (الإصدار 6.5)
https://github.com/zoho-labs/symspell (روابط Python من إصدار الصدأ)
https://github.com/ne3x7/pysymspell/ (الإصدار 6.1)
https://github.com/ayyuriss/symspell
https://github.com/ppgmg/github_public/blob/master/spell/symspell_python.py
https://github.com/rcourivaud/symspellcompound
https://github.com/esukhia/sympound-python
https://www.kaggle.com/yk1598/symspell-spell-corrector
روبي
https://github.com/philt/symspell
الصدأ
https://github.com/reneklacan/symspell (الإصدار 6.6 ، يجمع إلى webassembly)
https://github.com/luketpeterson/fuzzy_rocks (مخزن بيانات مستمر مدعوم بواسطة Rocksdb)
سكالا
https://github.com/semkath/symspell
سريع
https://github.com/gdetari/symspellswift
سياق الإملائي متعدد اللغات لاستفسارات المستخدم
Sanat Sharma ، Josep Valls-Vargas ، Tracy Holloway King ، Francois Guerin ، Chirag Arora (Adobe)
https://arxiv.org/abs/2305.01082
سياق حساس في الوقت الحقيقي مدقق إملائي مع القدرة على التكيف مع اللغة
برابهاكار غوبتا (أمازون)
https://arxiv.org/abs/1910.11242
نطق: مجموعة خطاب مخصبة للبيانات الفوقية من البرلمانات الحكومية الألمانية والولائية الفيدرالية
كاي روبين لانج وكارستن جينتش
https://arxiv.org/pdf/2410.17886
المفردات الممتدة لتوسيع التسلسل لتصحيح الخطأ النحوي
ستيوارت ميشام ، كريستوفر براينت ، ماريك ري ، تشنغ يوان
https://arxiv.org/abs/2302.05913
مجموعة البرلمان الألمانية (Gerparcor)
Giuseppe Abrami ، Mevlüt Bagci ، Leon Hammerla ، Alexander Mehler
https://arxiv.org/abs/2204.10422
IOCR: التعرف على الشخصية البصرية المستنيرة لاقتراع الانتخابات
كينيث يو أويبو ، جان د. لويس ، خوان جيلبرت
https://arxiv.org/abs/2208.00865
مدقق إملائي Amazigh باستخدام خوارزمية Damerau-Levenshtein و N-Gram
youness chaabi ، fadoua ataa الله
https://www.sciendirect.com/science/article/pii/S1319157821001828
مسح لتصحيح الاستعلام لاسترجاع المعلومات الموجهة للأعمال التايلاندية
Phongsathorn Kittiworapanya ، Nuttapong Saelek ، Anuruth Lertpiya ، Tawunrat Chalothorn
https://ieeexplore.ieee.org/document/9376809
Symspell و LSTM الإملائي- الداما للتاميل
Selvakumar Murugantamil Arasan Bakthavatchalamtamil Arasan Bakthavatchalammalaikannan Sankarasubbu
https://www.researchgate.net/publication/349924975_symspell_and_lstm_based_spell-_checkers_for_tamil
Symspell4burmese: خوارزمية تصحيح الإملاء المتماثل (Symspell) لفحص الإملاء البورمي
ei phyu phyu mon ؛ أيها كيو الخميس ؛ من يو ؛ Aye wai oo
https://ieeexplore.ieee.org/document/9678171
فحص إملائي إندونيسيا منغوناكان نورفيج دان سيمسيل
ياسر عبد الرومان
https://medium.com/@yasirabd/spell-check-indonesia-menggunakan-norvig-dan-symspell-4fa583d62c24
analisis perbandingan metode burkhard keller tree dan symspell dalam spear correction bahasa indonesia
محمد حافظ فرديانا ، أنا كاديك دوي نوريانا
https://ejournal.unesa.ac.id/index.php/jinacs/article/download/50989/41739
تحسين استرجاع المستندات مع تصحيح الإملاء للحديث الضعيف والمصنعة إلى النقل الإندونيسي
محمد زكي رمضانكيماس م lhaksmanakemas m lhaksmana
https://www.researchgate.net/publication/342390145_improving_document_retrieval_with_spelling_correction_for_weak_and_fabricated_indonesian-translated_hadith
Symspell 을 이용한 한글 맞춤법 교정 김희규
https://heegyukim.medium.com/symspell٪EC٪9D٪84-٪9D٪B4٪9AD٪A9٪ED٪95٪9C-٪ED٪95٪9C٪B8٪80-- ٪ EB ٪ A7 ٪ 9e ٪ EC ٪ B6 ٪ A4 ٪ EB ٪ B2 ٪ 95- ٪ EA ٪ B5 ٪ 90 ٪ EC ٪ A0 ٪ 95-3DEF9CA00805
إصلاح النصوص المكسورة. إجراء إرشادي لتصحيح بيانات التعرف الضوئي على الحروف
Jens Bjerring-Hansen ، Ross Deans Kristensen-Mclachla2 ، Philip Diderichsen و Dorte Haltrup Hansen
https://ceur-ws.org/vol-3232/paper14.pdf
نحو معالجة اللغة الطبيعية كتصحيح إملائي لأنظمة التعرف على النصوص المكتوبة بخط اليد على الإنترنت
آرثر فلور دي سوسا نيتو ؛ بايرون ليت دانتاس بيزيرا ؛ و Alejandro Héctor Toselli
https://www.mdpi.com/2076-3417/10/21/7711
متى تستخدم التعرف على التعرف على الكيان على الحروف التعرف على التعرف على الكيان؟
فينه نام هوينه ، أحمد حمدي ، أنطوان دوسيت
https://hal.science/hal-03034484v1/
تصحيح الخطأ التلقائي: تقييم أداء أدوات المدقق الإملائي
A. Tolegenova
https://journals.sdu.edu.kz/index.php/nts/article/view/690
Zhaw-Cai: طريقة الفرقة للخطاب الألماني السويسري للنص الألماني القياسي
Malgorzata Anna Ulasik ، Manuela Hurlimann ، Bogumila Dubel ، Yves Kaufmann ،
Silas Rudolf و Jan Deriu و Katsiaryna Mlynchyk و Hans-Peter Hutter و Mark Cieliebak
https://ceur-ws.org/vol-2957/sg_paper3.pdf
برنامج خطأ كلمة السيريلية بناءً على تعلم الآلة
Battumur ، K. ، Dulamragchaa ، U. ، Enkhbat ، S. ، Altanhuyag ، L. ، & Tumurbaatar ، P.
https://mongoliajol.info/index.php/jimdt/article/view/2661
ابحث عن السلسلة التقريبية السريعة عن wikification
Szymon Olewewniczak ، جوليان Szymanski
https://www.iccs-meeting.org/archive/iccs2021/papers/127440334.pdf
RumedSpellChecker: تصحيح أخطاء الإملاء للغة الروسية الطبيعية في السجلات الصحية الإلكترونية باستخدام تقنيات التعلم الآلي
Dmitrii Pogrebnoi ، Anastasia Funkner ، Sergey Kovalchuk
https://link.springer.com/chapter/10.1007/978-3-031-36024-4_16
المفردات الممتدة لتوسيع التسلسل لتصحيح الخطأ النحوي
ستيوارت ميشام ، كريستوفر براينت ، ماريك ري ، تشنغ يوان
https://aclanthology.org/2023.findings-eacl.119.pdf
البحث عن تشابه مستقبلات المناعة المناعي التكيف السريع عن طريق البحث المتماثل الحذف
Touchchai Chotisorayuth ، Andreas Tiffeau-Mayer
https://arxiv.org/html/2403.09010v1
كشف النقاب عن السمية المقنعة: وحدة جديدة للمعالجة المسبقة لتعزيز المعالجة
جوني تشان ، يومنج لي
https://www.sciendirect.com/science/article/pii/S2215016124001225
bycycle
-> bicycle
(بدلاً من by cycle
)inconvient
-> inconvenient
(بدلاً من i convent
)ساهم Sequspell من قبل SeekStorm - البحث عالي الأداء كخدمة واجهة برمجة تطبيقات البحث والبحث