korean:mecab:python
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| korean:mecab:python [2021/11/05 22:43] – yoshi | korean:mecab:python [2021/11/14 22:49] (現在) – [形態素解析の実行] yoshi | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== HanDicをPythonで利用する ====== | ====== HanDicをPythonで利用する ====== | ||
| - | | + | ===== はじめに ===== |
| + | |||
| + | ここでは[[https:// | ||
| + | |||
| + | Pythonのバージョンは3.7.11,HanDicはhandic-mecab-20210116を用いました.MeCabを扱うためのモジュールmecab-python3ほか,必要なモジュールがインストールされていることが前提です.HanDicはPythonスクリプトのあるディレクトリ下,'' | ||
| + | |||
| + | なお,HanDicに含まれるファイルのうち'' | ||
| + | |||
| + | ==== 注意 ==== | ||
| + | |||
| + | 筆者がPython初心者なので,無駄なコードや誤りなどが含まれている可能性があることをお断りしておきます.また,HanDicによる形態素解析が誤っている可能性もありますので,その点ご承知おきください. | ||
| + | |||
| + | ===== 準備 ===== | ||
| + | |||
| + | HanDicでは完成型のハングルではなく,字母に分解した文字列を入力として用いるため,完成形ハングルを字母に分解するスクリプトを用意します. | ||
| + | |||
| + | <file python k2jamo.py> | ||
| + | # k2jamo | ||
| + | # substitute(text) | ||
| + | import re | ||
| + | |||
| + | REGEX = ' | ||
| + | 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(text): | ||
| + | ' | ||
| + | result = re.sub(pattern, | ||
| + | return result | ||
| + | |||
| + | |||
| + | if __name__ == ' | ||
| + | for letters in [' | ||
| + | output = substitute(letters) | ||
| + | print(letters, | ||
| + | </ | ||
| + | |||
| + | これを'' | ||
| + | |||
| + | ===== MeCabの呼び出し ===== | ||
| + | |||
| + | MeCabを使うためのモジュールと,'' | ||
| + | |||
| + | <code python> | ||
| + | import MeCab | ||
| + | import k2jamo | ||
| + | tokenizer = MeCab.Tagger(' | ||
| + | tokenizer.parse('' | ||
| + | </ | ||
| + | |||
| + | ===== 形態素解析の実行 ===== | ||
| + | |||
| + | '' | ||
| + | |||
| + | <code python> | ||
| + | input = u' | ||
| + | # 한겨레 2021年11月5日付け記事(https:// | ||
| + | input = k2jamo.substitute(input) | ||
| + | print(tokenizer.parse(input)) | ||
| + | </ | ||
| + | |||
| + | 結果は以下の通り. | ||
| + | |||
| + | <code bash> | ||
| + | 한 | ||
| + | 상혁 | ||
| + | 방송 | ||
| + | 통신 | ||
| + | 위원장 | ||
| + | 이 | ||
| + | 코로나 | ||
| + | 19 Symbol, | ||
| + | 확진 | ||
| + | 판정 | ||
| + | 을 | ||
| + | 받으 Verb, | ||
| + | 면서 Ending, | ||
| + | 김 | ||
| + | 부겸 Noun, | ||
| + | 국무 Noun, | ||
| + | 총리 Noun, | ||
| + | 를 | ||
| + | 비롯 Root, | ||
| + | 하 | ||
| + | ᆫ | ||
| + | 국무 Noun, | ||
| + | 위원 Noun, | ||
| + | 들 | ||
| + | 이 | ||
| + | 코로나 | ||
| + | 검사 Noun, | ||
| + | 대상 Noun, | ||
| + | 이 | ||
| + | 돼 | ||
| + | ᆻ | ||
| + | 다 | ||
| + | . | ||
| + | EOS | ||
| + | </ | ||
| + | |||
| + | うまくいっているようです. | ||
| + | |||
| + | ====== 参考にしたページ ====== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | {{indexmenu_n> | ||
korean/mecab/python.1636119830.txt.gz · 最終更新: 2021/11/05 22:43 by yoshi