windowsでKNPを使おうと思い以下手順を実行しました
参考サイト
- Juman++をインストール
- KNPをインストール
- pyknpをインストール
→エラー :こちらを元にsetup.py修正
- コマンドプロンプトで出力確認(juman,knp)
- pythonでpyknp実行
→テストコード①を実行した結果エラー
.../AppData\Local\Programs\Python\Python38\lib\site-packages\pyknp-0.4.1-py3.8.egg\pyknp\juman\juman.py", line 73, in juman_lines
.../AppData\Local\Programs\Python\Python38\lib\site-packages\pyknp-0.4.1-py3.8.egg\pyknp\juman\process.py", line 70, in query
AttributeError: module 'signal' has no attribute 'SIGALRM'
上記エラーを調べた結果→ 過去質問
windowsではsignalが使えないため書き換える必要があるそうです
エラー箇所
python
1 def query(self, sentence, pattern): 2 assert(isinstance(sentence, six.text_type)) 3 def alarm_handler(signum, frame): 4 raise subprocess.TimeoutExpired(self.process_command, self.process_timeout) 5 signal.signal(signal.SIGALRM, alarm_handler) 6 signal.alarm(self.process_timeout) 7 result = "" 8 try: 9 self.process.stdin.write(sentence.encode('utf-8')+six.b('\n')) 10 self.process.stdin.flush() 11 while True: 12 line = self.process.stdout.readline().rstrip().decode('utf-8') 13 if re.search(pattern, line): 14 break 15 result = "%s%s\n" % (result, line) 16 finally: 17 signal.alarm(0) 18 return result 19
上記の signal.alarm(...) は time.sleep(...) にすればいいと思ったのですが
signal.signal(... , ...) はどのように書き換えればいいのでしょうか?
(特にsignal.SIGALRMの箇所)
こちらを読んでみたのですがいまいちわかりませんでした。
詳しい方ご教授願います
回答3件
あなたの回答
tips
プレビュー