Python を使用してスペルを修正する
スペル チェッカーは、書面によるコミュニケーションの精度を向上させるのに役立つ重要なツールです。文章を書いていると、スペル チェッカーで簡単に検出できるタイプミスやスペルミスを見逃すことがあります。これは時間と労力を節約するだけでなく、恥ずかしい間違いを避けるのにも役立ちます。
Python の Tkinter モジュールを使用すると、単語を入力してスペルを修正できる GUI アプリケーションを簡単に開発できます。Tkinter は、開発を簡単かつ楽しくする、驚くほどカスタマイズ可能なウィジェットを提供します。
Tkinter と Spell Checker モジュール
Python のデフォルトの GUI ライブラリは Tkinter と呼ばれます。Tkinter を使用すると、すばらしい GUI プログラムを作成できます。簡単な電卓、To Do リスト アプリ、テキスト エディター、音楽プレーヤー、クイズ ゲームなどを作成できます。Python と Tkinter を使用してシンプルなデスクトップ アプリを作成し、プログラミング スキルを向上させながら知識を実践できます。
システムに Tkinter をインストールするには、ターミナルを開いて次を実行します。
pip install tkinter
このプロジェクトで大いに使用するもう 1 つのモジュールは、Spell Checker モジュールです。Peter Norvig の作業は、このモジュールの基礎を形成しています。レーベンシュタイン距離アルゴリズムを使用して、単語頻度リストの順列を見つけます。次に、単語の頻度が高いほど、正しいスペルである可能性が高いと見なされます。
スペルチェッカー モジュールをインストールするには、次のコマンドを実行します。
pip install pyspellchecker
Python を使用してスペル修正アプリを作成する方法
Python を使用して GUI スペル修正プログラムを作成するには、次の手順に従います。
基礎となるロジックと機能を実装する
最初のステップは、スペルチェッカー モジュールから Tkinter と SpellChecker クラスをインポートすることです。SpellCheckerのインスタンスを作成し、それを correctorという名前の変数に格納します。
from tkinter import *
from spellchecker import SpellChecker
corrector = SpellChecker()
入力フィールドに表示されたデータを消去する関数clearAll()を定義します。これを実現するには、delete()関数を使用して、両方のエントリ フィールドword1_fieldとword2_fieldの 0 から最後のインデックスまでのすべてのエントリを削除します。
def clearAll():
word1_field.delete(0, END)
word2_field.delete(0, END)
最初の入力フィールドから単語を読み取り、正しいスペルを 2 番目の入力フィールドに追加する、correction()という名前の別の関数を定義します。word1_field でget()メソッドを使用して、その値を文字列として取得します。この取得された単語をCorrection()関数に渡し、word2_field ウィジェットをクリアしてから、insert()メソッドを使用して修正された単語をフィールドの先頭に挿入します。
def correction():
input_word = word1_field.get()
corrected_word = corrector.correction(input_word)
word2_field.delete(0, END)
word2_field.insert(0, corrected_word)
ユーザー インターフェイスを作成する
Tkinter インスタンスを初期化し、ルート ウィンドウを表示します。configure()メソッドを使用して、ウィンドウの背景色をアクアなどの希望の色に設定します。geometry()メソッドを使用して、ウィンドウのサイズを幅 900 ピクセル、高さ 450 ピクセルに設定します。また、適切なウィンドウ タイトルを設定します。
root = Tk()
root.configure(background='aqua')
root.geometry("900x450")
root.title("Spellings Corrector")
ラベル ウィジェットを使用して、アプリケーションに関する有用な情報を表示します。コンストラクターは、それを配置する親ウィンドウ、表示するテキスト、フォントの色、背景色、およびフォント サイズを受け取ります。
headlabel = Label(root, text='Spellings Corrector', fg='white', bg="blue", font=10)
label1 = Label(root, text="Input Word", fg='black', bg='violet', font=10)
label2 = Label(root, text="Corrected Word", fg='black', bg='violet', font=10)
Grid は、ウィジェットを 2 次元のテーブルに編成するジオメトリ マネージャーです。5 行 2 列のレイアウトを想像できます。
各ラベルを適切な行と列に配置します。インデックスはゼロから始まることに注意してください。パディングを使用してウィジェットを整列させることができます。この例では、label2 には X 軸に沿って 100 ピクセルのパディングがあります。
headlabel.grid(row=0, column=1)
label1.grid(row=1, column=0)
label2.grid(row=3, column=0, padx=100)
入力用と修正用の 2 つのエントリ ウィジェットを定義します。両方のウィジェットのフォント サイズを 10 に設定します。スペル ミスのあるエントリ ウィジェットを 2 行目の 2 列目に設定し、X 軸に沿って 100、Y 軸に沿って 50 のパディングを設定します。修正されたエントリ ウィジェットについても同じことを行いますが、4 行目に配置します。
word1_field = Entry(font=10)
word2_field = Entry(font=10)
word1_field.grid(row=1, column=1, padx=100, pady=50)
word2_field.grid(row=3, column=1, padx=100, pady=50)
Button()ウィジェットを使用して、CorrectionとClearの 2 つのボタンを作成します。ルート ウィンドウを所有者として、ボタンのラベルを文字列として、背景色をオレンジ色、フォントの色を黒、フォント サイズを 8 として渡します。コマンド引数を使用して、ここで関数名を指定できます。これは、ユーザーがボタンをクリックしたときに実行されます。
各ボタンを適切な行と列に配置します。
button1 = Button(root, text="Correction", bg="orange", fg="black", font=8, command=correction)
button1.grid(row=2, column=1),
button2 = Button(root, text="Clear", bg="orange", fg="black", font=8, command=clearAll)
button2.grid(row=4, column=1)
mainloop ()関数は、ウィンドウを閉じるまで Tkinter イベント ループを実行し、イベント (ボタンの押下など) をリッスンするように Python に指示します。
root.mainloop()
このコードをすべてまとめてプログラムを実行し、スペル修正アプリケーションの動作を確認してください。
スペル修正アプリの出力
このプログラムを実行すると、背景色が青色の小さなウィンドウが表示されます。最初の入力フィールドにスペルミスのある単語を入力し、 [修正] ボタンを押します。2 番目のテキスト フィールドに正しいスペルが表示されるはずです。[クリア] ボタンを使用して、両方のテキスト フィールドをリセットできます。
開発者向けの Python GUI フレームワーク
Python GUI フレームワークは、開発者にとって素晴らしいリソースです。魅力的で便利な GUI を備えたアプリケーションをすばやく構築できます。Tkinter 以外に使用できるフレームワークには、Qt デザイナー、Kivy、Toga、BeeWare などがあります。これらのフレームワークを使用すると、小さなユーティリティ アプリから完全に機能する製品まで、あらゆるものを構築できます。
Python を使用すると、追加の利点が得られます。Python GUI フレームワークはクロスプラットフォーム開発をサポートしているため、異なるオペレーティング システムで同じコードを使用できます。これらすべての機能とその他の多くの機能を備えた Python は、信頼性が向上し、コストが削減されたグラフィカル ユーザー インターフェイスを作成するための理想的な言語として登場しました。
コメントを残す