ここにいくつかの指針があります。最終的には、遭遇するさまざまな種類の異常をすべて修正する一連のルーチン/関数を作成する必要があると思います。
幸いなことに、一連の「修正」を段階的に追加して、パーサーを改善し続けることができます。
私も似たようなことをしなければなりませんでしたが、Peter Norvig によるこの投稿は非常に役に立ちました。(これは Python であることに注意してください。)
特にこの機能には、不規則な単語を「修正」するための分割、削除、転置、挿入など、必要なアイデアがあります。
def edits1(word):
splits = [(word[:i], word[i:]) for i in range(len(word) + 1)]
deletes = [a + b[1:] for a, b in splits if b]
transposes = [a + b[1] + b[0] + b[2:] for a, b in splits if len(b)>1]
replaces = [a + c + b[1:] for a, b in splits for c in alphabet if b]
inserts = [a + c + b for a, b in splits for c in alphabet]
return set(deletes + transposes + replaces + inserts)
上記は、Norvig のスペル修正プログラムからの 1 つのスニペットです。
コードをそのまま使用できない場合でも、核となるアイデアはあなたのケースに適用できます: あなたのケースでは不規則な単語であるトークン (「単語」) を取り、さまざまな調整を試みて、それが大きなものに属しているかどうかを確認します。既知および受け入れられている単語の辞書。
それが役立つことを願っています。