packages
- requirements.txt
1pykakasi==1.0 2mecab-python3==0.7 3python-Levenshtein==0.12.0
pykakasi
- usage
H is hiragana, K is katakana, A is alphabet
1import pykakasi.kakasi as kakasi 2 3kakasi = kakasi() 4kakasi.setMode("H","a") # default: Hiragana -> Roman 5kakasi.setMode("K","a") # default: Katakana -> Roman 6kakasi.setMode("J","a") # default: Japanese -> Roman 7kakasi.setMode("r","Hepburn") # default: use Hepburn Roman table 8kakasi.setMode("s", True) # default: Separator 9kakasi.setMode("C", True) # default: Capitalize 10conv = kakasi.getConverter() # instantiate Converter 11result = conv.do(text) # romanize
mecab-python
Python wrapper for MeCab.
MeCab on docker
- Dockerfile
1RUN apt-get update \ 2 && apt-get install -y mecab \ 3 && apt-get install -y libmecab-dev \ 4 && apt-get install -y mecab-ipadic-utf8\ 5 && apt-get install -y git\ 6 && apt-get install -y make\ 7 && apt-get install -y curl\ 8 && apt-get install -y xz-utils\ 9 && apt-get install -y file\ 10 && apt-get install -y sudo\ 11 && apt-get install -y wget 12 13RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git\ 14 && cd mecab-ipadic-neologd\ 15 && bin/install-mecab-ipadic-neologd -n -y 16 17RUN apt-get install -y software-properties-common vim 18RUN add-apt-repository ppa:jonathonf/python-3.6 19RUN apt-get update 20 21RUN apt-get install -y build-essential python3.6 python3.6-dev python3-pip python3.6-venv 22RUN python3.6 -m pip install pip --upgrade 23RUN pip install mecab-python3
- Output format
Surface form\tPart of speech,Part of speech sub-classification 1,Part of speech sub-classification 2,Part of speech sub-classification 3,Conjugation type,Conjugated form,Base form,Reading,Pronunciation
Output result processing
1import MeCab 2text = "慶應義塾大学湘南藤沢キャンパス" 3T = MeCab.Tagger("")
- Tuple of surface form + other information
1parsed = [[l.split('\t')[0], tuple(l.split('\t')[1].split(','))] for l in T.parse(text).splitlines()[:-1]]
1[['慶應義塾', ('名詞', '固有名詞', '組織', '*', '*', '*', '慶應義塾', 'ケイオウギジュク', 'ケイオーギジュク')], 2 ['大学', ('名詞', '一般', '*', '*', '*', '*', '大学', 'ダイガク', 'ダイガク')], 3 ['湘南', ('名詞', '固有名詞', '地域', '一般', '*', '*', '湘南', 'ショウナン', 'ショーナン')], 4 ['藤沢', ('名詞', '固有名詞', '地域', '一般', '*', '*', '藤沢', 'フジサワ', 'フジサワ')], 5 ['キャンパス', ('名詞', '一般', '*', '*', '*', '*', 'キャンパス', 'キャンパス', 'キャンパス')]]
- Tuple of all information
Split all at once with re
1import re 2parsed = [tuple(re.split(r"[\t,]", l)) for l in T.parse(text).splitlines()[:-1]]
1[('慶應義塾', '名詞', '固有名詞', '組織', '*', '*', '*', '慶應義塾', 'ケイオウギジュク', 'ケイオーギジュク'), 2 ('大学', '名詞', '一般', '*', '*', '*', '*', '大学', 'ダイガク', 'ダイガク'), 3 ('湘南', '名詞', '固有名詞', '地域', '一般', '*', '*', '湘南', 'ショウナン', 'ショーナン'), 4 ('藤沢', '名詞', '固有名詞', '地域', '一般', '*', '*', '藤沢', 'フジサワ', 'フジサワ'), 5 ('キャンパス', '名詞', '一般', '*', '*', '*', '*', 'キャンパス', 'キャンパス', 'キャンパス')]
MeCab: Wakati-gaki (Word separation)
1import MeCab 2wakati = MeCab.Tagger("-Owakati") 3wakati.parse("慶應義塾大学湘南藤沢キャンパス").split()
Chasen style
1chasen = MeCab.Tagger("-Ochasen") 2print(chasen.parse("pythonが大好きです"))
1python python python 名詞-固有名詞-組織 2が ガ が 助詞-格助詞-一般 3大好き ダイスキ 大好き 名詞-形容動詞語幹 4です デス です 助動詞 特殊・デス 基本形 5EOS
Others
- Output reading with
-Oyomioption. However, words are not separated.