前提・実現したいこと
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))
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。