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

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

新規登録して質問してみよう
ただいま回答率
86.12%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

解決済

MeCab 名詞をリストで出力.出現名詞のカウント.

maro
maro

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

2回答

0グッド

0クリップ

315閲覧

投稿2022/10/19 07:04

前提

MeCabを用いて名詞をリストに格納して出力したいと考えています。しかし,エラーがでてうまくいきません.エラーから推測すると,おそらく,"-Ochasen"に原因がありそうでしたのでこれを"-chansen"に変えて実行しました.そうすると,エラーメッセージは出ませんでしたが,何も出力されませんでした.

この件について,わかる方お教え頂ければ幸いです.

実現したいこと

  • 形態素解析を行った後,名詞のみをリストで出力.
  • 出てきた名詞をカウントする.

期待する出力例.
[テニス,テニス,サッカー,野球,ゴルフ,テニス,剣道,サッカー,バレー]

テニス:3
サッカー:2


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

Failed initializing MeCab. Please see the README for possible solutions: https://github.com/SamuraiT/mecab-python3#common-issues If you are still having trouble, please file an issue here, and include the ERROR DETAILS below: https://github.com/SamuraiT/mecab-python3/issues issueを英語で書く必要はありません。 ------------------- ERROR DETAILS ------------------------ arguments: -Ochasen error message: [!tmp.empty()] unknown format type [chasen] ---------------------------------------------------------- File "C:\Users\subaru narahashi\graduation_research\mecab.py", line 42, in <module> main() File "C:\Users\subaru narahashi\graduation_research\mecab.py", line 21, in main mecab = MeCab.Tagger("-Ochasen") File "C:\Users\subaru narahashi\anaconda3\lib\site-packages\MeCab\__init__.py", line 124, in __init__ super(Tagger, self).__init__(args) RuntimeError

該当のソースコード

python

1import sys 2import MeCab 3import requests 4import urllib 5import re 6import json 7import pandas as pd 8from collections import Counter 9 10 11 12def main(): 13 # ファイル読み込み 14 # cmd, infile = sys.argv 15 with open('test.tex', "r", encoding = 'utf-8') as data: 16 documents = [document.strip() for document in data] 17 18 19 20 # パース 21 mecab = MeCab.Tagger("-chasen") 22 parse = mecab.parse(str(documents)) 23 lines = parse.split('\n') 24 items = (re.split('[\t,]', line) for line in lines) 25 26 #print(list(items)) 27 28 # 名詞をリストに格納 29 words = [item[0] 30 for item in items 31 if (item[0] not in ('EOS', '', 't', 'ー') and 32 item[1] == '名詞' and item[2] == '一般')] 33 34 35 # 頻度順に出力 36 counter = Counter(words) 37 for word, count in counter.most_common(): 38 print(f"{word}: {count}") 39 40 41if __name__ == "__main__": 42 main() 43

試したこと

-Ochasenを=chasenに変更

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

ここにより詳細な情報を記載してください。

以下のような質問にはグッドを送りましょう

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

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

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

melian

2022/10/19 07:25

エラーメッセージに unknown format type [chasen] と表示されています。また、 Failed initializing MeCab. Please see the README for possible solutions: https://github.com/SamuraiT/mecab-python3#common-issues とあって、そのページを眺めてみますと以下の項目があります。 Using Unsupported Output Modes like -Ochasen https://github.com/SamuraiT/mecab-python3#using-unsupported-output-modes-like--ochasen Chasen output is not a built-in feature of MeCab, you must specify it in your dicrc or mecabrc.
quickquip

2022/10/19 07:42 編集

辞書に何を使っているか? に依存する話ですのでそのあたりの情報が必要です。

回答2

1

chasenフォーマットに対応した辞書を使うことが前提のコードをどこからか持ってきたのだと思います。
それでchasenフォーマットに対応しない辞書を使って実行すると当然エラーになります。

-Ochasen を外して解析するようにして、そのフォーマットに応じてコードを書き換えてください。
(どうコードを書き換えるのかは辞書に依存します)

投稿2022/10/19 07:44

quickquip

総合スコア10419

ps_aux_grep👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

ベストアンサー

先の解答(フォーマット違いに関するもの)と合わせて,今後のため改善案を追記しておきます.

現状,mecab.parse(str(documents))によって意味不明な文字列が生成されています.
配列をstr()で変換すると,括弧が付与され,正しく解析できないでしょう.

例えば,doc = ["abc", "def"]としたものをstr(doc)にすると,その文字列は"['abc', 'def']"になります.括弧やクォーテーションごとMeCabの解析対象になってしまっています.

str(documents)ではなく,'\n'.join(documents)にでもしましょう.

投稿2022/10/19 08:55

編集2022/10/19 08:56
PondVillege

総合スコア1023

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

maro

2022/10/20 05:10

ありがとうございます.解決しました.

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。