零.写在最前

该项目源于比赛《航旅纵横-领域知识问答测评
中子任务三《航旅纵横杯-任务3:细粒度文本级答案抽取

使用 ERNIE 3.0进行阅读理解答案抽取

在这里插入图片描述

快速命令行模型 训练+生成比赛结果:


cd work  # 切换到工作目录

python pre.py # 生成符合格式的训练集,验证集,测试集

python train.py # 训练模型

python predict.py # 预测生成提交文件


一.安装PaddleNLP

AI Studio平台默认安装了Paddle和PaddleNLP,并定期更新版本。
如需手动更新Paddle,可参考飞桨安装说明,安装相应环境下最新版飞桨框架。

使用如下命令确保安装最新版PaddleNLP:

!pip install --upgrade paddlenlp

二.数据预处理

命令行模式生成相应的训练集,验证码,测试集

1.数据集准备

在本项目中 在work/data 目录已经准备好了解压完成的数据集以及任务2的结果文件

在这里插入图片描述

2.生成对应格式的训练集

cd work  # 切换到工作目录

python pre.py  # 生成对应符合格式的训练集,验证集,测试集

生成的 训练集,验证集,测试集 在 /work/mine 目录下。

在这里插入图片描述

相关路径配置请看/work/config.py 文件

# -*- coding: utf-8 -*- config.py 文件
class Config(object):
    def __init__(self):
        self.dataPath = './data/'
        self.minePath = './mine/'
        self.pointsPath = './points/'
        self.logPath = './logs'
        self.use_gpu = 1
import paddle
import numpy as np
import pandas as pd
from config import Config
import json
import random
import csv

class Pre(object):
    relations = {}
    labels = {}
    keys = []
    def __init__(self):
        self.cf = Config()
        
    def _detail2dk(self, detail, islist = False):
        if islist == False:
            detail = detail.strip().replace(" ","").replace("'",'"')
            detail = json.loads(detail)
        dk = [str(i) for i in detail]
        dk = ','.join(dk)
        return dk

    def _contents(self):
        contents = pd.read_excel(self.cf.dataPath+'/sections.xlsx')
        for i in range(len(contents)):
            dk = self._detail2dk(contents.loc[i]['detail'])
            key = contents.loc[i]['content-key']+'-'+dk
            self.keys.append(key)
            self.relations[key] = contents.loc[i]['text']
    def _data(self,mode='train'):
        myF = open('mine/'+mode+'.txt', 'w')
        if mode != 'test':
            f = open(self.cf.dataPath+'/'+mode+'.txt')
        else:
            f = open(self.cf.dataPath+'/task_2.txt')
        while True:
            line = f.readline()
            if not line:
                break
            data = line.strip().split('\t')
            data = json.loads(data[0])
            text = data['question']
            if text is None or text!=text:
                continue

            for item in data['answer']:
                dk = self._detail2dk(item['detail'], True)
                key = item['content-key']+'-'+dk
                if key in self.relations:
                    context = self.relations[key]
                    location = item['location'] if mode != 'test' else [0,1]
                    re = {'question':text,'context':context,'location':location}
                    print(re)
                    myF.write(json.dumps(re, ensure_ascii=False))
                    myF.write('\n')


    def run(self):
        self._contents()
        self._data('train') # 生成训练集
        self._data('valid') # 生成验证集
        self._data('test')  # 生成测试集

pre = Pre()
pre.run()

3.加载 paddlenlp.transformers.AutoTokenizer用于数据处理

由于文章加问题的文本长度可能大于max_seq_length,答案出现的位置有可能出现在文章最后,所以不能简单的对文章进行截断。

那么对于过长的文章,则采用滑动窗口将文章分成多段,分别与问题组合。再用对应的tokenizer转化为模型可接受的feature。doc_stride参数就是每次滑动的距离。滑动窗口生成InputFeature的过程如下图:

在这里插入图片描述

我们使用的预训练模型是ERNIE,ERNIE对中文数据的处理是以字为单位。PaddleNLP对于各种预训练模型已经内置了相应的tokenizer,指定想要使用的模型名字即可加载对应的tokenizer。

tokenizer的作用是将原始输入文本转化成模型可以接受的输入数据形式。

train_trans_func = partial(prepare_train_features, 
                   max_seq_length=self.max_seq_length, 
                   doc_stride=self.doc_stride,
                   tokenizer=tokenizer)

valid_trans_func = partial(prepare_validation_features, 
                   max_seq_length=self.max_seq_length, 
                   doc_stride=self.doc_stride,
                   tokenizer=tokenizer)
                           
                           
 train_ds = trains.map(train_trans_func, batched=True, num_proc=4, remove_columns=column_names)
 
 valid_ds = valids.map(valid_trans_func, batched=True, num_proc=4, remove_columns=column_names)

4. Batchify和数据读入

使用paddle.io.BatchSampler和paddlenlp.data中提供的方法把数据组成batch。

然后使用paddle.io.DataLoader接口多线程异步加载数据。

batchify_fn详解:

在这里插入图片描述

# 定义BatchSampler
train_batch_sampler = paddle.io.DistributedBatchSampler(train_ds, batch_size=self.batch_size, shuffle=True)
 
valid_batch_sampler = paddle.io.BatchSampler(valid_ds, batch_size=self.batch_size, shuffle=False)

# 定义batchify_fn 将不同长度序列充到批中数据的最大长度,再将数据堆叠
train_batchify_fn = DataCollatorWithPadding(tokenizer)
vaild_batchify_fn = DataCollatorWithPadding(tokenizer)

# 构造DataLoader

train_data_loader = paddle.io.DataLoader(dataset=train_ds,batch_sampler=train_batch_sampler,collate_fn=train_batchify_fn,return_list=True)

