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

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

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

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

Mecab

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

Q&A

解決済

1回答

1462閲覧

マルコフ解析と形態素解析を使った文章生成プログラムがうまく動かない

akida

総合スコア12

Python 3.x

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

Mecab

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

0グッド

0クリップ

投稿2019/03/08 14:36

前提・実現したいこと

https://www.pc-koubou.jp/magazine/4238

上記のリンクにある通りのことをし、マルコフ解析と形態素解析を使った文章生成をpythonでしようとしてもうまくいきませんでした。事前に行ったこととして

mecab-0.996.exeのダウンロード
python3.7.2のインストール
テキトな複数文章を書きこんだhoge.txtの生成

使用環境は
windows10
python3.7.2

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

C:\Users\ikeda>python -V Python 3.7.2 C:\Users\ikeda>cd Desktop C:\Users\ikeda\Desktop>pip install markovify Requirement already satisfied: markovify in c:\users\ikeda\appdata\local\programs\python\python37-32\lib\site-packages (0.7.1) Requirement already satisfied: unidecode in c:\users\ikeda\appdata\local\programs\python\python37-32\lib\site-packages (from markovify) (1.0.23) C:\Users\ikeda\Desktop>pip install mecab Collecting mecab Could not find a version that satisfies the requirement mecab (from versions: ) No matching distribution found for mecab C:\Users\ikeda\Desktop>python learn.py Traceback (most recent call last): File "learn.py", line 97, in <module> main() File "learn.py", line 79, in main text_model = markovify.NewlineText(splitted_text, state_size=3) File "C:\Users\ikeda\AppData\Local\Programs\Python\Python37-32\lib\site-packages\markovify\text.py", line 37, in __init__ self.chain = chain or Chain(self.parsed_sentences, state_size) File "C:\Users\ikeda\AppData\Local\Programs\Python\Python37-32\lib\site-packages\markovify\chain.py", line 45, in __init__ self.precompute_begin_state() File "C:\Users\ikeda\AppData\Local\Programs\Python\Python37-32\lib\site-packages\markovify\chain.py", line 80, in precompute_begin_state choices, weights = zip(*self.model[begin_state].items()) KeyError: ('___BEGIN__', '___BEGIN__', '___BEGIN__')

実行したlearn.pyのソースコード

一番上に貼ったリンク内で紹介されているlearn.pyを使いました。

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

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

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

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

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

hatsu

2019/03/08 16:31

pip install mecabが正しくinsttallできてないのも気になりますので、pip install mecab-python3がいいかもです、、、! またDesktopにlearn.pyがあるようで、どんな load_from_file('*.txt') でうまくtxtファイルを参照できているか気になります。78行目にprint(splitted_text)やるとどんな文字列が表示されるでしょうか?
akida

2019/03/09 10:48

ありがとうございます。pip install mecab-python3は試してみたのですが似たように C:\Users\ikeda>pip install mecab-python3 Collecting mecab-python3 Using cached https://files.pythonhosted.org/packages/ac/48/295efe525df40cbc2173748eb869290e81a57e835bc41f6d3834fc5dad5f/mecab-python3-0.996.1.tar.gz Complete output from command python setup.py egg_info: 'mecab-config' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\ikeda\AppData\Local\Temp\pip-install-ptz8kyvl\mecab-python3\setup.py", line 29, in <module> inc_dir = mecab_config("--inc-dir") File "C:\Users\ikeda\AppData\Local\Temp\pip-install-ptz8kyvl\mecab-python3\setup.py", line 27, in mecab_config return os.popen("mecab-config " + arg).readlines()[0].split() IndexError: list index out of range ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in C:\Users\ikeda\AppData\Local\Temp\pip-install-ptz8kyvl\mecab-python3\ と表示されます。 なおipykernelと mecab-python-windowsをpip install したあとpythonコマンドを打ち、 import sys import MeCab m = MeCab.Tagger ("-Ochasen") print(m.parse ("すもももももももものうち")) と打つと普通に形態素解析を行ってくれるのでMeCab自体のインストールはできたのですがpip install mecabはできないという状況になっています。 また78行目にprint(splitted_text)を追加したところ、テキストファイル内の文はそのまま表示され、直後 Traceback (most recent call last): File "learn.py", line 98, in <module> main() File "learn.py", line 84, in main print(''.join(sentence.split())) # need to concatenate space-splitted text AttributeError: 'NoneType' object has no attribute 'split' となりました。
hatsu

2019/03/09 11:06

今回吐き出しているエラーが84行目になってますね。質問時は79行目でしたが! おそらく `print(''.join(sentence.split())) ` の部分のsentenceが正しく取得できていない?かもです。 83行目でまたprint(sentence)でsentenceの変数にちゃんと値が入っているか確認してみてください!
akida

2019/03/09 13:32

何度もすみません。 83行目にprint(sentence)追加し実行したら C:\Users\ikeda\Desktop>python learn.py Traceback (most recent call last): File "learn.py", line 100, in <module> main() File "learn.py", line 80, in main text_model = markovify.NewlineText(splitted_text, state_size=3) NameError: name 'splitted_text' is not defined とネームエラーが出ました。
akida

2019/03/09 13:47

すみません今解決し、正常に動くようになりました。付き合ってくれて大変陳謝いたします。
hatsu

2019/03/09 13:54

良かったです!????
guest

回答1

0

ベストアンサー

エラーメッセージを見るとMecabがうまくインストールできていないように思えます。正しくインストールできていると、スタートメニューにmecabがあるはずなので、起動させてみましょう。次にちょっとした日本語の文を入力してみましょう。

どちらかがうまくいかないようであれば、インストールに失敗しているので、インストーラーを使って再インストールをしてください。

投稿2019/03/08 19:21

R.Shigemori

総合スコア3376

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

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

akida

2019/03/09 09:46

ありがとうございます。どうやらPathの通しがうまくいっていなかったようです。インストールし環境変数C:\MeCab\binを追加したらmecabコマンドが正常に動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問