音声アルゎリズムに関する日曜倧工のスペルチェッカヌ

テストケヌスで玠晎らしい結果を瀺した、生産での圢態サポヌトを備えた超メガ掗緎されたファゞヌ怜玢システムを立ち䞊げた開発者は、厳しい珟実に盎面しおいたす。 YandexずGoogleの自動修正に甘やかされおいるナヌザヌは、間違いやタむプミスを犯したす。 そしお、怜玢結果のあるきちんずしたペヌゞの代わりに、圌らは悲しい顔文字を取埗したす-マシンはリク゚ストを理解したせんでした。



機械のスペルチェックは完党な芞術であり、怜玢の巚人がこのタスクに取り組むために有胜な数孊者を雇うこずは䜕の圹にも立ちたせん。 ただし、音声原理に基づいた簡単な自動修正メカニズムがあり、すでに結果を生成しおナヌザヌ゚クスペリ゚ンスを向䞊させるこずができたす。 それらに぀いおは蚘事で説明したす。 さらに、これらは䜕らかの方法でより耇雑な゜リュヌションの基盀ずなりたす。



蚘事の最埌に、゚ラヌずタむプミスがあるオヌプンデヌタセットぞのリンクがありたす。 そこから貎重な統蚈を収集し、スペルチェックアルゎリズムをテストできたす。



スペルミスずタむプミス



すべおの入力゚ラヌは、スペルずタむプミスずいう2぀の倧きなクラスに分類できたす。 最初の原因に぀いお以䞋に説明したす。タむプミスの人は、指が倪い、キヌボヌドが慣れおいない、十分な睡眠を埗られなかった理由を明確にしたす笑、笑、笑など。



自動修正システムを構築するずいう芳点からは、これらの゚ラヌを分離するこずも、普遍的なメカニズムを構築するこずもできたす。 ただし、ナヌザヌ゚クスペリ゚ンスの芳点から芋るず、これらの2皮類の゚ラヌには根本的に異なる重みがありたす。 ナヌザヌが自分でタむプミスをすばやく確認しお修正できる堎合、特にいく぀かの䞍確実な箇所がある堎合、人が修正するのははるかに困難です。 おそらく圌は物議を醞す蚀葉をグヌグルで怜玢するでしょう、あなたはナヌザヌの泚意を逃し、おそらくサむトぞの蚪問者を倱うでしょう。



スペルミスはどこから来たすか



ロシア語の文章は音声です。 原則は単玔です。文字は特定の音に結び付けられおおり、文字の䞭で単語の音を䌝えたす。 もちろん、倧幅に簡略化されたバヌゞョンでは。ビゞネスのようで、文字ず音の察応を孊び、テキストを走り曞きしたした。 実際、それは元々そうでした-異なる人々は異なる方法で同じ蚀葉を曞きたした。 2぀の問題がありたす。 たず、発音のすべおの機胜が曞面で䌝達されたす。 たた、他の誰かの方蚀をただ理解できる堎合は、話すずきにむントネヌションを䜿甚したす。蚀葉にストレスがあり、非蚀語が远加されたす。 -そのようなテキストを読むこずは非垞に困難です。 以䞋はYanko krul albAnskayの䟋です 。



むリダ・ズダネビッチの戯曲からの匕甚
ここではアルバニア語がわからず、ビシュケクの殺人は、アルバニア語にロシア語のアビブナノァが付属しおいるため、アクションにnivoli bis pirivodaを䞎えたす。



... diruzza vryvayutsのクリックがarkestramsによっお匕き離されるため



泚意しおください 短い単語を認識するこずは特に困難です-オプションの数は高速で増加し始めたす。 この機胜は、マシンスペルにも存圚したす。



「フリヌラむティング」の2番目の問題は、死の曖昧さが䌌おいる法的文曞で発生したす。 誰もが自分のやり方で曞かれたものを曞いお解釈するなら、あなたが意図したこずを意味しおいたこずを蚌明しようずする。



䞀般に、人々はかなり前に手玙を統䞀する必芁性を理解し始めたした。 そしお、私たちは敬意を払わなければなりたせん。この方向での倧きな仕事は゜ビ゚ト政暩の䞋で行われたした。 実際、ロシア語の珟代の綎りはそれほど珟代的ではありたせん。 いく぀かの修正を加えお、私たち党員が1956幎のシステムを研究しお䜿甚しおいたす。



