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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Watson

Watsonは、IBMが開発した質問応答・意思決定支援を行うシステムです。人口知能と言われることもあるが、IBMは自然言語処理と機械学習を用いて人間の意思決定を支援するコグニティブコンピューティングプラットホームと呼んでいます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1225閲覧

textareaに入力した文章がPython側でうまく処理できない

14gankin

総合スコア4

Watson

Watsonは、IBMが開発した質問応答・意思決定支援を行うシステムです。人口知能と言われることもあるが、IBMは自然言語処理と機械学習を用いて人間の意思決定を支援するコグニティブコンピューティングプラットホームと呼んでいます。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/12 08:48

前提・実現したいこと

GitHub上にあったツイッターとpersonality insightsを使ったコードを用いて、ツイッターのIDを入力する所をtextareaに変えて、その文章を分析させるというシステムをHTMLとPythonで作ろうとしています。

その過程でtextareaに入力した文章がPython側で何故か1文字しか識別してくれなく、watsonが使えなくて困っております。

どうすればこのエラーが解決できるかを教えていただけると幸いです。
よろしくお願いいたします。

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

ibm_cloud_sdk_core.api_exception.ApiException: Error: The number of words 1 is less than the minimum number of words required for analysis: 100, Code: 400

該当のソースコード

html

1<form class="user_input__form" action="/result" method="post" name="userinputform"> 2 <p> 3 テキストを入力してください: <textarea name="my_user_name" rows="5" wrap="hard"></textarea> 4 </p> 5 <p> 6 <input type="submit" value="本を探す"> 7 </p> 8 </form>

python

1def get_personality(): 2 3 api_version = "2017-10-13" 4 authenticator = IAMAuthenticator('password') 5 6 personality_insights = PersonalityInsightsV3( 7 version =api_version , 8 authenticator = authenticator, 9 ) 10 personality_insights.set_service_url('URL') 11 12 profile = personality_insights.profile( 13 content = "text", 14 content_type = "text/plain", 15 accept = "application/json", 16 content_language = "ja", 17 accept_language = "en", 18 raw_scores = True, 19 ) 20 21 return profile 22 23def convert_dict_to_json(orig_dict, indent = 4): 24 return json.dumps(orig_dict) 25 26def load_json_as_dict(json_name): 27 with open("./" + json_name, "r") as json_file: 28 return json.load(json_file, object_pairs_hook = OrderedDict) 29 30def sort_personality(tweet_result): 31 return sorted(tweet_result.items(), key = lambda x: x[1], reverse = True) 32 33 34 35def main(my_user_name): 36 37 tweet_personality_dict = get_personality() # ツイートを結合したデータをAPIに入力 38 # ツイートから分析した性格の名前 39 personality_name = [big5["name"] for big5 in tweet_personality_dict["personality"]] 40 # 性格の値。小数点第2位で四捨五入した後、decimal.Decimalからfloatに変換している。 41 # 参考サイト(四捨五入):https://note.nkmk.me/python-round-decimal-quantize/ 42 personality_percentile = [float(Decimal(str(big5["percentile"])).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)) \ 43 for big5 in tweet_personality_dict["personality"]] 44 45 # ユーザのツイートの分析結果 46 all_tweets_big5 = OrderedDict(zip(personality_name, personality_percentile)) 47 48 # { my_user_id: { personality_name1: percentile1, personality2: percentile2, ... } } 49 user_personality_dict[my_user_name] = all_tweets_big5 50 # print("finished analyzing all({}) tweets.".format(len(tweets))) 51 52 # Agreeableness: 協調性, Conscientiousness: 真面目さ, Emotional range: 精神的安定性, Extraversion: 外向性, Openness: 開放性 53 # 参考サイト:https://note.nkmk.me/python-math-factorial-permutations-combinations/ 54 big5_list = ["Agreeableness", "Conscientiousness", "Emotional range", "Extraversion", "Openness"] 55 56 # big5から2つの性格を選ぶ組み合わせを列挙する 57 category_patterns = [set(pat) for pat in itertools.combinations(big5_list, 2)] 58 59 # ユーザのツイートのカテゴリ分けを記録する辞書 60 user_tweet_category_table = OrderedDict() 61 62 # ユーザのツイートの分析結果を、値の大きい順にソートする 63 sorted_result = sort_personality(user_personality_dict[my_user_name]) 64 65 # big5のうち大きい順から2番目までの値の性格名のみを取得し、その本のカテゴリとする(例:{Openness, Extraversion}) 66 # この時、複数の性格の順番を考慮させないために、setで用意する 67 # 2つを組み合わせているため、1つだけの場合よりも幅広くカテゴリ分けできそう 68 tweet_category = {big5_elm[0] for big5_elm in sorted_result[0:2]} 69 user_tweet_category_table[my_user_name] = tweet_category 70 71 72 user_personality = user_tweet_category_table[my_user_name] 73

一部ソースコードのままの粗く、雑なコードですがご了承ください、、、

補足情報(FW/ツールのバージョンなど)

参考にしたコード
https://github.com/seven0525/match_books_by_tweets

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問