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

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

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

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

Q&A

1回答

815閲覧

turn['utterance']について

chronobcelp

総合スコア9

Python

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

0グッド

0クリップ

投稿2022/01/10 13:52

前提・実現したいこと

TensorFlow2 TensorFlow&Keras対応 プログラミング実装ハンドブック P.395~397で質問があります。
以下のコードでturn['utterance']の扱い方がよく分かりません。

本文中では「このうち「utterance」が発話データ、「speaker」が「U」なら人、「S」ならシステムの発話になる」とあります。
turn['utterance']には人やシステムの発話が入っていると思いますが、
else:以降のsysには、なぜシステムの発話しか入らないのでしょうか?

よろしくお願いします。

該当のソースコード

Python

1''' 21.データの読み込み 3''' 4import os 5import json 6 7# コーパスのディレクトリを設定 8file_path = '/projectnextnlp-chat-dialogue-corpus/json/rest1046/' 9# ファイルの一覧を取得 10file_dir = os.listdir(file_path) 11# 人間の発話を保持するリスト 12utterance_txt = [] 13# システムの応答を保持するリスト 14system_txt = [] 15# 正解ラベルを保持するリスト 16label = [] 17 18# ファイルごとに対話データを整形する 19for file in file_dir: 20 # JSONファイルの読み込み 21 r = open(file_path + file, 'r', encoding='utf-8') 22 json_data = json.load(r) 23 24 # 発話データ配列から発話テキストと破綻かどうかの正解データを抽出 25 for turn in json_data['turns']: 26 turn_index = turn['turn-index'] # turn-indexキー(対話のインデックス) 27 speaker = turn['speaker'] # speakerキー("U"人間、"S"システム) 28 utterance = turn['utterance'] # utteranceキー(発話テキスト) 29 30 # 先頭行(システムの冒頭の発話)以外を処理 31 if turn_index != 0: 32 # 人間の発話(質問)のテキストを抽出 33 if speaker == 'U': 34 #u_text = '' 35 u_text = utterance 36 37 # システムの応答内容が破綻かどうかを抽出 38 else: 39 a = '' 40 sys = turn['utterance'] # システムの発話(応答)を抽出 41 t = turn['annotations'][0] # 1つ目のアノテーションを抽出 42 a = t['breakdown'] # アノテーションのフラグを抽出 43 if a == 'O': # O(破綻していない)を0で置換 44 val = 0 45 else: # O以外は破綻とし1で置換 46 val = 1 47 # 人間の発話をリストに追加 48 utterance_txt.append(u_text) 49 # システムの応答をリストに追加 50 system_txt.append(sys) 51 # 正解ラベルをリストに追加 52 label.append(str(val))

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

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

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

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

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

guest

回答1

0

Pythonのif文による条件分岐の書き方をお読みください。

それでわからないの場合は、Pythonの入門書を読み直すことをお勧めします。

投稿2022/01/10 14:34

ppaul

総合スコア24670

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問