📙

BertJapaneseTokenizerの辞書にNEologDを指定する

2021/12/15に公開

結論

BertJapaneseTokenizerの引数にmecab_kwargs={"mecab_option"="-d/path/to/neologd"}を指定する

NEologDを指定する方法

from transformers import BertJapaneseTokenizer

tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-v2', mecab_kwargs={"mecab_option": "-d/usr/local/lib/mecab/dic/mecab-ipadic-neologd"})
tokenizer.tokenize('『鬼滅の刃』は、吾峠呼世晴による日本の漫画作品。『週刊少年ジャンプ』にて2016年11号から2020年24号まで連載。略称は「鬼滅」。')

鬼滅の刃##滅##の##刃というサブワードに分割されている。

['『',
 '鬼',
 '##滅',
 '##の',
 '##刃',
 '』',
 'は',
 '、',
 '吾',
 '##峠',
 '##呼',
 '##世',
 '##晴',
 'に',
 '##よ',
 '##る',
 '日本',
 '##の',
 '##漫',
 '##画',
 '作品',
 '。',
 '『',
 '週刊',
 '##少',
 '##年',
 '##ジャン',
 '##プ',
 '』',
 'にて',
 '2016',
 '##年',
 '11',
 '##号',
 'から',
 '2020',
 '##年',
 '24',
 '##号',
 'まで',
 '連載',
 '。',
 '略称',
 'は',
 '「',
 '鬼',
 '滅',
 '」',
 '。']

デフォルトのIPA辞書を使った場合

from transformers import BertJapaneseTokenizer
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-v2')
tokenizer.tokenize('『鬼滅の刃』は、吾峠呼世晴による日本の漫画作品。『週刊少年ジャンプ』にて2016年11号から2020年24号まで連載。略称は「鬼滅」。')

鬼滅の刃は別々のワードに分割されている。

['『',
 '鬼',
 '滅',
 'の',
 '刃',
 '』',
 'は',
 '、',
 '吾',
 '峠',
 '呼',
 '世',
 '晴',
 'に',
 'よる',
 '日本',
 'の',
 '漫画',
 '作品',
 '。',
 '『',
 '週刊',
 '少年',
 'ジャンプ',
 '』',
 'にて',
 '2016',
 '年',
 '11',
 '号',
 'から',
 '2020',
 '年',
 '24',
 '号',
 'まで',
 '連載',
 '。',
 '略称',
 'は',
 '「',
 '鬼',
 '滅',
 '」',
 '。']

mecab_dicオプションについて

mecab_dicというオプションもあり、以下のように辞書を指定することができる。

BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-v2', mecab_kwargs={"mecab_dic": "ipadic"})

ただし、mecab_dicで指定できるのは以下の3つなので、NEologDを使いたい場合はmecab_optionを使う必要がある。

  • ipadic
  • unidic_lite
  • unidic

Discussion