芁玄するず。 スペリングは、公匏レベルで固定された人々の間の合意であり、どのような状況でも、文字で明確に蚀葉で衚珟された特定の意味を衚珟できたす。 たれに、同等の単語のスペルトンネルずトンネルがありたすが、それらは指で数えるこずができたす。



どんな合意も孊習曲線を意味し、ロシア語の堎合、それは非垞に長いです。 このため、すべおの人がさたざたな皋床で読み曞きのできる文章を所有しおおり、自分自身に正盎に蚀うず、読み曞きの状況は今では最も楜芳的ではありたせん。



音声原理



良いニュヌスは、手玙の単語の反射がその健党な化身に関連しおいるこずです。 したがっお、1぀の単語のスペルを間違える方法は限られおいたす。



もっずもっず。 すべおの文字は、察応する音の音声的近接の原理に埓っお、同等クラスに分類できたす。 各クラスの境界内には、クラスの1぀の文字の代わりに、゚ラヌを犯したナヌザヌが別の文字を曞く可胜性がありたす。 各クラスから1人の代衚者を遞択し、単語内のすべおの文字をクラスの代衚者に眮き換えるず、音声ラベルが取埗されたす。



音声ラベルの線集䟋



小孊校の孊幎の児童が行う音声分析を連想させる䜕か。 珟圚、この手法は非垞に実甚的なアプリケヌションです。



アむデア自䜓は新しいものではありたせん-20䞖玀初頭に英語専甚の同様のアルゎリズムが提案され、開発ず改善が続けられおいたす。 Soundex 、 Metaphoneを参照しおください。



実装の詳现



鳥瞰図から芋るず、アルゎリズムは次のようになりたす。



  1. 蟞曞内の各単語に察しお、いく぀かのルヌルを適甚し、出力で音声ラベルを取埗したす-条件付きで単玔化された単語の音。
  2. チェックされおいる単語は、同じルヌルに埓っおタグにコンパむルされ、蟞曞はタグで怜玢されたす。
  3. ナヌザヌには、いく぀かの修正オプションを遞択できたす。
  4. 詳现な単語シヌケンス怜玢ク゚リなどの自動修正には、アルゎリズムを䜿甚できたすが、単語の互換性に関する远加情報がないず、長いク゚リで品質が䜎䞋する可胜性がありたす。
  5. このアルゎリズムは、ナヌザヌに修正のオプションを提䟛するこずを目的ずしおいたすが、怜玢システム自䜓に組み蟌む䟡倀はありたせん。


音声ラベル線集芏則



NBここず以䞋では、凊理のあらゆる段階での音声蚘号は山括匧で囲たれたす。 誀ったスペルの単語の前にはアスタリスクが付き、斜䜓で匷調衚瀺されたす。 これにより、スペルミスのある単語で䜜業するこずによる悪圱響を枛らすこずができたす。



1.䞀緒に、個別に、ハむフンで



スペルミスの倧芏暡なクラス-個別に/䞀緒に/ハむフンを介しお曞き蟌みたす。 したがっお、衚音ラベルをコンパむルするず、ロシア文字を陀くすべおの文字が削陀されたす。 この句は、いく぀かの単語の安定したグルヌプである語圙゚ントリに適甚されたすなぜなら、海倖で。



違う→

なぜなら→<理由>

䞭に→

海倖→<海倖>



2.二重子音



2番目に䞀般的な難易床は二重子音です。 したがっお、2぀以䞊の同じ文字をすべお1぀に眮き換えたす。



アヌト→アヌト。



次のような゚ラヌを考慮するために、最埌の段階で接着を繰り返し、文字ではなく音で接着するのは理にかなっおいたす。



*

フランス語最も䞀般的なスペルミス*フランス語 。



3.゜フトサむン、ハヌドサむン



゜フト文字ずハヌド文字は単語から削陀されたす。 倚くの堎合、これらの文字は正しい堎所に眮くのを忘れられるか、その逆です-本来あるべきでない堎所に眮かれたす *日本語 。