valid_data_loader = paddle.io.DataLoader(dataset=valid_ds_for_model,batch_sampler=valid_batch_sampler,collate_fn=vaild_batchify_fn,return_list=True)

三. 训练

# -*- coding: utf-8 -*-
import paddle
from dataset import Dataset
from config import Config
import paddlenlp
from paddlenlp.transformers import AutoModelForQuestionAnswering
from functools import partial
from paddlenlp.data import DataCollatorWithPadding
import time
from utils import prepare_train_features, prepare_validation_features, evaluate
from paddlenlp.datasets import MapDataset



# 损失函数
class CrossEntropyLossForRobust(paddle.nn.Layer):
    def __init__(self):
        super(CrossEntropyLossForRobust, self).__init__()

    def forward(self, y, label):
        start_logits, end_logits = y
        start_position, end_position = label

        start_position = paddle.unsqueeze(start_position, axis=-1)
        end_position = paddle.unsqueeze(end_position, axis=-1)
        
        start_loss = paddle.nn.functional.cross_entropy(
            input=start_logits, label=start_position)
        end_loss = paddle.nn.functional.cross_entropy(
            input=end_logits, label=end_position)
        loss = (start_loss + end_loss) / 2
        return loss

class Train(object):
    batch_size = 32
    epochs = 2
    data = None
    def __init__(self):
        cf = Config()
        self.cf = cf
        self.logPath = cf.logPath
        self.pointsPath = cf.pointsPath
        self.use_gpu = cf.use_gpu
        self.dataset = Dataset()
        self.model_name = "ernie-3.0-medium-zh"
        self.max_seq_length = 512
        self.doc_stride = 128



    def run(self, startStp = 0):
        #开启GPU
        paddle.set_device('gpu:0') if self.use_gpu else paddle.set_device('cpu')

        model = AutoModelForQuestionAnswering.from_pretrained(self.model_name)
        tokenizer = paddlenlp.transformers.ErnieTokenizer.from_pretrained(self.model_name)

        # 获取训练接和验证集
        trains = self.dataset.getData('train')
        valids = self.dataset.getData('valid')

        
        train_trans_func = partial(prepare_train_features, 
                           max_seq_length=self.max_seq_length, 
                           doc_stride=self.doc_stride,
                           tokenizer=tokenizer)

        valid_trans_func = partial(prepare_validation_features, 
                           max_seq_length=self.max_seq_length, 
                           doc_stride=self.doc_stride,
                           tokenizer=tokenizer)

        column_names = trains.column_names

        train_ds = trains.map(train_trans_func, batched=True, num_proc=4, remove_columns=column_names)
        valid_ds = valids.map(valid_trans_func, batched=True, num_proc=4, remove_columns=column_names)

        valid_ds_for_model = valid_ds.remove_columns(["example_id", "offset_mapping"])


        # 定义BatchSampler
        train_batch_sampler = paddle.io.DistributedBatchSampler(train_ds, batch_size=self.batch_size, shuffle=True)
        valid_batch_sampler = paddle.io.BatchSampler(valid_ds, batch_size=self.batch_size, shuffle=False)

        # 定义batchify_fn 将不同长度序列充到批中数据的最大长度,再将数据堆叠
        train_batchify_fn = DataCollatorWithPadding(tokenizer)
        vaild_batchify_fn = DataCollatorWithPadding(tokenizer)

        # 构造DataLoader
        train_data_loader = paddle.io.DataLoader(dataset=train_ds,batch_sampler=train_batch_sampler,collate_fn=train_batchify_fn,return_list=True)
        valid_data_loader = paddle.io.DataLoader(dataset=valid_ds_for_model,batch_sampler=valid_batch_sampler,collate_fn=vaild_batchify_fn,return_list=True)


        #self.log_writer = LogWriter(self.cf.logPath)
        learning_rate = 3e-5 
        # 训练轮次
        epochs = 2

        # 学习率预热比例
        warmup_proportion = 0.1

        # 权重衰减系数,类似模型正则项策略,避免模型过拟合
        weight_decay = 0.01

        num_training_steps = len(train_data_loader) * epochs

        # 学习率衰减策略
        lr_scheduler = paddlenlp.transformers.LinearDecayWithWarmup(learning_rate, num_training_steps, warmup_proportion)

        decay_params = [
            p.name for n, p in model.named_parameters()
            if not any(nd in n for nd in ["bias", "norm"])
        ]
        optimizer = paddle.optimizer.AdamW(
            learning_rate=lr_scheduler,
            parameters=model.parameters(),
            weight_decay=weight_decay,
            apply_decay_param_fun=lambda x: x in decay_params)
            
        criterion = CrossEntropyLossForRobust()
        global_step = 0 #迭代次数
        for epoch in range(1, self.epochs + 1):
            for step, batch in enumerate(train_data_loader, start=1):
                logits = model(input_ids=batch["input_ids"], token_type_ids=batch["token_type_ids"])
                loss = criterion(logits, (batch["start_positions"],batch["end_positions"]))

                # 每迭代10次,打印损失函数值、准确率、f1分数、计算速度
                global_step += 1
                if global_step % 2 == 0:
                    print("global step %d, epoch: %d, batch: %d, loss: %.5f" % (global_step, epoch, step, loss))
                
                # 反向梯度回传,更新参数
                loss.backward()
                optimizer.step()
                lr_scheduler.step()
                optimizer.clear_grad()

            paddle.save(model.state_dict(), './{}/epoch{}'.format(self.pointsPath,epoch)+'.pdparams')
            evaluate(model=model, raw_dataset=valids, dataset=valid_ds, data_loader=valid_data_loader, is_test=False) 
      
