スペルチェッカーを作成しようとしていますが、difflib を使用して実装したいと考えていました。/usr/share/dict/words
基本的に、dictionaryFile.pyというファイルに保存している標準の UNIX 辞書 ( ) に追加した技術用語のリストがあります。
stringSim.py という名前の別のスクリプトがあり、辞書をインポートしてそれに対してサンプル文字列をテストします。基本的なコードは次のとおりです。
import os, sys
import difflib
import time
from dictionaryFile import wordList
inputString = "dictiunary"
print "Search query: "+inputString
startTime = time.time()
inputStringSplit = inputString.split()
for term in inputStringSplit:
termL = term.lower()
print "Search term: "+term
closeMatches = difflib.get_close_matches(termL,wordList)
if closeMatches[0] == termL:
print "Perfect Match"
else:
print "Possible Matches"
print "\n".join(closeMatches)
print time.time() - startTime, "seconds"
以下を返します。
$ python stringSim.py
Search query: dictiunary
Search term: dictiunary
Possible Matches
dictionary
dictionary's
discretionary
0.492614984512 seconds
同様の一致を検索するために使用できるより良い戦略があるかどうか疑問に思っています (単語のスペルが間違っていると仮定します)。これは Web アプリケーション用であるため、コードのこの部分を最適化して、少しスマートにしようとしています。wordList 変数を構造化するより良い方法はありますか (現在は単なる単語のリストです)。
ありがとう。