質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

Q&A

解決済

1回答

2608閲覧

mecabのneologd辞書について

amaretto001

総合スコア9

自然言語処理

自然言語処理は、日常的に使用される自然言語をコンピューターに処理させる技術やソフトウェアの総称です。

0グッド

0クリップ

投稿2018/09/02 17:21

編集2018/09/03 05:57

前提・実現したいこと

機械学習の勉強の為にmecabで特定の品詞を抽出しようとしています。
デフォルト辞書での結果に納得がいかず、NEologd辞書を導入したのですが、
一部の単語で正しく動作せず、後の処理でエラーとなってします。
正しく動作させる為にアドバイスをお願いします。

オプション「-Ochasen」を使えば正しく動作するので回避は可能なのですが、
問題があるのであれば早めに対処しておきたいと思い、書き込みしました。

発生している問題・エラーメッセージ

戻り値の末尾に余分なリストがついてくる(下記参照)

該当のソースコード

python

1import MeCab 2tagger = MeCab.Tagger("-d ..\dic\ipadic-neologd") 3sentence="一番人気の" 4 5tagger.parse("") 6tagger.parse(sentence) 7#>>>一番人気 名詞,固有名詞,一般,*,*,*,1番人気,イチバンニンキ,イチバンニンキ,[:_:3726 3689 7806] 8#>>>の 助詞,連体化,*,*,*,*,の,ノ,ノ

試したこと

・オプション-Ochasenでは正しく動作します。

・他の事例について確認

二種類 名詞,固有名詞,一般,,,,2種類,ニシュルイ,ニシュルイ,[:_:2635 2609 8281]
一番手 名詞,固有名詞,一般,
,,,1番手,イチバンテ,イチバンテ,[:_:1817 1799 8281]
一階 名詞,固有名詞,人名,姓,,,一階,イッカイ,イッカイ

漢数字を含む単語の一部で発生しているようです。

補足情報(FW/ツールのバージョンなど)

Windows10 64bit
Python 3.6.6 |Anaconda custom (64-bit)

NEologd辞書はこちらを参考に導入しました。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2018/09/03 05:49

Pythonはまったく関係がないのでタグから外すべきかと思います。自然言語処理のタグでいいのではないでしょうか。
amaretto001

2018/09/03 05:58

タグを変更しました。ありがとうございます。
guest

回答1

0

ベストアンサー

NEologdのseed/neologd-quantity-infreq-dict-seed.20170224.csv.xzのエントリにそのような素性が登録されているからそう出ているのであって、mecabからみたら正常の動作です。(辞書の素性は"入っている通りに出力する"ので)

% xzgrep -n 二番手 seed/neologd-quantity-infreq-dict-seed.20170224.csv.xz 199271:二番手,1288,1288,1234,名詞,固有名詞,一般,*,*,*,2番手,ニバンテ,ニバンテ,[:_:1246 1234 8281]

NEologdの方のseedを望むとおりに書き換えて辞書を作り直してもいいでしょうが、継続してNEologdを使おうと思っているならそういう解析結果がくると思ってプログラムを組んだ方が自然かと思います。

(ところで、NEologdは-aオプションか--install_infreq_quantityを付けてビルドしたのでしょうか。そうでないとこのseedは使われない気がします)


追記

多分参考になる(誰かが解説した)ページはないですね。
install-mecab-ipadic-neologd -hでinstall-mecab-ipadic-neologd のヘルプ(つまりはこのUsage)を見て、"seed/"の中身を見て、自分が必要なものを判断するしかないかと思います。

私はやったのは、デフォルトでは入らない事の確認、-aオプション付きで入る事の確認、"seed/"の中のどのファイルに含まれるかの検索、どのオプションが対応しそうかあたりを付けてテスト、という手順でした。


追記
もう一つ、mecabの出力フォーマットを制御する方法も考えられます。
http://taku910.github.io/mecab/format.html

dicrcの書き換えやコマンドラインオプション(Pythonの場合はTaggerの初期化パラメータ)で「素性の何番目をこういうフォーマットで出せ」と指定してしまうことで、プログラムの方を固定してしまうこともできますね。
-Ochasenの時の例がページの一番下に載っているので参考になるかと思います。

投稿2018/09/03 05:48

編集2018/09/03 07:20
quickquip

総合スコア11038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amaretto001

2018/09/03 06:52

ありがとうございます。 辞書の種類によって型も違うのですね。確認不足でした。 NEologdのビルド時に特にオプション等を付けた記憶はないのですが、 何度か躓いて試行錯誤していましたので曖昧なものとなっています。 ビルド時の設定を見直す事で本件seedを使わずに出力できるのであれば、 再ビルドも検討してみたいと思います。 再ビルドの際に参考となるURL等あればご紹介いただけるとありがたいです。
amaretto001

2018/09/03 13:36

追記拝見しました。ありがとうございます。 ひとまず出力フォーマットを制御する方向で対応して、 後日改めて再ビルドを検討させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問