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