前提・実現したいこと
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を使いました。
pip install mecabが正しくinsttallできてないのも気になりますので、pip install mecab-python3がいいかもです、、、!
またDesktopにlearn.pyがあるようで、どんな load_from_file('*.txt') でうまくtxtファイルを参照できているか気になります。78行目にprint(splitted_text)やるとどんな文字列が表示されるでしょうか?
ありがとうございます。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'
となりました。
今回吐き出しているエラーが84行目になってますね。質問時は79行目でしたが!
おそらく `print(''.join(sentence.split())) `
の部分のsentenceが正しく取得できていない?かもです。
83行目でまたprint(sentence)でsentenceの変数にちゃんと値が入っているか確認してみてください!
何度もすみません。
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
とネームエラーが出ました。
すみません今解決し、正常に動くようになりました。付き合ってくれて大変陳謝いたします。
良かったです!????
回答1件
あなたの回答
tips
プレビュー