前提・実現したいこと
サイトを参考にngramのプログラムを作成いたしました.
自立語を取り出すために追加で作業を行ったのですが以下のようなエラー文が出て先に進みません. 改善方法をご提案していただきたく, 質問させていただきます.
発生している問題・エラーメッセージ
$ python ngram.py 1 HamburgSteak.txt :実行部分 File "ngram.py", line 29 continue ^ SyntaxError: 'continue' not properly in loop
該当のソースコード
Python
1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3#Qiita: Pythonで単語N-gramを生成するモジュール <https://qiita.com/takumi_TKHS/items/942492b72aaf7b6a6213> 4 5import sys 6import subprocess as cmd 7 8# テキスト -> 単語(形態素)集合 9def text2bow(obj,mod): 10 11 # input: ファイルの場合はmod="file", input: 文字列の場合はmod="str" 12 if mod == "file": 13 morp = cmd.getstatusoutput("cat " + obj + " | mecab -Owakati") 14 elif mod == "str": 15 morp = cmd.getstatusoutput("echo " + obj.encode('utf-8') + " | mecab -Owakati") 16 else: 17 print("error!!") 18 sys.exit(0) 19 20 if "morp".find('名詞') > -1: 21 a = morp 22 elif "morp".find('動詞') > -1: 23 a = morp 24 elif "morp".find('形容詞') > -1: 25 a = morp 26 elif "morp".find('形容動詞') > -1: 27 a = morp 28 else: 29 continue 30 31 words = a[1] 32 words = words.replace('\n','') 33 34 bow = words.split(' ') 35 36 return bow 37 38# N-gramの生成 39def gen_Ngram(words,N): 40 41 ngram = [] 42 43 for i in range(len(words)): 44 cw = "" 45 46 if i >= N-1: 47 for j in reversed(list(range(N))): 48 cw += words[i-j] 49 else: 50 continue 51 52 ngram.append(cw) 53 54 return ngram 55 56# 出力 57def output_Ngram(ngram): 58 59 for i in range(len(ngram)): 60 print(ngram[i]) 61 62def main(): 63 64 argvs = sys.argv 65 66 # input: ファイルの場合 67 bow = text2bow(argvs[2],mod="file") 68 69 # input: 文字列の場合 70 #bow = text2bow(obj=u"これはN-gramを生成するプログラムです.",mod="str") 71 72 ngram = gen_Ngram(bow,int(argvs[1])) 73 74 output_Ngram(ngram) 75 76if __name__ == "__main__": 77 78 main() 79
試したこと
必要な部分のみをaに代入している部分が追加した箇所です.
if "morp".find('名詞') > -1: a = morp elif "morp".find('動詞') > -1: a = morp elif "morp".find('形容詞') > -1: a = morp elif "morp".find('形容動詞') > -1: a = morp else: continue
補足情報(FW/ツールのバージョンなど)
参考文献
https://qiita.com/takumi_TKHS/items/942492b72aaf7b6a6213
回答1件
あなたの回答
tips
プレビュー