Closed epersona closed 1 year ago
手元で試しましたが,期待通りに動くようです.
$ cat userdic.csv
クラウド,1288,1288,-100000,名詞,固有名詞,一般,*,*,*,クラウド,クラウド,クラウド
$ cat test_userdic.py
from janome.tokenizer import Tokenizer
t = Tokenizer("userdic.csv", udic_enc="utf8")
for token in t.tokenize('クラウド利用のお客様'):
print(token)
$ python test_userdic.py
クラウド 名詞,固有名詞,一般,*,*,*,クラウド,クラウド,クラウド
利用 名詞,サ変接続,*,*,*,*,利用,リヨウ,リヨー
の 助詞,連体化,*,*,*,*,の,ノ,ノ
お客様 名詞,一般,*,*,*,*,お客様,オキャクサマ,オキャクサマ
原因は測りかねますが,ユーザ辞書ファイルのエンコーディングなどは正しいでしょうか?
ご確認ありがとうございます。
ご指摘の通り辞書ファイルの出力時のエンコーディングに関係していました。
pandasを利用して辞書ファイルCSVファイルを出力する際に utf-8-sig
のオプションを利用しています。
これはファイル先頭にBOMを付与して、Excel等でファイルを開いた際に日本語が文字化けしなくなるための配慮でした。
そのため、Tokernizerを呼び出す際の引数として以下のように utf-8-sig
を与えることで問題が解決できることを確認しました。
t = Tokenizer("userdic.csv", udic_enc="utf-8-sig")
下記の関数で作成した
userdic.csv
を利用して、特定の固有名詞を抽出することを想定しています。作成した辞書はこちらです。
このとき、生成した辞書を使って
を実行すると
という結果となり
クラウド
が期待通り抽出されませんでした。 こちらはプログラム上に問題があるのか、コストの設定等に問題があるのかご指摘いただければ幸いです。