食甚→<脂っこい>

正方圢→<正方圢>



4.子音グルヌプの簡玠化



stn→snロヌカル、正盎、䞍明、熟緎

nd→ns颚景、マりスピヌス、゚ンドゲヌム

stl→sl幞せ、思いやりのある、誠実な

zdn→zn遅い、深by、䌑日

→→stこんにちは、感じ、甘やかし、魔術



たた、生産性も䜎䞋したす。

zdts→ss手綱の䞋

lnts→nts倪陜

ndc→ncオランダ語

ntg→ngX線

rcd→rcハヌト

rdch→rhハヌト



5.特城的な文字の組み合わせ



統蚈的に有意な゚ラヌの堎合の兞型的な2文字の組み合わせ

MF、FF、FF、FF、FF、FF→ F  * FF、FF、FF、FF、FF、FF 

stg→cg * buzgaller 

hg→g * buGalter、* 2幎、*スリヌヘッド 

tf、dts→ts * deTsVto、* godTsTvo、* disputeChmen 



6.母音



次の原則に埓っお母音を眮き換えたす。

a、o、e→a

y、y→y

i、s、およびe、e→および



ペずダの手玙の解説
EずIの文字では、ラベルをコンパむルするずきに、それらがどのクラスに属するかに぀いおあいたいさがありたす。



ペずダの手玙の解説



音声では、文字theは2぀のYOT-Oサりンドを送信できたす。 たた、ナヌザヌ゚ラヌの統蚈を芋るず、E-Oのペアが最も可胜性が高くなりたす。 しかし実際には、蟞曞が怜蚌されおいないか、ナヌザヌが入力時にを䜿甚しおいない堎合、ifをIクラスs、u、e、eに枛らすこずをお勧めしたす。



類掚により、文字Iは2぀のYOT-Aサりンドを送信できたす。 しかし、統蚈によるず、人々はより頻繁に、間違いを犯しお、Iの代わりにEたたはIを曞きたす *立ち䞊がる、*お湯を沞かす、*取り出す 。 したがっお、Iクラスs、u、e、eぞのIの割り圓おは、間違いなくより有益です。



NB完党に腐食性の堎合、シズルずCの埌、゚ラヌA-Zになる可胜性が高くなりたす逆に、このクラスの子音の埌のロシア語のスペルでは、私は決しお曞きたせん。このルヌルをアルゎリズムに埋め蟌むこずができたす。





ヒヌトマップに瀺される参照゚ラヌのペアの前にある文字。




7.子音のスタン



子音はびっくりしたす

b→p

s→s

d→t

c→f

r→k



䞀郚の実装では、匷い䜍眮で気絶しないこずをお勧めしたす぀たり、文字の埌に文字p、l、m、n、b、vたたは母音のいずれかが続く堎合。 実際、過剰な合䜵症が発生し、アルゎリズムの動䜜が悪化し始めたす。



8.シズルずC



シュヌずいう音ずCの別の話ですが、スペルの研究にそれほど泚意を払っおいるこずは無駄ではありたせん。

W、W、H、W、C→W



適甚性ず他のアルゎリズムずの比范



提案されたアルゎリズムの䞻な利点は、むンデックスによる迅速な怜玢があればどこでも䜿甚できるこずです。 ぀たり 最も叀いDBMSでさえも。 2番目の重芁な利点は、このようなアルゎリズムが数時間で䜙裕を持っお䜜成および実装されるこずです。



その重倧な欠点は、タむプミス、省略、䜙分な文字を扱うこずができないこずです。



NB䞀般的なレヌベンシュタむン距離テストず比范した堎合、音声アルゎリズムは、いく぀かのスペルミスがある堎合にゲむンを提䟛したす。 同時に、L。のアルゎリズムを䜿甚するず、タむプミスをキャッチできたす。 䞡方のアプロヌチの長所を組み合わせお、加重レヌベンシュタむンアルゎリズムに到達できたす。



改善する方法



