ユーザ用ツール

サイト用ツール


korean:mecab:python

文書の過去の版を表示しています。


HanDicをPythonで利用する

はじめに

ここではHanDicをPythonで利用する方法について紹介します.

Pythonのバージョンは3.7.11,HanDicはhandic-mecab-20210116を用いました.MeCabを扱うためのモジュールmecab-python3ほか,必要なモジュールがインストールされていることが前提です.HanDicはPythonスクリプトのあるディレクトリ下,handicという名前のディレクトリに保存されているとします.

注意

筆者がPython初心者なので,無駄なコードや誤りなどが含まれている可能性があることをお断りしておきます.また,HanDicによる形態素解析が誤っている可能性もありますので,その点ご承知おきください.

準備

HanDicでは完成型のハングルではなく,字母に分解した文字列を入力として用いるため,完成形ハングルを字母に分解するスクリプトを用意します.

# k2jamo
# substitute_main(match)
import re
 
initial = ["ᄀ", "ᄁ", "ᄂ", "ᄃ", "ᄄ", "ᄅ", "ᄆ", "ᄇ", "ᄈ", "ᄉ", "ᄊ", "ᄋ", "ᄌ", "ᄍ", "ᄎ", "ᄏ", "ᄐ", "ᄑ", "ᄒ"]
medial = ["ᅡ", "ᅢ", "ᅣ", "ᅤ", "ᅥ", "ᅦ", "ᅧ", "ᅨ", "ᅩ", "ᅪ", "ᅫ", "ᅬ", "ᅭ", "ᅮ", "ᅯ", "ᅰ", "ᅱ", "ᅲ", "ᅳ", "ᅴ", "ᅵ", ""]
final = ["", "ᆨ", "ᆩ", "ᆪ", "ᆫ", "ᆬ", "ᆭ", "ᆮ", "ᆯ", "ᆰ", "ᆱ", "ᆲ", "ᆳ", "ᆴ", "ᆵ", "ᆶ", "ᆷ", "ᆸ", "ᆹ", "ᆺ", "ᆻ", "ᆼ", "ᆽ", "ᆾ", "ᆿ", "ᇀ", "ᇁ", "ᇂ"]
 
regex = u'[가-힣]'
pattern = re.compile(regex)
 
def convert_main(match):
    value = ord(match.group(0))
    my_int = value - 44032
    my_int_index = int(my_int / 588)
    my_final_index = my_int % 28
    my_medial_index = int((my_int - (my_int_index * 588) - my_final_index) / 28)
    result = initial[my_int_index] + medial[my_medial_index] + final[my_final_index]
    return result
 
def substitute_main(text):
    result = re.sub(pattern, convert_main, text)
    return result

これをk2jamo.pyとして保存します.

MeCabの呼び出し

MeCabを使うためのモジュールと,k2jamo.pyをimportします.その上で,MeCabのインスタンスを作成します.

import MeCab
from k2jamo import substitute_main
tokenizer = MeCab.Tagger('-d handic')
tokenizer.parse('')
korean/mecab/python.1636121031.txt.gz · 最終更新: 2021/11/05 23:03 by yoshi