前提・実現したいこと
python(JupyterNotebook)でMeCabとNEologd辞書を活用して、
文章の品詞分解をしたいと考えているのですが、
以下のようなエラーが出てしまい、解決策をご教示いただけると幸いです。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\MeCab\__init__.py in __init__(self, rawargs) 132 try: --> 133 super(Tagger, self).__init__(args) 134 except RuntimeError as ee: RuntimeError: The above exception was the direct cause of the following exception: RuntimeError Traceback (most recent call last) <ipython-input-1-abd4b104a2e8> in <module> 2 import pandas as pd 3 ----> 4 mecab = MeCab.Tagger(r'-u C:\Program Files\MeCab\dic\NEologd\NEologd.20200910-u.dic') 5 6 class CustomMeCabTagger(MeCab.Tagger): ~\Anaconda3\lib\site-packages\MeCab\__init__.py in __init__(self, rawargs) 133 super(Tagger, self).__init__(args) 134 except RuntimeError as ee: --> 135 raise RuntimeError(error_info(rawargs)) from ee 136 137 RuntimeError: ---------------------------------------------------------- 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: -u C:\Program Files\MeCab\dic\NEologd\NEologd.20200910-u.dic ) [tokenizer_->open(param)] tokenizer.cpp(127) [d->open(dicfile[i])] dictionary.cpp(79) [dmmap_->open(file, mode)] no such file or directory: C:Program ----------------------------------------------------------
該当のソースコード
import MeCab import pandas as pd mecab = MeCab.Tagger(r'-u C:\Program Files\MeCab\dic\NEologd\NEologd.20200910-u.dic') class CustomMeCabTagger(MeCab.Tagger): COLUMNS = ['表層形', '品詞', '品詞細分類1', '品詞細分類2', '品詞細分類3', '活用型', '活用形', '原形', '読み', '発音'] def parseToDataFrame(self, text: str) -> pd.DataFrame: """テキストを parse した結果を Pandas DataFrame として返す""" results = [] for line in self.parse(text).split('\n'): if line == 'EOS': break surface, feature = line.split('\t') feature = [None if f == '*' else f for f in feature.split(',')] results.append([surface, *feature]) return pd.DataFrame(results, columns=type(self).COLUMNS) all_text = '家電の開発に約10年従事。家電の価格競争の環境に疑問を感じ、これからは高齢化に取り組まなければと感じていた。' tagger = CustomMeCabTagger() nlp_df = tagger.parseToDataFrame(all_text) #「非自立、代名詞、接尾」でない名詞を抽出し、単語ごとのカウントを実施 data = nlp_df[['表層形','品詞']][(nlp_df['品詞'] == '名詞')&(nlp_df['品詞細分類1'] != '非自立')&(nlp_df['品詞細分類1'] != '代名詞')&(nlp_df['品詞細分類1'] != '接尾')].groupby(['表層形']).count().sort_values(by = '品詞', ascending = False) data.to_csv("Output/panasonicBUNKAI3.csv",encoding="utf_8_sig")
試したこと
1.Pathへ「C:\Program Files\MeCab\bin」を登録
2.7Zipをインストールし、Pathへ「C:\Program Files\7-Zip」を登録
3.git for Windowsをインストール
4.「git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git」コマンドでNEologd辞書をダウンロード
5.NEologd辞書ファイルを7-Zipで展開
6.C:\Program Files\MeCab\dic\ipadic フォルダを同じ dic フォルダ内にコピーして、フォルダ名を ipadic-UTF8 に変更
補足情報(FW/ツールのバージョンなど)
Python3.8.8
Windows10
を使用しております。
mecab-python-windows 0.996.3とmecab-python3 1.0.4が両方入ってます。