📚

Janomeでユーザー辞書を使ってみた

2021/07/23に公開

Janome の形態素解析を使う際、ユーザー辞書の使い方を調べるついでに、Google Colab から GoogleSpreadSheet上のユーザー辞書を読み込む方法についても調べたのでまとめます。

コードはこちら

Open In Colab

なお、使っているGoogleSpreadSheetはこちら

GoogleSpreadSheet からデータを取得

下記のコードを実行し、Google認証を実行してGoogleSpreadSheetのデータを取得し、一旦csv化します。

from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspread

# 対象のGoogle SpreadSheetのURLを添付
ulr = "https://docs.google.com/spreadsheets/d/xxxxxxxxxxx/edit#gid=x" # アドレスバーからそのままコピペ

# URLからSpreadSheet の固有キーを取得
key = ulr.split("/")[5] # 5番目がキーじゃないときは適宜修正してください

# 認証処理
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())

# Google SpreadSheet からデータを取得
sh = gc.open_by_key(key)
worksheet = sh.get_worksheet(0)

# DataFrameに変換
df = pd.DataFrame(worksheet.get_all_values())

# csvとして保存
df.to_csv("user_dictionary.csv", header=False, index=False)

https://uepon.hatenadiary.com/entry/2018/04/08/110916

https://qiita.com/FrozenVoice/items/d9cc04b3f63f4b2d49c2

ユーザー辞書を使ってトークナイズ実行

ユーザー辞書なしでトークナイズを実行すると、東京スカイツリーが「東京」と「スカイ」と「ツリー」に分解されてしまいます。

from janome.tokenizer import Tokenizer

t = Tokenizer()
for token in t.tokenize(u'東京スカイツリーへのお越しは、東武スカイツリーライン「とうきょうスカイツリー駅」が便 利です。'):
    print(token)
東京	名詞,固有名詞,地域,一般,*,*,東京,トウキョウ,トーキョー
スカイ	名詞,一般,*,*,*,*,スカイ,スカイ,スカイ
ツリー	名詞,一般,*,*,*,*,ツリー,ツリー,ツリー
へ	助詞,格助詞,一般,*,*,*,,,エ
の	助詞,連体化,*,*,*,*,,,ノ
お越し	名詞,一般,*,*,*,*,お越し,オコシ,オコシ
は	助詞,係助詞,*,*,*,*,,,ワ
、	記号,読点,*,*,*,*,,,、
東武	名詞,固有名詞,組織,*,*,*,東武,トウブ,トーブ
スカイツリーライン	名詞,一般,*,*,*,*,スカイツリーライン,*,*
「	記号,括弧開,*,*,*,*,,,「
とう	副詞,助詞類接続,*,*,*,*,とう,トウ,トウ
きょう	名詞,副詞可能,*,*,*,*,きょう,キョウ,キョー
スカイ	名詞,一般,*,*,*,*,スカイ,スカイ,スカイ
ツリー	名詞,一般,*,*,*,*,ツリー,ツリー,ツリー
駅	名詞,接尾,地域,*,*,*,,エキ,エキ
」	記号,括弧閉,*,*,*,*,,,」
が	助詞,格助詞,一般,*,*,*,,,ガ
便	名詞,一般,*,*,*,*,便,ビン,ビン
 	記号,空白,*,*,*,*, ,*,*
利	名詞,一般,*,*,*,*,,,リ
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,,,

一方、東京スカイツリーや東武スカイツリー等をユーザー辞書に登録して使用すると、ちゃんと1つの単語として分解されました。

t = Tokenizer("/content/user_dictionary.csv", udic_type="simpledic", udic_enc="utf8")
for token in t.tokenize(u'東京スカイツリーへのお越しは、東武スカイツリーライン「とうきょうスカイツリー駅」が便 利です。'):
    print(token)
東京スカイツリー	カスタム名詞,*,*,*,*,*,東京スカイツリー,トウキョウスカイツリー,トウキョウスカイツリー
へ	助詞,格助詞,一般,*,*,*,,,エ
の	助詞,連体化,*,*,*,*,,,ノ
お越し	名詞,一般,*,*,*,*,お越し,オコシ,オコシ
は	助詞,係助詞,*,*,*,*,,,ワ
、	記号,読点,*,*,*,*,,,、
東武スカイツリーライン	カスタム名詞,*,*,*,*,*,東武スカイツリーライン,トウブスカイツリーライン,トウブスカイツリーライン
「	記号,括弧開,*,*,*,*,,,「
とうきょうスカイツリー駅	カスタム名詞,*,*,*,*,*,とうきょうスカイツリー駅,トウキョウスカイツリーエキ,トウキョウスカイツリーエキ
」	記号,括弧閉,*,*,*,*,,,」
が	助詞,格助詞,一般,*,*,*,,,ガ
便	名詞,一般,*,*,*,*,便,ビン,ビン
 	記号,空白,*,*,*,*, ,*,*
利	名詞,一般,*,*,*,*,,,リ
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。	記号,句点,*,*,*,*,,,

https://mocobeta.github.io/janome/

以上になります、最後までお読みいただきありがとうございました。

Discussion