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

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

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

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

Q&A

1回答

1018閲覧

キーワードを別のファイルに与え、計算結果を取得したいのですがやり方がわかりません。

oshoring

総合スコア1

Python 3.x

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

0グッド

0クリップ

投稿2020/12/13 02:13

編集2020/12/13 03:14

前提・実現したいこと

対話システムを作っており、以前は話題の継続の方法を話題のサジェストから用いていたのですが、改良しようと考えています。今話された発話文の名詞と今までの話題でand検索を行い、件数が10000000件以上のものは話題が継続していると判断したいです。google_kensaku.pyのinput2wadaiでその仕組みを作り、kensuu.pyで検索件数を計算させたいと考えているのですが、やり方がわからず常にエラーが出てしまいます。
どうしたら実行できるか分かる方がいらっしゃいましたら教えていただきたいです。

google_kensaku.pyのファイルが長すぎて文字数制限をオーバーしてしまいましたので、写真で送らせていただきます。

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

Traceback (most recent call last): File "demo.py", line 78, in <module> hatsuwa_wadai,kanrenbun=google_kensaku.in2kanrenbun(hatsuwa_wadai,words,u,dt,name,wadai_out) File "google_kensaku.py", line 305, in in2kanrenbun wadai = wadai_suitei(keys,words,dt,name,wadai_out) File "google_kensaku.py", line 278, in wadai_suitei wadais = keizoku_judge(keys,words) File "google_kensaku.py", line 243, in keizoku_judge kanren=input2wadai(k,words) File "google_kensaku.py", line 206, in input2wadai if w > 10000000: TypeError: '>' not supported between instances of 'str' and 'int'

該当のソースコード

google_kensaku.py
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明
イメージ説明

Python

1 2demo.py 3 4import maeshori 5import MeCab_mrphs 6import make_sentence_list 7import reply 8import google_kensaku 9import datetime 10from zatsuyou import * 11 12dt_now = datetime.datetime.now() 13dt = datetime.date.today() 14print('S:名前を入力してください') 15name = input('U:') 16print('S:こんにちは') 17print('S:何かお話ししましょうか') 18path = 'log/{0}{1}_log.txt'.format(dt,name) 19with open(path, mode='a') as f: 20 f.write("\n{0}{1} log start\n".format(dt_now,name)) 21 f.write("S:名前を入力してください\n") 22 f.write("U:{}\n".format(name)) 23 f.write("S:こんにちは\n") 24 f.write("S:何かお話ししましょうか\n\n\n") 25 26wadai_num=0 27p_wadai=[] 28hatsuwa_wadai=[] 29last_out="" 30while 1: 31 32 wadai=[] 33 kanren_out="" 34 wadai_out="" 35 kanren_out_original="" 36 handan_kijun="" 37 keitaiso = [] 38 u = input("U:") 39 if u == '': 40 continue 41 42 with open(path, mode='a') as f: 43 f.write("U:{} ".format(u)) 44 45 ################################################# 46 #######前処理部分################################# 47 ################################################ 48 49 u = maeshori.re_replace(u) #前処理をかけて形態素解析のバグを回避する。方言などを標準語に戻したりなど。 50 51 keitaiso = MeCab_mrphs.input2mrphs(u) #形態素解析の結果 52 53 #print(keitaiso) 54 55 56 57 58 ###########発話内容の単語リスト作成############## 59 #発話内容中の単語のリストを作成する。優先順位もこの時につけておく。 60 #入力:keitaisoは形態素群、hatsuwa_wadaiは前の話題 61 #出力:wordsは発話内容中の単語のリスト、kd_flagは形容動詞語幹があるかのフラグ(エラー処理にも使う)。 62 words,kd_flag=make_sentence_list.make_words_list(keitaiso,hatsuwa_wadai) 63 64 #kd_flagはkeiyodoshigokan_flag。形容動詞語幹が入っているかどうかを判定している。 65 #形容動詞語幹があれば1、無ければ0、そもそも単語群が作れなければ2を返す。 66 67 68 69 70 #print(words) 71 if words: 72 #print("hatsuwa_wadai is {}".format(hatsuwa_wadai)) 73 #print("words is {}".format(words)) 74 #print("u is {}".format(u)) 75 76 77 #######関連文検索######### 78 #入力:hatsuwa_wadaiは前の話題、wordsは発話内容の単語のリスト、uは入力文 79 #出力:hatsuwa_wadaiは更新された現在の話題、kanrenbunは関連している文章 80 hatsuwa_wadai,kanrenbun=google_kensaku.in2kanrenbun(hatsuwa_wadai,words,u,dt,name,wadai_out) 81 82 #hatsuwa_wadai,kanrenbun=google_kensaku.sni_ha_tyushutu(u) 83 84 #print("hatsuwa_wadai is {}".format(hatsuwa_wadai)) 85 #print("kanrenbun is {}".format(kanrenbun)) 86 87 88 w_f=0 89 if len(p_wadai)==len(hatsuwa_wadai): 90 wadai_num=0 91 for i,w in enumerate(p_wadai): 92 if p_wadai[i]==hatsuwa_wadai[i]: 93 wadai_num=wadai_num+1 94 if wadai_num==len(p_wadai): 95 w_f=1 ##話題全く同じ 96 97 98 if len(hatsuwa_wadai)==2: 99 wadai_out="話題は「{}」と「{}」".format(hatsuwa_wadai[0],hatsuwa_wadai[1]) 100 elif len(hatsuwa_wadai)==1: 101 wadai_out="話題は「{}」".format(hatsuwa_wadai[0]) 102 print("({})".format(wadai_out)) 103 104 105 if kanrenbun[1] and kanrenbun[0]==last_out: 106 kanren_out=kanrenbun[1] 107 last_out=kanrenbun[1] 108 #print(kanrenbun[3]) 109 handan_kijun=kanrenbun[3] 110 kanren_out_original=kanrenbun[1] 111 else: 112 kanren_out=kanrenbun[0] 113 last_out=kanrenbun[0] 114 #print(kanrenbun[2]) 115 handan_kijun=kanrenbun[2] 116 kanren_out_original=kanrenbun[0] 117 if kd_flag==1: 118 #kanren_out="そうなのですか。" + kanren_out 119 a=0 120 121 122 kanren_out=reply.make_kanrenbun(kanren_out) 123 124 125 if len(hatsuwa_wadai)==1 and w_f==0: 126 #kanren_out = kanren_out + "\nS:" + hatsuwa_wadai[0] + "はどうでしたか?" 127 a=0 128 elif len(hatsuwa_wadai)==1 and w_f==1: 129 kanren_out = hatsuwa_wadai[0] + "が好きなのですか?" 130 elif len(hatsuwa_wadai)==2 and w_f==1: 131 kanren_out = "そうなのですか。\nS: 何か、違う話もしませんか?" 132 if kd_flag==2: 133 kanren_out="何かあったのですか? NO NOUN ERROR" 134 else: 135 kanren_out="何かあったのですか? NO NOUN ERROR" 136 137 138 p_wadai=hatsuwa_wadai 139 140 temp_rep = reply.make_temp_rep(u) 141 142 if temp_rep !="": 143 rep='S:{}'.format(temp_rep) 144 else: 145 rep="S:"+kanren_out 146 147 148 print(rep) 149 150 with open(path, mode='a') as f: 151 f.write("\n") 152 if temp_rep =="": 153 f.write("----------------------------------------------\n") 154 f.write("入力文は「{}」\n".format(u)) 155 f.write("推定された{}\n".format(wadai_out)) 156 f.write("関連文は「{}」\n".format(kanren_out_original)) 157 if len(handan_kijun)==3: 158 f.write("意味の近い単語は「{}」と「{}」({})\n".format(handan_kijun[0],handan_kijun[1],handan_kijun[2])) 159 f.write("出力文は「{}」\n".format(kanren_out)) 160 f.write("----------------------------------------------\n") 161 f.write("{}\n\n\n".format(rep)) 162 163 if u == 'さようなら' or u == 'またね': 164 break 165 166 167

