web-dev-qa-db-ja.com

Python:Wordのスペルが正しいかどうかを確認する

特定の文字列が正しいスペルの英語の単語であるかどうかを確認する簡単な方法を探しています。たとえば、「looked」はTrueを返し、「hurrr」はFalseを返します。スペル候補やスペル修正機能は必要ありません。文字列を取り、ブール値を返す単純な関数です。

19
Nikolai

それを行う2つの可能な方法:

  1. すべての有効な単語を含む独自のファイルを用意します。ファイルをセットにロードし、各Wordを比較して、ファイルが存在するかどうかを確認します(セット内のWord)
  2. (より良い方法)Python用のスペルチェックライブラリである PyEnchant を使用します

PyEnchantは現在積極的にメンテナンスされていません。

29
user225312

私は同じ機能を探していましたが、Windowsで動作する64ビットの既存のライブラリを見つけるのに苦労しました。 PyEnchantは優れたライブラリですが、現在アクティブではなく、64ビットでは機能しません。私が見つけた他のライブラリは、Windowsでは機能しませんでした。

私はついに、他の人が価値があると思う解決策を見つけました。

ソリューション...

  • Nltkを使用する
  • Nltk.corpus.brownから単語リストを抽出する
  • Wordリストをセットに変換します(効率的な検索のため)
  • inキーワードを使用して、文字列がセットに含まれているかどうかを確認します

from nltk.corpus import brown
Word_list = brown.words()
Word_set = set(Word_list)

# Check if Word is in set
"looked" in Word_set  # Returns True
"hurrr" in Word_set  # Returns False

タイマーチェックを使用すると、セットを検索するのに実質的に時間がかからないことがわかります。 1,000語のテストには0.004秒かかりました。

6
Chris Farr

私は個人的に使用しました: http://textblob.readthedocs.io/en/dev/ これはアクティブなプロジェクトであり、ウェブサイトによれば:

スペル修正は、パターンライブラリに実装されている、Peter Norvigの「How to Write a Spelling Corrector」[1]に基づいています。約70%正確です

2
krinker

Yahooは、YQLを介してスペルチェック [〜#〜] api [〜#〜] を提供しています。

非常にシンプルで、非営利目的で5000クエリ/ IPアドレス/日を取得できます(無料)

0
Surya