• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

janome

date: 2021-05-28 excerpt: janoemの使い方について

tag: nlpjanome


janoemの使い方について

インストール

$ pip install janome

基本的な使い方

適当な文を形態素解析する例

from janome.tokenizer import Tokenizer

tokenizer = Tokenizer()

text = "私は昨日、図書館で本を借りました"

tokens = tokenizer.tokenize(text)
for token in tokens:
    surface = token.surface
    part_of_speech = token.part_of_speech
    print(surface, part_of_speech)
"""
私 名詞,代名詞,一般,*
は 助詞,係助詞,*,*
昨日 名詞,副詞可能,*,*
、 記号,読点,*,*
図書館 名詞,一般,*,*
で 助詞,格助詞,一般,*
本 名詞,一般,*,*
を 助詞,格助詞,一般,*
借り 動詞,自立,*,*
まし 助動詞,*,*,*
た 助動詞,*,*,*
"""

分かち書き

from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()

text = "私は昨日、図書館で本を借りました"

terms = list(tokenizer.tokenize(text, wakati=True))
print(terms)
"""
['私', 'は', '昨日', '、', '図書館', 'で', '本', 'を', '借り', 'まし', 'た']
"""

基本形(原型)の取得

from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()

text = "私は昨日、図書館で本を借りました"

terms = [token.base_form for token in tokenizer.tokenize(text)]
print(terms)
"""
['私', 'は', '昨日', '、', '図書館', 'で', '本', 'を', '借りる', 'ます', 'た']
"""

特定の品詞のみ取得

from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()

text = "昨日の青い空は美しかったです。私は図書館で新しい本を借りました。"

# 形容詞と名詞を抽出
terms = [token.surface for token in tokenizer.tokenize(text) 
             if token.part_of_speech.startswith(('名詞', '形容詞'))]
print(terms)
"""
['昨日', '青い', '空', '美しかっ', '私', '図書館', '新しい', '本']
"""

ユーザ辞書の追加

$ cat > userdic.csv
東京スカイツリー,名詞,トウキョウスカイツリー
人工知能,名詞,ジンコウチノウ
機械学習,名詞,キカイガクシュウ
from janome.tokenizer import Tokenizer
tokenizer = Tokenizer(udic="simpledic.csv", udic_type="simpledic", udic_enc="utf8")

neologdのインストール(実用上、適さない)

辞書ファイルの作成

bash -c "git clone https://github.com/neologd/mecab-ipadic-neologd.git; xz -dkv mecab-ipadic-neologd/seed/*.csv.xz; cat mecab-ipadic-neologd/seed/*.csv > neologd.csv"

辞書を登録

python3 -c "from janome.dic import UserDictionary; from janome import sysdic; user_dict = UserDictionary('neologd.csv', 'utf8', 'ipadic', sysdic.connections); user_dict.save('neologd')"
  • すごい時間がかかる
  • 64GBメモリでも失敗することがあるのであまり現実的ではない


nlpjanome Share Tweet