この記事は、JavaとPythonを基礎から学びたい私のための Advent Calendar 2024の20日目の記事です。
自然言語処理とは
NLPと呼ばれています。簡単に説明するとコンピュータ側が人間の言葉をわかるようにするための処理のようです。コンピュータが人間の言葉を分析します。
形態素解析
文章を単語ごとにバラバラにして、バラバラになった単語一つ一つがどんな単語であるか(例えば動詞とか)を判断するものです。記述式アンケートの内容を分析したり、テキストマイニングとかいう技術にも使われているみたいです。ちなみにこの形態素解析のほかにも構文解析という、文を解析するものがあります。
janome
pythonの豊富な外部ライブラリの一つです。今回の形態素分析に必要なものです
pip install janome
まずはこれで導入します。
使い方
まずは全文を載せておきます
from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()
sentence = 'もうすぐクリスマスですね'
for token in tokenizer.tokenize(sentence):
print(token)
簡単に出来ることがよくわかると思います。
まず1行目から
from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()
janomeのtokenizerを使用します。
sentence = 'もうすぐクリスマスですね'
sentenceには解析したい文字を入れます。クリスマスが近いので、こんな文にしてみました。
for token in tokenizer.tokenize(sentence):
print(token)
この行で解析をしています。文が入ったsentenseをtokenizeして、その結果をtokenとして出力しています。
結果:
もうすぐ 副詞,一般,,,,,もうすぐ,モウスグ,モースグ
クリスマス 名詞,一般,,,,,クリスマス,クリスマス,クリスマス
です 助動詞,,,,特殊・デス,基本形,です,デス,デス
ね 助詞,終助詞,,,,*,ね,ネ,ネ
こんな感じで、各単語の特徴を教えてくれます。
応用
昨日まで学習してたデスクトップアプリに入れることもできます
こちらではテキストに文を入力することで動くようにしています。
import tkinter as tk
from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()
window=tk.Tk()
window.geometry("400x800")
window.title("形態素解析")
title=tk.Label(text='形態素解析',font=("",30))
title.pack(pady=25)
label=tk.Label(text='文章を入力してね')
label.pack(pady=15)
txt=tk.Entry(window)
txt.pack(pady=25)
def ClickEvent():
inputtxt=txt.get()
txt.destroy()
button.destroy()
label.destroy()
for token in tokenizer.tokenize(inputtxt):
result=tk.Label(text=token)
result.pack(pady=15)
button=tk.Button(text='解析',command=ClickEvent)
button.pack(pady=6)
window.mainloop()
結果:
これなら、Pythonを知らないけど文字の特徴を知りたい人でも使うことができます。
まとめ
janomeを使うと文字を単語ごとに区切り、各単語ごとに特徴を出してくれる。
実際に使っているのはjanomeのtokenizerの機能。
参考文献