ASP.NET でスペル サジェスターを作成する必要があります... 以下は私の要件です。
ケース 1: 私の単語リストは英語リストの単語だけではなく、AACD、ESSA、BIMER などのコードも含まれます。データベースからそのような (新しい) 単語を提供する場合があります。
ケース 2: 英語以外の言語にも同様のスペリング サジェスターが必要です。ここでも、データベースから単語のリストを提供できます。
さて、同じことをどのように実装するかについての提案は大歓迎です。
さらに、ウェブサイトから次のPythonコードを見つけました。これは、最も可能性の高い提案を返すと述べています(もちろん英語で)。誰かがそれをC#に翻訳できるなら、それは本当に役に立ちます.
コレクションのインポート def words(text): re.findall('[az]+', text.lower()) を返す デフトレイン(機能): モデル = collections.defaultdict(ラムダ: 1) 機能の f の場合: モデル[f] += 1 モデルを返す NWORDS = train(words(file('big.txt').read())) アルファベット = 'abcdefghijklmnopqrstuvwxyz' def edits1(単語): s = [(word[:i], word[i:]) for i in range(len(word) + 1)] deletes = [a の場合は a + b[1:]、b の場合は s の b] transposes = [a + b[1] + b[0] + b[2:] for a, b in s if len(b)>1] = [a + c + b[1:] a の場合、s の b はアルファベットの c の場合は b] に置き換えます。 inserts = [a の場合は a + c + b、アルファベットの c の場合は s の b] return set(削除 + 転置 + 置換 + 挿入) def known_edits2(単語): set(e2 for edits1(word) for e2 in edits1(e1) if e2 in NWORDS) を返す def known(words): set(NWORDS 内の w の場合、単語内の w の場合は w) を返します。 デフ・コレクト(ワード): 候補 = 既知 ([単語]) または既知 (edits1(単語)) または既知の編集 2 (単語) または [単語] リターンマックス(候補者、キー= NWORDS.get)
ありがとう - ラジャ