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)
ありがとう - ラジャ