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

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

ただいまの
回答率

88.10%

mecabのneologd辞書について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,660

score 9

 前提・実現したいこと

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

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

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

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

 該当のソースコード

import MeCab
tagger = MeCab.Tagger("-d ..\dic\ipadic-neologd")
sentence="一番人気の"

tagger.parse("")
tagger.parse(sentence)
#>>>一番人気    名詞,固有名詞,一般,*,*,*,1番人気,イチバンニンキ,イチバンニンキ,[:_:3726  3689    7806]
#>>>の       助詞,連体化,*,*,*,*,の,ノ,ノ

 試したこと

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

・他の事例について確認
>>>二種類     名詞,固有名詞,一般,*,*,*,2種類,ニシュルイ,ニシュルイ,[:_:2635       2609    8281]
>>>一番手     名詞,固有名詞,一般,*,*,*,1番手,イチバンテ,イチバンテ,[:_:1817       1799    8281]
>>>一階      名詞,固有名詞,人名,姓,*,*,一階,イッカイ,イッカイ
漢数字を含む単語の一部で発生しているようです。

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

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

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

よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • quickquip

    2018/09/03 14:49

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

    キャンセル

  • amaretto001

    2018/09/03 14:58

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

    キャンセル

回答 1

checkベストアンサー

+2

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 15:52

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

    キャンセル

  • 2018/09/03 22:36

    追記拝見しました。ありがとうございます。

    ひとまず出力フォーマットを制御する方向で対応して、
    後日改めて再ビルドを検討させていただきます。

    キャンセル

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

  • ただいまの回答率 88.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る