韓国語の勉強を始め、例文など集めていると、動詞の活用が不規則で困ります。たとえば「見た人」を意味する韓国語「온 사람」は、「見る 오다)」の語幹「오」に過去連体形を示す「ㄴ」が付いて「온」になるのですが、一文字の中で変化があるので検索しにくいですね。
というわけで日本語の形態素解析のように韓国語でも形態素解析できないか探してみました。
今回、試してみたのはkonlpyというライブラリ。このライブラリ自体はmecabを含む5つのtag Packageを選べるのですが、このうちkkmaがGoogle Colabでも動かせましたので、こちらを使っていくことにします。(他のパッケージは動かせませんでした。誰か動かせたという情報あれば教えてください)
まず、関連パッケージをインストールします。ipywidgetsを入れておくと、入力する文字列をいちいちコードに貼らなくてもインタラクティブに入力できるので、おすすめです。
!pip install konlpy
!pip install mecab-python3
from konlpy.tag import Kkma
from konlpy.utils import pprint
!pip install ipywidgets
from ipywidgets import interact
本体のコードはこちら。ipywidgetsでインタラクティブに使いたいので、適当な関数名を付けています。
s = "기억이 돌아온 거야?"
def func(s):
for line in s.split('\n'):
print(line)
poslist = Kkma().pos(line,flatten=False, join=False)
for tags in poslist:
if tags[0][1] == "VV" or tags[0][1] == "VA" : # 動詞または形容詞
word = ""
part = ""
for tag in tags:
word = word + " "+ tag[0]
part = part + " "+ tag[1]
print(word+" / "+part)
interact(func,s=s)
postlistをpprintすると、名詞などすべての品詞が出てきますが、今回は動詞(VV)の活用だけを見たいので絞り込んでいます。
実行すると、このように動詞を品詞ごとに分解した結果が出てきます。
기억이 돌아온 거야?
돌아오 ㄴ / VV ETD
文字列を入力する欄がありますので、そこにコピペすると何度でも解析できて便利ですね。