python - 为什么附加字母而不是单词?
问题描述
我目前正在处理来自 DSTC8 模式对话的 JSON 文件:https ://github.com/google-research-datasets/dstc8-schema-guided-dialogue
我正在尝试为每个对话提取键“act”的值,我的代码如下所示:
with open('path/dialogues_001.json', 'r') as f:
data = json.load(f)
col = []
#Looping through each dialogue
for i in data:
row = []
x.append(q)
#For every turns, we will loop through the 'frames' and 'actions'
for j in i['turns']:
for k in j['frames']:
for l in k['actions']:
#Looping through the key ; 'act'
for m in l['act']:
q.append(m)
print(x[0])
追加有效,但结果写为
['I', 'N', 'F', 'O', 'R', 'M', 'I', 'N', 'F', 'O', 'R', 'M', 'I', 'N', 'F', 'O', 'R', 'M', '_', 'I', 'N', 'T', 'E', 'N', 'T', 'R', 'E', 'Q', 'U', 'E', 'S', 'T']
代替['INFORM', 'INFORM, INFORM_INTENT, 'REQUEST']
你们知道我的代码中出现了什么问题吗?附加字母而不是单词值?
解决方案
或者,您可以json
通过dataframe
对话框 id 找到所有带有正则表达式的行为。
import pandas as pd
import re
df = pd.read_json('path/dialogues_001.json')
df.turns = df.turns.apply(str)
df['acts'] = [re.findall(r"'act': '(\w+)'", row) for row in df['turns']]
现在你有了所有的对话 id 和他们的行为名称。它也有效,因为根据DSTC8中的方案表示,acts
仅出现在actions
.
推荐阅读
- r - 使用 R 中的 MASS::fractions 将浮点数转换为分数时出现奇怪的结果
- reactjs - 是否可以使用相同的
在多个组件上? - vue.js - 如何在 b-table 的 v-slot:cell() 模板中获取项目值 - BootstrapVue
- html - autocapitalize="none" 不适用于在 Android 上的 Firefox 中
- c - 开关盒基本
- python - 无法从 BeautifulSoup 获取整行
- swift - 是否可以调用 Any 的 AsFunction() 变量?
- gcc - gfortran 是否附加下划线...错误链接 Fortran 和 C
- python - 如何抓取有加载器的网站?
- html - Bootstrap Grid 不适合一行中的 div