Я пытаюсь написать проверку орфографии, и я хотел использовать difflib для его реализации. В основном у меня есть список технических терминов, которые я добавил в стандартный словарь unix (/usr/share/dict/words
), который я храню в файле, который я вызываю dictionaryFile.py.Эффективная структура данных для поиска словаря слов в python с использованием difflib?
У меня есть другой скрипт, который называется 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
Я интересно, если есть более эффективные стратегии я мог бы использовать для поиска подобных матчей (предполагая, что слово написано с ошибками) , Это для веб-приложения, поэтому я пытаюсь оптимизировать эту часть кода, чтобы быть немного более оперативным. Есть ли лучший способ структурировать переменную wordList (сейчас это всего лишь список слов)?
Спасибо.
Поскольку у вас есть рабочий код и вы ищете улучшения, у вас могут быть лучшие результаты в Code Review – wnnmaw