#実現したいこと
青空文庫の「吾輩は猫である」から品詞を得てその数をカウントし、表示するプログラムを作っているのですが、文章が長いために品詞を得る際のfor文が完全に処理しきるまでにかなり時間がかかる問題で困っています。そのため実行してもしばらくは何も表示されません。通常のプログラムのように実行ボタンを押すとすぐにprintの中身を表示するようにしたいのですがどうすればいいですか?
#該当のソースコード
python
1import urllib.request 2 3from janome.analyzer import Analyzer 4from janome.charfilter import * 5from janome.tokenizer import Tokenizer 6 7 8class MainTextCharFilter(CharFilter): 9 10 def __init__(self, start, end): 11 self.start = start 12 self.end = end 13 14 def apply(self, text): 15 return text.split(self.start)[1].split(self.end)[0] 16 17# 夏目漱石 18# 吾輩は猫である 19url = 'http://www.aozora.gr.jp/cards/000148/files/789_14547.html' 20 21html = '' 22 23with urllib.request.urlopen(url) as response: 24 html = response.read().decode('shift_jis') 25 26 27char_filters = [UnicodeNormalizeCharFilter(), 28 MainTextCharFilter('<div class="main_text">', '<div class="bibliographical_information">'), 29 RegexReplaceCharFilter('<rp>(.*?)</rp>', ''), 30 RegexReplaceCharFilter('<.*?>', '')] 31 32tokenizer = Tokenizer() 33 34analyzer = Analyzer(char_filters, tokenizer) 35 36meishi=0 37doushi=0 38for token in analyzer.analyze(html): 39 if token.part_of_speech.split(',')[0] == "名詞": 40 meishi=meishi+1 41 elif token.part_of_speech.split(',')[0] =="動詞": 42 doushi=doushi+1 43 44 print(".",end="") 45 46print("名詞:"+str(meishi)) 47print("動詞:"+str(doushi)) 48
#試したこと
printをfor文の中に入れてみました。その時の実行結果を下に示します。
python
1名詞:1 2動詞:0 3名詞:1 4動詞:0 5名詞:1 6動詞:0 7名詞:1 8動詞:0 9名詞:1 10動詞:0 11名詞:2 12動詞:0 13名詞:2 14動詞:0 15名詞:3 16動詞:0 17名詞:3 18動詞:0 19名詞:3 20動詞:0 21名詞:3 22動詞:0 23名詞:4 24動詞:0 25名詞:4 26動詞:0 27名詞:4 28動詞:0 29名詞:4 30動詞:0 31名詞:4 32動詞:0 33名詞:4 34動詞:0 35名詞:4 36動詞:0 37名詞:5 38動詞:0 39名詞:5
回答2件
あなたの回答
tips
プレビュー