train = Train()
train.run(startStp=1)
    

模型存放在points 下,这里设置每隔一个epoch 保存一次。

#2: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:19<00:00,  3.18s/ba]
#1: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:19<00:00,  3.33s/ba]
#3: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:19<00:00,  3.32s/ba]
#0: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 6/6 [00:22<00:00,  3.80s/ba]
#1: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00,  5.42s/ba]
#0: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:06<00:00,  6.28s/ba]
#3: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00,  5.21s/ba]
#2: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00,  5.55s/ba]
global step 2, epoch: 1, batch: 2, loss: 6.19202
global step 4, epoch: 1, batch: 4, loss: 5.69212██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:05<00:00,  5.55s/ba]
global step 6, epoch: 1, batch: 6, loss: 6.11376
global step 8, epoch: 1, batch: 8, loss: 4.85116
global step 10, epoch: 1, batch: 10, loss: 5.58772
global step 12, epoch: 1, batch: 12, loss: 5.49642
global step 14, epoch: 1, batch: 14, loss: 4.63017
global step 16, epoch: 1, batch: 16, loss: 5.02932
global step 18, epoch: 1, batch: 18, loss: 4.73517
global step 20, epoch: 1, batch: 20, loss: 4.61867
global step 22, epoch: 1, batch: 22, loss: 5.45716
global step 24, epoch: 1, batch: 24, loss: 4.77610
global step 26, epoch: 1, batch: 26, loss: 4.72585
global step 28, epoch: 1, batch: 28, loss: 3.90319
global step 30, epoch: 1, batch: 30, loss: 4.57513
global step 32, epoch: 1, batch: 32, loss: 3.65228
global step 34, epoch: 1, batch: 34, loss: 3.12624
global step 36, epoch: 1, batch: 36, loss: 2.92884
global step 38, epoch: 1, batch: 38, loss: 2.68613
global step 40, epoch: 1, batch: 40, loss: 2.69809
global step 42, epoch: 1, batch: 42, loss: 2.07025
global step 44, epoch: 1, batch: 44, loss: 2.21324
global step 46, epoch: 1, batch: 46, loss: 1.73097
global step 48, epoch: 1, batch: 48, loss: 1.67005
global step 50, epoch: 1, batch: 50, loss: 1.24114
global step 52, epoch: 1, batch: 52, loss: 1.22320
global step 54, epoch: 1, batch: 54, loss: 0.59721
global step 56, epoch: 1, batch: 56, loss: 0.66249
global step 58, epoch: 1, batch: 58, loss: 0.37631
global step 60, epoch: 1, batch: 60, loss: 0.24111



Processing example: 1000
time per 1000: 3.0815114974975586
Processing example: 2000
time per 1000: 2.7513885498046875
Processing example: 3000
time per 1000: 2.774914264678955
{
  "exact": 61.25578703703704,
  "f1": 63.58074815619339,
  "total": 3456,
  "HasAns_exact": 61.25578703703704,
  "HasAns_f1": 63.58074815619339,
  "HasAns_total": 3456
}

四.预测并生成成比赛提交文件

生成的提交文件保存在 work/mine/task_3.txt

# -*- coding: utf-8 -*-
import paddle
from dataset import Dataset
from config import Config
import paddlenlp
from paddlenlp.transformers import AutoModelForQuestionAnswering
from functools import partial
from paddlenlp.data import DataCollatorWithPadding
import time
from utils import prepare_train_features, prepare_validation_features, evaluate
import json

class Predict(object):
    batch_size = 32
    data = None
    def __init__(self):
        cf = Config()
        self.cf = cf
        self.pointsPath = cf.pointsPath
        self.use_gpu = cf.use_gpu
        self.dataset = Dataset()
        self.model_name = "ernie-3.0-medium-zh"
        self.max_seq_length = 512
        self.doc_stride = 128
        self.point = 2 # 训练模型point



    def run(self):
        #开启GPU
        paddle.set_device('gpu:0') if self.use_gpu else paddle.set_device('cpu')

        # 加载模型
        model = AutoModelForQuestionAnswering.from_pretrained(self.model_name)
        param_dict = paddle.load('./{}/epoch{}'.format(self.pointsPath,self.point)+'.pdparams')
        model.load_dict(param_dict)
        model.eval()

        tokenizer = paddlenlp.transformers.ErnieTokenizer.from_pretrained(self.model_name)

        tests = self.dataset.getData('test')

        test_trans_func = partial(prepare_validation_features, 
                           max_seq_length=self.max_seq_length, 
                           doc_stride=self.doc_stride,
                           tokenizer=tokenizer)

        column_names = tests.column_names
        test_ds = tests.map(test_trans_func, batched=True, num_proc=4, remove_columns=column_names)
        test_ds_for_model = test_ds.remove_columns(["example_id", "offset_mapping"])

        # 定义BatchSampler
        test_batch_sampler = paddle.io.BatchSampler(test_ds, batch_size=self.batch_size, shuffle=False)

        # 定义batchify_fn 将不同长度序列充到批中数据的最大长度,再将数据堆叠
        test_batchify_fn = DataCollatorWithPadding(tokenizer)

        # 构造DataLoader
        test_data_loader = paddle.io.DataLoader(dataset=test_ds_for_model,batch_sampler=test_batch_sampler,collate_fn=test_batchify_fn,return_list=True)

        predictions = evaluate(model=model, raw_dataset=tests, dataset=test_ds, data_loader=test_data_loader, is_test=True)

        # 写入结果文件
        taskf_3 = open('mine/task_3.txt', 'w')
        f = open(self.cf.dataPath+'/task_2.txt')

        i = 0
        while True:
            line = f.readline()
            if not line:
                break
            data = line.strip().split('\t')
            data = json.loads(data[0])
            question = data['question']
            if question is None or question!=question:
                continue
            
            answers = []
            for item in data['answer']:
                answer_text = predictions[tests['id'][i]]
                content_text = ''.join(tests['context'][i])
                start_pos = content_text.find(answer_text)
                end_pos = start_pos + len(answer_text)
                item['location'] = [start_pos, end_pos]
                item['detail-type'] = 'y-0'
                answers.append(item)
                i = i + 1
            re = {'question':question,'answer':answers}
            print(re)
            taskf_3.write(json.dumps(re, ensure_ascii=False))
            taskf_3.write('\n')
                   
