はじめに
何回か前に WPF で形態素解析を使ったアプリを作ろうとしていましたが、NMeCab の情報とできることが少ないのでやめました。で、今回からは Python でアプリを作っていこうと思います。
実行環境は以下の通りです。
お品書き
今回扱う内容
1. Tkinter
Python で利用できるデスクトップアプリ開発用のライブラリが TKinter です。なんか色々できるとのことですが、ここに書くには量が多いので気になる人は以下を参照してください。
http://www.cauldron.sakura.ne.jp/thinkpython/thinkpython/Tkinter.pdf
対応プラットフォームは Windows, Mac, Linux と幅広いです。
Tkinter が導入されてるかは Anaconda プロンプトから
python -m tkinter
と入力してウィンドウが表示されれば導入されています。
2. デスクトップアプリ制作
早速実装してみます。
import sys import tkinter as tk from tkinter import messagebox as mbox # GUI 処理 window = tk.Tk() window.title("簡単なアプリ") window.geometry("400x300") #ラベル label = tk.Label(window, text="入力") label.pack #テキストボックス textbox = tk.Entry(window) textbox.pack() textbox.insert(tk.END,"") #ボタン処理 text = "" def On_Click(): text = textbox.get() mbox.showinfo("メッセージタイトル", text) #ボタン作成 OK_Button = tk.Button(window, text="入力", command=On_Click) OK_Button.pack() window.mainloop()
実行してみるとこんな感じになります。
正直、それほど難しくないですが、C# 勢からするとちょっと違和感を覚えます。明確なクラス・メソッドがないと不安になります。でもこんなに簡単にかけるのはありがたいです。ちょっとデザインが微妙ですが...。
3. MeCab を使う
作成したコードをこのように書き換えます。
import sys import MeCab import tkinter as tk from tkinter import messagebox as mbox # GUI 処理 window = tk.Tk() window.title("形態素解析") window.geometry("400x300") #ラベル label = tk.Label(window, text="入力") label.pack #テキストボックス textbox = tk.Entry(window) textbox.pack() textbox.insert(tk.END,"") #ボタン処理 text = "" def On_Click(): gui_text = textbox.get() m = MeCab.Tagger("") text = m.parse(gui_text) mbox.showinfo("入力文字解析", text) #ボタン作成 OK_Button = tk.Button(window, text="入力", command=On_Click) OK_Button.pack() window.mainloop()
実行結果はこんな感じです。問題なく動作しています。文字コードは utf-8 にしているので文字化けする心配もないですね。
MeCab.Tagger() で MeCab を使う準備?をしています。多分インスタンス化?
m.parse(文字列) で文字列を解析した結果を返します。これはメソッド扱いして良さそうです。
おわりに
Pythonって結構簡単に実装できるのが良いですね。ただ、細かい調整する必要があると思うので、次回はインターフェースまわりをいじってみたいと思います。