Python

1 2kensuu.py 3 4import requests 5from bs4 import BeautifulSoup 6 7def kensaku_kensuu(keys_str,p_wadai): 8 9 headers = {"User-Agent": "自分のUser-Agent"} 10 url = 'https://www.google.co.jp/search' 11 result = requests.get(url, headers=headers, params={'q': keys_str}) 12 soup = BeautifulSoup(result.content, 'html.parser') 13 total_results_text = soup.find("div", {"id": "result-stats"}).find(text=True, recursive=False) # this will give you the outer text which is like 'About 1,410,000,000 results' 14 results_num = ''.join([num for num in total_results_text if num.isdigit()]) # now will clean it up and remove all the characters that are not a number . 15 return results_num 16 17#print(kensaku_kensuu("小樽+あんかけ焼きそば")) 18 19

試したことファイルに

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

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

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

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

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

guest

回答1

0

エラーメッセージは、

File "google_kensaku.py", line 205, in input2wadai

w=kensuu.kensaku_kensuu(p_wadai,words)

TypeError: kensaku_kensuu() takes 1 positional argument but 2 were given

[直訳]
"google_kensaku.py"ファイルの、205行目。

w=kensuu.kensaku_kensuu(p_wadai,words)

 型のエラー kensaku_kensuu()は引数が一つなのに、二つも与えられてます。

こんなに適切で丁寧なエラーメッセージが出ているのですから、とりあえずプログラムの指摘箇所を修正すれば良いのではないでしょうか?

=コメント=
このエラーと、「キーワードを別のファイルに与え、計算結果を取得したいのですがやり方がわかりません」という質問は、どう関係しているのか理解できません。

理解可能な日本語で丁寧に質問の趣旨を追記されることをお勧めします。

投稿2020/12/13 02:56

fumu7

総合スコア121

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

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

oshoring

2020/12/13 03:08

kensaku_kensuu()の引数を"keys_str","p_wadai"にすれば良いということでしょうか? 申し訳ありません。 エラー文の意味を理解できていませんでした。 最終的にはkensuu.pyで検索件数を取得し、input2wadaiで検索件数10000000件以上のものを話題としたいです。
oshoring

2020/12/13 03:10

kensaku_kensuu()の引数を"keys_str","p_wadai"にしたらこのようなエラーが出るのですがどうすれば良いのでしょうか? Traceback (most recent call last): File "demo.py", line 78, in <module> hatsuwa_wadai,kanrenbun=google_kensaku.in2kanrenbun(hatsuwa_wadai,words,u,dt,name,wadai_out) File "google_kensaku.py", line 305, in in2kanrenbun wadai = wadai_suitei(keys,words,dt,name,wadai_out) File "google_kensaku.py", line 278, in wadai_suitei wadais = keizoku_judge(keys,words) File "google_kensaku.py", line 243, in keizoku_judge kanren=input2wadai(k,words) File "google_kensaku.py", line 206, in input2wadai if w > 10000000:
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問