predict = Predict()
predict.run()
        

#1: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:09<00:00,  4.81s/ba]
#0: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:10<00:00,  5.25s/ba]
#2: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:10<00:00,  5.10s/ba]
#3: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:09<00:00,  4.81s/ba]
Processing example: 1000██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:10<00:00,  4.56s/ba]
time per 1000: 6.122032165527344
Processing example: 2000██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:09<00:00,  4.15s/ba]
time per 1000: 3.9302053451538086
Processing example: 3000
time per 1000: 3.9717564582824707
Processing example: 4000
time per 1000: 4.209367513656616
Processing example: 5000
time per 1000: 3.832172393798828


{'question': '航司什么时候可以网上值机', 'answer': [{'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_9', 'text'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_14', 'text'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_25', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_29', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_30', 'text'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_38', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}]}
{'question': '带狗狗坐飞机如何办理托运?需要提前多久到机场办理手续啊?我坐的是 的飞机', 'answer': [{'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'title'], 'location': [0, 3], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 35, 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 48, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_3', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '带猫猫坐飞机要做些什么,大概要多准备多少银子?', 'answer': [{'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 19, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 45, 'text'], 'location': [0, 5], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 47, 'text'], 'location': [0, 5], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 58, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '飞机座位图怎么看', 'answer': [{'content-key': '1d6fd236e26658f03e2041a7f5ba8f30', 'detail': ['h1_0', 0, 'texts', 4, 'text'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '1d6fd236e26658f03e2041a7f5ba8f30', 'detail': ['h1_0', 0, 'texts', 5, 'text'], 'location': [0, 8], 'detail-type': 'y-0'}, {'content-key': '1d6fd236e26658f03e2041a7f5ba8f30', 'detail': ['h1_0', 0, 'texts', 10, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [49, 50], 'detail-type': 'y-0'}, {'content-key': 'd2de1594eed084f1eae8adee7af2d504', 'detail': ['h1_0', 0, 'texts', 12, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}, {'content-key': '46b1dd62e401cde37bcef159693d9c75', 'detail': ['h1_0', 0, 'texts', 12, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}, {'content-key': '39aaa9e14ed4b093e69530e17a3c624a', 'detail': ['h1_0', 0, 'texts', 14, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}]}
{'question': '行李托运限额多少斤', 'answer': [{'content-key': '014376012b92ea61fbf175090fa6a2d9', 'detail': ['h3_0', 0, 'texts', 0, 'table'], 'location': [0, 44], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_0', 0, 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_1', 0, 'title'], 'location': [0, 7], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_1', 0, 'texts', 0, 'text'], 'location': [0, 34], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_1', 0, 'h4_0', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}]}
{'question': '航司737公务舱', 'answer': [{'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 0, 'img'], 'location': [0, 39], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 1, 'img'], 'location': [0, 39], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 2, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 5, 'text'], 'location': [0, 22], 'detail-type': 'y-0'}, {'content-key': '771d5ab4c05e0cc7fad223356ecc73aa', 'detail': ['h1_0', 0, 'texts', 24, 'text'], 'location': [0, 22], 'detail-type': 'y-0'}]}
{'question': '没有大人陪伴的儿童,到了机场我是到哪里去接呢', 'answer': [{'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 0, 'text'], 'location': [1, 4], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 14, 'text'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 22, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 39, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '0776484dcef8f22446651bdef0e4326e', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '手机机票选好座位如何更改', 'answer': [{'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_25', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_29', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_38', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_48', 'title'], 'location': [36, 37], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_48', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '开延误证明', 'answer': [{'content-key': 'd1056dc8f8e616c873489709e683edf8', 'detail': ['h1_0', 0, 'h2_0', 'text'], 'location': [184, 186], 'detail-type': 'y-0'}, {'content-key': 'd1056dc8f8e616c873489709e683edf8', 'detail': ['h1_0', 0, 'h2_9', 'text'], 'location': [43, 44], 'detail-type': 'y-0'}, {'content-key': 'd1056dc8f8e616c873489709e683edf8', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [39, 40], 'detail-type': 'y-0'}, {'content-key': 'a70b485fef83735134417de0ab768e37', 'detail': ['h2_1', 0, 'h3_21', 0, 'texts', 0, 'text'], 'location': [40, 41], 'detail-type': 'y-0'}, {'content-key': 'a70b485fef83735134417de0ab768e37', 'detail': ['h2_1', 0, 'h3_23', 0, 'texts', 0, 'text'], 'location': [37, 38], 'detail-type': 'y-0'}]}
{'question': '我的座位被修改了???', 'answer': [{'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_25', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_29', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_38', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_48', 'title'], 'location': [36, 37], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_48', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '申请取消6月17深圳到上海的厦航值机', 'answer': [{'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_25', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_29', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_37', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_38', 'text'], 'location': [0, 2], 'detail-type': 'y-0'}]}
{'question': '航司电话', 'answer': [{'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 59, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 63, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 65, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_28', 'text'], 'location': [0, 42], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_30', 'text'], 'location': [0, 42], 'detail-type': 'y-0'}]}
{'question': '网上订票能开具发票吗?在哪办理?', 'answer': [{'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_33', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_34', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_35', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_43', 'text'], 'location': [0, 13], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_61', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '起飞前10分钟还可以上飞机', 'answer': [{'content-key': '8f4f560a6087c88394afc18db6b04448', 'detail': ['h1_0', 0, 'h2_6', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '0d903b873c849cf00d654414b7db5a9e', 'detail': ['h1_0', 0, 'h2_0', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '飞机上有水的吗', 'answer': [{'content-key': 'f1ffec3235891c1c968f963cb351be7b', 'detail': ['h1_0', 0, 'texts', 6, 'text'], 'location': [0, 16], 'detail-type': 'y-0'}, {'content-key': 'f1ffec3235891c1c968f963cb351be7b', 'detail': ['h1_0', 0, 'texts', 7, 'text'], 'location': [0, 14], 'detail-type': 'y-0'}, {'content-key': 'f1ffec3235891c1c968f963cb351be7b', 'detail': ['h1_0', 0, 'texts', 11, 'text'], 'location': [0, 17], 'detail-type': 'y-0'}, {'content-key': '9b4ca308497d61f693c947f34d78dc75', 'detail': ['h1_0', 0, 'texts', 7, 'text'], 'location': [0, 24], 'detail-type': 'y-0'}, {'content-key': '9b4ca308497d61f693c947f34d78dc75', 'detail': ['h1_0', 0, 'texts', 9, 'text'], 'location': [0, 24], 'detail-type': 'y-0'}]}
{'question': '航空公司随身行李规定', 'answer': [{'content-key': '8720672741b5d96c1ccb365c6b5d0a27', 'detail': ['h4_0', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '8720672741b5d96c1ccb365c6b5d0a27', 'detail': ['h4_1', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '8720672741b5d96c1ccb365c6b5d0a27', 'detail': ['h4_2', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_24', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_25', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '飞机托运怎么取行李箱', 'answer': [{'content-key': '014376012b92ea61fbf175090fa6a2d9', 'detail': ['h3_1', 0, 'texts', 0, 'text'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '014376012b92ea61fbf175090fa6a2d9', 'detail': ['h3_1', 0, 'texts', 1, 'text'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '014376012b92ea61fbf175090fa6a2d9', 'detail': ['h3_1', 0, 'texts', 3, 'text'], 'location': [0, 27], 'detail-type': 'y-0'}, {'content-key': '014376012b92ea61fbf175090fa6a2d9', 'detail': ['h3_1', 0, 'texts', 4, 'text'], 'location': [0, 25], 'detail-type': 'y-0'}, {'content-key': 'c687e21856d0fb37c63724598155f6ee', 'detail': ['h1_0', 0, 'h2_7', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '飞机可以提前多久办理值机', 'answer': [{'content-key': '8f4f560a6087c88394afc18db6b04448', 'detail': ['h1_0', 0, 'h2_6', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '0d903b873c849cf00d654414b7db5a9e', 'detail': ['h1_0', 0, 'h2_0', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '我在网站上定机票,行程订反了,买了一千多,现在只退到九十多块,请问这是怎么回事?', 'answer': [{'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_10', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [67, 68], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_10', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [67, 68], 'detail-type': 'y-0'}, {'content-key': '57997c7ea0308171ca3be0cba3282df6', 'detail': ['h1_0', 0, 'h2_7', 'text'], 'location': [19, 20], 'detail-type': 'y-0'}]}
{'question': '带婴儿乘机出行,航司是否可提供针对性的服务,当航班变动时,以保证孩子在机上的安全', 'answer': [{'content-key': 'f19489de95e569022801db0ca1083e1b', 'detail': ['h1_0', 0, 'texts', 26, 'text'], 'location': [65, 66], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 0, 'text'], 'location': [1, 4], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 14, 'text'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 41, 'text'], 'location': [72, 73], 'detail-type': 'y-0'}, {'content-key': '0776484dcef8f22446651bdef0e4326e', 'detail': ['h1_0', 0, 'h2_7', 'text'], 'location': [40, 41], 'detail-type': 'y-0'}]}
{'question': '机场服务电话', 'answer': [{'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 23, 'text'], 'location': [0, 17], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 27, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 29, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 61, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 63, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}]}
{'question': '浦东机场航司值机柜台', 'answer': [{'content-key': '064ec4b18fcea49a47a591e633e8410f', 'detail': ['h4_3', 0, 'texts', 38, 'text'], 'location': [0, 5], 'detail-type': 'y-0'}, {'content-key': '064ec4b18fcea49a47a591e633e8410f', 'detail': ['h4_3', 0, 'texts', 39, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '064ec4b18fcea49a47a591e633e8410f', 'detail': ['h4_3', 0, 'texts', 40, 'text'], 'location': [0, 5], 'detail-type': 'y-0'}, {'content-key': '064ec4b18fcea49a47a591e633e8410f', 'detail': ['h4_3', 0, 'texts', 41, 'text'], 'location': [0, 20], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_3', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '登机只能带一件行李吗', 'answer': [{'content-key': '8720672741b5d96c1ccb365c6b5d0a27', 'detail': ['h4_0', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '8720672741b5d96c1ccb365c6b5d0a27', 'detail': ['h4_1', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '8720672741b5d96c1ccb365c6b5d0a27', 'detail': ['h4_2', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_24', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_25', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '航空有餐食吗', 'answer': [{'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_9', 'title'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_13', 'title'], 'location': [0, 12], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_13', 'text'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'title'], 'location': [0, 14], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '国际航班餐食', 'answer': [{'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_9', 'title'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_13', 'title'], 'location': [0, 12], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_13', 'text'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'title'], 'location': [0, 14], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '飞机托运零食有啥要求', 'answer': [{'content-key': '31f28e554c39022cc8a002ba471d8e38', 'detail': ['h1_0', 0, 'h2_1', 0, 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '31f28e554c39022cc8a002ba471d8e38', 'detail': ['h1_0', 0, 'h2_1', 0, 'texts', 9, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '31f28e554c39022cc8a002ba471d8e38', 'detail': ['h1_0', 0, 'h2_1', 0, 'texts', 10, 'text'], 'location': [93, 94], 'detail-type': 'y-0'}, {'content-key': '31f28e554c39022cc8a002ba471d8e38', 'detail': ['h1_0', 0, 'h2_2', 0, 'texts', 0, 'text'], 'location': [63, 64], 'detail-type': 'y-0'}, {'content-key': '31f28e554c39022cc8a002ba471d8e38', 'detail': ['h1_0', 0, 'h2_2', 0, 'texts', 2, 'text'], 'location': [0, 17], 'detail-type': 'y-0'}]}
{'question': '退机票基建燃油退不退', 'answer': [{'content-key': '0b2937a20ade69b49061c7966d3a8452', 'detail': ['h3_1', 0, 'texts', 0, 'text'], 'location': [0, 22], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [67, 68], 'detail-type': 'y-0'}, {'content-key': '57997c7ea0308171ca3be0cba3282df6', 'detail': ['h1_0', 0, 'h2_2', 'title'], 'location': [0, 14], 'detail-type': 'y-0'}, {'content-key': '57997c7ea0308171ca3be0cba3282df6', 'detail': ['h1_0', 0, 'h2_7', 'text'], 'location': [19, 20], 'detail-type': 'y-0'}]}
{'question': '宠物航空托运怎么办理', 'answer': [{'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'title'], 'location': [0, 3], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 11, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 38, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_3', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '空客320座位图', 'answer': [{'content-key': '1d6fd236e26658f03e2041a7f5ba8f30', 'detail': ['h1_0', 0, 'texts', 10, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}, {'content-key': 'd2de1594eed084f1eae8adee7af2d504', 'detail': ['h1_0', 0, 'texts', 10, 'text'], 'location': [1, 23], 'detail-type': 'y-0'}, {'content-key': 'd2de1594eed084f1eae8adee7af2d504', 'detail': ['h1_0', 0, 'texts', 12, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}, {'content-key': '46b1dd62e401cde37bcef159693d9c75', 'detail': ['h1_0', 0, 'texts', 10, 'text'], 'location': [1, 23], 'detail-type': 'y-0'}, {'content-key': '46b1dd62e401cde37bcef159693d9c75', 'detail': ['h1_0', 0, 'texts', 12, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}, {'content-key': '4aa8aaa5516eb7dcc58bac2a50593f8f', 'detail': ['h1_0', 0, 'texts', 8, 'text'], 'location': [1, 23], 'detail-type': 'y-0'}, {'content-key': '4aa8aaa5516eb7dcc58bac2a50593f8f', 'detail': ['h1_0', 0, 'texts', 10, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}]}
{'question': '航司电话', 'answer': [{'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 59, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 63, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': 'd030d80c90525a992daaf4f30d6bbc96', 'detail': ['h1_0', 0, 'texts', 65, 'img'], 'location': [0, 43], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_28', 'text'], 'location': [0, 42], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_30', 'text'], 'location': [0, 42], 'detail-type': 'y-0'}]}
{'question': '导盲犬和助听犬可以随主人进入客舱吗?', 'answer': [{'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 57, 'text'], 'location': [14, 40], 'detail-type': 'y-0'}, {'content-key': '714e2e784b91674c21e2f1ea0896e833', 'detail': ['h1_0', 0, 'texts', 6, 'text'], 'location': [0, 8], 'detail-type': 'y-0'}, {'content-key': '714e2e784b91674c21e2f1ea0896e833', 'detail': ['h1_0', 0, 'texts', 10, 'text'], 'location': [56, 57], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_2', 'title'], 'location': [0, 14], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 17], 'detail-type': 'y-0'}]}
{'question': '没赶上飞机怎么办', 'answer': [{'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_10', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_10', 'text'], 'location': [0, 15], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_13', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_10', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_10', 'text'], 'location': [0, 15], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_13', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}]}
{'question': '飞机托运行李麻烦吗 飞机行李托运怎么收费', 'answer': [{'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_0', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_1', 0, 'title'], 'location': [0, 7], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_1', 0, 'texts', 0, 'text'], 'location': [0, 34], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_1', 0, 'h4_0', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '9b7ace40c5a6f354f18239b7ec1c5a3e', 'detail': ['h3_1', 0, 'h4_1', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}]}
{'question': '心脏起搏器能坐飞机吗', 'answer': [{'content-key': '5a2d14f14cba7cc72a174f7b0a725989', 'detail': ['h1_0', 0, 'texts', 3, 'text'], 'location': [0, 9], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_5', 'title'], 'location': [1, 5], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_10', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '360bd038cf4dc139a858f8118ff1e6cf', 'detail': ['h1_0', 0, 'h2_13', 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '9af70e36b48c6dcb513f55172170e385', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 0], 'detail-type': 'y-0'}]}
{'question': '请问70岁以上老人乘飞机,提示建议提供健康证明,如没有提供会不会影响登机', 'answer': [{'content-key': '221e26f97b81cfa347fe3275356f150a', 'detail': ['h1_0', 0, 'title'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '221e26f97b81cfa347fe3275356f150a', 'detail': ['h1_0', 0, 'texts', 2, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '221e26f97b81cfa347fe3275356f150a', 'detail': ['h1_0', 0, 'texts', 3, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '221e26f97b81cfa347fe3275356f150a', 'detail': ['h1_0', 0, 'texts', 4, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '221e26f97b81cfa347fe3275356f150a', 'detail': ['h1_0', 0, 'texts', 11, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '哪些情况下可以办理手机值机', 'answer': [{'content-key': 'f410f732d54a1eca2c71a257b1959b99', 'detail': ['h1_0', 0, 'texts', 10, 'img'], 'location': [0, 47], 'detail-type': 'y-0'}, {'content-key': '0492b3cc07017025c44f5fb65d42d914', 'detail': ['h1_0', 0, 'texts', 9, 'img'], 'location': [0, 50], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_9', 'text'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_14', 'text'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_25', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_29', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_30', 'text'], 'location': [0, 4], 'detail-type': 'y-0'}]}
{'question': '飞机延误可以晚办登机牌吗', 'answer': [{'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'title'], 'location': [0, 12], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_22', 'title'], 'location': [40, 41], 'detail-type': 'y-0'}, {'content-key': '8b1efca8af2eff91b012e3346128da24', 'detail': ['h1_0', 0, 'h2_22', 'text'], 'location': [0, 30], 'detail-type': 'y-0'}]}
{'question': '宠物猫上飞机需要什么申请流程', 'answer': [{'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'title'], 'location': [0, 3], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 11, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 19, 'text'], 'location': [0, 0], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 58, 'text'], 'location': [0, 0], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '5b51357ecfbb47ae4a8667ecc0648a83', 'detail': ['h1_0', 0, 'h2_3', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '飞机晚点提前多久通知', 'answer': [{'content-key': '8f4f560a6087c88394afc18db6b04448', 'detail': ['h1_0', 0, 'h2_6', 'title'], 'location': [0, 18], 'detail-type': 'y-0'}, {'content-key': '8f4f560a6087c88394afc18db6b04448', 'detail': ['h1_0', 0, 'h2_6', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '航司付费升舱', 'answer': [{'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 0, 'img'], 'location': [0, 39], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 1, 'img'], 'location': [0, 39], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 2, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 3, 'text'], 'location': [0, 13], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 5, 'text'], 'location': [0, 22], 'detail-type': 'y-0'}]}
{'question': '飞机过安检包里的东西要翻出来吗', 'answer': [{'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_4', 'title'], 'location': [1, 5], 'detail-type': 'y-0'}, {'content-key': '52dc8edfc394977c9d9c0c1952d6850a', 'detail': ['h1_0', 0, 'h2_8', 'title'], 'location': [0, 17], 'detail-type': 'y-0'}, {'content-key': '52dc8edfc394977c9d9c0c1952d6850a', 'detail': ['h1_0', 0, 'h2_8', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'fb6fa3d20230587005fe0bc6dc676422', 'detail': ['h1_0', 0, 'h2_0', 'text'], 'location': [0, 0], 'detail-type': 'y-0'}, {'content-key': '9b4ca308497d61f693c947f34d78dc75', 'detail': ['h1_0', 0, 'texts', 3, 'text'], 'location': [73, 74], 'detail-type': 'y-0'}]}
{'question': '昆明机场的瑞丽航空有截止办理时间吗?', 'answer': [{'content-key': '567eadd66fc7bc9629d929be3de65940', 'detail': ['h1_0', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '52dc8edfc394977c9d9c0c1952d6850a', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [24, 40], 'detail-type': 'y-0'}]}
{'question': '坐飞机空姐给你东西吃要钱吗', 'answer': [{'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_9', 'title'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_13', 'text'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_19', 'text'], 'location': [81, 82], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'title'], 'location': [0, 14], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '蜂糖能过安检吗汽车站到', 'answer': [{'content-key': 'f1ffec3235891c1c968f963cb351be7b', 'detail': ['h1_0', 0, 'texts', 8, 'text'], 'location': [0, 9], 'detail-type': 'y-0'}, {'content-key': '52dc8edfc394977c9d9c0c1952d6850a', 'detail': ['h1_0', 0, 'h2_8', 'title'], 'location': [0, 17], 'detail-type': 'y-0'}, {'content-key': '52dc8edfc394977c9d9c0c1952d6850a', 'detail': ['h1_0', 0, 'h2_8', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '9b4ca308497d61f693c947f34d78dc75', 'detail': ['h1_0', 0, 'texts', 7, 'text'], 'location': [0, 24], 'detail-type': 'y-0'}, {'content-key': '9b4ca308497d61f693c947f34d78dc75', 'detail': ['h1_0', 0, 'texts', 9, 'text'], 'location': [0, 24], 'detail-type': 'y-0'}]}
{'question': '现在飞机都没有飞机餐吗', 'answer': [{'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_9', 'title'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_13', 'title'], 'location': [0, 12], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_13', 'text'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'title'], 'location': [0, 14], 'detail-type': 'y-0'}, {'content-key': '072d85b2c0f07c7b22073fdca0542de5', 'detail': ['h1_0', 0, 'h2_20', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '机场停车场收费标准2020', 'answer': [{'content-key': '0492b3cc07017025c44f5fb65d42d914', 'detail': ['h1_0', 0, 'texts', 2, 'text'], 'location': [0, 5], 'detail-type': 'y-0'}, {'content-key': '064ec4b18fcea49a47a591e633e8410f', 'detail': ['h4_3', 0, 'texts', 7, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'e68660af5d233eaa37ce2f2241f6b042', 'detail': ['h1_0', 0, 'h2_23', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_3', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '超级经济舱', 'answer': [{'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 0, 'img'], 'location': [0, 39], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 1, 'img'], 'location': [0, 39], 'detail-type': 'y-0'}, {'content-key': '7756991f4eb13b712b8281e6b0c4ae12', 'detail': ['h1_0', 0, 'texts', 3, 'text'], 'location': [0, 13], 'detail-type': 'y-0'}, {'content-key': 'ba635092554a1ea299fd049f2f5884f0', 'detail': ['h1_0', 0, 'texts', 0, 'img'], 'location': [0, 38], 'detail-type': 'y-0'}, {'content-key': 'ba635092554a1ea299fd049f2f5884f0', 'detail': ['h1_0', 0, 'texts', 1, 'img'], 'location': [0, 38], 'detail-type': 'y-0'}]}
{'question': '如何获取报销纸质', 'answer': [{'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_33', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_34', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_35', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_43', 'text'], 'location': [0, 13], 'detail-type': 'y-0'}, {'content-key': 'ca2b35de604199c9344f0c1037453f4c', 'detail': ['h1_0', 0, 'h2_61', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '航站楼中转柜台在哪', 'answer': [{'content-key': 'c5bb996c0852a738eaed585fdbdb5926', 'detail': ['h1_0', 0, 'texts', 0, 'text'], 'location': [0, 12], 'detail-type': 'y-0'}, {'content-key': 'c5bb996c0852a738eaed585fdbdb5926', 'detail': ['h1_0', 0, 'texts', 11, 'text'], 'location': [0, 12], 'detail-type': 'y-0'}, {'content-key': 'c5bb996c0852a738eaed585fdbdb5926', 'detail': ['h1_0', 0, 'texts', 15, 'text'], 'location': [0, 12], 'detail-type': 'y-0'}, {'content-key': 'c5bb996c0852a738eaed585fdbdb5926', 'detail': ['h1_0', 0, 'texts', 16, 'text'], 'location': [0, 15], 'detail-type': 'y-0'}, {'content-key': 'c5bb996c0852a738eaed585fdbdb5926', 'detail': ['h1_0', 0, 'texts', 17, 'text'], 'location': [0, 21], 'detail-type': 'y-0'}]}
{'question': '国内航班开始值机时间和截止时间分别是多久?', 'answer': [{'content-key': '567eadd66fc7bc9629d929be3de65940', 'detail': ['h1_0', 0, 'texts', 0, 'table'], 'location': [0, 51], 'detail-type': 'y-0'}, {'content-key': '8f4f560a6087c88394afc18db6b04448', 'detail': ['h1_0', 0, 'h2_6', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '0d903b873c849cf00d654414b7db5a9e', 'detail': ['h1_0', 0, 'h2_0', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '残疾人坐飞机需要什么流程', 'answer': [{'content-key': '4e639c45641fc6c204bfc3fa0631bac1', 'detail': ['h1_0', 0, 'texts', 0, 'text'], 'location': [0, 4], 'detail-type': 'y-0'}, {'content-key': '4e639c45641fc6c204bfc3fa0631bac1', 'detail': ['h1_0', 0, 'texts', 5, 'text'], 'location': [0, 20], 'detail-type': 'y-0'}, {'content-key': '4e639c45641fc6c204bfc3fa0631bac1', 'detail': ['h1_0', 0, 'texts', 23, 'text'], 'location': [38, 39], 'detail-type': 'y-0'}, {'content-key': '4e639c45641fc6c204bfc3fa0631bac1', 'detail': ['h1_0', 0, 'texts', 25, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '9af70e36b48c6dcb513f55172170e385', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 0], 'detail-type': 'y-0'}]}
{'question': '飞机上可以托运动物吗?', 'answer': [{'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 61, 'text'], 'location': [0, 13], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 62, 'text'], 'location': [0, 24], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 68, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 70, 'text'], 'location': [83, 84], 'detail-type': 'y-0'}, {'content-key': '2c2ccfd5d0c6c22156bd31a0a519a529', 'detail': ['h1_0', 0, 'texts', 73, 'text'], 'location': [87, 88], 'detail-type': 'y-0'}]}
{'question': '飞机起飞前多久停止登机', 'answer': [{'content-key': '8f4f560a6087c88394afc18db6b04448', 'detail': ['h1_0', 0, 'h2_6', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_2', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'title'], 'location': [0, 21], 'detail-type': 'y-0'}, {'content-key': '385217662e0fb9b27f7a9ba40fa14ae2', 'detail': ['h1_0', 0, 'h2_11', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': '0d903b873c849cf00d654414b7db5a9e', 'detail': ['h1_0', 0, 'h2_0', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}
{'question': '我孩子5岁了,要单独乘联程航班,可以办理无人陪伴的托管服务吗?', 'answer': [{'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 0, 'text'], 'location': [1, 4], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 14, 'text'], 'location': [0, 11], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 22, 'text'], 'location': [0, 1], 'detail-type': 'y-0'}, {'content-key': 'b8421d91262579550acfea5a214aab8f', 'detail': ['h1_0', 0, 'texts', 35, 'text'], 'location': [0, 6], 'detail-type': 'y-0'}, {'content-key': '0776484dcef8f22446651bdef0e4326e', 'detail': ['h1_0', 0, 'h2_1', 'text'], 'location': [0, 1], 'detail-type': 'y-0'}]}

五.总结

本项目通过数据预处理,应用ernie-3.0预训练模型,训练,推理等流程即可轻松生成预测文件,提交比赛结果。

优化方向:

1.任务3的结果很大程度取决于任务1和任务的2的结果,所以应该优先优化前置任务的结果准确率

2.微调batch_size, 学习率,max_seq_len 等

希望对大家有所帮助

声明

此项目为搬运
原项目链接

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