对于实现问答对的处理疑问

来源:6-9 数据处理-训练语料问答对的处理(1)

慕沐0769766

2019-06-19

for group in tqdm(groups):
    for i, line in enumerate(group):
        last_line = None
        if i > 0:
            # 最后一行
            last_line = group[i - 1]
            if not good_line(last_line):
                last_line = None
        # 下一行
        next_line = None
        if i < len(group) - 1:
            next_line = group[i + 1]
            if not good_line(next_line):
                next_line = None
        # 下一行的下一行
        next_next_line = None
        if i < len(group) - 2:
            next_next_line = group[i + 2]
            if not good_line(next_next_line):
                next_next_line = None

这个处理我没有看明白是什么意思?为什么要这样处理句子?

写回答

2回答

nikai_null

2019-07-01

# 遍历组中的数据,进行问和答的编组
for i, line in enumerate(group):
   # 上一行句子
   last_line = None
   if i > 0:
       last_line = group[i - 1]
       if not good_line(last_line):
           last_line = None
   # 下一行句子
   next_line = None
   if i < len(group) - 1:
       next_line = group[i + 1]
       if not good_line(next_line):
           next_line = None
   # 下一行的下一行句子
   next_next_line = None
   if i < len(group) - 2:
       next_next_line = group[i + 2]
       if not good_line(next_next_line):
           next_next_line = None

   # 如果有下一行,则将当前行当作问题,下一行当作回答
   if next_line:
       q_data.append(line)
       a_data.append(next_line)
   # 如果有上一行和下一行,则将上一行和这一行拼接成一句问题,将下一行当作回答
   if last_line and next_line:
       q_data.append(last_line + make_split(last_line) + line)
       a_data.append(next_line)
   # 如果有下一行和下下一行,则将当前行当作问题,将下一行和下下一行当作回答
   if next_line and next_next_line:
       q_data.append(line)
       a_data.append(next_line + make_split(next_line) + next_next_line)


这样理解才是对的,这里应该是老师讲错了,last_line应该理解成上一行,有时候如果不清楚,可以调试着走一遍,看每个变量的值,有助于理解

1
0

Mr_Ricky

2019-07-01

这一部分的处理,主要是把问答的句子给拿出来。

0
1
aiqingyuyan
这里有拼接上一行和这一行成问题,或者拼接下一行和下下一行成回答,不太明白为什么要这么处理(拼接),背后的逻辑是什么
2019-07-17
共1条回复

NLP实践TensorFlow打造聊天机器人

解析自然语言处理( NLP )常用技术,从0搭建聊天机器人应用并部署上线,可用于毕设。

673 学习 · 281 问题

查看课程