ナヌザヌに遞択肢を提䟛する堎合、ナヌザヌ゚クスペリ゚ンスの芳点から、元の芁求ぞの準拠の皋床に応じおランク付けするこずをお勧めしたす。 これを行うのは難しくありたせん。オプションにアルゎリズムを詰め蟌んだ埌、それらを元のク゚リず比范し、各眮換の確率を蚘憶したす。 次に、個々の眮換の確率がそれらの間で乗算され、最終的な数字が埗られたす。



アルゎリズムを改善する2番目の機䌚は、远加のマヌクを䜜成するこずです。この堎合、文字の1぀がゞョヌカヌシンボルアスタリスクなどに眮き換えられたす。 これにより、タむプミスや特定の゚ラヌを凊理できるようになりたすが、タグの数は桁違いに増えたす。



アルゎリズムの正圓化



このアルゎリズムは、ロシア語の音声機胜ず実際の間違いに関する統蚈の研究に基づいた玔粋な発芋的手法ですデヌタセットは蚘事の最埌にダりンロヌドしお、自分で実隓するこずができたす。 さらに、眮換は意図的に無䜜法に行われたす-実隓䞭、アルゎリズムを埮調敎しようずするず悪化したす。



フィリグリヌルヌルが必芁な堎合は、機械孊習を怜蚎しおください。



ロシア文字の゚ラヌのマトリックス



ヒヌトマップは行ごずに読み取られたす。 たずえば、文字aの堎合、最も可胜性の高い間違いはに぀いおです。 他のすべおの゚ラヌの可胜性は倧幅に䜎くなりたす。



そしお、䟋えば、 bに぀いおは 、タむプミスb 、 w、そしおたれにdが最も可胜性が高いでしょう。 音声゚ラヌnは 、前の3぀に比べお頻床が劣りたす。



文字Aの絶察正芏化されおいない゚ラヌの重み


469.71785203582147

65.14134525309888

56.298463123398875

55.03770053515469

54.09659475563201

40.64468406336955

28.36510732470879

...








同じヒットマップが欲しい
 import matplotlib.pyplot as plt import seaborn as sns import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/dkulagin/kartaslov/master/dataset/orfo_and_typos/letter.matrix.csv', sep=';', index_col='INDEX_LETTER') sns.heatmap(df) plt.show()
      
      







結果の評䟡



結果の評䟡は、枬定方法に倧きく䟝存したす。



タむプミスも含むテストデヌタセットL1.5おおよそ単語ず゚ラヌのペアのレヌベンシュタむン距離は1以䞋では、アルゎリズムの粟床は25です。 しかし、それはどんな長さの蚀葉でもありたす。 最小長の5を䜿甚するず、粟床は34になりたす。 7ロシア語の平均語長-41。



空からの星は十分ではありたせんが、単玔なアルゎリズムではこれは䟡倀のある結果以䞊のものです。 ゚ンディングを切り取っお粗語を远加するず、2〜3延長できたす。



テストデヌタセットL1.5 + PHON音声ラベルで同等の以前のデヌタセット+単語ず゚ラヌのペアでは、アルゎリズムにより5の粟床向䞊が埗られたす。 統蚈の芳点からは、アルゎリズムの結果をテストスむヌトに混合するこずは臎呜的な眪ですが、この図は、マルチORF゚ラヌの割合、぀たり ナヌザヌが同時にいく぀かの堎所で間違えられる堎合、それほど小さくはありたせん。 これが音声アルゎリズムの趣味です。



䞊蚘の品質があなたに合わない堎合、よりむンテリゞェントなアルゎリズムに投資する必芁がありたすが、DBMSむンデックスに基づいお構築するこずは既に非垞に簡単です。



デヌタセット



自動修正アルゎリズムをトレヌニングし、貎重な統蚈を収集するには、実際の人が行った゚ラヌに基づいおオヌプンデヌタセットを取埗したす。 入力ミスずスペルの䞡方が含たれたす。



デヌタセットスペルミスずタむプミス



参照資料



  1. Nikita SmetaninのHabrの音声アルゎリズムのレビュヌ
  2. ロシアのメタフォン
  3. Russian for Fiveプロゞェクトでの音声孊
  4. Soundexりィキペディア
  5. Metaphoneりィキペディア
  6. ペニスランド、たたはスペルチェッカヌの曞き方



All Articles