From cbb598837e10f81004da23383daba12252567e69 Mon Sep 17 00:00:00 2001 From: DrownFish19 Date: Thu, 13 Jun 2024 11:25:14 +0000 Subject: [PATCH 1/5] move and delete --- examples/code_generation/codegen/README.md | 326 ---- .../code_generation/codegen/codegen_server.py | 137 -- .../code_generation/codegen/requirements.txt | 7 - examples/code_generation/codegen/run_clm.py | 162 -- examples/code_generation/codegen/run_clm.sh | 30 - examples/dialogue/dgu/args.py | 118 -- examples/dialogue/dgu/data.py | 509 ------- examples/dialogue/dgu/main.py | 290 ---- examples/dialogue/dgu/metric.py | 245 --- examples/dialogue/lic2021_baseline/args.py | 58 - examples/dialogue/lic2021_baseline/data.py | 258 ---- .../dialogue/lic2021_baseline/finetune.py | 149 -- examples/dialogue/lic2021_baseline/infer.py | 88 -- examples/dialogue/plato-2/imgs/case.jpg | Bin 101382 -> 0 bytes examples/dialogue/plato-2/imgs/network.png | Bin 113024 -> 0 bytes examples/dialogue/plato-2/interaction.py | 104 -- examples/dialogue/plato-2/model.py | 458 ------ .../dialogue/plato-2/readers/dialog_reader.py | 436 ------ .../dialogue/plato-2/readers/nsp_reader.py | 152 -- .../dialogue/plato-2/readers/plato_reader.py | 85 -- examples/dialogue/plato-2/utils/__init__.py | 51 - examples/dialogue/plato-2/utils/args.py | 88 -- examples/dialogue/plato-2/utils/masking.py | 119 -- .../dialogue/plato-2/utils/tokenization.py | 189 --- examples/dialogue/plato-xl | 1 - .../dialogue/unified_transformer/finetune.py | 165 -- .../dialogue/unified_transformer/infer.py | 146 -- .../unified_transformer/interaction.py | 107 -- .../dialogue/unified_transformer/utils.py | 265 ---- examples/few_shot/RGL/README.md | 129 -- examples/few_shot/RGL/data.py | 496 ------ examples/few_shot/RGL/rgl.py | 239 --- examples/few_shot/RGL/scripts/run_pet.sh | 114 -- examples/few_shot/RGL/scripts/run_rgl.sh | 115 -- examples/few_shot/RGL/template.py | 391 ----- examples/few_shot/RGL/tokenizer.py | 261 ---- examples/few_shot/RGL/utils.py | 81 - examples/few_shot/RGL/verbalizer.py | 188 --- examples/few_shot/efl/README.md | 85 -- examples/few_shot/efl/data.py | 134 -- examples/few_shot/efl/prompt/bustm.json | 8 - examples/few_shot/efl/prompt/chid.json | 8 - examples/few_shot/efl/prompt/cluewsc.json | 8 - examples/few_shot/efl/prompt/csl.json | 8 - examples/few_shot/efl/prompt/csldcp.json | 76 - examples/few_shot/efl/prompt/eprstmt.json | 8 - examples/few_shot/efl/prompt/iflytek.json | 129 -- examples/few_shot/efl/prompt/ocnli.json | 8 - examples/few_shot/efl/prompt/tnews.json | 24 - examples/few_shot/efl/run_train.py | 164 -- examples/few_shot/efl/utils.py | 252 ---- examples/few_shot/p-tuning/README.md | 85 -- examples/few_shot/p-tuning/data.py | 202 --- examples/few_shot/p-tuning/prompt/bustm.json | 8 - examples/few_shot/p-tuning/prompt/chid.json | 8 - .../few_shot/p-tuning/prompt/cluewsc.json | 8 - examples/few_shot/p-tuning/prompt/csl.json | 8 - examples/few_shot/p-tuning/prompt/csldcp.json | 76 - .../few_shot/p-tuning/prompt/eprstmt.json | 8 - .../few_shot/p-tuning/prompt/iflytek.json | 129 -- examples/few_shot/p-tuning/prompt/ocnli.json | 8 - examples/few_shot/p-tuning/prompt/tnews.json | 24 - examples/few_shot/p-tuning/run_train.py | 175 --- examples/few_shot/p-tuning/utils.py | 249 --- examples/few_shot/pet/README.md | 84 -- examples/few_shot/pet/data.py | 191 --- examples/few_shot/pet/prompt/bustm.json | 14 - examples/few_shot/pet/prompt/chid.json | 14 - examples/few_shot/pet/prompt/cluewsc.json | 12 - examples/few_shot/pet/prompt/csl.json | 14 - examples/few_shot/pet/prompt/csldcp.json | 82 - examples/few_shot/pet/prompt/eprstmt.json | 18 - examples/few_shot/pet/prompt/iflytek.json | 253 ---- examples/few_shot/pet/prompt/ocnli.json | 12 - examples/few_shot/pet/prompt/tnews.json | 30 - examples/few_shot/pet/run_train.py | 170 --- examples/few_shot/pet/utils.py | 249 --- .../information_extraction/DuIE/predict.sh | 14 - .../waybill_ie/README.md | 102 -- .../information_extraction/waybill_ie/data.py | 79 - .../deploy/python/predict_bigru_crf.py | 290 ---- .../waybill_ie/deploy/python/predict_ernie.py | 283 ---- .../deploy/python/predict_ernie_crf.py | 263 ---- .../waybill_ie/download.py | 32 - .../waybill_ie/export_bigru_crf_model.py | 60 - .../waybill_ie/export_ernie_crf_model.py | 55 - .../waybill_ie/export_ernie_model.py | 52 - .../waybill_ie/model.py | 76 - .../waybill_ie/run_bigru_crf.py | 149 -- .../waybill_ie/run_ernie.py | 166 -- .../waybill_ie/run_ernie_crf.py | 147 -- .../machine_translation/seq2seq/README.md | 104 -- examples/machine_translation/seq2seq/args.py | 61 - examples/machine_translation/seq2seq/data.py | 113 -- .../seq2seq/deploy/python/infer.py | 99 -- .../seq2seq/export_model.py | 57 - .../machine_translation/seq2seq/predict.py | 92 -- .../seq2seq/seq2seq_attn.py | 254 ---- examples/machine_translation/seq2seq/train.py | 64 - .../transformer/tls/distributed_utils.py | 19 - .../model_compression/distill_lstm/README.md | 194 --- .../model_compression/distill_lstm/args.py | 108 -- .../distill_lstm/bert_distill.py | 172 --- .../model_compression/distill_lstm/data.py | 322 ---- .../model_compression/distill_lstm/small.py | 211 --- .../model_compression/distill_lstm/utils.py | 117 -- examples/model_interpretation/README.md | 255 ---- examples/model_interpretation/data/mrc_ch | 100 -- examples/model_interpretation/data/mrc_en | 100 -- examples/model_interpretation/data/senti_ch | 100 -- examples/model_interpretation/data/senti_en | 100 -- .../model_interpretation/data/similarity_ch | 100 -- .../model_interpretation/data/similarity_en | 100 -- examples/model_interpretation/download.sh | 10 - .../evaluation/accuracy/cal_acc.py | 92 -- .../evaluation/accuracy/mrc_f1_evaluate.py | 265 ---- .../evaluation/accuracy/run_acc.sh | 31 - .../evaluation/accuracy/run_mrc_f1.sh | 29 - .../evaluation/consistency/cal_map.py | 141 -- .../evaluation/consistency/run_map.sh | 31 - .../evaluation/faithfulness/newp_analysis.py | 78 - .../evaluation/faithfulness/run_newp.sh | 30 - .../evaluation/plausibility/eval_mrc.py | 112 -- .../evaluation/plausibility/eval_senti.py | 178 --- .../plausibility/eval_similarity.py | 133 -- .../evaluation/plausibility/run_f1.sh | 34 - .../model_interpretation/imgs/equation1.png | Bin 44124 -> 0 bytes .../model_interpretation/imgs/equation2.png | Bin 15113 -> 0 bytes .../model_interpretation/imgs/equation3.png | Bin 20633 -> 0 bytes .../model_interpretation/imgs/equation4.png | Bin 8428 -> 0 bytes .../model_interpretation/imgs/equation5.png | Bin 14108 -> 0 bytes .../model_interpretation/imgs/example1.png | Bin 88971 -> 0 bytes .../model_interpretation/imgs/structure.png | Bin 80478 -> 0 bytes examples/model_interpretation/punctuations | 82 - .../rationale_extraction/available_gpu.py | 46 - .../rationale_extraction/generate.sh | 57 - .../generate_evaluation_data.py | 113 -- .../generate_evaluation_data.sh | 23 - .../rationale_extraction/mrc_pred.py | 207 --- .../newp_text_generate.py | 269 ---- .../run_2_pred_mrc_per.sh | 48 - .../run_2_pred_senti_per.sh | 62 - .../run_2_pred_similarity_per.sh | 54 - .../rationale_extraction/sentiment_pred.py | 255 ---- .../rationale_extraction/similarity_pred.py | 229 --- .../model_interpretation/requirements.txt | 5 - examples/model_interpretation/task/README.md | 19 - .../task/mrc/roberta/modeling.py | 719 --------- .../task/mrc/run_1_predict_rc.sh | 51 - .../task/mrc/run_1_predict_rc_all.sh | 57 - .../task/mrc/run_2_inter_rc.sh | 53 - .../task/mrc/run_2_inter_rc_all.sh | 61 - .../task/mrc/run_train_rc.sh | 51 - .../task/mrc/saliency_map/rc_finetune.py | 280 ---- .../task/mrc/saliency_map/rc_interpretable.py | 497 ------ .../task/mrc/saliency_map/rc_prediction.py | 195 --- .../task/mrc/saliency_map/squad.py | 476 ------ .../task/mrc/saliency_map/utils.py | 37 - .../task/senti/LIME/exceptions.py | 2 - .../task/senti/LIME/explanation.py | 344 ----- .../task/senti/LIME/lime_base.py | 226 --- .../task/senti/LIME/lime_text.py | 664 -------- .../task/senti/pretrained_models/run_train.sh | 30 - .../task/senti/pretrained_models/train.py | 230 --- .../task/senti/pretrained_models/utils.py | 59 - .../task/senti/rnn/lstm_train.sh | 20 - .../task/senti/rnn/model.py | 265 ---- .../task/senti/rnn/tokenizer_config.json | 1 - .../task/senti/rnn/train.py | 142 -- .../task/senti/rnn/utils.py | 166 -- .../task/senti/roberta/modeling.py | 608 -------- .../task/senti/run_inter.sh | 65 - .../task/senti/run_inter_all.sh | 75 - .../saliency_map/sentiment_interpretable.py | 502 ------- .../task/senti/saliency_map/utils.py | 38 - .../task/similarity/LIME/exceptions.py | 2 - .../task/similarity/LIME/explanation.py | 343 ----- .../task/similarity/LIME/lime_base.py | 225 --- .../task/similarity/LIME/lime_text.py | 660 -------- .../task/similarity/pretrained_models/data.py | 138 -- .../similarity/pretrained_models/model.py | 89 -- .../pretrained_models/predict_pointwise.py | 115 -- .../pretrained_models/run_train_pointwise.sh | 32 - .../pretrained_models/train_pointwise.py | 215 --- .../task/similarity/roberta/modeling.py | 618 -------- .../task/similarity/run_inter.sh | 61 - .../task/similarity/run_inter_all.sh | 69 - .../saliency_map/similarity_interpretable.py | 646 -------- .../task/similarity/saliency_map/utils.py | 38 - .../task/similarity/simnet/gen_vocab.py | 60 - .../simnet/interpreter_attention.py | 121 -- .../similarity/simnet/interpreter_grad.py | 131 -- .../task/similarity/simnet/lstm_train.sh | 21 - .../task/similarity/simnet/model.py | 270 ---- .../task/similarity/simnet/predict.py | 109 -- .../task/similarity/simnet/train.py | 135 -- .../task/similarity/simnet/utils.py | 211 --- .../model_interpretation/task/transformer.py | 1329 ----------------- examples/model_interpretation/utils.py | 88 -- examples/multimodal/layoutlm/README.md | 44 - examples/multimodal/layoutlm/funsd.py | 317 ---- examples/multimodal/layoutlm/preprocess.py | 166 -- examples/multimodal/layoutlm/preprocess.sh | 13 - examples/multimodal/layoutlm/train_funsd.py | 282 ---- examples/multimodal/layoutlm/train_funsd.sh | 17 - examples/multimodal/layoutlm/utils.py | 188 --- examples/multimodal/layoutxlm/README.md | 45 - examples/multimodal/layoutxlm/compare.py | 105 -- examples/multimodal/layoutxlm/run_xfun_re.py | 406 ----- examples/multimodal/layoutxlm/run_xfun_re.sh | 19 - examples/multimodal/layoutxlm/run_xfun_ser.py | 353 ----- examples/multimodal/layoutxlm/run_xfun_ser.sh | 19 - examples/multimodal/layoutxlm/xfun.py | 410 ----- examples/multimodal/minigpt4/README.md | 47 - examples/multimodal/minigpt4/merge_weight.py | 88 -- .../minigpt4/paddle_minigpt4_instrction.md | 117 -- examples/multimodal/minigpt4/run_predict.py | 68 - examples/sentiment_analysis/textcnn/README.md | 192 --- examples/sentiment_analysis/textcnn/data.py | 93 -- .../textcnn/deploy/python/predict.py | 141 -- .../textcnn/export_model.py | 60 - examples/sentiment_analysis/textcnn/model.py | 60 - .../sentiment_analysis/textcnn/predict.py | 94 -- examples/sentiment_analysis/textcnn/train.py | 108 -- .../stacl/utils/__init__.py | 0 examples/text_graph/erniesage/README.md | 59 - .../config/erniesage_link_prediction.yaml | 40 - examples/text_graph/erniesage/data/dataset.py | 115 -- .../text_graph/erniesage/data/graph_reader.py | 59 - .../erniesage/example_data/graph_data.txt | 1000 ------------- .../erniesage/example_data/train_data.txt | 1000 ------------- .../text_graph/erniesage/link_prediction.py | 177 --- examples/text_graph/erniesage/models/conv.py | 174 --- .../text_graph/erniesage/models/encoder.py | 133 -- examples/text_graph/erniesage/models/loss.py | 69 - examples/text_graph/erniesage/models/model.py | 68 - .../erniesage/preprocessing/dump_graph.py | 154 -- examples/text_to_knowledge/README.md | 168 --- .../doc/img/ernie_ctm_inputs.png | Bin 671993 -> 0 bytes .../doc/img/ernie_ctm_model.png | Bin 1143410 -> 0 bytes .../doc/img/text_to_knowledge.png | Bin 413725 -> 0 bytes .../doc/img/text_to_knowledge_example.png | Bin 754435 -> 0 bytes .../doc/img/wordtag_example.png | Bin 695571 -> 0 bytes .../doc/img/wordtag_model.png | Bin 484819 -> 0 bytes .../text_to_knowledge/ernie-ctm/README.md | 167 --- .../ernie-ctm/data_process.py | 93 -- .../text_to_knowledge/ernie-ctm/metric.py | 219 --- .../text_to_knowledge/ernie-ctm/predict.py | 88 -- examples/text_to_knowledge/ernie-ctm/train.py | 203 --- examples/text_to_knowledge/ernie-ctm/utils.py | 48 - examples/text_to_knowledge/nptag/README.md | 160 -- examples/text_to_knowledge/nptag/data.py | 81 - .../nptag/deploy/python/predict.py | 150 -- .../text_to_knowledge/nptag/export_model.py | 47 - examples/text_to_knowledge/nptag/metric.py | 55 - examples/text_to_knowledge/nptag/predict.py | 125 -- examples/text_to_knowledge/nptag/train.py | 191 --- examples/text_to_knowledge/nptag/utils.py | 195 --- examples/text_to_knowledge/termtree/README.md | 271 ---- .../text_to_knowledge/termtree/termtree.py | 416 ------ .../termtree/termtree_type.csv | 164 -- .../text_to_knowledge/wordtag-ie/README.md | 135 -- .../wordtag-ie/demo_config.json | 955 ------------ examples/text_to_knowledge/wordtag/README.md | 248 --- examples/text_to_knowledge/wordtag/predict.py | 56 - .../examples}/benchmark/ceval/README.md | 0 .../examples}/benchmark/ceval/eval.py | 0 .../examples}/benchmark/ceval/evaluator.py | 0 .../benchmark/ceval/model_evaluator.py | 0 .../benchmark/ceval/subject_mapping.json | 0 .../examples}/benchmark/clue/README.md | 0 .../classification/run_clue_classifier.py | 0 .../run_clue_classifier_trainer.py | 0 .../clue/grid_search_tools/draw_pic.py | 0 .../clue/grid_search_tools/extract_result.sh | 0 .../clue/grid_search_tools/grid_search.py | 0 .../clue/grid_search_tools/run_cls.sh | 0 .../clue/grid_search_tools/run_mrc.sh | 0 .../warmup_dataset_and_model.py | 0 .../examples}/benchmark/clue/mrc/run_c3.py | 0 .../examples}/benchmark/clue/mrc/run_chid.py | 0 .../benchmark/clue/mrc/run_cmrc2018.py | 0 .../examples}/benchmark/glue/README.md | 0 .../examples}/benchmark/glue/run_glue.py | 0 .../benchmark/glue/run_glue_trainer.py | 0 .../examples}/benchmark/peft/README.md | 0 .../benchmark/peft/paddle/benchmark.py | 0 .../peft/paddle/inference_benchmark.py | 0 .../examples}/benchmark/peft/paddle/utils.py | 0 .../benchmark/peft/torch/benchmark.py | 0 .../peft/torch/ds_config_stage2.json | 0 .../peft/torch/ds_config_stage3.json | 0 .../peft/torch/inference_benchmark.py | 0 .../benchmark/peft/torch/requirements.txt | 0 .../examples}/benchmark/peft/torch/utils.py | 0 .../benchmark/wiki_lambada/README.md | 0 .../examples}/benchmark/wiki_lambada/eval.py | 0 .../examples/dialogue/README_DGU.md | 0 .../examples/dialogue/README_LIC2021.md | 0 .../examples/dialogue/README_PLATO-2.md | 0 legacy/examples/dialogue/README_PLATO-XL.md | 148 ++ .../dialogue/README_UnifiedTransformer.md | 0 .../examples}/few_shot/README.md | 0 .../information_extraction/DuEE/README.md | 0 .../information_extraction/DuEE/classifier.py | 0 .../DuEE/duee_1_data_prepare.py | 0 .../DuEE/duee_1_postprocess.py | 0 .../DuEE/duee_fin_data_prepare.py | 0 .../DuEE/duee_fin_postprocess.py | 0 .../DuEE/pictures/DuEE-Fin/ee.png | Bin .../DuEE/pictures/DuEE-Fin/enum_model.png | Bin .../DuEE/pictures/DuEE-Fin/role_model.png | Bin .../DuEE/pictures/DuEE-Fin/trigger_model.png | Bin .../DuEE/run_classifier.sh | 14 + .../information_extraction/DuEE/run_duee_1.sh | 14 + .../DuEE/run_duee_fin.sh | 14 + .../DuEE/run_sequence_labeling.sh | 13 + .../DuEE/sequence_labeling.py | 0 .../information_extraction/DuEE/utils.py | 0 .../information_extraction/DuIE/README.md | 0 .../DuIE/data/id2spo.json | 0 .../DuIE/data/predicate2id.json | 0 .../DuIE/data_loader.py | 0 .../DuIE/extract_chinese_and_punct.py | 0 .../DuIE/images/tagging_strategy.png | Bin .../information_extraction/DuIE/predict.sh | 25 +- .../DuIE/re_official_evaluation.py | 0 .../information_extraction/DuIE/run_duie.py | 0 .../information_extraction/DuIE/train.sh | 14 + .../information_extraction/DuIE/utils.py | 0 .../information_extraction/DuUIE/README.md | 0 .../DuUIE/config/multi-task-duuie.yaml | 0 .../information_extraction/DuUIE/inference.py | 10 +- .../DuUIE/process_data.py | 7 +- .../DuUIE/requirements.txt | 0 .../DuUIE/run_seq2struct.py | 0 .../DuUIE/uie/__init__.py | 0 .../DuUIE/uie/evaluation/__init__.py | 0 .../DuUIE/uie/evaluation/constants.py | 0 .../DuUIE/uie/evaluation/scorer.py | 0 .../DuUIE/uie/evaluation/sel2record.py | 21 +- .../DuUIE/uie/seq2struct/__init__.py | 0 .../DuUIE/uie/seq2struct/data_collator.py | 0 .../DuUIE/uie/seq2struct/t5_bert_tokenizer.py | 3 +- .../DuUIE/uie/seq2struct/utils.py | 0 .../information_extraction/msra_ner/README.md | 0 .../information_extraction/msra_ner/eval.py | 0 .../msra_ner/predict.py | 0 .../information_extraction/msra_ner/train.py | 0 .../DuReader-robust/README.md | 0 .../DuReader-robust/args.py | 0 .../DuReader-robust/run_du.py | 0 .../DuReader-yesno/README.md | 0 .../DuReader-yesno/args.py | 14 + .../DuReader-yesno/run_du.py | 0 .../SQuAD/README.md | 0 .../SQuAD/args.py | 0 .../SQuAD/deploy/python/predict.py | 0 .../SQuAD/export_model.py | 1 - .../SQuAD/run_squad.py | 0 .../examples}/machine_translation/README.md | 0 .../preprocessor/prepare-iwslt14.sh | 0 .../preprocessor/prepare-wmt14en2de.sh | 0 .../preprocessor/prepare-wmt14en2fr.sh | 0 .../preprocessor/preprocessor.py | 0 .../machine_translation/requirements.txt | 0 .../machine_translation/transformer/README.md | 0 .../transformer/configs/transformer.base.yaml | 0 .../transformer/configs/transformer.big.yaml | 0 .../transformer/deploy/cpp/CMakeLists.txt | 0 .../transformer/deploy/cpp/README.md | 0 .../transformer/deploy/cpp/helper.h | 14 + .../transformer/deploy/cpp/run.sh | 15 + .../transformer/deploy/cpp/run_impl.sh | 15 + .../transformer/deploy/cpp/transformer_e2e.cc | 14 + .../transformer/deploy/python/README.md | 0 .../transformer/deploy/python/benchmark.sh | 15 + .../transformer/deploy/python/inference.py | 0 .../deploy/python/tls/benchmark_utils.py | 0 .../transformer/deploy/python/tls/recorder.py | 0 .../transformer/deploy/serving/README.md | 0 .../transformer/deploy/serving/benchmark.py | 0 .../deploy/serving/benchmark_serving.sh | 14 + .../deploy/serving/export_serving_model.py | 15 + .../deploy/serving/transformer_reader.py | 16 +- .../deploy/serving/transformer_web_client.py | 0 .../deploy/serving/transformer_web_server.py | 0 .../deploy/serving/utils/recorder.py | 15 + .../transformer/export_model.py | 0 .../transformer/fast_transformer/README.md | 0 .../encoder_decoding_predict.py | 0 .../fast_transformer/export_model.py | 0 .../images/multi_head_attention.png | Bin .../images/transformer_network.png | Bin .../transformer/predict.py | 0 .../machine_translation/transformer/reader.py | 0 .../transformer/static/predict.py | 0 .../transformer/static/train.py | 0 .../transformer/tls/distributed_utils.py | 33 + .../transformer/tls/record.py | 15 + .../transformer/tls/to_static.py | 0 .../machine_translation/transformer/train.py | 0 .../model_compression/minilmv2/README.md | 0 .../minilmv2/general_distill.py | 0 .../model_compression/minilmv2/run_clue.py | 0 .../examples}/model_compression/ofa/README.md | 0 .../model_compression/ofa/export_model.py | 0 .../model_compression/ofa/imgs/ofa_bert.jpg | Bin .../model_compression/ofa/run_glue_ofa.py | 0 .../ofa/run_glue_ofa_depth.py | 0 .../model_compression/pp-minilm/README.md | 0 .../model_compression/pp-minilm/data.py | 0 .../pp-minilm/deploy/python/infer.py | 0 .../pp-minilm/deploy/python/infer_all.sh | 0 .../pp-minilm/deploy/python/infer_perf.sh | 0 .../pp-minilm/deploy/serving/README.md | 0 .../pp-minilm/deploy/serving/config_nlp.yml | 0 .../deploy/serving/export_to_serving.py | 0 .../pp-minilm/deploy/serving/rpc_client.py | 2 +- .../pp-minilm/deploy/serving/web_service.py | 0 .../pp-minilm/finetuning/export_model.py | 0 .../pp-minilm/finetuning/run_all_search.sh | 14 + .../pp-minilm/finetuning/run_clue.py | 0 .../pp-minilm/finetuning/run_clue.sh | 13 + .../pp-minilm/finetuning/run_one_search.sh | 14 + .../pp-minilm/general_distill/README.md | 0 .../general_distill/general_distill.py | 0 .../pp-minilm/general_distill/run.sh | 0 .../model_compression/pp-minilm/pp-minilm.png | Bin .../pp-minilm/pruning/export.sh | 0 .../pp-minilm/pruning/export_all.sh | 0 .../pp-minilm/pruning/export_model.py | 0 .../pp-minilm/pruning/prune.py | 0 .../pp-minilm/pruning/prune.sh | 0 .../pp-minilm/quantization/quant_all.sh | 0 .../pp-minilm/quantization/quant_post.py | 0 .../examples}/question_generation/README.md | 0 .../question_generation/t5/README.md | 0 .../question_generation/t5/predict.py | 0 .../question_generation/t5/requirements.txt | 0 .../examples}/question_generation/t5/train.py | 0 .../examples}/question_generation/t5/utils.py | 0 .../question_generation/unimo-text/README.md | 0 .../deploy/paddle_inference/README.md | 0 .../deploy/paddle_inference/infer_utils.py | 0 .../deploy/paddle_inference/inference.py | 0 .../deploy/paddle_serving/README.md | 0 .../deploy/paddle_serving/config.yml | 0 .../deploy/paddle_serving/infer_utils.py | 0 .../deploy/paddle_serving/pipeline_client.py | 0 .../deploy/paddle_serving/pipeline_service.py | 0 .../unimo-text/export_model.py | 0 .../unimo-text/gen_utils.py | 4 +- .../question_generation/unimo-text/predict.py | 0 .../unimo-text/requirements.txt | 0 .../question_generation/unimo-text/train.py | 0 .../examples}/semantic_indexing/NQdataset.py | 4 +- .../examples}/semantic_indexing/README.md | 0 .../README_gradient_cache.md | 0 .../examples}/semantic_indexing/ance/model.py | 0 .../examples}/semantic_indexing/ann_util.py | 3 +- .../examples}/semantic_indexing/base_model.py | 0 .../semantic_indexing/batch_negative/model.py | 6 +- .../semantic_indexing/biencoder_base_model.py | 0 .../examples}/semantic_indexing/data.py | 10 +- .../semantic_indexing/dense_retriever.py | 0 .../examples}/semantic_indexing/evaluate.py | 4 +- .../semantic_indexing/faiss_indexer.py | 10 +- .../semantic_indexing/fast_predict.py | 0 .../generate_dense_embeddings.py | 0 .../semantic_indexing/gradient_cache/model.py | 6 +- .../hardest_negative/model.py | 8 +- .../examples}/semantic_indexing/predict.py | 4 +- .../semantic_indexing/qa_validation.py | 5 +- .../examples}/semantic_indexing/recall.py | 0 .../semantic_indexing/requirements.txt | 0 .../semantic_indexing/run_ann_data_gen.py | 0 .../examples}/semantic_indexing/tokenizers.py | 0 .../examples}/semantic_indexing/train_ance.py | 0 .../semantic_indexing/train_batch_neg.py | 0 .../semantic_indexing/train_gradient_cache.py | 0 .../train_gradient_cache_DPR.py | 0 .../semantic_indexing/train_hardest_neg.py | 0 .../sentiment_analysis/skep/README.md | 0 .../skep/deploy/python/predict.py | 0 .../sentiment_analysis/skep/export_model.py | 0 .../sentiment_analysis/skep/predict_aspect.py | 0 .../skep/predict_opinion.py | 0 .../skep/predict_sentence.py | 0 .../sentiment_analysis/skep/train_aspect.py | 0 .../sentiment_analysis/skep/train_opinion.py | 0 .../sentiment_analysis/skep/train_sentence.py | 0 .../simultaneous_translation/stacl/README.md | 0 .../stacl/config/transformer.yaml | 0 .../stacl/demo/README.md | 0 .../stacl/demo/README_ai.md | 0 .../stacl/demo/const.py | 0 .../stacl/demo/demo.py | 0 .../stacl/demo/images/paddlenlp.png | Bin .../stacl/demo/images/speech_demo_show.gif | Bin .../stacl/demo/images/step1.png | Bin .../stacl/demo/images/step2.png | Bin .../stacl/demo/images/step3.png | Bin .../stacl/demo/images/step4.png | Bin .../stacl/demo/images/step5.png | Bin .../stacl/demo/images/step6.png | Bin .../stacl/demo/images/step7.png | Bin .../stacl/demo/images/step8.png | Bin .../stacl/demo/images/text_demo_show.gif | Bin .../stacl/demo/model_demo.py | 0 .../stacl/demo/requirements.txt | 0 .../stacl/demo/transformer_demo.yaml | 0 .../stacl/images/STACL_architecture.png | Bin .../stacl/images/example.png | Bin .../simultaneous_translation/stacl/model.py | 0 .../simultaneous_translation/stacl/predict.py | 9 +- .../simultaneous_translation/stacl/reader.py | 4 +- .../stacl/requirements.txt | 0 .../simultaneous_translation/stacl/train.py | 15 +- .../stacl/utils}/__init__.py | 7 +- .../stacl/utils/record.py | 0 .../stacl/utils/tokenizer.py | 0 .../examples}/torch_migration/README.md | 0 .../docs/ThesisReproduction_NLP.md | 0 .../torch_migration/pipeline/Step1/README.md | 0 .../pipeline/Step1/check_step1.py | 0 .../pipeline/Step1/pd_forward_bert.py | 0 .../pipeline/Step1/pt_forward_bert.py | 0 .../pipeline/Step1/torch2paddle.py | 3 +- .../torch_migration/pipeline/Step2/README.md | 0 .../pipeline/Step2/accuracy.py | 0 .../pipeline/Step2/check_step2.py | 0 .../Step2/demo_sst2_sentence/demo.tsv | 0 .../torch_migration/pipeline/Step2/predict.py | 0 .../pipeline/Step2/test_data.py | 0 .../pipeline/Step2/test_metric.py | 0 .../torch_migration/pipeline/Step3/README.md | 0 .../pipeline/Step3/check_step3.py | 0 .../pipeline/Step3/paddle_loss.py | 0 .../pipeline/Step3/torch_loss.py | 0 .../torch_migration/pipeline/Step4/README.md | 0 .../pipeline/Step4/check_step4.py | 0 .../torch_migration/pipeline/Step4/test_bp.py | 0 .../pipeline/Step4/test_lr_scheduler.py | 0 .../torch_migration/pipeline/Step5/README.md | 0 .../pipeline/Step5/bert_paddle/train.py | 0 .../pipeline/Step5/bert_paddle/train.sh | 0 .../pipeline/Step5/bert_paddle/utils.py | 0 .../pipeline/Step5/bert_torch/accuracy.py | 0 .../pipeline/Step5/bert_torch/glue.py | 0 .../pipeline/Step5/bert_torch/train.py | 0 .../pipeline/Step5/bert_torch/train.sh | 0 .../pipeline/Step5/bert_torch/utils.py | 0 .../pipeline/Step5/check_step5.py | 0 .../generate_classifier_weights.py | 0 .../pipeline/fake_data/gen_fake_data.py | 0 .../pipeline/models/pd_bert.py | 0 .../pipeline/models/pt_bert.py | 0 .../reprod_log_demo/check_log_diff.py | 0 .../pipeline/reprod_log_demo/write_log.py | 0 .../pipeline/weights/torch2paddle.py | 3 +- .../pipeline/weights/torch_bert_weight.py | 2 +- .../torch_migration/requirements.txt | 0 scripts/regression/ci_case.sh | 16 - scripts/regression/run_ci.sh | 2 +- scripts/regression/run_release.sh | 2 +- 566 files changed, 551 insertions(+), 39516 deletions(-) delete mode 100644 examples/code_generation/codegen/README.md delete mode 100644 examples/code_generation/codegen/codegen_server.py delete mode 100644 examples/code_generation/codegen/requirements.txt delete mode 100644 examples/code_generation/codegen/run_clm.py delete mode 100644 examples/code_generation/codegen/run_clm.sh delete mode 100644 examples/dialogue/dgu/args.py delete mode 100644 examples/dialogue/dgu/data.py delete mode 100644 examples/dialogue/dgu/main.py delete mode 100644 examples/dialogue/dgu/metric.py delete mode 100644 examples/dialogue/lic2021_baseline/args.py delete mode 100644 examples/dialogue/lic2021_baseline/data.py delete mode 100644 examples/dialogue/lic2021_baseline/finetune.py delete mode 100644 examples/dialogue/lic2021_baseline/infer.py delete mode 100644 examples/dialogue/plato-2/imgs/case.jpg delete mode 100644 examples/dialogue/plato-2/imgs/network.png delete mode 100644 examples/dialogue/plato-2/interaction.py delete mode 100644 examples/dialogue/plato-2/model.py delete mode 100644 examples/dialogue/plato-2/readers/dialog_reader.py delete mode 100644 examples/dialogue/plato-2/readers/nsp_reader.py delete mode 100644 examples/dialogue/plato-2/readers/plato_reader.py delete mode 100644 examples/dialogue/plato-2/utils/__init__.py delete mode 100644 examples/dialogue/plato-2/utils/args.py delete mode 100644 examples/dialogue/plato-2/utils/masking.py delete mode 100644 examples/dialogue/plato-2/utils/tokenization.py delete mode 120000 examples/dialogue/plato-xl delete mode 100644 examples/dialogue/unified_transformer/finetune.py delete mode 100644 examples/dialogue/unified_transformer/infer.py delete mode 100644 examples/dialogue/unified_transformer/interaction.py delete mode 100644 examples/dialogue/unified_transformer/utils.py delete mode 100644 examples/few_shot/RGL/README.md delete mode 100644 examples/few_shot/RGL/data.py delete mode 100644 examples/few_shot/RGL/rgl.py delete mode 100644 examples/few_shot/RGL/scripts/run_pet.sh delete mode 100644 examples/few_shot/RGL/scripts/run_rgl.sh delete mode 100644 examples/few_shot/RGL/template.py delete mode 100644 examples/few_shot/RGL/tokenizer.py delete mode 100644 examples/few_shot/RGL/utils.py delete mode 100644 examples/few_shot/RGL/verbalizer.py delete mode 100644 examples/few_shot/efl/README.md delete mode 100644 examples/few_shot/efl/data.py delete mode 100644 examples/few_shot/efl/prompt/bustm.json delete mode 100644 examples/few_shot/efl/prompt/chid.json delete mode 100644 examples/few_shot/efl/prompt/cluewsc.json delete mode 100644 examples/few_shot/efl/prompt/csl.json delete mode 100644 examples/few_shot/efl/prompt/csldcp.json delete mode 100644 examples/few_shot/efl/prompt/eprstmt.json delete mode 100644 examples/few_shot/efl/prompt/iflytek.json delete mode 100644 examples/few_shot/efl/prompt/ocnli.json delete mode 100644 examples/few_shot/efl/prompt/tnews.json delete mode 100644 examples/few_shot/efl/run_train.py delete mode 100644 examples/few_shot/efl/utils.py delete mode 100644 examples/few_shot/p-tuning/README.md delete mode 100644 examples/few_shot/p-tuning/data.py delete mode 100644 examples/few_shot/p-tuning/prompt/bustm.json delete mode 100644 examples/few_shot/p-tuning/prompt/chid.json delete mode 100644 examples/few_shot/p-tuning/prompt/cluewsc.json delete mode 100644 examples/few_shot/p-tuning/prompt/csl.json delete mode 100644 examples/few_shot/p-tuning/prompt/csldcp.json delete mode 100644 examples/few_shot/p-tuning/prompt/eprstmt.json delete mode 100644 examples/few_shot/p-tuning/prompt/iflytek.json delete mode 100644 examples/few_shot/p-tuning/prompt/ocnli.json delete mode 100644 examples/few_shot/p-tuning/prompt/tnews.json delete mode 100644 examples/few_shot/p-tuning/run_train.py delete mode 100644 examples/few_shot/p-tuning/utils.py delete mode 100644 examples/few_shot/pet/README.md delete mode 100644 examples/few_shot/pet/data.py delete mode 100644 examples/few_shot/pet/prompt/bustm.json delete mode 100644 examples/few_shot/pet/prompt/chid.json delete mode 100644 examples/few_shot/pet/prompt/cluewsc.json delete mode 100644 examples/few_shot/pet/prompt/csl.json delete mode 100644 examples/few_shot/pet/prompt/csldcp.json delete mode 100644 examples/few_shot/pet/prompt/eprstmt.json delete mode 100644 examples/few_shot/pet/prompt/iflytek.json delete mode 100644 examples/few_shot/pet/prompt/ocnli.json delete mode 100644 examples/few_shot/pet/prompt/tnews.json delete mode 100644 examples/few_shot/pet/run_train.py delete mode 100644 examples/few_shot/pet/utils.py delete mode 100644 examples/information_extraction/DuIE/predict.sh delete mode 100644 examples/information_extraction/waybill_ie/README.md delete mode 100644 examples/information_extraction/waybill_ie/data.py delete mode 100644 examples/information_extraction/waybill_ie/deploy/python/predict_bigru_crf.py delete mode 100644 examples/information_extraction/waybill_ie/deploy/python/predict_ernie.py delete mode 100644 examples/information_extraction/waybill_ie/deploy/python/predict_ernie_crf.py delete mode 100644 examples/information_extraction/waybill_ie/download.py delete mode 100644 examples/information_extraction/waybill_ie/export_bigru_crf_model.py delete mode 100644 examples/information_extraction/waybill_ie/export_ernie_crf_model.py delete mode 100644 examples/information_extraction/waybill_ie/export_ernie_model.py delete mode 100644 examples/information_extraction/waybill_ie/model.py delete mode 100644 examples/information_extraction/waybill_ie/run_bigru_crf.py delete mode 100644 examples/information_extraction/waybill_ie/run_ernie.py delete mode 100644 examples/information_extraction/waybill_ie/run_ernie_crf.py delete mode 100644 examples/machine_translation/seq2seq/README.md delete mode 100644 examples/machine_translation/seq2seq/args.py delete mode 100644 examples/machine_translation/seq2seq/data.py delete mode 100644 examples/machine_translation/seq2seq/deploy/python/infer.py delete mode 100644 examples/machine_translation/seq2seq/export_model.py delete mode 100644 examples/machine_translation/seq2seq/predict.py delete mode 100644 examples/machine_translation/seq2seq/seq2seq_attn.py delete mode 100644 examples/machine_translation/seq2seq/train.py delete mode 100644 examples/machine_translation/transformer/tls/distributed_utils.py delete mode 100644 examples/model_compression/distill_lstm/README.md delete mode 100644 examples/model_compression/distill_lstm/args.py delete mode 100644 examples/model_compression/distill_lstm/bert_distill.py delete mode 100644 examples/model_compression/distill_lstm/data.py delete mode 100644 examples/model_compression/distill_lstm/small.py delete mode 100644 examples/model_compression/distill_lstm/utils.py delete mode 100644 examples/model_interpretation/README.md delete mode 100644 examples/model_interpretation/data/mrc_ch delete mode 100644 examples/model_interpretation/data/mrc_en delete mode 100644 examples/model_interpretation/data/senti_ch delete mode 100644 examples/model_interpretation/data/senti_en delete mode 100644 examples/model_interpretation/data/similarity_ch delete mode 100644 examples/model_interpretation/data/similarity_en delete mode 100755 examples/model_interpretation/download.sh delete mode 100644 examples/model_interpretation/evaluation/accuracy/cal_acc.py delete mode 100644 examples/model_interpretation/evaluation/accuracy/mrc_f1_evaluate.py delete mode 100755 examples/model_interpretation/evaluation/accuracy/run_acc.sh delete mode 100755 examples/model_interpretation/evaluation/accuracy/run_mrc_f1.sh delete mode 100644 examples/model_interpretation/evaluation/consistency/cal_map.py delete mode 100755 examples/model_interpretation/evaluation/consistency/run_map.sh delete mode 100644 examples/model_interpretation/evaluation/faithfulness/newp_analysis.py delete mode 100755 examples/model_interpretation/evaluation/faithfulness/run_newp.sh delete mode 100644 examples/model_interpretation/evaluation/plausibility/eval_mrc.py delete mode 100644 examples/model_interpretation/evaluation/plausibility/eval_senti.py delete mode 100644 examples/model_interpretation/evaluation/plausibility/eval_similarity.py delete mode 100755 examples/model_interpretation/evaluation/plausibility/run_f1.sh delete mode 100644 examples/model_interpretation/imgs/equation1.png delete mode 100644 examples/model_interpretation/imgs/equation2.png delete mode 100644 examples/model_interpretation/imgs/equation3.png delete mode 100644 examples/model_interpretation/imgs/equation4.png delete mode 100644 examples/model_interpretation/imgs/equation5.png delete mode 100644 examples/model_interpretation/imgs/example1.png delete mode 100644 examples/model_interpretation/imgs/structure.png delete mode 100644 examples/model_interpretation/punctuations delete mode 100644 examples/model_interpretation/rationale_extraction/available_gpu.py delete mode 100755 examples/model_interpretation/rationale_extraction/generate.sh delete mode 100644 examples/model_interpretation/rationale_extraction/generate_evaluation_data.py delete mode 100755 examples/model_interpretation/rationale_extraction/generate_evaluation_data.sh delete mode 100644 examples/model_interpretation/rationale_extraction/mrc_pred.py delete mode 100644 examples/model_interpretation/rationale_extraction/newp_text_generate.py delete mode 100755 examples/model_interpretation/rationale_extraction/run_2_pred_mrc_per.sh delete mode 100755 examples/model_interpretation/rationale_extraction/run_2_pred_senti_per.sh delete mode 100755 examples/model_interpretation/rationale_extraction/run_2_pred_similarity_per.sh delete mode 100644 examples/model_interpretation/rationale_extraction/sentiment_pred.py delete mode 100644 examples/model_interpretation/rationale_extraction/similarity_pred.py delete mode 100644 examples/model_interpretation/requirements.txt delete mode 100644 examples/model_interpretation/task/README.md delete mode 100644 examples/model_interpretation/task/mrc/roberta/modeling.py delete mode 100755 examples/model_interpretation/task/mrc/run_1_predict_rc.sh delete mode 100755 examples/model_interpretation/task/mrc/run_1_predict_rc_all.sh delete mode 100755 examples/model_interpretation/task/mrc/run_2_inter_rc.sh delete mode 100755 examples/model_interpretation/task/mrc/run_2_inter_rc_all.sh delete mode 100755 examples/model_interpretation/task/mrc/run_train_rc.sh delete mode 100644 examples/model_interpretation/task/mrc/saliency_map/rc_finetune.py delete mode 100644 examples/model_interpretation/task/mrc/saliency_map/rc_interpretable.py delete mode 100644 examples/model_interpretation/task/mrc/saliency_map/rc_prediction.py delete mode 100644 examples/model_interpretation/task/mrc/saliency_map/squad.py delete mode 100644 examples/model_interpretation/task/mrc/saliency_map/utils.py delete mode 100644 examples/model_interpretation/task/senti/LIME/exceptions.py delete mode 100644 examples/model_interpretation/task/senti/LIME/explanation.py delete mode 100644 examples/model_interpretation/task/senti/LIME/lime_base.py delete mode 100644 examples/model_interpretation/task/senti/LIME/lime_text.py delete mode 100755 examples/model_interpretation/task/senti/pretrained_models/run_train.sh delete mode 100644 examples/model_interpretation/task/senti/pretrained_models/train.py delete mode 100644 examples/model_interpretation/task/senti/pretrained_models/utils.py delete mode 100755 examples/model_interpretation/task/senti/rnn/lstm_train.sh delete mode 100644 examples/model_interpretation/task/senti/rnn/model.py delete mode 100644 examples/model_interpretation/task/senti/rnn/tokenizer_config.json delete mode 100644 examples/model_interpretation/task/senti/rnn/train.py delete mode 100644 examples/model_interpretation/task/senti/rnn/utils.py delete mode 100644 examples/model_interpretation/task/senti/roberta/modeling.py delete mode 100755 examples/model_interpretation/task/senti/run_inter.sh delete mode 100755 examples/model_interpretation/task/senti/run_inter_all.sh delete mode 100644 examples/model_interpretation/task/senti/saliency_map/sentiment_interpretable.py delete mode 100644 examples/model_interpretation/task/senti/saliency_map/utils.py delete mode 100644 examples/model_interpretation/task/similarity/LIME/exceptions.py delete mode 100644 examples/model_interpretation/task/similarity/LIME/explanation.py delete mode 100644 examples/model_interpretation/task/similarity/LIME/lime_base.py delete mode 100644 examples/model_interpretation/task/similarity/LIME/lime_text.py delete mode 100644 examples/model_interpretation/task/similarity/pretrained_models/data.py delete mode 100644 examples/model_interpretation/task/similarity/pretrained_models/model.py delete mode 100644 examples/model_interpretation/task/similarity/pretrained_models/predict_pointwise.py delete mode 100755 examples/model_interpretation/task/similarity/pretrained_models/run_train_pointwise.sh delete mode 100644 examples/model_interpretation/task/similarity/pretrained_models/train_pointwise.py delete mode 100644 examples/model_interpretation/task/similarity/roberta/modeling.py delete mode 100755 examples/model_interpretation/task/similarity/run_inter.sh delete mode 100755 examples/model_interpretation/task/similarity/run_inter_all.sh delete mode 100644 examples/model_interpretation/task/similarity/saliency_map/similarity_interpretable.py delete mode 100644 examples/model_interpretation/task/similarity/saliency_map/utils.py delete mode 100644 examples/model_interpretation/task/similarity/simnet/gen_vocab.py delete mode 100644 examples/model_interpretation/task/similarity/simnet/interpreter_attention.py delete mode 100644 examples/model_interpretation/task/similarity/simnet/interpreter_grad.py delete mode 100755 examples/model_interpretation/task/similarity/simnet/lstm_train.sh delete mode 100644 examples/model_interpretation/task/similarity/simnet/model.py delete mode 100644 examples/model_interpretation/task/similarity/simnet/predict.py delete mode 100644 examples/model_interpretation/task/similarity/simnet/train.py delete mode 100644 examples/model_interpretation/task/similarity/simnet/utils.py delete mode 100644 examples/model_interpretation/task/transformer.py delete mode 100644 examples/model_interpretation/utils.py delete mode 100644 examples/multimodal/layoutlm/README.md delete mode 100644 examples/multimodal/layoutlm/funsd.py delete mode 100644 examples/multimodal/layoutlm/preprocess.py delete mode 100644 examples/multimodal/layoutlm/preprocess.sh delete mode 100644 examples/multimodal/layoutlm/train_funsd.py delete mode 100644 examples/multimodal/layoutlm/train_funsd.sh delete mode 100644 examples/multimodal/layoutlm/utils.py delete mode 100644 examples/multimodal/layoutxlm/README.md delete mode 100644 examples/multimodal/layoutxlm/compare.py delete mode 100644 examples/multimodal/layoutxlm/run_xfun_re.py delete mode 100644 examples/multimodal/layoutxlm/run_xfun_re.sh delete mode 100644 examples/multimodal/layoutxlm/run_xfun_ser.py delete mode 100644 examples/multimodal/layoutxlm/run_xfun_ser.sh delete mode 100644 examples/multimodal/layoutxlm/xfun.py delete mode 100644 examples/multimodal/minigpt4/README.md delete mode 100644 examples/multimodal/minigpt4/merge_weight.py delete mode 100644 examples/multimodal/minigpt4/paddle_minigpt4_instrction.md delete mode 100644 examples/multimodal/minigpt4/run_predict.py delete mode 100644 examples/sentiment_analysis/textcnn/README.md delete mode 100644 examples/sentiment_analysis/textcnn/data.py delete mode 100644 examples/sentiment_analysis/textcnn/deploy/python/predict.py delete mode 100644 examples/sentiment_analysis/textcnn/export_model.py delete mode 100644 examples/sentiment_analysis/textcnn/model.py delete mode 100644 examples/sentiment_analysis/textcnn/predict.py delete mode 100644 examples/sentiment_analysis/textcnn/train.py delete mode 100644 examples/simultaneous_translation/stacl/utils/__init__.py delete mode 100644 examples/text_graph/erniesage/README.md delete mode 100644 examples/text_graph/erniesage/config/erniesage_link_prediction.yaml delete mode 100644 examples/text_graph/erniesage/data/dataset.py delete mode 100755 examples/text_graph/erniesage/data/graph_reader.py delete mode 100644 examples/text_graph/erniesage/example_data/graph_data.txt delete mode 100644 examples/text_graph/erniesage/example_data/train_data.txt delete mode 100644 examples/text_graph/erniesage/link_prediction.py delete mode 100644 examples/text_graph/erniesage/models/conv.py delete mode 100644 examples/text_graph/erniesage/models/encoder.py delete mode 100644 examples/text_graph/erniesage/models/loss.py delete mode 100755 examples/text_graph/erniesage/models/model.py delete mode 100644 examples/text_graph/erniesage/preprocessing/dump_graph.py delete mode 100644 examples/text_to_knowledge/README.md delete mode 100644 examples/text_to_knowledge/doc/img/ernie_ctm_inputs.png delete mode 100644 examples/text_to_knowledge/doc/img/ernie_ctm_model.png delete mode 100644 examples/text_to_knowledge/doc/img/text_to_knowledge.png delete mode 100644 examples/text_to_knowledge/doc/img/text_to_knowledge_example.png delete mode 100644 examples/text_to_knowledge/doc/img/wordtag_example.png delete mode 100644 examples/text_to_knowledge/doc/img/wordtag_model.png delete mode 100644 examples/text_to_knowledge/ernie-ctm/README.md delete mode 100644 examples/text_to_knowledge/ernie-ctm/data_process.py delete mode 100644 examples/text_to_knowledge/ernie-ctm/metric.py delete mode 100644 examples/text_to_knowledge/ernie-ctm/predict.py delete mode 100644 examples/text_to_knowledge/ernie-ctm/train.py delete mode 100644 examples/text_to_knowledge/ernie-ctm/utils.py delete mode 100644 examples/text_to_knowledge/nptag/README.md delete mode 100644 examples/text_to_knowledge/nptag/data.py delete mode 100644 examples/text_to_knowledge/nptag/deploy/python/predict.py delete mode 100644 examples/text_to_knowledge/nptag/export_model.py delete mode 100644 examples/text_to_knowledge/nptag/metric.py delete mode 100644 examples/text_to_knowledge/nptag/predict.py delete mode 100644 examples/text_to_knowledge/nptag/train.py delete mode 100644 examples/text_to_knowledge/nptag/utils.py delete mode 100644 examples/text_to_knowledge/termtree/README.md delete mode 100644 examples/text_to_knowledge/termtree/termtree.py delete mode 100644 examples/text_to_knowledge/termtree/termtree_type.csv delete mode 100644 examples/text_to_knowledge/wordtag-ie/README.md delete mode 100644 examples/text_to_knowledge/wordtag-ie/demo_config.json delete mode 100644 examples/text_to_knowledge/wordtag/README.md delete mode 100644 examples/text_to_knowledge/wordtag/predict.py rename {examples => legacy/examples}/benchmark/ceval/README.md (100%) rename {examples => legacy/examples}/benchmark/ceval/eval.py (100%) rename {examples => legacy/examples}/benchmark/ceval/evaluator.py (100%) rename {examples => legacy/examples}/benchmark/ceval/model_evaluator.py (100%) rename {examples => legacy/examples}/benchmark/ceval/subject_mapping.json (100%) rename {examples => legacy/examples}/benchmark/clue/README.md (100%) rename {examples => legacy/examples}/benchmark/clue/classification/run_clue_classifier.py (100%) rename {examples => legacy/examples}/benchmark/clue/classification/run_clue_classifier_trainer.py (100%) rename {examples => legacy/examples}/benchmark/clue/grid_search_tools/draw_pic.py (100%) rename {examples => legacy/examples}/benchmark/clue/grid_search_tools/extract_result.sh (100%) rename {examples => legacy/examples}/benchmark/clue/grid_search_tools/grid_search.py (100%) rename {examples => legacy/examples}/benchmark/clue/grid_search_tools/run_cls.sh (100%) rename {examples => legacy/examples}/benchmark/clue/grid_search_tools/run_mrc.sh (100%) rename {examples => legacy/examples}/benchmark/clue/grid_search_tools/warmup_dataset_and_model.py (100%) rename {examples => legacy/examples}/benchmark/clue/mrc/run_c3.py (100%) rename {examples => legacy/examples}/benchmark/clue/mrc/run_chid.py (100%) rename {examples => legacy/examples}/benchmark/clue/mrc/run_cmrc2018.py (100%) rename {examples => legacy/examples}/benchmark/glue/README.md (100%) rename {examples => legacy/examples}/benchmark/glue/run_glue.py (100%) rename {examples => legacy/examples}/benchmark/glue/run_glue_trainer.py (100%) rename {examples => legacy/examples}/benchmark/peft/README.md (100%) rename {examples => legacy/examples}/benchmark/peft/paddle/benchmark.py (100%) rename {examples => legacy/examples}/benchmark/peft/paddle/inference_benchmark.py (100%) rename {examples => legacy/examples}/benchmark/peft/paddle/utils.py (100%) rename {examples => legacy/examples}/benchmark/peft/torch/benchmark.py (100%) rename {examples => legacy/examples}/benchmark/peft/torch/ds_config_stage2.json (100%) rename {examples => legacy/examples}/benchmark/peft/torch/ds_config_stage3.json (100%) rename {examples => legacy/examples}/benchmark/peft/torch/inference_benchmark.py (100%) rename {examples => legacy/examples}/benchmark/peft/torch/requirements.txt (100%) rename {examples => legacy/examples}/benchmark/peft/torch/utils.py (100%) rename {examples => legacy/examples}/benchmark/wiki_lambada/README.md (100%) rename {examples => legacy/examples}/benchmark/wiki_lambada/eval.py (100%) rename examples/dialogue/dgu/README.md => legacy/examples/dialogue/README_DGU.md (100%) rename examples/dialogue/lic2021_baseline/README.md => legacy/examples/dialogue/README_LIC2021.md (100%) rename examples/dialogue/plato-2/README.md => legacy/examples/dialogue/README_PLATO-2.md (100%) create mode 100644 legacy/examples/dialogue/README_PLATO-XL.md rename examples/dialogue/unified_transformer/README.md => legacy/examples/dialogue/README_UnifiedTransformer.md (100%) rename {examples => legacy/examples}/few_shot/README.md (100%) rename {examples => legacy/examples}/information_extraction/DuEE/README.md (100%) rename {examples => legacy/examples}/information_extraction/DuEE/classifier.py (100%) rename {examples => legacy/examples}/information_extraction/DuEE/duee_1_data_prepare.py (100%) rename {examples => legacy/examples}/information_extraction/DuEE/duee_1_postprocess.py (100%) rename {examples => legacy/examples}/information_extraction/DuEE/duee_fin_data_prepare.py (100%) rename {examples => legacy/examples}/information_extraction/DuEE/duee_fin_postprocess.py (100%) rename {examples => legacy/examples}/information_extraction/DuEE/pictures/DuEE-Fin/ee.png (100%) rename {examples => legacy/examples}/information_extraction/DuEE/pictures/DuEE-Fin/enum_model.png (100%) rename {examples => legacy/examples}/information_extraction/DuEE/pictures/DuEE-Fin/role_model.png (100%) rename {examples => legacy/examples}/information_extraction/DuEE/pictures/DuEE-Fin/trigger_model.png (100%) rename {examples => legacy/examples}/information_extraction/DuEE/run_classifier.sh (77%) rename {examples => legacy/examples}/information_extraction/DuEE/run_duee_1.sh (78%) rename {examples => legacy/examples}/information_extraction/DuEE/run_duee_fin.sh (82%) rename {examples => legacy/examples}/information_extraction/DuEE/run_sequence_labeling.sh (76%) rename {examples => legacy/examples}/information_extraction/DuEE/sequence_labeling.py (100%) rename {examples => legacy/examples}/information_extraction/DuEE/utils.py (100%) rename {examples => legacy/examples}/information_extraction/DuIE/README.md (100%) rename {examples => legacy/examples}/information_extraction/DuIE/data/id2spo.json (100%) rename {examples => legacy/examples}/information_extraction/DuIE/data/predicate2id.json (100%) rename {examples => legacy/examples}/information_extraction/DuIE/data_loader.py (100%) rename {examples => legacy/examples}/information_extraction/DuIE/extract_chinese_and_punct.py (100%) rename {examples => legacy/examples}/information_extraction/DuIE/images/tagging_strategy.png (100%) rename examples/text_graph/erniesage/data/__init__.py => legacy/examples/information_extraction/DuIE/predict.sh (58%) rename {examples => legacy/examples}/information_extraction/DuIE/re_official_evaluation.py (100%) rename {examples => legacy/examples}/information_extraction/DuIE/run_duie.py (100%) rename {examples => legacy/examples}/information_extraction/DuIE/train.sh (51%) rename {examples => legacy/examples}/information_extraction/DuIE/utils.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/README.md (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/config/multi-task-duuie.yaml (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/inference.py (98%) rename {examples => legacy/examples}/information_extraction/DuUIE/process_data.py (99%) rename {examples => legacy/examples}/information_extraction/DuUIE/requirements.txt (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/run_seq2struct.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/__init__.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/evaluation/__init__.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/evaluation/constants.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/evaluation/scorer.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/evaluation/sel2record.py (99%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/seq2struct/__init__.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/seq2struct/data_collator.py (100%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/seq2struct/t5_bert_tokenizer.py (99%) rename {examples => legacy/examples}/information_extraction/DuUIE/uie/seq2struct/utils.py (100%) rename {examples => legacy/examples}/information_extraction/msra_ner/README.md (100%) rename {examples => legacy/examples}/information_extraction/msra_ner/eval.py (100%) rename {examples => legacy/examples}/information_extraction/msra_ner/predict.py (100%) rename {examples => legacy/examples}/information_extraction/msra_ner/train.py (100%) rename {examples => legacy/examples}/machine_reading_comprehension/DuReader-robust/README.md (100%) rename {examples => legacy/examples}/machine_reading_comprehension/DuReader-robust/args.py (100%) rename {examples => legacy/examples}/machine_reading_comprehension/DuReader-robust/run_du.py (100%) rename {examples => legacy/examples}/machine_reading_comprehension/DuReader-yesno/README.md (100%) rename {examples => legacy/examples}/machine_reading_comprehension/DuReader-yesno/args.py (81%) rename {examples => legacy/examples}/machine_reading_comprehension/DuReader-yesno/run_du.py (100%) rename {examples => legacy/examples}/machine_reading_comprehension/SQuAD/README.md (100%) rename {examples => legacy/examples}/machine_reading_comprehension/SQuAD/args.py (100%) rename {examples => legacy/examples}/machine_reading_comprehension/SQuAD/deploy/python/predict.py (100%) rename {examples => legacy/examples}/machine_reading_comprehension/SQuAD/export_model.py (99%) rename {examples => legacy/examples}/machine_reading_comprehension/SQuAD/run_squad.py (100%) rename {examples => legacy/examples}/machine_translation/README.md (100%) rename {examples => legacy/examples}/machine_translation/preprocessor/prepare-iwslt14.sh (100%) rename {examples => legacy/examples}/machine_translation/preprocessor/prepare-wmt14en2de.sh (100%) rename {examples => legacy/examples}/machine_translation/preprocessor/prepare-wmt14en2fr.sh (100%) rename {examples => legacy/examples}/machine_translation/preprocessor/preprocessor.py (100%) rename {examples => legacy/examples}/machine_translation/requirements.txt (100%) rename {examples => legacy/examples}/machine_translation/transformer/README.md (100%) rename {examples => legacy/examples}/machine_translation/transformer/configs/transformer.base.yaml (100%) rename {examples => legacy/examples}/machine_translation/transformer/configs/transformer.big.yaml (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/cpp/CMakeLists.txt (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/cpp/README.md (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/cpp/helper.h (69%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/cpp/run.sh (56%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/cpp/run_impl.sh (50%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/cpp/transformer_e2e.cc (93%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/python/README.md (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/python/benchmark.sh (64%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/python/inference.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/python/tls/benchmark_utils.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/python/tls/recorder.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/README.md (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/benchmark.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/benchmark_serving.sh (71%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/export_serving_model.py (56%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/transformer_reader.py (73%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/transformer_web_client.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/transformer_web_server.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/deploy/serving/utils/recorder.py (67%) rename {examples => legacy/examples}/machine_translation/transformer/export_model.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/fast_transformer/README.md (100%) rename {examples => legacy/examples}/machine_translation/transformer/fast_transformer/encoder_decoding_predict.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/fast_transformer/export_model.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/images/multi_head_attention.png (100%) rename {examples => legacy/examples}/machine_translation/transformer/images/transformer_network.png (100%) rename {examples => legacy/examples}/machine_translation/transformer/predict.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/reader.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/static/predict.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/static/train.py (100%) create mode 100644 legacy/examples/machine_translation/transformer/tls/distributed_utils.py rename {examples => legacy/examples}/machine_translation/transformer/tls/record.py (50%) rename {examples => legacy/examples}/machine_translation/transformer/tls/to_static.py (100%) rename {examples => legacy/examples}/machine_translation/transformer/train.py (100%) rename {examples => legacy/examples}/model_compression/minilmv2/README.md (100%) rename {examples => legacy/examples}/model_compression/minilmv2/general_distill.py (100%) rename {examples => legacy/examples}/model_compression/minilmv2/run_clue.py (100%) rename {examples => legacy/examples}/model_compression/ofa/README.md (100%) rename {examples => legacy/examples}/model_compression/ofa/export_model.py (100%) rename {examples => legacy/examples}/model_compression/ofa/imgs/ofa_bert.jpg (100%) rename {examples => legacy/examples}/model_compression/ofa/run_glue_ofa.py (100%) rename {examples => legacy/examples}/model_compression/ofa/run_glue_ofa_depth.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/README.md (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/data.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/python/infer.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/python/infer_all.sh (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/python/infer_perf.sh (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/serving/README.md (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/serving/config_nlp.yml (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/serving/export_to_serving.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/serving/rpc_client.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/deploy/serving/web_service.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/finetuning/export_model.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/finetuning/run_all_search.sh (68%) rename {examples => legacy/examples}/model_compression/pp-minilm/finetuning/run_clue.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/finetuning/run_clue.sh (50%) rename {examples => legacy/examples}/model_compression/pp-minilm/finetuning/run_one_search.sh (68%) rename {examples => legacy/examples}/model_compression/pp-minilm/general_distill/README.md (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/general_distill/general_distill.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/general_distill/run.sh (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/pp-minilm.png (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/pruning/export.sh (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/pruning/export_all.sh (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/pruning/export_model.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/pruning/prune.py (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/pruning/prune.sh (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/quantization/quant_all.sh (100%) rename {examples => legacy/examples}/model_compression/pp-minilm/quantization/quant_post.py (100%) rename {examples => legacy/examples}/question_generation/README.md (100%) rename {examples => legacy/examples}/question_generation/t5/README.md (100%) rename {examples => legacy/examples}/question_generation/t5/predict.py (100%) rename {examples => legacy/examples}/question_generation/t5/requirements.txt (100%) rename {examples => legacy/examples}/question_generation/t5/train.py (100%) rename {examples => legacy/examples}/question_generation/t5/utils.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/README.md (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_inference/README.md (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_inference/infer_utils.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_inference/inference.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_serving/README.md (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_serving/config.yml (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_serving/infer_utils.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_serving/pipeline_client.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/deploy/paddle_serving/pipeline_service.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/export_model.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/gen_utils.py (99%) rename {examples => legacy/examples}/question_generation/unimo-text/predict.py (100%) rename {examples => legacy/examples}/question_generation/unimo-text/requirements.txt (100%) rename {examples => legacy/examples}/question_generation/unimo-text/train.py (100%) rename {examples => legacy/examples}/semantic_indexing/NQdataset.py (98%) rename {examples => legacy/examples}/semantic_indexing/README.md (100%) rename {examples => legacy/examples}/semantic_indexing/README_gradient_cache.md (100%) rename {examples => legacy/examples}/semantic_indexing/ance/model.py (100%) rename {examples => legacy/examples}/semantic_indexing/ann_util.py (99%) rename {examples => legacy/examples}/semantic_indexing/base_model.py (100%) rename {examples => legacy/examples}/semantic_indexing/batch_negative/model.py (94%) rename {examples => legacy/examples}/semantic_indexing/biencoder_base_model.py (100%) rename {examples => legacy/examples}/semantic_indexing/data.py (94%) rename {examples => legacy/examples}/semantic_indexing/dense_retriever.py (100%) rename {examples => legacy/examples}/semantic_indexing/evaluate.py (95%) rename {examples => legacy/examples}/semantic_indexing/faiss_indexer.py (97%) rename {examples => legacy/examples}/semantic_indexing/fast_predict.py (100%) rename {examples => legacy/examples}/semantic_indexing/generate_dense_embeddings.py (100%) rename {examples => legacy/examples}/semantic_indexing/gradient_cache/model.py (96%) rename {examples => legacy/examples}/semantic_indexing/hardest_negative/model.py (89%) rename {examples => legacy/examples}/semantic_indexing/predict.py (98%) rename {examples => legacy/examples}/semantic_indexing/qa_validation.py (97%) rename {examples => legacy/examples}/semantic_indexing/recall.py (100%) rename {examples => legacy/examples}/semantic_indexing/requirements.txt (100%) rename {examples => legacy/examples}/semantic_indexing/run_ann_data_gen.py (100%) rename {examples => legacy/examples}/semantic_indexing/tokenizers.py (100%) rename {examples => legacy/examples}/semantic_indexing/train_ance.py (100%) rename {examples => legacy/examples}/semantic_indexing/train_batch_neg.py (100%) rename {examples => legacy/examples}/semantic_indexing/train_gradient_cache.py (100%) rename {examples => legacy/examples}/semantic_indexing/train_gradient_cache_DPR.py (100%) rename {examples => legacy/examples}/semantic_indexing/train_hardest_neg.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/README.md (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/deploy/python/predict.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/export_model.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/predict_aspect.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/predict_opinion.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/predict_sentence.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/train_aspect.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/train_opinion.py (100%) rename {examples => legacy/examples}/sentiment_analysis/skep/train_sentence.py (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/README.md (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/config/transformer.yaml (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/README.md (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/README_ai.md (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/const.py (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/demo.py (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/paddlenlp.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/speech_demo_show.gif (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step1.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step2.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step3.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step4.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step5.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step6.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step7.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/step8.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/images/text_demo_show.gif (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/model_demo.py (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/requirements.txt (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/demo/transformer_demo.yaml (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/images/STACL_architecture.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/images/example.png (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/model.py (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/predict.py (99%) rename {examples => legacy/examples}/simultaneous_translation/stacl/reader.py (99%) rename {examples => legacy/examples}/simultaneous_translation/stacl/requirements.txt (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/train.py (99%) rename {examples/text_graph/erniesage/models => legacy/examples/simultaneous_translation/stacl/utils}/__init__.py (80%) rename {examples => legacy/examples}/simultaneous_translation/stacl/utils/record.py (100%) rename {examples => legacy/examples}/simultaneous_translation/stacl/utils/tokenizer.py (100%) rename {examples => legacy/examples}/torch_migration/README.md (100%) rename {examples => legacy/examples}/torch_migration/docs/ThesisReproduction_NLP.md (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step1/README.md (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step1/check_step1.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step1/pd_forward_bert.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step1/pt_forward_bert.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step1/torch2paddle.py (99%) rename {examples => legacy/examples}/torch_migration/pipeline/Step2/README.md (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step2/accuracy.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step2/check_step2.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step2/demo_sst2_sentence/demo.tsv (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step2/predict.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step2/test_data.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step2/test_metric.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step3/README.md (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step3/check_step3.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step3/paddle_loss.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step3/torch_loss.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step4/README.md (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step4/check_step4.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step4/test_bp.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step4/test_lr_scheduler.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/README.md (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_paddle/train.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_paddle/train.sh (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_paddle/utils.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_torch/accuracy.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_torch/glue.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_torch/train.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_torch/train.sh (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/bert_torch/utils.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/Step5/check_step5.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/classifier_weights/generate_classifier_weights.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/fake_data/gen_fake_data.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/models/pd_bert.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/models/pt_bert.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/reprod_log_demo/check_log_diff.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/reprod_log_demo/write_log.py (100%) rename {examples => legacy/examples}/torch_migration/pipeline/weights/torch2paddle.py (99%) rename {examples => legacy/examples}/torch_migration/pipeline/weights/torch_bert_weight.py (100%) rename {examples => legacy/examples}/torch_migration/requirements.txt (100%) diff --git a/examples/code_generation/codegen/README.md b/examples/code_generation/codegen/README.md deleted file mode 100644 index 6ef14f5bcbc8..000000000000 --- a/examples/code_generation/codegen/README.md +++ /dev/null @@ -1,326 +0,0 @@ -# 代码生成:写代码的AI助理 - -**目录** -- [代码生成](#代码生成) - - [简介](#简介) - - [特色](#特色) - - [效果展示](#效果展示) - - [Github Copilot插件配置](#GithubCopilot插件配置) - - [环境依赖](#环境依赖) - - [代码结构说明](#代码结构说明) - - [启动服务](#启动服务) - - [配置参数](#配置参数说明) - - [测试服务](#测试服务) - - [配置插件](#配置插件) - - [注意事项](#注意事项) - - [训练定制](#训练定制) - - [数据准备](#数据准备) - - [从本地文件创建数据集](#从本地文件创建数据集) - - [模型训练](#模型训练) - - [TaskFlow调用](#TaskFlow调用) - - [更多使用案例](#更多使用案例) - - [模型列表](#模型列表) - - [References](#references) - - -## 简介 -代码生成是根据编程人员的输入,生成出编程人员想要的代码,能够帮助编程人员甚至独立生成代码,提高编程效率。 - - -### 特色 - -本项目是基于预训练语言模型CodeGen的代码生成,具有以下优势: -- **效果领先**。CodeGen(16B)在HumanEval benchmark上评估指标已经超过[OpenAI's Codex](https://arxiv.org/pdf/2107.03374.pdf)。 -- **免费的Github Copilot**。支持通过Github Copilot调用该模型,让你免费体验代码AI助理。 -- **高性能**。基于[FastGeneration](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/fast_generation)打造高性能推理,毫秒级响应。具体加速指标可参考[perf](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/fast_generation/README.md)。 -- **支持自定义数据集训练**。可增加自己的代码数据加以微调,让其更智能。 -- **开箱即用**。本项目提供TaskFlow接口,无需训练,仅需几行代码便可预测。 - - -## 效果展示 - -- Github Copilot代码提示效果展示 -

-
-

- -- 解算法题效果展示。求解无重复字符的最长子串的长度 -```python -from paddlenlp import Taskflow - -prompt = "def lengthOfLongestSubstring(self, s: str) -> int:" -codegen = Taskflow("code_generation", model="Salesforce/codegen-2B-mono",decode_strategy="greedy_search", repetition_penalty=1.0) -print(codegen(prompt)) -``` -结果输出为: -```python - if not s: - return 0 - - start = 0 - end = 0 - max_len = 0 - - while end < len(s): - if s[end] not in s[start:end]: - max_len = max(max_len, end - start + 1) - end += 1 - else: - start += 1 - - return max_len -``` -

-
-

- - -## Jupyter Lab插件配置 - -请参考[codegenJupyterLabExt](https://github.com/chenqianhe/codegenJupyterLabExt), 感谢生态开发者[@chenqianhe](https://github.com/chenqianhe)的贡献!👏👏 - -## GithubCopilot插件配置 - -**以VS Code的插件为例** - -### 环境依赖 -- PaddleNLP >= 2.4.0 -- PaddlePaddle >= 2.3.1 - -其他依赖:`pip install -r requirements.txt` - -### 代码结构说明 - -以下是本项目主要代码结构及说明: - -```text -codegen/ -├── requirements.txt # 环境依赖 -├── codegen_server.py # server启动脚本 -├── run_clm.py # 训练评估脚本 -├── run_clm.sh # 启动脚本 -└── README.md # 说明文档 -``` - -### 启动服务 - -```python -python codegen_server.py -``` - -##### 配置参数说明 -在codegen_server.py中配置如下参数: -- `model_name_or_path`:模型名,默认为 "Salesforce/codegen-350M-mono" -- `device`:运行设备,默认为"gpu" -- `temperature`:解码参数temperature,默认为0.5 -- `top_k`:解码参数top_k,默认为10 -- `top_p`:解码参数top_p,默认为1.0 -- `repetition_penalty`:解码重复惩罚项,默认为1.0 -- `min_length`:生成的最小长度,默认为0 -- `max_length`:生成的最大长度,默认为16 -- `decode_strategy`:解码策略,默认为"greedy_search" -- `use_fast`:是否使用FastGeneration,可加速推理,默认为True -- `use_fp16_decoding`:是否使用fp16推理,可节省显存和加速推理,默认为True - -### 测试服务 -```python -import openai -openai.api_key = 'dummy' -openai.api_base = 'http://127.0.0.1:8978' -result = openai.Completion.create( - engine='codegen', prompt='def hello', max_tokens=16, temperature=0.1) -print(result) -''' - JSON: { - "id": "cmpl-dmhoeHmcw9DJ4NeqOJDQVKv3iivJ0", - "choices": [ - { - "text": "_world():\n print(\"Hello World!\")\n\n\n#", - "index": 0, - "finish_reason": "stop", - "logprobs": null, - } - ], - "usage": { - "completion_tokens": null, - "prompt_tokens": null, - "total_tokens": null - } -} -''' -``` -**注意**:如果要从本地访问服务器,`127.0.0.1`需要换成服务器的对外IP。 - - -### 配置插件 -打开用户设置([settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settings-file-locations)),增加一行配置 -```json - "github.copilot.advanced": { - "debug.overrideEngine": "codegen", - "debug.testOverrideProxyUrl": "http://127.0.0.1:8978", - "debug.overrideProxyUrl": "http://127.0.0.1:8978" - }, -``` -接下来就可以愉快地使用了😊。 - - -#### 注意事项 -- 如果使用FastGeneration,需要设置[codegen_server.py](#配置参数说明)中`use_fast=True`,第一次推理会涉及到编译,会耗费一些时间。FastGeneration的环境依赖参考[这里](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/paddlenlp/ops/README.md#%E4%BD%BF%E7%94%A8%E7%8E%AF%E5%A2%83%E8%AF%B4%E6%98%8E)。 -- 如果要使用自己训练好的模型,可以设置[codegen_server.py](#配置参数说明)中`model_name_or_path`为本地模型路径。 -- 如果要从本地访问服务器,上述的`127.0.0.1`需要换成服务器的对外IP。 -- 如果出现下方的提示和报错,则说明FastGeneration没有启动成功,需要定位下失败的原因。或者也可设置`use_fast=False`,不启动FastGeneration加速,但推理速度会较慢。 -```shell - FastGeneration is not available, and the original version would be used instead. -``` -```shell - RuntimeError: (NotFound) There are no kernels which are registered in the unsqueeze2 operator. - [Hint: Expected kernels_iter != all_op_kernels.end(), but received kernels_iter == all_op_kernels.end().] (at /home/Paddle/paddle/fluid/imperative/prepared_operator.cc:341) - [operator < unsqueeze2 > error] -``` -- 本代码也支持插件[fauxpilot](https://marketplace.visualstudio.com/items?itemName=Venthe.fauxpilot),感谢[@linonetwo](https://github.com/linonetwo)测试。`settings.json`中配置"fauxpilot.server": "http://服务器ip:8978/v1/engines" - -## 训练定制 - -### 数据准备 - -#### 从本地文件创建数据集 - -在许多情况,我们需要使用本地数据集来训练我们的代码生成模型,本项目支持使用固定格式本地数据集文件进行训练。 - -本地数据集文件格式如下: -- train.json/test.json 文件格式: -每行为一个jsonline -```text -{ - "code": "from paddlenlp.transformers import CodeGenForCausalLM\n\n\nmodel = CodeGenForCausalLM.from_pretrained('Salesforce/codegen-2B-mono')\n" -} -``` - -更多数据集读取格式详见[数据集加载](https://paddlenlp.readthedocs.io/zh/latest/data_prepare/dataset_load.html#)和[自定义数据集](https://paddlenlp.readthedocs.io/zh/latest/data_prepare/dataset_self_defined.html)。 - - -### 模型训练 -运行如下命令即可在样例训练集上进行finetune,并在样例验证集上进行验证。 - -```shell -# GPU启动,参数`--gpus`指定训练所用的GPU卡号,可以是单卡,也可以多卡 -unset CUDA_VISIBLE_DEVICES - -python -m paddle.distributed.launch --gpus 0,1 run_clm.py \ - --model_name_or_path Salesforce/codegen-350M-mono \ - --block_size 1024 \ - --output_dir output \ - --train_file train.json \ - --validation_file test.json \ - --num_train_epochs 5 \ - --logging_steps 10 \ - --save_steps 1000 \ - --per_device_train_batch_size 2 \ - --per_device_eval_batch_size 2 \ - --learning_rate 1e-4 \ - --warmup_ratio 0.1 \ - --do_train \ - --do_eval \ - --device gpu -``` -使用多卡训练可以指定多个GPU卡号,例如 --gpus "0,1" - -关键参数释义如下: -- `gpus` 指示了训练所用的GPU卡号。 -- `model_name_or_path` 指示了finetune使用的具体预训练模型,可以是PaddleNLP提供的预训练模型(详见[模型列表](#模型列表)),或者是本地的预训练模型。如果使用本地的预训练模型,可以配置本地模型的目录地址,例如: ./checkpoints/model_xx/,目录中需包含paddle预训练模型model_state.pdparams。如果使用PaddleNLP提供的预训练模型,可以选择下面其中之一。 -- `block_size` 表示训练时候数据被拆分的块数。 -- `output_dir` 表示模型的保存路径。 -- `train_file` 本地训练数据地址,数据格式必须与`dataset_name`所指数据集格式相同。 -- `validation_file` 本地测试数据地址,数据格式必须与`dataset_name`所指数据集格式相同。 -- `num_train_epochs` 表示训练轮数。 -- `logging_steps` 表示日志打印间隔。 -- `save_steps` 表示模型保存及评估间隔。 -- `per_device_train_batch_size` 表示训练时**每张卡**上的样本数目。 -- `per_device_eval_batch_size` 表示测试时**每张卡**上的样本数目。 -- `learning_rate` 表示基础学习率大小,将于learning rate scheduler产生的值相乘作为当前学习率。 -- `warmup_ratio` 表示学习率逐渐升高到基础学习率(即上面配置的learning_rate)所需要的迭代数占总步数的比例,最早的使用可以参考[这篇论文](https://arxiv.org/pdf/1706.02677.pdf)。 -- `do_train` 表示是否训练。 -- `do_eval` 表示是否评测。 -- `device` 表示使用的设备,从gpu和cpu中选择。 - -可通过`bash run_clm.sh`启动训练,更多参数详情和参数的默认值请参考`run_clm.py`。 - -程序运行时将会自动进行训练和验证,训练过程中会自动保存模型在指定的`save_dir`中。 -如: -```text -./output/ -│── model_config.json -│── model_state.pdparams -│── tokenizer_config.json -│── special_tokens_map.json -│── added_tokens.json -│── vocab.json -│── merges.txt -└── ... -``` - -**NOTE:** 如需恢复模型训练,`model_name_or_path`配置本地模型的目录地址即可。 - - -## TaskFlow调用 -参考[TaskFlow文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/model_zoo/taskflow.md) - -## 更多使用案例 - -- 根据注释/功能描述写代码 - -```python -import re -import paddle -from paddlenlp.transformers import CodeGenTokenizer, CodeGenForCausalLM - -# The supported models are shown in the following table -model_name = 'Salesforce/codegen-2B-mono' -# Init tokenizer -tokenizer = CodeGenTokenizer.from_pretrained(model_name) -# Init model -model = CodeGenForCausalLM.from_pretrained(model_name) - -prompt = "# this function prints hello world" -inputs = tokenizer([prompt]) -inputs = {k: paddle.to_tensor(v) for (k, v) in inputs.items()} -# Generate -output, score = model.generate(inputs['input_ids'], - max_length=128, - decode_strategy='greedy_search') -# Decode the result -print( - tokenizer.decode(output[0], - truncate_before_pattern=[r"\n\n^#", "^'''", "\n\n\n"], - skip_special_tokens=True, - spaces_between_special_tokens=False)) -``` -结果输出为: -```python -def hello_world(): - print("Hello World") - -hello_world() -``` - -## 模型列表 -模型列表 -| 模型名称 | 说明 | -| :--------------------------------- | -------------------------------- | -| Salesforce/codegen-350M-mono | 基于Python数据集BIGPYTHON训练 | -| Salesforce/codegen-2B-mono | 基于Python数据集BIGPYTHON训练 | -| Salesforce/codegen-6B-mono | 基于Python数据集BIGPYTHON训练 | -| Salesforce/codegen-16B-mono | 基于Python数据集BIGPYTHON训练 | -| Salesforce/codegen-350M-nl | 基于自然语言数据集THEPILE训练 | -| Salesforce/codegen-2B-nl | 基于自然语言数据集THEPILE训练 | -| Salesforce/codegen-6B-nl | 基于自然语言数据集THEPILE训练 | -| Salesforce/codegen-16B-nl | 基于自然语言数据集THEPILE训练 | -| Salesforce/codegen-350M-multi | 基于多编程语言数据集BIGQUERY训练 | -| Salesforce/codegen-2B-multi | 基于多编程语言数据集BIGQUERY训练 | -| Salesforce/codegen-6B-multi | 基于多编程语言数据集BIGQUERY训练 | -| Salesforce/codegen-16B-multi | 基于多编程语言数据集BIGQUERY训练 | - -## References -- Nijkamp, Erik, et al. "A conversational paradigm for program synthesis." arXiv preprint arXiv:2203.13474 (2022). -- [https://github.com/features/copilot/](https://github.com/features/copilot/) -- [https://github.com/AndPuQing/Papilot](https://github.com/AndPuQing/Papilot) diff --git a/examples/code_generation/codegen/codegen_server.py b/examples/code_generation/codegen/codegen_server.py deleted file mode 100644 index e0c246063bf9..000000000000 --- a/examples/code_generation/codegen/codegen_server.py +++ /dev/null @@ -1,137 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import random -import string -import time - -import paddle -import uvicorn -from fastapi import FastAPI, Response, status -from pydantic import BaseModel -from sse_starlette.sse import EventSourceResponse - -from paddlenlp.transformers import CodeGenForCausalLM, CodeGenTokenizer -from paddlenlp.utils.log import logger - - -class DefaultConfig: - model_name_or_path = "Salesforce/codegen-350M-mono" - device = "gpu" - temperature = 0.5 - top_k = 10 - top_p = 1.0 - repetition_penalty = 1.0 - min_length = 0 - max_length = 16 - decode_strategy = "greedy_search" - use_faster = True - use_fp16_decoding = True - default_dtype = "float16" if use_faster and use_fp16_decoding else "float32" - - -class Input(BaseModel): - prompt: str - stream: bool = False - - -class Output(BaseModel): - id: str - model: str = "codegen" - object: str = "text_completion" - created: int = int(time.time()) - choices: list = None - usage = { - "completion_tokens": None, - "prompt_tokens": None, - "total_tokens": None, - } - - -generate_config = DefaultConfig() -paddle.set_device(generate_config.device) -paddle.set_default_dtype(generate_config.default_dtype) - -tokenizer = CodeGenTokenizer.from_pretrained(generate_config.model_name_or_path) -model = CodeGenForCausalLM.from_pretrained(generate_config.model_name_or_path) - -app = FastAPI() - - -def random_completion_id(): - return "cmpl-" + "".join(random.choice(string.ascii_letters + string.digits) for _ in range(29)) - - -@app.post("/v1/engines/codegen/completions", status_code=200) -async def gen(item: Input): - item = item.dict() - logger.info(f"Request: {item}") - temperature = item.get("temperature", generate_config.temperature) - top_k = item.get("top_k", generate_config.top_k) - if temperature == 0.0: - temperature = 1.0 - top_k = 1 - repetition_penalty = item.get("frequency_penalty", generate_config.repetition_penalty) - - start_time = time.time() - logger.info("Start generating code") - tokenized = tokenizer([item["prompt"]], truncation=True, return_tensors="pd") - output, _ = model.generate( - tokenized["input_ids"], - max_length=16, - min_length=generate_config.min_length, - decode_strategy=generate_config.decode_strategy, - top_k=top_k, - repetition_penalty=repetition_penalty, - temperature=temperature, - use_fast=generate_config.use_faster, - use_fp16_decoding=generate_config.use_fp16_decoding, - ) - logger.info("Finish generating code") - end_time = time.time() - logger.info(f"Time cost: {end_time - start_time}") - output = tokenizer.decode(output[0], skip_special_tokens=True) - logger.info(f"Generated code: {output}") - output_json = Output( - id=random_completion_id(), - choices=[ - { - "text": output, - "index": 0, - "finish_reason": "stop", - "logprobs": None, - } - ], - usage={ - "completion_tokens": None, - "prompt_tokens": None, - "total_tokens": None, - }, - ).json() - - def stream_response(response): - yield f"{response}\n\n" - yield "data: [DONE]\n\n" - - if item.get("stream", False): - return EventSourceResponse(stream_response(output_json)) - else: - return Response( - status_code=status.HTTP_200_OK, - content=output_json, - media_type="application/json", - ) - - -if __name__ == "__main__": - uvicorn.run("codegen_server:app", host="0.0.0.0", port=8978) diff --git a/examples/code_generation/codegen/requirements.txt b/examples/code_generation/codegen/requirements.txt deleted file mode 100644 index ae00f4799fa1..000000000000 --- a/examples/code_generation/codegen/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -fastapi==0.79.0 -pydantic==1.9.1 -python-dotenv==0.20.0 -sse_starlette==0.10.3 -uvicorn==0.17.6 -openai==0.8.0 -regex==2022.6.2 \ No newline at end of file diff --git a/examples/code_generation/codegen/run_clm.py b/examples/code_generation/codegen/run_clm.py deleted file mode 100644 index 4e9d5668763f..000000000000 --- a/examples/code_generation/codegen/run_clm.py +++ /dev/null @@ -1,162 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import math -from dataclasses import dataclass, field -from functools import partial -from itertools import chain -from typing import Optional - -import paddle -import paddle.nn as nn -from datasets import load_dataset - -from paddlenlp.data import DataCollatorWithPadding -from paddlenlp.trainer import PdArgumentParser, Trainer, TrainingArguments, set_seed -from paddlenlp.transformers import CodeGenForCausalLM, CodeGenTokenizer -from paddlenlp.utils.log import logger - - -@dataclass -class ModelArguments: - model_name_or_path: Optional[str] = field( - default="Salesforce/codegen-350M-mono", - metadata={"help": ("Path to pre-trained model.")}, - ) - overwrite_cache: Optional[bool] = field( - default=False, - metadata={"help": ("Whether to overwrite cache for dataset.")}, - ) - - -@dataclass -class DataArguments: - train_file: Optional[str] = field( - default=None, - metadata={"help": "The input training data file."}, - ) - validation_file: Optional[str] = field( - default=None, - metadata={"help": "The input validation data file."}, - ) - block_size: Optional[int] = field( - default=None, - metadata={"help": ("The training dataset will be truncated in block of this size for training. ")}, - ) - - -def compute_metrics(eval_preds): - labels = paddle.to_tensor(eval_preds.label_ids, dtype="int64") - logits = paddle.to_tensor(eval_preds.predictions) - loss_fct = nn.CrossEntropyLoss() - eval_loss = loss_fct(logits[:, :-1, :], labels[:, 1:]) - perplexity = math.exp(eval_loss) - return {"perplexity": perplexity} - - -def convert_example(examples, tokenizer): - """convert examples into necessary features""" - # Convert raw text to feature - tokenized_examples = tokenizer( - examples["code"], return_attention_mask=True, return_position_ids=False, return_token_type_ids=False - ) - return tokenized_examples - - -def group_texts(examples, block_size): - concatenated_examples = {k: list(chain(*examples[k])) for k in examples.keys()} - total_length = len(concatenated_examples[list(examples.keys())[0]]) - if total_length >= block_size: - total_length = (total_length // block_size) * block_size - result = { - k: [t[i : i + block_size] for i in range(0, total_length, block_size)] - for k, t in concatenated_examples.items() - } - result["labels"] = result["input_ids"].copy() - return result - - -def process_ds(dataset, tokenizer, overwrite_cache, block_size): - trans_func = partial(convert_example, tokenizer=tokenizer) - dataset = dataset.map( - trans_func, batched=True, remove_columns=dataset.column_names, load_from_cache_file=overwrite_cache - ) - trans_func = partial(group_texts, block_size=block_size) - dataset = dataset.map(trans_func, batched=True, load_from_cache_file=overwrite_cache) - return dataset - - -def do_train(): - parser = PdArgumentParser((ModelArguments, DataArguments, TrainingArguments)) - model_args, data_args, training_args = parser.parse_args_into_dataclasses() - - paddle.set_device(training_args.device) - if paddle.distributed.get_world_size() > 1: - paddle.distributed.init_parallel_env() - - set_seed(training_args.seed) - - model = CodeGenForCausalLM.from_pretrained(model_args.model_name_or_path) - - tokenizer = CodeGenTokenizer.from_pretrained(model_args.model_name_or_path) - - train_set = load_dataset("json", data_files=data_args.train_file, split="train") - dev_set = load_dataset("json", data_files=data_args.validation_file, split="train") - - if data_args.block_size is None: - block_size = tokenizer.model_max_length - if block_size > 1024: - logger.warning( - f"The tokenizer picked seems to have a very large `model_max_length` ({tokenizer.model_max_length}). " - "Picking 1024 instead. You can change that default value by passing --block_size xxx." - ) - block_size = 1024 - else: - if data_args.block_size > tokenizer.model_max_length: - logger.warning( - f"The block_size passed ({data_args.block_size}) is larger than the maximum length for the model" - f"({tokenizer.model_max_length}). Using block_size={tokenizer.model_max_length}." - ) - block_size = min(data_args.block_size, tokenizer.model_max_length) - - train_set = process_ds(train_set, tokenizer, model_args.overwrite_cache, block_size) - dev_set = process_ds(dev_set, tokenizer, model_args.overwrite_cache, block_size) - - batchify_fn = DataCollatorWithPadding(tokenizer, return_attention_mask=True) - - trainer = Trainer( - model=model, - args=training_args, - train_dataset=train_set if training_args.do_train else None, - eval_dataset=dev_set if training_args.do_eval else None, - tokenizer=tokenizer, - data_collator=batchify_fn, - compute_metrics=compute_metrics, - ) - - if training_args.do_train: - train_results = trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - metrics = train_results.metrics - trainer.save_model() - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - if training_args.do_eval: - eval_metrics = trainer.evaluate() - trainer.log_metrics("eval", eval_metrics) - - -if __name__ == "__main__": - do_train() diff --git a/examples/code_generation/codegen/run_clm.sh b/examples/code_generation/codegen/run_clm.sh deleted file mode 100644 index 4c76ea178e3f..000000000000 --- a/examples/code_generation/codegen/run_clm.sh +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -python -m paddle.distributed.launch --gpus 0,1 run_clm.py \ - --model_name_or_path Salesforce/codegen-350M-mono \ - --block_size 1024 \ - --output_dir output \ - --train_file train.json \ - --validation_file test.json \ - --num_train_epochs 5 \ - --logging_steps 10 \ - --save_steps 1000 \ - --per_device_train_batch_size 2 \ - --per_device_eval_batch_size 2 \ - --learning_rate 1e-4 \ - --warmup_ratio 0.1 \ - --do_train \ - --do_eval \ - --device gpu diff --git a/examples/dialogue/dgu/args.py b/examples/dialogue/dgu/args.py deleted file mode 100644 index 4139474c906b..000000000000 --- a/examples/dialogue/dgu/args.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - - -# yapf: disable -def parse_args(): - parser = argparse.ArgumentParser(__doc__) - parser.add_argument("--task_name", default=None, type=str, required=True, help="The name of the task to train.") - parser.add_argument("--model_name_or_path", default='bert-base-uncased', type=str, help="Path to pre-trained bert model or shortcut name.") - parser.add_argument("--output_dir", default=None, type=str, help="The output directory where the checkpoints will be saved.") - parser.add_argument("--data_dir", default=None, type=str, help="The directory where the dataset will be load.") - parser.add_argument("--init_from_ckpt", default=None, type=str, help="The path of checkpoint to be loaded.") - parser.add_argument("--max_seq_len", default=None, type=int, help="The maximum total input sequence length after tokenization for trainng. Sequences longer than this will be truncated, sequences shorter will be padded.") - parser.add_argument("--test_max_seq_len", default=None, type=int, help="The maximum total input sequence length after tokenization for testing. Sequences longer than this will be truncated, sequences shorter will be padded.") - parser.add_argument("--batch_size", default=None, type=int, help="Batch size per GPU/CPU for training.") - parser.add_argument("--test_batch_size", default=None, type=int, help="Batch size per GPU/CPU for testing.") - parser.add_argument("--learning_rate", default=None, type=float, help="The initial learning rate for Adam.") - parser.add_argument("--weight_decay", default=0.01, type=float, help="Weight decay if we apply some.") - parser.add_argument("--epochs", default=None, type=int, help="Total number of training epochs to perform.") - parser.add_argument("--logging_steps", default=None, type=int, help="Log every X updates steps.") - parser.add_argument("--save_steps", default=None, type=int, help="Save checkpoint every X updates steps.") - parser.add_argument("--seed", default=42, type=int, help="Random seed for initialization.") - parser.add_argument("--warmup_proportion", default=0.1, type=float, help="The proportion of warmup.") - parser.add_argument("--max_grad_norm", default=1.0, type=float, help="The max value of grad norm.") - parser.add_argument("--do_train", default=True, type=eval, help="Whether training.") - parser.add_argument("--do_eval", default=True, type=eval, help="Whether evaluation.") - parser.add_argument("--do_test", default=True, type=eval, help="Whether testing.") - parser.add_argument("--device", type=str, default="gpu", help="Device for selecting for the training.") - - args = parser.parse_args() - return args -# yapf: enable - - -def set_default_args(args): - args.task_name = args.task_name.lower() - if args.task_name == "udc": - if not args.save_steps: - args.save_steps = 1000 - if not args.logging_steps: - args.logging_steps = 100 - if not args.epochs: - args.epochs = 2 - if not args.max_seq_len: - args.max_seq_len = 210 - if not args.test_batch_size: - args.test_batch_size = 100 - elif args.task_name == "dstc2": - if not args.save_steps: - args.save_steps = 400 - if not args.logging_steps: - args.logging_steps = 20 - if not args.epochs: - args.epochs = 40 - if not args.learning_rate: - args.learning_rate = 5e-5 - if not args.max_seq_len: - args.max_seq_len = 256 - if not args.test_max_seq_len: - args.test_max_seq_len = 512 - elif args.task_name == "atis_slot": - if not args.save_steps: - args.save_steps = 100 - if not args.logging_steps: - args.logging_steps = 10 - if not args.epochs: - args.epochs = 50 - elif args.task_name == "atis_intent": - if not args.save_steps: - args.save_steps = 100 - if not args.logging_steps: - args.logging_steps = 10 - if not args.epochs: - args.epochs = 20 - elif args.task_name == "mrda": - if not args.save_steps: - args.save_steps = 500 - if not args.logging_steps: - args.logging_steps = 200 - if not args.epochs: - args.epochs = 7 - elif args.task_name == "swda": - if not args.save_steps: - args.save_steps = 500 - if not args.logging_steps: - args.logging_steps = 200 - if not args.epochs: - args.epochs = 3 - else: - raise ValueError("Not support task: %s." % args.task_name) - - if not args.data_dir: - args.data_dir = "./DGU_datasets/" + args.task_name - if not args.output_dir: - args.output_dir = "./checkpoints/" + args.task_name - if not args.learning_rate: - args.learning_rate = 2e-5 - if not args.batch_size: - args.batch_size = 32 - if not args.test_batch_size: - args.test_batch_size = args.batch_size - if not args.max_seq_len: - args.max_seq_len = 128 - if not args.test_max_seq_len: - args.test_max_seq_len = args.max_seq_len diff --git a/examples/dialogue/dgu/data.py b/examples/dialogue/dgu/data.py deleted file mode 100644 index 469134f7cfc7..000000000000 --- a/examples/dialogue/dgu/data.py +++ /dev/null @@ -1,509 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import numpy as np -from typing import List - -from paddle.io import Dataset - -# The input data bigin with '[CLS]', using '[SEP]' split conversation content( -# Previous part, current part, following part, etc.). If there are multiple -# conversation in split part, using 'INNER_SEP' to further split. -INNER_SEP = "[unused0]" - - -def get_label_map(label_list): - """Create label maps""" - label_map = {} - for (i, l) in enumerate(label_list): - label_map[l] = i - return label_map - - -class UDCv1(Dataset): - """ - The UDCv1 dataset is using in task Dialogue Response Selection. - The source dataset is UDCv1(Ubuntu Dialogue Corpus v1.0). See detail at - http://dataset.cs.mcgill.ca/ubuntu-corpus-1.0/ - """ - - MAX_LEN_OF_RESPONSE = 60 - LABEL_MAP = get_label_map(["0", "1"]) - - def __init__(self, data_dir, mode="train"): - super(UDCv1, self).__init__() - self._data_dir = data_dir - self._mode = mode - self.read_data() - - def read_data(self): - if self._mode == "train": - data_path = os.path.join(self._data_dir, "train.txt") - elif self._mode == "dev": - data_path = os.path.join(self._data_dir, "dev.txt-small") - elif self._mode == "test": - data_path = os.path.join(self._data_dir, "test.txt") - self.data = [] - with open(data_path, "r", encoding="utf8") as fin: - for line in fin: - if not line: - continue - arr = line.rstrip("\n").split("\t") - if len(arr) < 3: - print("Data format error: %s" % "\t".join(arr)) - print("Data row contains at least three parts: label\tconversation1\t.....\tresponse.") - continue - label = arr[0] - text_a = arr[1:-1] - text_b = arr[-1] - self.data.append([label, text_a, text_b]) - - @classmethod - def get_label(cls, label): - return cls.LABEL_MAP[label] - - @classmethod - def num_classes(cls): - return len(cls.LABEL_MAP) - - @classmethod - def convert_example(cls, example, tokenizer, max_seq_length=512): - """Convert a glue example into necessary features.""" - - def _truncate_and_concat(text_a: List[str], text_b: str, tokenizer, max_seq_length): - tokens_b = tokenizer.tokenize(text_b) - tokens_b = tokens_b[: min(cls.MAX_LEN_OF_RESPONSE, len(tokens_b))] - tokens_a = [] - for text in text_a: - tokens_a.extend(tokenizer.tokenize(text)) - tokens_a.append(INNER_SEP) - tokens_a = tokens_a[:-1] - if len(tokens_a) > max_seq_length - len(tokens_b) - 3: - tokens_a = tokens_a[len(tokens_a) - max_seq_length + len(tokens_b) + 3 :] - tokens, segment_ids = [], [] - tokens.extend([tokenizer.cls_token] + tokens_a + [tokenizer.sep_token]) - segment_ids.extend([0] * len(tokens)) - tokens.extend(tokens_b + [tokenizer.sep_token]) - segment_ids.extend([1] * (len(tokens_b) + 1)) - input_ids = tokenizer.convert_tokens_to_ids(tokens) - return input_ids, segment_ids - - label, text_a, text_b = example - label = np.array([cls.get_label(label)], dtype="int64") - input_ids, segment_ids = _truncate_and_concat(text_a, text_b, tokenizer, max_seq_length) - return input_ids, segment_ids, label - - def __getitem__(self, index): - return self.data[index] - - def __len__(self): - return len(self.data) - - -class DSTC2(Dataset): - """ - The dataset DSTC2 is using in task Dialogue State Tracking. - The source dataset is DSTC2(Dialog State Tracking Challenges 2). See detail at - https://github.com/matthen/dstc - """ - - LABEL_MAP = get_label_map([str(i) for i in range(217)]) - - def __init__(self, data_dir, mode="train"): - super(DSTC2, self).__init__() - self._data_dir = data_dir - self._mode = mode - self.read_data() - - def read_data(self): - def _concat_dialogues(examples): - """concat multi turns dialogues""" - new_examples = [] - max_turns = 20 - for i in range(len(examples)): - multi_turns = examples[max(i - max_turns, 0) : i + 1] - new_qa = "\1".join([example[0] for example in multi_turns]) - new_examples.append((new_qa.split("\1"), examples[i][1])) - return new_examples - - if self._mode == "train": - data_path = os.path.join(self._data_dir, "train.txt") - elif self._mode == "dev": - data_path = os.path.join(self._data_dir, "dev.txt") - elif self._mode == "test": - data_path = os.path.join(self._data_dir, "test.txt") - self.data = [] - with open(data_path, "r", encoding="utf8") as fin: - pre_idx = -1 - examples = [] - for line in fin: - if not line: - continue - arr = line.rstrip("\n").split("\t") - if len(arr) != 3: - print("Data format error: %s" % "\t".join(arr)) - print("Data row should contains three parts: id\tquestion\1answer\tlabel1 label2 ...") - continue - idx = arr[0] - qa = arr[1] - label_list = arr[2].split() - if idx != pre_idx: - if idx != 0: - examples = _concat_dialogues(examples) - self.data.extend(examples) - examples = [] - pre_idx = idx - examples.append((qa, label_list)) - if examples: - examples = _concat_dialogues(examples) - self.data.extend(examples) - - @classmethod - def get_label(cls, label): - return cls.LABEL_MAP[label] - - @classmethod - def num_classes(cls): - return len(cls.LABEL_MAP) - - @classmethod - def convert_example(cls, example, tokenizer, max_seq_length=512): - """Convert a glue example into necessary features.""" - - def _truncate_and_concat(texts: List[str], tokenizer, max_seq_length): - tokens = [] - for text in texts: - tokens.extend(tokenizer.tokenize(text)) - tokens.append(INNER_SEP) - tokens = tokens[:-1] - if len(tokens) > max_seq_length - 2: - tokens = tokens[len(tokens) - max_seq_length + 2 :] - tokens = [tokenizer.cls_token] + tokens + [tokenizer.sep_token] - segment_ids = [0] * len(tokens) - input_ids = tokenizer.convert_tokens_to_ids(tokens) - return input_ids, segment_ids - - texts, labels = example - input_ids, segment_ids = _truncate_and_concat(texts, tokenizer, max_seq_length) - labels = [cls.get_label(l) for l in labels] - label = np.zeros(cls.num_classes(), dtype="int64") - for l in labels: - label[l] = 1 - return input_ids, segment_ids, label - - def __getitem__(self, index): - return self.data[index] - - def __len__(self): - return len(self.data) - - -class ATIS_DSF(Dataset): - """ - The dataset ATIS_DSF is using in task Dialogue Slot Filling. - The source dataset is ATIS(Airline Travel Information System). See detail at - https://www.kaggle.com/siddhadev/ms-cntk-atis - """ - - LABEL_MAP = get_label_map([str(i) for i in range(130)]) - - def __init__(self, data_dir, mode="train"): - super(ATIS_DSF, self).__init__() - self._data_dir = data_dir - self._mode = mode - self.read_data() - - def read_data(self): - if self._mode == "train": - data_path = os.path.join(self._data_dir, "train.txt") - elif self._mode == "dev": - data_path = os.path.join(self._data_dir, "dev.txt") - elif self._mode == "test": - data_path = os.path.join(self._data_dir, "test.txt") - self.data = [] - with open(data_path, "r", encoding="utf8") as fin: - for line in fin: - if not line: - continue - arr = line.rstrip("\n").split("\t") - if len(arr) != 2: - print("Data format error: %s" % "\t".join(arr)) - print("Data row should contains two parts: conversation_content\tlabel1 label2 label3.") - continue - text = arr[0] - label_list = arr[1].split() - self.data.append([text, label_list]) - - @classmethod - def get_label(cls, label): - return cls.LABEL_MAP[label] - - @classmethod - def num_classes(cls): - return len(cls.LABEL_MAP) - - @classmethod - def convert_example(cls, example, tokenizer, max_seq_length=512): - """Convert a glue example into necessary features.""" - text, labels = example - tokens, label_list = [], [] - words = text.split() - assert len(words) == len(labels) - for word, label in zip(words, labels): - piece_words = tokenizer.tokenize(word) - tokens.extend(piece_words) - label = cls.get_label(label) - label_list.extend([label] * len(piece_words)) - if len(tokens) > max_seq_length - 2: - tokens = tokens[len(tokens) - max_seq_length + 2 :] - label_list = label_list[len(tokens) - max_seq_length + 2 :] - tokens = [tokenizer.cls_token] + tokens + [tokenizer.sep_token] - label_list = [0] + label_list + [0] - segment_ids = [0] * len(tokens) - input_ids = tokenizer.convert_tokens_to_ids(tokens) - label = np.array(label_list, dtype="int64") - return input_ids, segment_ids, label - - def __getitem__(self, index): - return self.data[index] - - def __len__(self): - return len(self.data) - - -class ATIS_DID(Dataset): - """ - The dataset ATIS_ID is using in task Dialogue Intent Detection. - The source dataset is ATIS(Airline Travel Information System). See detail at - https://www.kaggle.com/siddhadev/ms-cntk-atis - """ - - LABEL_MAP = get_label_map([str(i) for i in range(26)]) - - def __init__(self, data_dir, mode="train"): - super(ATIS_DID, self).__init__() - self._data_dir = data_dir - self._mode = mode - self.read_data() - - def read_data(self): - if self._mode == "train": - data_path = os.path.join(self._data_dir, "train.txt") - elif self._mode == "dev": - data_path = os.path.join(self._data_dir, "dev.txt") - elif self._mode == "test": - data_path = os.path.join(self._data_dir, "test.txt") - self.data = [] - with open(data_path, "r", encoding="utf8") as fin: - for line in fin: - if not line: - continue - arr = line.rstrip("\n").split("\t") - if len(arr) != 2: - print("Data format error: %s" % "\t".join(arr)) - print("Data row should contains two parts: label\tconversation_content.") - continue - label = arr[0] - text = arr[1] - self.data.append([label, text]) - - @classmethod - def get_label(cls, label): - return cls.LABEL_MAP[label] - - @classmethod - def num_classes(cls): - return len(cls.LABEL_MAP) - - @classmethod - def convert_example(cls, example, tokenizer, max_seq_length=512): - """Convert a glue example into necessary features.""" - label, text = example - tokens = tokenizer.tokenize(text) - if len(tokens) > max_seq_length - 2: - tokens = tokens[len(tokens) - max_seq_length + 2 :] - tokens = [tokenizer.cls_token] + tokens + [tokenizer.sep_token] - segment_ids = [0] * len(tokens) - input_ids = tokenizer.convert_tokens_to_ids(tokens) - label = np.array([cls.get_label(label)], dtype="int64") - return input_ids, segment_ids, label - - def __getitem__(self, index): - return self.data[index] - - def __len__(self): - return len(self.data) - - -def read_da_data(data_dir, mode): - def _concat_dialogues(examples): - """concat multi turns dialogues""" - new_examples = [] - for i in range(len(examples)): - label, caller, text = examples[i] - cur_txt = "%s : %s" % (caller, text) - pre_txt = ["%s : %s" % (item[1], item[2]) for item in examples[max(0, i - 5) : i]] - suf_txt = ["%s : %s" % (item[1], item[2]) for item in examples[i + 1 : min(len(examples), i + 3)]] - sample = [label, pre_txt, cur_txt, suf_txt] - new_examples.append(sample) - return new_examples - - if mode == "train": - data_path = os.path.join(data_dir, "train.txt") - elif mode == "dev": - data_path = os.path.join(data_dir, "dev.txt") - elif mode == "test": - data_path = os.path.join(data_dir, "test.txt") - data = [] - with open(data_path, "r", encoding="utf8") as fin: - pre_idx = -1 - examples = [] - for line in fin: - if not line: - continue - arr = line.rstrip("\n").split("\t") - if len(arr) != 4: - print("Data format error: %s" % "\t".join(arr)) - print("Data row should contains four parts: id\tlabel\tcaller\tconversation_content.") - continue - idx, label, caller, text = arr - if idx != pre_idx: - if idx != 0: - examples = _concat_dialogues(examples) - data.extend(examples) - examples = [] - pre_idx = idx - examples.append((label, caller, text)) - if examples: - examples = _concat_dialogues(examples) - data.extend(examples) - return data - - -def truncate_and_concat( - pre_txt: List[str], cur_txt: str, suf_txt: List[str], tokenizer, max_seq_length, max_len_of_cur_text -): - cur_tokens = tokenizer.tokenize(cur_txt) - cur_tokens = cur_tokens[: min(max_len_of_cur_text, len(cur_tokens))] - pre_tokens = [] - for text in pre_txt: - pre_tokens.extend(tokenizer.tokenize(text)) - pre_tokens.append(INNER_SEP) - pre_tokens = pre_tokens[:-1] - suf_tokens = [] - for text in suf_txt: - suf_tokens.extend(tokenizer.tokenize(text)) - suf_tokens.append(INNER_SEP) - suf_tokens = suf_tokens[:-1] - if len(cur_tokens) + len(pre_tokens) + len(suf_tokens) > max_seq_length - 4: - left_num = max_seq_length - 4 - len(cur_tokens) - if len(pre_tokens) > len(suf_tokens): - suf_num = int(left_num / 2) - suf_tokens = suf_tokens[:suf_num] - pre_num = left_num - len(suf_tokens) - pre_tokens = pre_tokens[max(0, len(pre_tokens) - pre_num) :] - else: - pre_num = int(left_num / 2) - pre_tokens = pre_tokens[max(0, len(pre_tokens) - pre_num) :] - suf_num = left_num - len(pre_tokens) - suf_tokens = suf_tokens[:suf_num] - tokens, segment_ids = [], [] - tokens.extend([tokenizer.cls_token] + pre_tokens + [tokenizer.sep_token]) - segment_ids.extend([0] * len(tokens)) - tokens.extend(cur_tokens + [tokenizer.sep_token]) - segment_ids.extend([1] * (len(cur_tokens) + 1)) - if suf_tokens: - tokens.extend(suf_tokens + [tokenizer.sep_token]) - segment_ids.extend([0] * (len(suf_tokens) + 1)) - input_ids = tokenizer.convert_tokens_to_ids(tokens) - return input_ids, segment_ids - - -class MRDA(Dataset): - """ - The dataset MRDA is using in task Dialogue Act. - The source dataset is MRDA(Meeting Recorder Dialogue Act). See detail at - https://www.aclweb.org/anthology/W04-2319.pdf - """ - - MAX_LEN_OF_CUR_TEXT = 50 - LABEL_MAP = get_label_map([str(i) for i in range(5)]) - - def __init__(self, data_dir, mode="train"): - super(MRDA, self).__init__() - self.data = read_da_data(data_dir, mode) - - @classmethod - def get_label(cls, label): - return cls.LABEL_MAP[label] - - @classmethod - def num_classes(cls): - return len(cls.LABEL_MAP) - - @classmethod - def convert_example(cls, example, tokenizer, max_seq_length=512): - """Convert a glue example into necessary features.""" - label, pre_txt, cur_txt, suf_txt = example - label = np.array([cls.get_label(label)], dtype="int64") - input_ids, segment_ids = truncate_and_concat( - pre_txt, cur_txt, suf_txt, tokenizer, max_seq_length, cls.MAX_LEN_OF_CUR_TEXT - ) - return input_ids, segment_ids, label - - def __getitem__(self, index): - return self.data[index] - - def __len__(self): - return len(self.data) - - -class SwDA(Dataset): - """ - The dataset SwDA is using in task Dialogue Act. - The source dataset is SwDA(Switchboard Dialog Act). See detail at - http://compprag.christopherpotts.net/swda.html - """ - - MAX_LEN_OF_CUR_TEXT = 50 - LABEL_MAP = get_label_map([str(i) for i in range(42)]) - - def __init__(self, data_dir, mode="train"): - super(SwDA, self).__init__() - self.data = read_da_data(data_dir, mode) - - @classmethod - def get_label(cls, label): - return cls.LABEL_MAP[label] - - @classmethod - def num_classes(cls): - return len(cls.LABEL_MAP) - - @classmethod - def convert_example(cls, example, tokenizer, max_seq_length=512): - """Convert a glue example into necessary features.""" - label, pre_txt, cur_txt, suf_txt = example - label = np.array([cls.get_label(label)], dtype="int64") - input_ids, segment_ids = truncate_and_concat( - pre_txt, cur_txt, suf_txt, tokenizer, max_seq_length, cls.MAX_LEN_OF_CUR_TEXT - ) - return input_ids, segment_ids, label - - def __getitem__(self, index): - return self.data[index] - - def __len__(self): - return len(self.data) diff --git a/examples/dialogue/dgu/main.py b/examples/dialogue/dgu/main.py deleted file mode 100644 index f5ca4faf4572..000000000000 --- a/examples/dialogue/dgu/main.py +++ /dev/null @@ -1,290 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import random -import time -import numpy as np -from functools import partial - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F -import paddle.distributed as dist -from paddle.io import DataLoader, DistributedBatchSampler, BatchSampler -from paddle.optimizer import AdamW -from paddle.metric import Accuracy - -from paddlenlp.datasets import MapDataset -from paddlenlp.data import Stack, Tuple, Pad -from paddlenlp.transformers import BertTokenizer, BertForSequenceClassification, BertForTokenClassification -from paddlenlp.transformers import LinearDecayWithWarmup - -from args import parse_args, set_default_args -import data -import metric - -TASK_CLASSES = { - "udc": (data.UDCv1, metric.RecallAtK), - "dstc2": (data.DSTC2, metric.JointAccuracy), - "atis_slot": (data.ATIS_DSF, metric.F1Score), - "atis_intent": (data.ATIS_DID, Accuracy), - "mrda": (data.MRDA, Accuracy), - "swda": (data.SwDA, Accuracy), -} - - -def set_seed(seed): - random.seed(seed) - np.random.seed(seed) - paddle.seed(seed) - - -def load_ckpt(args, model, optimizer=None): - if args.init_from_ckpt: - params_state_dict = paddle.load(args.init_from_ckpt + ".pdparams") - model.set_state_dict(params_state_dict) - if optimizer: - opt_state_dict = paddle.load(args.init_from_ckpt + ".pdopt") - optimizer.set_state_dict(opt_state_dict) - print("Loaded checkpoint from %s" % args.init_from_ckpt) - - -def save_ckpt(model, optimizer, output_dir, name): - params_path = os.path.join(output_dir, "{}.pdparams".format(name)) - opt_path = os.path.join(output_dir, "{}.pdopt".format(name)) - paddle.save(model.state_dict(), params_path) - paddle.save(optimizer.state_dict(), opt_path) - - -class DGULossFunction(nn.Layer): - def __init__(self, task_name): - super(DGULossFunction, self).__init__() - - self.task_name = task_name - self.loss_fn = self.get_loss_fn() - - def get_loss_fn(self): - if self.task_name in ["udc", "atis_slot", "atis_intent", "mrda", "swda"]: - return F.cross_entropy - elif self.task_name == "dstc2": - return nn.BCEWithLogitsLoss(reduction="sum") - - def forward(self, logits, labels): - if self.task_name in ["udc", "atis_intent", "mrda", "swda"]: - loss = self.loss_fn(logits, labels) - elif self.task_name == "dstc2": - loss = self.loss_fn(logits, paddle.cast(labels, dtype=logits.dtype)) - elif self.task_name == "atis_slot": - labels = paddle.unsqueeze(labels, axis=-1) - loss = self.loss_fn(logits, labels) - return loss - - -def print_logs(args, step, logits, labels, loss, total_time, metric): - if args.task_name in ["udc", "atis_intent", "mrda", "swda"]: - if args.task_name == "udc": - metric = Accuracy() - metric.reset() - correct = metric.compute(logits, labels) - metric.update(correct) - acc = metric.accumulate() - print("step %d - loss: %.4f - acc: %.4f - %.3fs/step" % (step, loss, acc, total_time / args.logging_steps)) - elif args.task_name == "dstc2": - metric.reset() - metric.update(logits, labels) - joint_acc = metric.accumulate() - print( - "step %d - loss: %.4f - joint_acc: %.4f - %.3fs/step" - % (step, loss, joint_acc, total_time / args.logging_steps) - ) - elif args.task_name == "atis_slot": - metric.reset() - metric.update(logits, labels) - f1_micro = metric.accumulate() - print( - "step %d - loss: %.4f - f1_micro: %.4f - %.3fs/step" - % (step, loss, f1_micro, total_time / args.logging_steps) - ) - - -def train(args, model, train_data_loader, dev_data_loader, metric, n_procs, rank): - num_examples = len(train_data_loader) * args.batch_size * n_procs - max_train_steps = args.epochs * len(train_data_loader) - print("\nNum train examples: %d" % num_examples) - print("Max train steps: %d" % max_train_steps) - print("Warmup proportion: %.2f" % args.warmup_proportion) - - lr_scheduler = LinearDecayWithWarmup(args.learning_rate, max_train_steps, args.warmup_proportion) - - # Generate parameter names needed to perform weight decay. - # All bias and LayerNorm parameters are excluded. - decay_params = [p.name for n, p in model.named_parameters() if not any(nd in n for nd in ["bias", "norm"])] - optimizer = AdamW( - learning_rate=lr_scheduler, - parameters=model.parameters(), - weight_decay=args.weight_decay, - apply_decay_param_fun=lambda x: x in decay_params, - grad_clip=nn.ClipGradByGlobalNorm(args.max_grad_norm), - ) - loss_fn = DGULossFunction(args.task_name) - - load_ckpt(args, model, optimizer) - - step = 0 - best_metric = 0.0 - total_time = 0.0 - for epoch in range(args.epochs): - print("\nEpoch %d/%d" % (epoch + 1, args.epochs)) - batch_start_time = time.time() - for batch in train_data_loader: - step += 1 - input_ids, segment_ids, labels = batch - logits = model(input_ids, segment_ids) - loss = loss_fn(logits, labels) - loss.backward() - optimizer.step() - lr_scheduler.step() - optimizer.clear_grad() - total_time += time.time() - batch_start_time - if step % args.logging_steps == 0: - print_logs(args, step, logits, labels, loss, total_time, metric) - total_time = 0.0 - if step % args.save_steps == 0 or step == max_train_steps: - if rank == 0: - save_ckpt(model, optimizer, args.output_dir, step) - if args.do_eval: - print("\nEval begin...") - metric_out = evaluation(args, model, dev_data_loader, metric) - if rank == 0 and metric_out > best_metric: - best_metric = metric_out - save_ckpt(model, optimizer, args.output_dir, "best") - print("Best model, step: %d\n" % step) - batch_start_time = time.time() - - -@paddle.no_grad() -def evaluation(args, model, data_loader, metric): - model.eval() - metric.reset() - for batch in data_loader: - input_ids, segment_ids, labels = batch - logits = model(input_ids, segment_ids) - if args.task_name in ["atis_intent", "mrda", "swda"]: - correct = metric.compute(logits, labels) - metric.update(correct) - else: - metric.update(logits, labels) - model.train() - metric_out = metric.accumulate() - print("Total samples: %d" % (len(data_loader) * args.test_batch_size)) - if args.task_name == "udc": - print("R1@10: %.4f - R2@10: %.4f - R5@10: %.4f\n" % (metric_out[0], metric_out[1], metric_out[2])) - return metric_out[0] - elif args.task_name == "dstc2": - print("Joint_acc: %.4f\n" % metric_out) - return metric_out - elif args.task_name == "atis_slot": - print("F1_micro: %.4f\n" % metric_out) - return metric_out - elif args.task_name in ["atis_intent", "mrda", "swda"]: - print("Acc: %.4f\n" % metric_out) - return metric_out - - -def create_data_loader(args, dataset_class, trans_func, batchify_fn, mode): - dataset = dataset_class(args.data_dir, mode) - dataset = MapDataset(dataset).map(trans_func, lazy=True) - if mode == "train": - batch_sampler = DistributedBatchSampler(dataset, batch_size=args.batch_size, shuffle=True) - else: - batch_sampler = BatchSampler(dataset, batch_size=args.test_batch_size, shuffle=False) - data_loader = DataLoader(dataset, batch_sampler=batch_sampler, collate_fn=batchify_fn, return_list=True) - return data_loader - - -def main(args): - paddle.set_device(args.device) - world_size = dist.get_world_size() - rank = dist.get_rank() - if world_size > 1 and args.do_train: - dist.init_parallel_env() - - set_seed(args.seed) - - dataset_class, metric_class = TASK_CLASSES[args.task_name] - tokenizer = BertTokenizer.from_pretrained(args.model_name_or_path) - trans_func = partial(dataset_class.convert_example, tokenizer=tokenizer, max_seq_length=args.max_seq_len) - test_trans_func = partial(dataset_class.convert_example, tokenizer=tokenizer, max_seq_length=args.test_max_seq_len) - metric = metric_class() - - if args.task_name in ("udc", "dstc2", "atis_intent", "mrda", "swda"): - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id), # input - Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # segment - Stack(dtype="int64"), # label - ): fn(samples) - model = BertForSequenceClassification.from_pretrained( - args.model_name_or_path, num_classes=dataset_class.num_classes() - ) - elif args.task_name == "atis_slot": - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id), # input - Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # segment - Pad(axis=0, pad_val=0, dtype="int64"), # label - ): fn(samples) - model = BertForTokenClassification.from_pretrained( - args.model_name_or_path, num_classes=dataset_class.num_classes(), dropout=0.0 - ) - if world_size > 1 and args.do_train: - model = paddle.DataParallel(model) - - if args.do_train: - train_data_loader = create_data_loader(args, dataset_class, trans_func, batchify_fn, "train") - if args.do_eval: - dev_data_loader = create_data_loader(args, dataset_class, test_trans_func, batchify_fn, "dev") - else: - dev_data_loader = None - train(args, model, train_data_loader, dev_data_loader, metric, world_size, rank) - - if args.do_test: - if rank == 0: - test_data_loader = create_data_loader(args, dataset_class, test_trans_func, batchify_fn, "test") - if args.do_train: - # If do_eval=True, use best model to evaluate the test data. - # Otherwise, use final model to evaluate the test data. - if args.do_eval: - args.init_from_ckpt = os.path.join(args.output_dir, "best") - load_ckpt(args, model) - else: - if not args.init_from_ckpt: - raise ValueError('"init_from_ckpt" should be set.') - load_ckpt(args, model) - print("\nTest begin...") - evaluation(args, model, test_data_loader, metric) - - -def print_args(args): - print("----------- Configuration Arguments -----------") - for arg, value in sorted(vars(args).items()): - print("%s: %s" % (arg, value)) - print("------------------------------------------------") - - -if __name__ == "__main__": - args = parse_args() - set_default_args(args) - print_args(args) - - main(args) diff --git a/examples/dialogue/dgu/metric.py b/examples/dialogue/dgu/metric.py deleted file mode 100644 index b5ef869f768c..000000000000 --- a/examples/dialogue/dgu/metric.py +++ /dev/null @@ -1,245 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import numpy as np - -import paddle -import paddle.nn as nn -from paddle.metric import Metric - - -class RecallAtK(Metric): - """ - Recall@K is the fraction of relevant results among the retrieved Top K - results, using to evaluate the performance of Dialogue Response Selection. - - Noted that this class manages the Recall@K score only for binary - classification task. - """ - - def __init__(self, name="Recall@K", *args, **kwargs): - super(RecallAtK, self).__init__(*args, **kwargs) - self._name = name - self.softmax = nn.Softmax() - self.reset() - - def reset(self): - """ - Resets all of the metric state. - """ - self.num_sampls = 0 - self.p_at_1_in_10 = 0.0 - self.p_at_2_in_10 = 0.0 - self.p_at_5_in_10 = 0.0 - - def get_p_at_n_in_m(self, data, n, m, idx): - """ - calculate precision in recall n - """ - pos_score = data[idx][0] - curr = data[idx : idx + m] - curr = sorted(curr, key=lambda x: x[0], reverse=True) - if curr[n - 1][0] <= pos_score: - return 1 - return 0 - - def update(self, logits, labels): - """ - Update the states based on the current mini-batch prediction results. - - Args: - logits (Tensor): The predicted value is a Tensor with - shape [batch_size, 2] and type float32 or float64. - labels (Tensor): The ground truth value is a 2D Tensor, - its shape is [batch_size, 1] and type is int64. - """ - probs = self.softmax(logits) - probs = probs.numpy() - labels = labels.numpy() - assert probs.shape[0] == labels.shape[0] - data = [] - for prob, label in zip(probs, labels): - data.append((prob[1], label)) - assert len(data) % 10 == 0 - - length = int(len(data) / 10) - self.num_sampls += length - for i in range(length): - idx = i * 10 - assert data[idx][1] == 1 - self.p_at_1_in_10 += self.get_p_at_n_in_m(data, 1, 10, idx) - self.p_at_2_in_10 += self.get_p_at_n_in_m(data, 2, 10, idx) - self.p_at_5_in_10 += self.get_p_at_n_in_m(data, 5, 10, idx) - - def accumulate(self): - """ - Calculate the final Recall@K. - - Returns: - A list with scaler float: results of the calculated R1@K, R2@K, R5@K. - """ - metrics_out = [ - self.p_at_1_in_10 / self.num_sampls, - self.p_at_2_in_10 / self.num_sampls, - self.p_at_5_in_10 / self.num_sampls, - ] - return metrics_out - - def name(self): - """ - Returns metric name - """ - return self._name - - -class JointAccuracy(Metric): - """ - The joint accuracy rate is used to evaluate the performance of multi-turn - Dialogue State Tracking. For each turn, if and only if all state in - state_list are correctly predicted, the dialog state prediction is - considered correct. And the joint accuracy rate is equal to 1, otherwise - it is equal to 0. - """ - - def __init__(self, name="JointAccuracy", *args, **kwargs): - super(JointAccuracy, self).__init__(*args, **kwargs) - self._name = name - self.sigmoid = nn.Sigmoid() - self.reset() - - def reset(self): - """ - Resets all of the metric state. - """ - self.num_samples = 0 - self.correct_joint = 0.0 - - def update(self, logits, labels): - """ - Update the states based on the current mini-batch prediction results. - - Args: - logits (Tensor): The predicted value is a Tensor with - shape [batch_size, num_classes] and type float32 or float64. - labels (Tensor): The ground truth value is a 2D Tensor, - its shape is [batch_size, num_classes] and type is int64. - """ - probs = self.sigmoid(logits) - probs = probs.numpy() - labels = labels.numpy() - assert probs.shape[0] == labels.shape[0] - assert probs.shape[1] == labels.shape[1] - for i in range(probs.shape[0]): - pred, refer = [], [] - for j in range(probs.shape[1]): - if probs[i][j] >= 0.5: - pred.append(j) - if labels[i][j] == 1: - refer.append(j) - if not pred: - pred = [np.argmax(probs[i])] - if pred == refer: - self.correct_joint += 1 - self.num_samples += probs.shape[0] - - def accumulate(self): - """ - Calculate the final JointAccuracy. - - Returns: - A scaler float: results of the calculated JointAccuracy. - """ - joint_acc = self.correct_joint / self.num_samples - return joint_acc - - def name(self): - """ - Returns metric name - """ - return self._name - - -class F1Score(Metric): - """ - F1-score is the harmonic mean of precision and recall. Micro-averaging is - to create a global confusion matrix for all examples, and then calculate - the F1-score. This class is using to evaluate the performance of Dialogue - Slot Filling. - """ - - def __init__(self, name="F1Score", *args, **kwargs): - super(F1Score, self).__init__(*args, **kwargs) - self._name = name - self.reset() - - def reset(self): - """ - Resets all of the metric state. - """ - self.tp = {} - self.fn = {} - self.fp = {} - - def update(self, logits, labels): - """ - Update the states based on the current mini-batch prediction results. - - Args: - logits (Tensor): The predicted value is a Tensor with - shape [batch_size, seq_len, num_classes] and type float32 or - float64. - labels (Tensor): The ground truth value is a 2D Tensor, - its shape is [batch_size, seq_len] and type is int64. - """ - probs = paddle.argmax(logits, axis=-1) - probs = probs.numpy() - labels = labels.numpy() - assert probs.shape[0] == labels.shape[0] - assert probs.shape[1] == labels.shape[1] - for i in range(probs.shape[0]): - start, end = 1, probs.shape[1] - while end > start: - if labels[i][end - 1] != 0: - break - end -= 1 - prob, label = probs[i][start:end], labels[i][start:end] - for y_pred, y in zip(prob, label): - if y_pred == y: - self.tp[y] = self.tp.get(y, 0) + 1 - else: - self.fp[y_pred] = self.fp.get(y_pred, 0) + 1 - self.fn[y] = self.fn.get(y, 0) + 1 - - def accumulate(self): - """ - Calculate the final micro F1 score. - - Returns: - A scaler float: results of the calculated micro F1 score. - """ - tp_total = sum(self.tp.values()) - fn_total = sum(self.fn.values()) - fp_total = sum(self.fp.values()) - p_total = float(tp_total) / (tp_total + fp_total) - r_total = float(tp_total) / (tp_total + fn_total) - if p_total + r_total == 0: - return 0 - f1_micro = 2 * p_total * r_total / (p_total + r_total) - return f1_micro - - def name(self): - """ - Returns metric name - """ - return self._name diff --git a/examples/dialogue/lic2021_baseline/args.py b/examples/dialogue/lic2021_baseline/args.py deleted file mode 100644 index cc08c7d618f6..000000000000 --- a/examples/dialogue/lic2021_baseline/args.py +++ /dev/null @@ -1,58 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - - -# yapf: disable -def parse_args(): - parser = argparse.ArgumentParser(__doc__) - parser.add_argument('--model_name_or_path', type=str, default='unified_transformer-12L-cn', help='The path or shortcut name of the pre-trained model.') - parser.add_argument('--save_dir', type=str, default='./checkpoints', help='The directory where the checkpoints will be saved.') - parser.add_argument('--output_path', type=str, default='./predict.txt', help='The file path where the infer result will be saved.') - parser.add_argument('--train_data_path', type=str, default='./datasets/train.txt', help='Specify the path to load train data.') - parser.add_argument('--valid_data_path', type=str, default='./datasets/valid.txt', help='Specify the path to load valid data.') - parser.add_argument('--test_data_path', type=str, default='./datasets/test.txt', help='Specify the path to load test data.') - parser.add_argument('--logging_steps', type=int, default=500, help='Log every X updates steps.') - parser.add_argument('--save_steps', type=int, default=8000, help='Save checkpoint every X updates steps.') - parser.add_argument('--seed', type=int, default=2021, help='Random seed for initialization.') - parser.add_argument('--batch_size', type=int, default=8192, required=True, help='Batch size per GPU/CPU for training.') - parser.add_argument('--lr', type=float, default=1e-5, help='The initial learning rate.') - parser.add_argument('--weight_decay', type=float, default=0.01, help='The weight decay for optimizer.') - parser.add_argument('--epochs', type=int, default=10, help='Total number of training epochs to perform.') - parser.add_argument('--warmup_steps', type=int, default=4000, help='The number of warmup steps.') - parser.add_argument('--max_grad_norm', type=float, default=0.1, help='The max value of grad norm.') - parser.add_argument('--sort_pool_size', type=int, default=65536, help='The pool size for sort in build batch data.') - parser.add_argument('--min_dec_len', type=int, default=1, help='The minimum sequence length of generation.') - parser.add_argument('--max_dec_len', type=int, default=64, help='The maximum sequence length of generation.') - parser.add_argument('--num_samples', type=int, default=1, help='The decode numbers in generation.') - parser.add_argument('--decode_strategy', type=str, default='sampling', help='The decode strategy in generation.') - parser.add_argument('--top_k', type=int, default=0, help='The number of highest probability vocabulary tokens to keep for top-k sampling.') - parser.add_argument('--temperature', type=float, default=1.0, help='The value used to module the next token probabilities.') - parser.add_argument('--top_p', type=float, default=1.0, help='The cumulative probability for top-p sampling.') - parser.add_argument('--num_beams', type=int, default=0, help='The number of beams for beam search.') - parser.add_argument('--length_penalty', type=float, default=1.0, help='The exponential penalty to the sequence length for beam search.') - parser.add_argument('--early_stopping', type=eval, default=False, help='Whether to stop the beam search when at least `num_beams` sentences are finished per batch or not.') - parser.add_argument('--device', type=str, default='gpu', help='Device for selecting for the training.') - - args = parser.parse_args() - return args -# yapf: enable - - -def print_args(args): - print("----------- Configuration Arguments -----------") - for arg, value in sorted(vars(args).items()): - print("%s: %s" % (arg, value)) - print("------------------------------------------------") diff --git a/examples/dialogue/lic2021_baseline/data.py b/examples/dialogue/lic2021_baseline/data.py deleted file mode 100644 index 6bc938d1b729..000000000000 --- a/examples/dialogue/lic2021_baseline/data.py +++ /dev/null @@ -1,258 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from glob import glob - -import numpy as np -import paddle.distributed as dist -from paddle.io import IterableDataset - -from paddlenlp.transformers.tokenizer_utils import convert_to_unicode - - -class DialogueDataset(IterableDataset): - def __init__( - self, - filepattern, - batch_size, - pad_token_id, - bos_token_id, - sort_pool_size=2**16, - seed=1, - n_procs=None, - rank=None, - mode="test", - ): - super(DialogueDataset, self).__init__() - - self.file_list = glob(filepattern) - self.sort_pool_size = 0 if mode == "test" else sort_pool_size - self.n_procs = n_procs if n_procs else dist.get_world_size() - self.rank = rank if rank else dist.get_rank() - self.batch_size = batch_size * self.n_procs - self.shuffle = True if mode == "train" else False - self.mode = mode - self.pad_id = pad_token_id - self.bos_id = bos_token_id - self.global_rng = np.random.RandomState(seed) - - assert len(self.file_list) > 0, "There is no files in %s." % filepattern - - def load_file(self, file_path): - with open(file_path, "r", encoding="utf-8") as fin: - for i, line in enumerate(fin): - cols = convert_to_unicode(line).strip().split(";") - cols = list(map(lambda x: list(map(int, x.split(" "))), cols)) - if len(cols) > 3: - cols = cols[:3] - token_ids, type_ids, pos_ids = cols - if self.mode == "test": - tgt_start_idx = len(cols[0]) - else: - tgt_start_idx = token_ids.index(self.bos_id, 1) - sample = [token_ids, type_ids, pos_ids, tgt_start_idx] - yield sample - - def get_sorted_batch(self, pool): - """Generate sorted batches from pool.""" - pool = sorted(pool, key=lambda sample: len(sample[0])) - batches = [] - batch, max_len = [], 0 - for sample in pool: - max_len = max(max_len, len(sample[0])) - if self.mode == "test": - to_append = len(batch) < self.batch_size - else: - to_append = (len(batch) + 1) * max_len <= self.batch_size - if to_append: - batch.append(sample) - else: - batches.append(batch) - batch, max_len = [sample], len(sample[0]) - if len(batch) > 0: - batches.append(batch) - if self.shuffle: - self.global_rng.shuffle(batches) - for batch in batches: - yield batch - - @property - def get_batch(self): - all_files = list(self.file_list) - if self.shuffle: - self.global_rng.shuffle(all_files) - if self.sort_pool_size > 0: - pool = [] - for file_path in all_files: - for sample in self.load_file(file_path): - pool.append(sample) - if len(pool) == self.sort_pool_size: - for batch in self.get_sorted_batch(pool): - yield batch - pool = [] - if len(pool) > 0: - for batch in self.get_sorted_batch(pool): - yield batch - else: - batch, max_len = [], 0 - for file_path in all_files: - for sample in self.load_file(file_path): - max_len = max(max_len, len(sample[0])) - if self.mode == "test": - to_append = len(batch) < self.batch_size - else: - to_append = (len(batch) + 1) * max_len <= self.batch_size - if to_append: - batch.append(sample) - else: - yield batch - batch, max_len = [sample], len(sample[0]) - if len(batch) > 0: - yield batch - - def pad_batch_data(self, batch): - """Pad the instances to the max sequence length in batch.""" - max_len = max(map(len, batch)) - batch_data = np.array([list(data) + [self.pad_id] * (max_len - len(data)) for data in batch], dtype="int64") - return batch_data - - def gen_tgt_label_and_pos(self, batch_token_ids, batch_tgt_start_idx): - max_len = max(map(len, batch_token_ids)) - tgt_label = [] - tgt_pos = [] - for sent_index, sent in enumerate(batch_token_ids): - sent_b_index = batch_tgt_start_idx[sent_index] - tgt_label.extend(sent[sent_b_index + 1 :]) - tgt_pos.extend([sent_index * max_len + i for i in range(sent_b_index, len(sent) - 1)]) - tgt_label = np.array(tgt_label).astype("int64") - tgt_pos = np.array(tgt_pos).astype("int64") - - return tgt_label, tgt_pos - - def gen_self_attn_mask(self, batch_token_ids, batch_tgt_start_idx): - max_len = max(map(len, batch_token_ids)) - input_mask_data = np.zeros((len(batch_token_ids), max_len, max_len)) - for index, mask_data in enumerate(input_mask_data): - start = batch_tgt_start_idx[index] - end = len(batch_token_ids[index]) - mask_data[:end, :start] = 1.0 - # Generate the lower triangular matrix using the slice of matrix - b = np.tril(np.ones([end - start, end - start]), 0) - mask_data[start:end, start:end] = b - return input_mask_data.astype("float32") - - def __iter__(self): - for batch_data in self.get_batch: - # sample [token_ids, type_ids, pos_ids, tgt_start_idx] - # raw_batch [sample0, sample1, ...] - if self.n_procs > 1: - batch_data = batch_data[self.rank :: self.n_procs] - batch_data = zip(*batch_data) - token_ids, type_ids, pos_ids, tgt_start_idx = batch_data - - pad_token_ids = self.pad_batch_data(token_ids) - pad_type_ids = self.pad_batch_data(type_ids) - pad_pos_ids = self.pad_batch_data(pos_ids) - - generation_mask = self.gen_self_attn_mask(token_ids, tgt_start_idx) - - if self.mode == "test": - # [batch_size, 1] - tgt_ids = np.array([[self.bos_id]] * len(token_ids), dtype="int64") - tgt_type = np.ones((len(token_ids), 1), dtype="int64") - tgt_pos = np.array(tgt_start_idx, dtype="int64").reshape(-1, 1) - tgt_generation_mask = generation_mask[:, 0:1, :].astype("float32") - - pad_token_ids = np.concatenate((pad_token_ids, tgt_ids), axis=1) - pad_type_ids = np.concatenate((pad_type_ids, tgt_type), axis=1) - pad_pos_ids = np.concatenate((pad_pos_ids, tgt_pos), axis=1) - generation_mask = np.concatenate((generation_mask, tgt_generation_mask), axis=1) - - append_mask = np.zeros((generation_mask.shape[0], generation_mask.shape[1], 1), dtype="float32") - append_mask[:, -1, :] = 1.0 - generation_mask = np.concatenate((generation_mask, append_mask), axis=2) - generation_mask = (generation_mask - 1.0) * 1e9 - generation_mask = np.expand_dims(generation_mask, axis=1) - yield (pad_token_ids, pad_type_ids, pad_pos_ids, generation_mask) - else: - tgt_label, tgt_pos = self.gen_tgt_label_and_pos(token_ids, tgt_start_idx) - generation_mask = (generation_mask - 1.0) * 1e9 - generation_mask = np.expand_dims(generation_mask, axis=1) - yield (pad_token_ids, pad_type_ids, pad_pos_ids, generation_mask, tgt_label, tgt_pos) - - -def post_process_response(token_ids, tokenizer): - """ - Post-process the decoded sequence. Truncate from the first - and remove the and tokens currently. - """ - eos_pos = len(token_ids) - for i, tok_id in enumerate(token_ids): - if tok_id == tokenizer.sep_token_id: - eos_pos = i - break - token_ids = token_ids[:eos_pos] - tokens = tokenizer.convert_ids_to_tokens(token_ids) - response = tokenizer.merge_subword(tokens) - return token_ids, response - - -def get_in_turn_repetition(pred, is_cn=False): - """Get in-turn repetition.""" - if len(pred) == 0: - return 1.0 - if isinstance(pred[0], str): - pred = [tok.lower() for tok in pred] - if is_cn: - pred = "".join(pred) - tri_grams = set() - for i in range(len(pred) - 2): - tri_gram = tuple(pred[i : i + 3]) - if tri_gram in tri_grams: - return True - tri_grams.add(tri_gram) - return False - - -def select_response(ids, scores, tokenizer, max_dec_len=None, num_samples=1): - ids = ids.numpy().tolist() - scores = scores.numpy() - - if len(ids) != len(scores) or (len(ids) % num_samples) != 0: - raise ValueError("the length of `ids` is {}, but the `num_samples` is {}".format(len(ids), num_samples)) - - group = [] - tmp = [] - for pred, score in zip(ids, scores): - pred_token_ids, pred_tokens = post_process_response(pred, tokenizer) - num_token = len(pred_token_ids) - response = " ".join(pred_tokens) - - in_turn_repetition = get_in_turn_repetition(pred_tokens, True) or get_in_turn_repetition(pred_token_ids) - # not ending - if max_dec_len is not None and num_token >= max_dec_len: - score -= 1e3 - elif in_turn_repetition: - score -= 1e3 - - tmp.append([response, score]) - if len(tmp) == num_samples: - group.append(tmp) - tmp = [] - - results = [] - for preds in group: - preds = sorted(preds, key=lambda x: -x[1]) - results.append(preds[0][0]) - return results diff --git a/examples/dialogue/lic2021_baseline/finetune.py b/examples/dialogue/lic2021_baseline/finetune.py deleted file mode 100644 index 8f74d75ef84b..000000000000 --- a/examples/dialogue/lic2021_baseline/finetune.py +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import math -import os -import time - -import paddle -import paddle.distributed as dist -import paddle.nn as nn -import paddle.nn.functional as F -from args import parse_args, print_args -from data import DialogueDataset -from paddle.io import DataLoader -from paddle.optimizer import AdamW -from paddle.optimizer.lr import NoamDecay - -from paddlenlp.transformers import ( - UnifiedTransformerLMHeadModel, - UnifiedTransformerTokenizer, -) - - -def save_ckpt(model, tokenizer, save_dir, name): - output_dir = os.path.join(save_dir, "model_{}".format(name)) - if not os.path.exists(output_dir): - os.makedirs(output_dir) - # Need better way to get inner model of DataParallel - model_to_save = model._layers if isinstance(model, paddle.DataParallel) else model - model_to_save.save_pretrained(output_dir) - tokenizer.save_pretrained(output_dir) - - -def main(args): - paddle.set_device(args.device) - paddle.seed(args.seed) - world_size = dist.get_world_size() - if world_size > 1: - dist.init_parallel_env() - - model = UnifiedTransformerLMHeadModel.from_pretrained(args.model_name_or_path) - tokenizer = UnifiedTransformerTokenizer.from_pretrained(args.model_name_or_path) - if world_size > 1: - model = paddle.DataParallel(model) - - train_dataset = DialogueDataset( - args.train_data_path, - args.batch_size, - tokenizer.pad_token_id, - tokenizer.cls_token_id, - args.sort_pool_size, - args.seed, - mode="train", - ) - train_dataloader = DataLoader(train_dataset, return_list=True, batch_size=None) - valid_dataset = DialogueDataset( - args.valid_data_path, - args.batch_size, - tokenizer.pad_token_id, - tokenizer.cls_token_id, - args.sort_pool_size, - mode="valid", - ) - valid_dataloader = DataLoader(valid_dataset, return_list=True, batch_size=None) - - lr_scheduler = NoamDecay(1 / (args.warmup_steps * (args.lr**2)), args.warmup_steps) - # Generate parameter names needed to perform weight decay. - # All bias and LayerNorm parameters are excluded. - decay_params = [p.name for n, p in model.named_parameters() if not any(nd in n for nd in ["bias", "norm"])] - optimizer = AdamW( - learning_rate=lr_scheduler, - parameters=model.parameters(), - weight_decay=args.weight_decay, - apply_decay_param_fun=lambda x: x in decay_params, - grad_clip=nn.ClipGradByGlobalNorm(args.max_grad_norm), - ) - - step = 0 - total_time = 0.0 - for epoch in range(args.epochs): - print("\nEpoch %d/%d" % (epoch + 1, args.epochs)) - batch_start_time = time.time() - for inputs in train_dataloader: - step += 1 - token_ids, type_ids, pos_ids, generation_mask, tgt_label, tgt_pos = inputs - - logits = model(token_ids, type_ids, pos_ids, generation_mask, tgt_pos) - loss = F.cross_entropy(logits, tgt_label) - loss.backward() - optimizer.step() - lr_scheduler.step() - optimizer.clear_grad() - - total_time += time.time() - batch_start_time - if step % args.logging_steps == 0: - ppl = paddle.exp(loss) - print( - "step %d - loss: %.4f - ppl: %.4f - lr: %.7f - %.3fs/step" - % (step, loss, ppl, optimizer.get_lr(), total_time / args.logging_steps) - ) - total_time = 0.0 - if step % args.save_steps == 0: - evaluation(model, valid_dataloader) - if dist.get_rank() == 0: - save_ckpt(model, tokenizer, args.save_dir, step) - batch_start_time = time.time() - - -@paddle.no_grad() -def evaluation(model, data_loader): - print("\nEval begin...") - model.eval() - total_tokens = 0 - total_loss = 0.0 - start_time = time.time() - step = 0 - for inputs in data_loader: - step += 1 - token_ids, type_ids, pos_ids, generation_mask, tgt_label, tgt_pos = inputs - - logits = model(token_ids, type_ids, pos_ids, generation_mask, tgt_pos) - loss = F.cross_entropy(logits, tgt_label, reduction="sum") - - total_loss += float(loss.numpy()) - total_tokens += tgt_label.shape[0] - - avg_loss = total_loss / total_tokens - ppl = math.exp(avg_loss) - avg_speed = (time.time() - start_time) / step - print("loss: %.4f - ppl: %.4f - %.3fs/step\n" % (avg_loss, ppl, avg_speed)) - model.train() - - -if __name__ == "__main__": - args = parse_args() - print_args(args) - - main(args) diff --git a/examples/dialogue/lic2021_baseline/infer.py b/examples/dialogue/lic2021_baseline/infer.py deleted file mode 100644 index b41cb6fcf2d0..000000000000 --- a/examples/dialogue/lic2021_baseline/infer.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import time - -import paddle -from args import parse_args, print_args -from data import DialogueDataset, select_response -from paddle.io import DataLoader - -from paddlenlp.transformers import ( - UnifiedTransformerLMHeadModel, - UnifiedTransformerTokenizer, -) - - -def main(args): - paddle.set_device(args.device) - paddle.seed(args.seed) - - model = UnifiedTransformerLMHeadModel.from_pretrained(args.model_name_or_path) - tokenizer = UnifiedTransformerTokenizer.from_pretrained(args.model_name_or_path) - - test_dataset = DialogueDataset( - args.test_data_path, args.batch_size, tokenizer.pad_token_id, tokenizer.cls_token_id, mode="test" - ) - test_dataloader = DataLoader(test_dataset, return_list=True, batch_size=None) - - infer(model, test_dataloader, tokenizer) - - -@paddle.no_grad() -def infer(model, data_loader, tokenizer): - print("\nInfer begin...") - model.eval() - total_time = 0.0 - start_time = time.time() - responses = [] - for step, inputs in enumerate(data_loader, 1): - token_ids, type_ids, pos_ids, generation_mask = inputs - ids, scores = model.generate( - input_ids=token_ids, - token_type_ids=type_ids, - position_ids=pos_ids, - attention_mask=generation_mask, - max_length=args.max_dec_len, - min_length=args.min_dec_len, - decode_strategy=args.decode_strategy, - temperature=args.temperature, - top_k=args.top_k, - top_p=args.top_p, - num_beams=args.num_beams, - length_penalty=args.length_penalty, - early_stopping=args.early_stopping, - num_return_sequences=args.num_samples, - use_fast=False, - ) - - total_time += time.time() - start_time - if step % args.logging_steps == 0: - print("step %d - %.3fs/step" % (step, total_time / args.logging_steps)) - total_time = 0.0 - results = select_response(ids, scores, tokenizer, args.max_dec_len, args.num_samples) - responses.extend(results) - - start_time = time.time() - - with open(args.output_path, "w", encoding="utf-8") as fout: - for response in responses: - fout.write(response + "\n") - print("\nSave inference result into: %s" % args.output_path) - - -if __name__ == "__main__": - args = parse_args() - print_args(args) - main(args) diff --git a/examples/dialogue/plato-2/imgs/case.jpg b/examples/dialogue/plato-2/imgs/case.jpg deleted file mode 100644 index e3378e4164a3d0fe0a43334414bd4b0a13605458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101382 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

UL!Fg`4xDSc8Aq0n({Ps~%Q#$uY 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�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 z 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 QTL1t607*qoM6N<$f(BSKX#fBK diff --git a/examples/dialogue/plato-2/interaction.py b/examples/dialogue/plato-2/interaction.py deleted file mode 100644 index 6c4227b3d0d1..000000000000 --- a/examples/dialogue/plato-2/interaction.py +++ /dev/null @@ -1,104 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -import argparse -from collections import namedtuple - -import paddle -from model import Plato2InferModel -from readers.nsp_reader import NSPReader -from readers.plato_reader import PlatoReader -from termcolor import colored, cprint -from utils import gen_inputs -from utils.args import parse_args - -from paddlenlp.trainer.argparser import strtobool - - -def setup_args(): - """Setup arguments.""" - parser = argparse.ArgumentParser() - group = parser.add_argument_group("Model") - group.add_argument("--init_from_ckpt", type=str, default="") - group.add_argument("--vocab_size", type=int, default=8001) - group.add_argument("--latent_type_size", type=int, default=20) - group.add_argument("--num_layers", type=int, default=24) - - group = parser.add_argument_group("Task") - group.add_argument("--is_cn", type=strtobool, default=False) - - args, _ = parser.parse_known_args() - NSPReader.add_cmdline_args(parser) - - args = parse_args(parser) - args.batch_size *= args.latent_type_size - - # print(json.dumps(args, indent=2)) - return args - - -def load_params(model, init_from_ckpt): - state_dict = paddle.load(init_from_ckpt) - model.set_state_dict(state_dict) - - -def interact(args): - """Inference main function.""" - plato_reader = PlatoReader(args) - nsp_reader = NSPReader(args) - - if args.num_layers == 24: - n_head = 16 - hidden_size = 1024 - elif args.num_layers == 32: - n_head = 32 - hidden_size = 2048 - else: - raise ValueError( - "The pre-trained model only support 24 or 32 layers, " "but received num_layers=%d." % args.num_layers - ) - - model = Plato2InferModel(nsp_reader, args.num_layers, n_head, hidden_size) - load_params(model, args.init_from_ckpt) - model.eval() - - Example = namedtuple("Example", ["src", "data_id"]) - context = [] - start_info = "Enter [EXIT] to quit the interaction, [NEXT] to start a new conversation." - cprint(start_info, "yellow", attrs=["bold"]) - while True: - user_utt = input(colored("[Human]: ", "red", attrs=["bold"])).strip() - if user_utt == "[EXIT]": - break - elif user_utt == "[NEXT]": - context = [] - cprint(start_info, "yellow", attrs=["bold"]) - else: - context.append(user_utt) - example = Example(src=" [SEP] ".join(context), data_id=0) - record = plato_reader._convert_example_to_record(example, is_infer=True) - data = plato_reader._pad_batch_records([record], is_infer=True) - inputs = gen_inputs(data, args.latent_type_size) - inputs["tgt_ids"] = inputs["tgt_ids"].astype("int64") - pred = model(inputs)[0] - bot_response = pred["response"] - print(colored("[Bot]:", "blue", attrs=["bold"]), colored(bot_response, attrs=["bold"])) - context.append(bot_response) - return - - -if __name__ == "__main__": - args = setup_args() - interact(args) diff --git a/examples/dialogue/plato-2/model.py b/examples/dialogue/plato-2/model.py deleted file mode 100644 index 437a70887683..000000000000 --- a/examples/dialogue/plato-2/model.py +++ /dev/null @@ -1,458 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from collections import namedtuple - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F - - -def post_process_context(token_ids, reader, merge=True): - """Post-process the context sequence.""" - context = [] - utt = [] - for tok_id in token_ids[1:]: - if tok_id == reader.eos_id: - utt = reader.tokenizer.convert_ids_to_tokens(utt) - if merge: - utt = reader.tokenizer.merge_subword(utt) - context.append(utt) - utt = [] - else: - utt.append(tok_id) - return context - - -def post_process_response(token_ids, reader, merge=True): - """ - Post-process the decoded sequence. Truncate from the first - and remove the and tokens currently. - """ - eos_pos = len(token_ids) - for i, tok_id in enumerate(token_ids): - if tok_id == reader.eos_id: - eos_pos = i - break - token_ids = token_ids[1:eos_pos] - response = reader.tokenizer.convert_ids_to_tokens(token_ids) - if merge: - response = reader.tokenizer.merge_subword(response) - return token_ids, response - - -def get_cross_turn_repetition(context, pred_tokens, eos_idx, is_cn=False): - """Get cross-turn repetition.""" - if len(pred_tokens) == 0: - return 1.0 - if is_cn: - context = ["".join(utt) for utt in context] - pred_tokens = "".join(pred_tokens) - - pred_tri_grams = set() - for i in range(len(pred_tokens) - 2): - tri_gram = tuple(pred_tokens[i : i + 3]) - pred_tri_grams.add(tri_gram) - for utt in context: - for i in range(len(utt) - 2): - tri_gram = tuple(utt[i : i + 3]) - if tri_gram in pred_tri_grams: - return 1.0 - return 0.0 - - -def get_in_turn_repetition(pred, is_cn=False): - """Get in-turn repetition.""" - if len(pred) == 0: - return 1.0 - if isinstance(pred[0], str): - pred = [tok.lower() for tok in pred] - if is_cn: - pred = "".join(pred) - tri_grams = set() - for i in range(len(pred) - 2): - tri_gram = tuple(pred[i : i + 3]) - if tri_gram in tri_grams: - return 1.0 - tri_grams.add(tri_gram) - return 0.0 - - -class Plato2EncoderLayer(nn.Layer): - def __init__(self, n_head, hidden_size, attn_dropout, act_dropout): - super(Plato2EncoderLayer, self).__init__() - - self.self_attn = nn.MultiHeadAttention(hidden_size, n_head, attn_dropout) - self.pre_norm_layer = nn.LayerNorm(hidden_size) - self.post_norm_layer = nn.LayerNorm(hidden_size) - self.fc1 = nn.Linear(hidden_size, hidden_size * 4) - self.fc2 = nn.Linear(hidden_size * 4, hidden_size) - - self.dropout_layer = nn.Dropout(act_dropout) - self.gelu_layer = nn.GELU() - - def forward(self, x, attn_mask, cache): - query = self.pre_norm_layer(x) - attn_output, new_cache = self.self_attn(query, None, None, attn_mask, cache) - attn_output = self.dropout_layer(attn_output) - attn_output = attn_output + x - ffd_input = self.post_norm_layer(attn_output) - - ffd_output = self.fc1(ffd_input) - ffd_output = self.gelu_layer(ffd_output) - ffd_output = self.dropout_layer(ffd_output) - - ffd_output = self.fc2(ffd_output) - ffd_output = self.dropout_layer(ffd_output) - out = ffd_output + attn_output - - return out, new_cache - - def gen_cache(self, key): - return self.self_attn.gen_cache(key) - - -class Plato2Encoder(nn.Layer): - def __init__( - self, vocab_size, type_size, max_position_seq_len, num_layers, n_head, hidden_size, attn_dropout, act_dropout - ): - super(Plato2Encoder, self).__init__() - - self.n_head = n_head - - self.word_embedding_layer = nn.Embedding(vocab_size, hidden_size) - self.sent_embedding_layer = nn.Embedding(type_size, hidden_size) - self.pos_embedding_layer = nn.Embedding(max_position_seq_len, hidden_size) - - self.encoder_layers = [] - for i in range(num_layers): - encoder_layer = Plato2EncoderLayer(n_head, hidden_size, attn_dropout, act_dropout) - self.encoder_layers.append(encoder_layer) - self.add_sublayer("layers." + str(i), encoder_layer) - self.post_encoder_layer_norm = nn.LayerNorm(hidden_size) - - self.dropout_layer = nn.Dropout(act_dropout) - - def forward(self, caches, token_ids, type_ids, pos_ids, generation_mask, aux_emb=None): - out, self_attn_mask = self.gen_input(token_ids, type_ids, pos_ids, generation_mask, aux_emb) - - new_caches = [] - for i, encoder_layer in enumerate(self.encoder_layers): - out, new_cache = encoder_layer(out, self_attn_mask, caches[i]) - new_caches.append(new_cache) - - enc_output = self.post_encoder_layer_norm(out) - return enc_output, new_caches - - def gen_input(self, token_ids, type_ids, pos_ids, input_mask, aux_emb=None): - token_emb_out = self.word_embedding_layer(token_ids) - type_emb_out = self.sent_embedding_layer(type_ids) - pos_emb_out = self.pos_embedding_layer(pos_ids) - emb_out = token_emb_out + type_emb_out + pos_emb_out - - # auxiliary memory embeddings - if aux_emb is not None: - emb_out = paddle.concat([aux_emb, emb_out], axis=1) - - emb_out = self.dropout_layer(emb_out) - - # generate n-head self-attention mask - self_attn_mask = input_mask - self_attn_mask = paddle.scale(x=self_attn_mask, scale=1e4, bias=-1.0, bias_after_scale=False) - n_head_self_attn_mask = paddle.stack(x=[self_attn_mask] * self.n_head, axis=1) - n_head_self_attn_mask.stop_gradient = True - - return emb_out, n_head_self_attn_mask - - def gen_caches(self, key): - caches = [encoder_layer.gen_cache(key) for encoder_layer in self.encoder_layers] - return caches - - -class NSP(nn.Layer): - def __init__( - self, vocab_size, type_size, max_position_seq_len, num_layers, n_head, hidden_size, attn_dropout, act_dropout - ): - super(NSP, self).__init__() - - self.n_head = n_head - self.hidden_size = hidden_size - - self.word_embedding_layer = nn.Embedding(vocab_size, hidden_size) - self.sent_embedding_layer = nn.Embedding(type_size, hidden_size) - self.pos_embedding_layer = nn.Embedding(max_position_seq_len, hidden_size) - - encoder_layer = nn.TransformerEncoderLayer( - hidden_size, n_head, hidden_size * 4, act_dropout, "gelu", attn_dropout, act_dropout, "True" - ) - encoder_norm = nn.LayerNorm(hidden_size) - self.encoder = nn.TransformerEncoder(encoder_layer, num_layers, encoder_norm) - self.fc1 = nn.Linear(hidden_size, hidden_size) - self.fc2 = nn.Linear(hidden_size, 2) - - self.dropout_layer = nn.Dropout(act_dropout) - self.tanh_layer = nn.Tanh() - self.softmax = nn.Softmax() - - def forward(self, inputs): - token_ids = inputs["token_ids"] - type_ids = inputs["type_ids"] - pos_ids = inputs["pos_ids"] - attention_mask = inputs["attention_mask"] - label_pos = inputs["label_pos"] - - out, self_attn_mask = self.gen_input(token_ids, type_ids, pos_ids, attention_mask) - # [-1, seq_len, hidden_size] - enc_out = self.encoder(out, self_attn_mask) - - enc_out = paddle.reshape(enc_out, [-1, self.hidden_size]) - label_pos = paddle.cast(label_pos, "int64") - out = paddle.gather(enc_out, label_pos) - pooled_out = self.fc1(out) - pooled_out = self.tanh_layer(pooled_out) - - # [-1, 2] - logits = self.fc2(pooled_out) - probs = self.softmax(logits) - - return probs - - def gen_input(self, token_ids, type_ids, pos_ids, input_mask, aux_emb=None): - token_emb_out = self.word_embedding_layer(token_ids) - type_emb_out = self.sent_embedding_layer(type_ids) - pos_emb_out = self.pos_embedding_layer(pos_ids) - emb_out = token_emb_out + type_emb_out + pos_emb_out - - # auxiliary memory embeddings - if aux_emb is not None: - emb_out = paddle.concat([aux_emb, emb_out], axis=1) - - emb_out = self.dropout_layer(emb_out) - - # generate n-head self-attention mask - self_attn_mask = input_mask - self_attn_mask = paddle.scale(x=self_attn_mask, scale=1e4, bias=-1.0, bias_after_scale=False) - n_head_self_attn_mask = paddle.stack(x=[self_attn_mask] * self.n_head, axis=1) - n_head_self_attn_mask.stop_gradient = True - - return emb_out, n_head_self_attn_mask - - -class Plato2InferModel(nn.Layer): - def __init__( - self, - nsp_reader, - num_layers, - n_head, - hidden_size, - vocab_size=8001, - type_size=2, - latent_type_size=20, - max_position_seq_len=256, - act_dropout=0.1, - attn_dropout=0.1, - max_dec_len=64, - min_dec_len=1, - topk=10, - ): - super(Plato2InferModel, self).__init__() - - self.nsp_reader = nsp_reader - self.num_layers = num_layers - self.latent_type_size = latent_type_size - self.max_dec_len = max_dec_len - self.min_dec_len = min_dec_len - self.topk = topk - self.unk_id = 0 - self.bos_id = 1 - self.eos_id = 2 - self.mask_id = 8000 - self.after_eos = paddle.ones([vocab_size]) * -1e9 - self.after_eos[self.eos_id] = 0 - self.is_cn = False - self.batch_size = 1 - - self.latent_weight = paddle.create_parameter([hidden_size, latent_type_size], "float32") - - self.plato2_encoder = Plato2Encoder( - vocab_size, type_size, max_position_seq_len, num_layers, n_head, hidden_size, attn_dropout, act_dropout - ) - - self.logits_fc_layer = nn.Linear(hidden_size, hidden_size) - self.logits_layer_norm = nn.LayerNorm(hidden_size) - self.logits_bias = paddle.create_parameter([vocab_size], "float32", is_bias=True) - - self.nsp_predictor = NSP( - vocab_size, type_size, max_position_seq_len, num_layers, n_head, hidden_size, attn_dropout, act_dropout - ) - - self.gelu_layer = nn.GELU() - self.softmax = nn.Softmax() - - @paddle.no_grad() - def forward(self, inputs): - token_ids = inputs["token_ids"] - type_ids = inputs["type_ids"] - pos_ids = inputs["pos_ids"] - generation_mask = inputs["generation_mask"] - latent_id = inputs["latent_id"] - data_id = inputs["data_id"] - - # [-1, 1, latent_type_size] - latent_id = F.one_hot(latent_id, self.latent_type_size) - # [-1, 1, hidden_size] - latent_emb = paddle.matmul(latent_id, self.latent_weight, transpose_y=True) - - caches = self.plato2_encoder.gen_caches(token_ids) - - # [-1, seq_len + 1, hidden_size] - enc_out, new_caches = self.plato2_encoder(caches, token_ids, type_ids, pos_ids, generation_mask, latent_emb) - - pred_ids = self.decode(inputs, new_caches) - - nsp_inputs = self.gen_nsp_input(token_ids, pred_ids) - # [-1, 2] - probs = self.nsp_predictor(nsp_inputs) - - return self.get_results(data_id, token_ids, pred_ids, probs) - - def decode(self, inputs, caches): - tgt_ids = inputs["tgt_ids"] - tgt_pos = inputs["tgt_pos"] - tgt_generation_mask = inputs["tgt_generation_mask"] - predictions = tgt_ids - - # TODO - step = 0 - while step < self.max_dec_len: - # [-1, 1] - append_mask = paddle.cast(tgt_ids != self.eos_id, dtype=tgt_generation_mask.dtype) - tgt_generation_mask = paddle.concat([tgt_generation_mask, paddle.unsqueeze(append_mask, 1)], axis=-1) - tgt_sent = paddle.ones([tgt_generation_mask.shape[0], 1], dtype=tgt_ids.dtype) - - # [-1, 1, hidden_size] - out, caches = self.plato2_encoder(caches, tgt_ids, tgt_sent, tgt_pos, tgt_generation_mask) - out = paddle.squeeze(out, axis=1) - - # [-1, hidden_size] - trans = self.logits_fc_layer(out) - trans = self.gelu_layer(trans) - trans = self.logits_layer_norm(trans) - - # [-1, vocab_size] - logits = ( - paddle.matmul(trans, self.plato2_encoder.word_embedding_layer.weight, transpose_y=True) - + self.logits_bias - ) - logits[:, self.unk_id] = -1e9 - logits[:, self.bos_id] = -1e9 - logits[:, self.mask_id] = -1e9 - if step < self.min_dec_len: - logits[:, self.eos_id] = -1e9 - logits = logits * append_mask + (1 - append_mask) * self.after_eos - probs = self.softmax(logits) - - # [-1, topk] - topk_probs, _ = paddle.topk(probs, k=self.topk) - mask = paddle.cast(probs >= topk_probs[:, -1:], "float32") - sums = paddle.sum(topk_probs, axis=-1, keepdim=True) - new_probs = probs * mask / sums - # [-1, 1] - sampling_ids = paddle.multinomial(new_probs) - - step = step + 1 - tgt_ids = sampling_ids - tgt_pos = tgt_pos + 1 - predictions = paddle.concat([predictions, tgt_ids], axis=1) - return predictions - - def gen_nsp_input(self, token_ids, pred_ids): - token_ids = token_ids.numpy() - pred_ids = pred_ids.numpy() - - def __reader__(): - headers = ["src", "tgt", "data_id"] - - Example = namedtuple("Example", headers) - - for i, (raw, pred) in enumerate(zip(token_ids, pred_ids)): - context = post_process_context(raw, self.nsp_reader, merge=False) - _, response = post_process_response(pred, self.nsp_reader, merge=False) - context_tokenized_input = " [SEP] ".join(" ".join(utt) for utt in context) - response_tokenized_input = " ".join(response) - example = Example(src=context_tokenized_input, tgt=response_tokenized_input, data_id=i) - data = self.nsp_reader._convert_example_to_record(example, is_infer=True) - yield data - return - - generator = self.nsp_reader.data_generator( - reader=__reader__, - is_infer=True, - phase="test", - ) - inputs = next(generator()) - - # print('\nnsp_inputs:') - for key in inputs: - inputs[key] = paddle.to_tensor(inputs[key]) - if key in ["token_ids", "type_ids", "pos_ids"]: - inputs[key] = paddle.squeeze(inputs[key], axis=-1) - # print(key, inputs[key].shape) - # print(inputs[key]) - return inputs - - def get_results(self, data_id, token_ids, pred_ids, probs): - data_id = data_id.numpy() - token_ids = token_ids.numpy() - pred_ids = pred_ids.numpy() - probs = probs.numpy() - - infos = [] - for raw, pred, prob in zip(token_ids, pred_ids, probs): - tokens = post_process_context(raw, self.nsp_reader) - pred_token_ids, pred_tokens = post_process_response(pred, self.nsp_reader) - info = {} - info["response"] = " ".join(pred_tokens) - cross_turn_repetition = get_cross_turn_repetition(tokens, pred_tokens, self.nsp_reader.eos_id, self.is_cn) - in_turn_repetition = max( - get_in_turn_repetition(pred_tokens, self.is_cn), get_in_turn_repetition(pred_token_ids) - ) - - info["score"] = float(prob[1]) - if len(pred_token_ids) >= self.max_dec_len: - info["score"] -= 1e3 - elif cross_turn_repetition > 0: - info["score"] -= 1e3 - elif in_turn_repetition > 0: - info["score"] -= 1e3 - infos.append(info) - - results = [] - pre_idx = 0 - sample = [] - for idx, info in zip(data_id, infos): - if idx != pre_idx: - sample = sorted(sample, key=lambda info: -info["score"]) - result = sample[0] - result["data_id"] = pre_idx - results.apeend(result) - sample = [] - pre_idx = idx - sample.append(info) - if sample: - sample = sorted(sample, key=lambda info: -info["score"]) - result = sample[0] - result["data_id"] = pre_idx - results.append(result) - return results diff --git a/examples/dialogue/plato-2/readers/dialog_reader.py b/examples/dialogue/plato-2/readers/dialog_reader.py deleted file mode 100644 index 00339c1f0a0e..000000000000 --- a/examples/dialogue/plato-2/readers/dialog_reader.py +++ /dev/null @@ -1,436 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Dialogue Reader.""" - -import csv -import gzip -from collections import namedtuple -from contextlib import contextmanager - -import numpy as np -import utils.tokenization as tokenization -from utils import pad_batch_data -from utils.masking import mask - -from paddlenlp.trainer.argparser import strtobool - - -class DialogReader(object): - """The implement of DialogReader.""" - - @classmethod - def add_cmdline_args(cls, parser): - """Add cmdline argurments.""" - group = parser.add_argument_group("Reader") - group.add_argument("--max_src_len", type=int, default=128) - group.add_argument("--max_tgt_len", type=int, default=128) - group.add_argument("--truncate_first_turn", type=strtobool, default=False) - group.add_argument("--file_format", type=str, default="file", choices=["file", "filelist"]) - group.add_argument("--data_format", type=str, default="raw", choices=["raw", "tokenized", "numerical"]) - group.add_argument("--in_tokens", type=strtobool, default=False) - group.add_argument("--batch_size", type=int, default=16) - group.add_argument("--continuous_position", type=strtobool, default=True) - group.add_argument("--random_seed", type=int, default=11) - group.add_argument("--sort_pool_size", type=int, default=2**16) - - group = parser.add_argument_group("Tokenizer") - group.add_argument("--tokenizer", type=str, default="SentencePieceTokenizer") - args, _ = parser.parse_known_args() - tokenizer_cls = getattr(tokenization, args.tokenizer) - tokenizer_cls.add_cmdline_args(parser) - return group - - def __init__(self, args): - tokenizer_cls = getattr(tokenization, args.tokenizer) - self.tokenizer = tokenizer_cls(args) - self.vocab = self.tokenizer.vocab - self.pad_id = args.pad_id = self.vocab["[PAD]"] - self.bos_id = args.bos_id = self.vocab["[CLS]"] - self.eos_id = args.eos_id = self.vocab["[SEP]"] - self.unk_id = args.unk_id = self.vocab["[UNK]"] - self.mask_id = args.mask_id = self.vocab["[MASK]"] - self.vocab_size = args.get("vocab_size", 0) - self.max_src_len = args.max_src_len - self.max_tgt_len = args.max_tgt_len - self.truncate_first_turn = args.truncate_first_turn - self.file_format = args.file_format - self.data_format = args.data_format - self.in_tokens = args.in_tokens - self.batch_size = args.batch_size - self.continuous_position = args.continuous_position - self.sort_pool_size = args.sort_pool_size - - # random_seed must be set for data slicing when using multi-gpu - self.global_rng = np.random.RandomState(args.random_seed) - - # training progress - self.current_example = 0 - self.current_epoch = 0 - self.num_examples = 0 - - # model related - - self.fields = ["token_ids", "type_ids", "pos_ids"] - self.num_numerical_fields = len(self.fields) - self.fields += ["tgt_start_idx", "data_id"] - self.sort_key = lambda record: [len(record.token_ids)] - - self.Record = namedtuple("Record", self.fields, defaults=(None,) * len(self.fields)) - - self.features = {} - return - - def get_train_progress(self): - """Gets progress for training phase.""" - return self.current_epoch, self.current_file_index, self.total_file - - def _convert_example_to_record(self, example, is_infer): - # process src - src_token_ids = [] - src_pos_ids = [] - - # tokenize src - s_token_ids_list = [] - for s in example.src.split("[SEP]"): - s = tokenization.convert_to_unicode(s).strip() - - if self.data_format == "tokenized": - s_tokens = s.split(" ") - else: - s_tokens = self.tokenizer.tokenize(s) - - s_token_ids = self.tokenizer.convert_tokens_to_ids(s_tokens) + [self.eos_id] - s_token_ids_list.append(s_token_ids) - - # trim src - idx = len(s_token_ids_list) - 1 - total_token_num = 1 - while idx >= 0: - total_token_num += len(s_token_ids_list[idx]) - if total_token_num > self.max_src_len: - if self.truncate_first_turn and idx == 0: - truncated_ids = s_token_ids_list[idx][: self.max_src_len - total_token_num] - if len(truncated_ids) > 1: - s_token_ids_list[idx] = truncated_ids[:-1] + [self.eos_id] - idx -= 1 - break - idx -= 1 - - for i, s_token_ids in enumerate(s_token_ids_list[idx + 1 :], idx + 1): - src_token_ids += s_token_ids - src_pos_ids += list(range(1, len(s_token_ids) + 1)) - - src_token_ids = [self.bos_id] + src_token_ids - src_type_ids = [0] * len(src_token_ids) - src_pos_ids = [0] + src_pos_ids - assert ( - len(src_token_ids) == len(src_type_ids) == len(src_pos_ids) - ), "not len(src_token_ids) == len(src_type_ids) == len(src_pos_ids)" - - token_ids = src_token_ids - type_ids = src_type_ids - pos_ids = src_pos_ids - tgt_start_idx = len(token_ids) - - if not is_infer: - # process tgt - # tokenize tgt - tgt = tokenization.convert_to_unicode(example.tgt).strip() - if self.data_format == "tokenized": - tgt_tokens = tgt.split(" ") - else: - tgt_tokens = self.tokenizer.tokenize(tgt) - - tgt_token_ids = self.tokenizer.convert_tokens_to_ids(tgt_tokens) - tgt_token_ids.append(self.eos_id) - - # trim tgt - if len(tgt_token_ids) > self.max_tgt_len - 1: - tgt_token_ids = tgt_token_ids[: self.max_tgt_len - 1] - - tgt_token_ids = [self.bos_id] + tgt_token_ids - tgt_type_ids = [1] * len(tgt_token_ids) - tgt_pos_ids = list(range(1, len(tgt_token_ids) + 1)) - assert ( - len(tgt_token_ids) == len(tgt_type_ids) == len(tgt_pos_ids) - ), "not len(tgt_token_ids) == len(tgt_type_ids) == len(tgt_pos_ids)" - - token_ids += tgt_token_ids - type_ids += tgt_type_ids - pos_ids += tgt_pos_ids - - assert len(token_ids) == len(type_ids) == len(pos_ids), "not len(token_ids) == len(type_ids) == len(pos_ids)" - - if self.continuous_position: - src_pos_ids = list(range(len(src_token_ids))) - if not is_infer: - tgt_pos_ids = list(range(len(tgt_token_ids))) - pos_ids = list(range(len(token_ids))) - - field_values = {"token_ids": src_token_ids, "type_ids": src_type_ids, "pos_ids": src_pos_ids} - field_values["tgt_start_idx"] = tgt_start_idx - field_values["data_id"] = example.data_id - - record = self.Record(**field_values) - return record - - def _read_tsv(self, fp, phase, is_infer, delimiter="\t", quotechar=None): - """Reads a tab separated value file.""" - csv.field_size_limit(2**20) - reader = csv.reader(fp, delimiter=delimiter, quotechar=quotechar) - headers = next(reader) - headers.append("data_id") - Example = namedtuple("Example", headers) - - for i, line in enumerate(reader): - example = Example(*line, data_id=i) - if is_infer or phase.endswith("test"): - self.features[phase][i] = example - record = self._convert_example_to_record(example, is_infer) - yield record - - def _read_numerical_file(self, fp, delimiter=";"): - for i, line in enumerate(fp): - cols = tokenization.convert_to_unicode(line).strip().split(delimiter) - cols = list(map(lambda x: list(map(int, x.split(" "))), cols)) - if len(cols) > self.num_numerical_fields: - cols = cols[: self.num_numerical_fields] - tgt_start_idx = cols[0].index(self.bos_id, 1) - record = self.Record(*cols, tgt_start_idx=tgt_start_idx, data_id=i) - yield record - - def _read_file(self, input_file, phase, is_infer): - def __wrapper__(): - with open_file(input_file) as fp: - if self.data_format == "numerical": - records = self._read_numerical_file(fp) - else: - records = self._read_tsv(fp, phase, is_infer) - for record in records: - yield record - - return __wrapper__ - - def _read_files(self, filelist, phase, is_infer, shuffle_files): - input_files = open(filelist).readlines() - - def __wrapper__(): - if shuffle_files: - self.global_rng.shuffle(input_files) - - if phase == "train": - self.total_file = len(input_files) - for file_index, input_file in enumerate(input_files, 1): - if phase == "train": - self.current_file_index = file_index - self.current_file = input_file - file_reader = self._read_file(input_file.strip(), phase, is_infer) - for record in file_reader(): - yield record - - return __wrapper__ - - def _batch_reader(self, reader, phase=None, is_infer=False, sort_pool_size=2**16): - """Construct a batch reader.""" - - def update_max_lens(max_lens, record): - """Update max_lens.""" - if max_lens is None: - return self.sort_key(record) - else: - return [max(max_len, l) for max_len, l in zip(max_lens, self.sort_key(record))] - - def get_batch(reader): - """Generate batches from reader.""" - batch, max_lens = [], None - for record in reader(): - if record is None: - yield batch - batch, max_lens = [], None - continue - - self.current_example += 1 - max_lens = update_max_lens(max_lens, record) - if self.in_tokens: - to_append = (len(batch) + 1) * sum(max_lens) <= self.batch_size - else: - to_append = len(batch) < self.batch_size - if to_append: - batch.append(record) - else: - yield batch - batch, max_lens = [record], self.sort_key(record) - - if len(batch) > 0: - yield batch - - def get_sorted_batch(pool): - """Generate sorted batches from pool.""" - pool = sorted(pool, key=self.sort_key) - batches = [] - batch, max_lens = [], None - for record in pool: - self.current_example += 1 - max_lens = update_max_lens(max_lens, record) - if self.in_tokens: - to_append = (len(batch) + 1) * sum(max_lens) <= self.batch_size - else: - to_append = len(batch) < self.batch_size - if to_append: - batch.append(record) - else: - batches.append(batch) - batch, max_lens = [record], self.sort_key(record) - - if len(batch) > 0: - batches.append(batch) - self.global_rng.shuffle(batches) - - for batch in batches: - yield batch - - def __wrapper__(): - if sort_pool_size > 0: - pool = [] - for record in reader(): - pool.append(record) - if len(pool) == sort_pool_size: - for batch in get_sorted_batch(pool): - yield batch - pool = [] - if len(pool) > 0: - for batch in get_sorted_batch(pool): - yield batch - else: - for batch in get_batch(reader): - yield batch - - return __wrapper__ - - def _distributed_batch_reader(self, batch_reader, num_part, part_id, is_test=False): - def __wrapper__(): - batches = [] - for batch in batch_reader(): - batches.append(batch) - if len(batches) == num_part: - yield batches[part_id] - batches = [] - if is_test and 0 <= part_id < len(batches): - yield batches[part_id] - return - - return __wrapper__ - - def data_generator( - self, input_file=None, reader=None, num_epochs=1, num_part=1, part_id=0, phase=None, is_infer=False - ): - """Data generator.""" - - def __wrapper__(): - if is_infer or phase.endswith("test"): - self.features[phase] = {} - - nonlocal reader - if reader is None: - if self.file_format == "filelist": - reader = self._read_files(input_file, phase, is_infer, not phase.endswith("test")) - else: - if phase == "train": - self.total_file = 1 - self.current_file_index = 1 - self.current_file = input_file - reader = self._read_file(input_file, phase, is_infer) - - batch_reader = self._batch_reader( - reader, phase, is_infer, sort_pool_size=self.sort_pool_size if not is_infer else 0 - ) - if phase == "train": - batch_reader = self._distributed_batch_reader(batch_reader, num_part, part_id) - elif phase.startswith("distributed"): - batch_reader = self._distributed_batch_reader(batch_reader, num_part, part_id, is_test=True) - - for epoch_index in range(num_epochs): - if phase == "train": - self.current_example = 0 - self.current_epoch = epoch_index + 1 - for batch in batch_reader(): - yield self._pad_batch_records(batch, is_infer) - - return __wrapper__ - - def _gen_self_attn_mask(self, batch_token_ids, batch_tgt_start_idx=None, is_unidirectional=True, shift_len=0): - max_len = max(map(len, batch_token_ids)) - input_mask_data = np.zeros((len(batch_token_ids), max_len + shift_len, max_len + shift_len)) - if is_unidirectional: - for index, mask_data in enumerate(input_mask_data): - start = 0 if batch_tgt_start_idx is None else batch_tgt_start_idx[index] - end = len(batch_token_ids[index]) - mask_data[: end + shift_len, : start + shift_len] = 1.0 - # Generate the lower triangular matrix using the slice of matrix - b = np.tril(np.ones([end - start, end - start]), 0) - mask_data[start + shift_len : end + shift_len, start + shift_len : end + shift_len] = b - else: - for index, token_ids in enumerate(batch_token_ids): - input_mask_data[index, : len(token_ids) + shift_len, : len(token_ids) + shift_len] = 1.0 - return input_mask_data.astype("float32") - - def _pad_batch_records(self, batch_records, is_infer): - """ - Padding batch records and construct model's inputs. - """ - batch = {} - batch_token_ids = [record.token_ids for record in batch_records] - batch_type_ids = [record.type_ids for record in batch_records] - batch_pos_ids = [record.pos_ids for record in batch_records] - batch["token_ids"] = pad_batch_data(batch_token_ids, pad_id=self.pad_id) - batch["type_ids"] = pad_batch_data(batch_type_ids, pad_id=self.pad_id) - batch["pos_ids"] = pad_batch_data(batch_pos_ids, pad_id=self.pad_id) - - batch_tgt_start_idx = [record.tgt_start_idx for record in batch_records] - batch["generation_mask"] = self._gen_self_attn_mask(batch_token_ids, batch_tgt_start_idx=batch_tgt_start_idx) - - if is_infer: - tgt_ids = np.array([[[self.bos_id]]] * len(batch_token_ids), dtype="int64") - if self.continuous_position: - tgt_pos = np.array(batch_tgt_start_idx, dtype="int64") - else: - tgt_pos = np.zeros_like(batch_tgt_start_idx, dtype="int64") - tgt_pos = tgt_pos.reshape(-1, 1, 1) - batch["init_score"] = np.zeros_like(tgt_ids, dtype="float32").reshape(-1, 1).tolist() - batch["tgt_ids"] = tgt_ids.tolist() - batch["tgt_pos"] = tgt_pos.tolist() - - batch["tgt_generation_mask"] = batch["generation_mask"][:, 0:1, :].astype("float32") - else: - batch["tgt_label"], batch["tgt_pos"] = mask( - batch_tokens=batch_token_ids, - vocab_size=self.vocab_size, - sent_b_starts=batch_tgt_start_idx, - is_unidirectional=True, - ) - - batch_data_id = [record.data_id for record in batch_records] - batch["data_id"] = np.array(batch_data_id).astype("int64").reshape([-1, 1]) - return batch - - -@contextmanager -def open_file(filename): - """Open file.""" - if filename.endswith(".gz"): - fp = gzip.open(filename, "rt") - else: - fp = open(filename) - yield fp - fp.close() diff --git a/examples/dialogue/plato-2/readers/nsp_reader.py b/examples/dialogue/plato-2/readers/nsp_reader.py deleted file mode 100644 index 968da9ff1ba0..000000000000 --- a/examples/dialogue/plato-2/readers/nsp_reader.py +++ /dev/null @@ -1,152 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""NSP Reader.""" - -from collections import namedtuple - -import numpy as np -from readers.dialog_reader import DialogReader -from utils import pad_batch_data -from utils.masking import mask - -from paddlenlp.trainer.argparser import strtobool - - -class NSPReader(DialogReader): - """NSP Reader.""" - - @classmethod - def add_cmdline_args(cls, parser): - """Add cmdline argurments.""" - group = DialogReader.add_cmdline_args(parser) - group.add_argument( - "--attention_style", type=str, default="bidirectional", choices=["bidirectional", "unidirectional"] - ) - group.add_argument("--mix_negative_sample", type=strtobool, default=False) - return group - - def __init__(self, args): - super(NSPReader, self).__init__(args) - self.fields.append("label") - self.Record = namedtuple("Record", self.fields, defaults=(None,) * len(self.fields)) - - self.attention_style = args.attention_style - self.mix_negative_sample = args.mix_negative_sample - return - - def _convert_example_to_record(self, example, is_infer): - record = super(NSPReader, self)._convert_example_to_record(example, False) - if "label" in example._fields: - record = record._replace(label=int(example.label)) - return record - - def _mix_negative_sample(self, reader, neg_pool_size=2**16): - def gen_from_pool(pool): - num_samples = len(pool) - if num_samples == 1: - # only one sample: it is impossible to generate negative sample - yield pool[0]._replace(label=1) - return - self.global_rng.shuffle(pool) - for i in range(num_samples): - pool[i] = pool[i]._replace(label=1) - j = (i + 1) % num_samples - idx_i = pool[i].tgt_start_idx - idx_j = pool[j].tgt_start_idx - field_values = {} - field_values["token_ids"] = pool[i].token_ids[:idx_i] + pool[j].token_ids[idx_j:] - field_values["type_ids"] = pool[i].type_ids[:idx_i] + pool[j].type_ids[idx_j:] - field_values["pos_ids"] = list(range(len(field_values["token_ids"]))) - neg_record = self.Record(**field_values, tgt_start_idx=idx_i, data_id=-1, label=0) - pool.append(neg_record) - assert len(neg_record.token_ids) <= self.max_seq_len - self.global_rng.shuffle(pool) - for record in pool: - yield record - - def __wrapper__(): - pool = [] - for record in reader(): - pool.append(record) - if len(pool) == neg_pool_size: - for record in gen_from_pool(pool): - yield record - pool = [] - if len(pool) > 0: - for record in gen_from_pool(pool): - yield record - - return __wrapper__ - - def _batch_reader(self, reader, phase=None, is_infer=False, sort_pool_size=2**16): - if self.mix_negative_sample: - reader = self._mix_negative_sample(reader) - return super(NSPReader, self)._batch_reader( - reader, phase=phase, is_infer=is_infer, sort_pool_size=sort_pool_size - ) - - def _pad_batch_records(self, batch_records, is_infer): - """ - Padding batch records and construct model's inputs. - """ - batch = {} - batch_token_ids = [record.token_ids for record in batch_records] - batch_type_ids = [record.type_ids for record in batch_records] - batch_pos_ids = [record.pos_ids for record in batch_records] - batch_tgt_start_idx = [record.tgt_start_idx for record in batch_records] - batch_label = [record.label for record in batch_records] - - if self.attention_style == "unidirectional": - batch["token_ids"] = pad_batch_data(batch_token_ids, pad_id=self.pad_id) - batch["type_ids"] = pad_batch_data(batch_type_ids, pad_id=self.pad_id) - batch["pos_ids"] = pad_batch_data(batch_pos_ids, pad_id=self.pad_id) - tgt_label, tgt_pos, label_pos = mask( - batch_tokens=batch_token_ids, - vocab_size=self.vocab_size, - bos_id=self.bos_id, - sent_b_starts=batch_tgt_start_idx, - labels=batch_label, - is_unidirectional=True, - ) - attention_mask = self._gen_self_attn_mask(batch_token_ids, batch_tgt_start_idx) - else: - batch_mask_token_ids, tgt_label, tgt_pos, label_pos = mask( - batch_tokens=batch_token_ids, - vocab_size=self.vocab_size, - bos_id=self.bos_id, - eos_id=self.eos_id, - mask_id=self.mask_id, - sent_b_starts=batch_tgt_start_idx, - labels=batch_label, - is_unidirectional=False, - ) - if not is_infer: - batch_token_ids = batch_mask_token_ids - batch["token_ids"] = pad_batch_data(batch_token_ids, pad_id=self.pad_id) - batch["type_ids"] = pad_batch_data(batch_type_ids, pad_id=self.pad_id) - batch["pos_ids"] = pad_batch_data(batch_pos_ids, pad_id=self.pad_id) - attention_mask = self._gen_self_attn_mask(batch_token_ids, is_unidirectional=False) - - batch["attention_mask"] = attention_mask - batch["label_pos"] = label_pos - - if not is_infer: - batch_label = np.array(batch_label).astype("int64").reshape([-1, 1]) - batch["label"] = batch_label - batch["tgt_label"] = tgt_label - batch["tgt_pos"] = tgt_pos - - batch_data_id = [record.data_id for record in batch_records] - batch["data_id"] = np.array(batch_data_id).astype("int64").reshape([-1, 1]) - return batch diff --git a/examples/dialogue/plato-2/readers/plato_reader.py b/examples/dialogue/plato-2/readers/plato_reader.py deleted file mode 100644 index 3d3cd790ee76..000000000000 --- a/examples/dialogue/plato-2/readers/plato_reader.py +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Plato Reader.""" - -import numpy as np - -from readers.dialog_reader import DialogReader -from utils import pad_batch_data -from utils.masking import mask - - -class PlatoReader(DialogReader): - """The implement of PlatoReader""" - - def __init__(self, args): - super(PlatoReader, self).__init__(args) - self.latent_type_size = args.latent_type_size - self.use_bow = args.use_bow - - def _pad_batch_records(self, batch_records, is_infer): - """ - Padding batch records and construct model's inputs. - """ - batch = {} - batch_token_ids = [record.token_ids for record in batch_records] - batch_type_ids = [record.type_ids for record in batch_records] - batch_pos_ids = [record.pos_ids for record in batch_records] - - batch_tgt_start_idx = [record.tgt_start_idx for record in batch_records] - - batch_size = len(batch_token_ids) - - # padding - batch["token_ids"] = pad_batch_data(batch_token_ids, pad_id=self.pad_id) - batch["type_ids"] = pad_batch_data(batch_type_ids, pad_id=self.pad_id) - batch["pos_ids"] = pad_batch_data(batch_pos_ids, pad_id=self.pad_id) - - batch["generation_mask"] = self._gen_self_attn_mask( - batch_token_ids, batch_tgt_start_idx=batch_tgt_start_idx, is_unidirectional=True, shift_len=1 - ) - if not is_infer: - batch["recognition_mask"] = self._gen_self_attn_mask(batch_token_ids, is_unidirectional=False, shift_len=1) - - if is_infer: - tgt_ids = np.array([[[self.bos_id]]] * batch_size, dtype="int64") - if self.continuous_position: - tgt_pos = np.array(batch_tgt_start_idx, dtype="int64") - else: - tgt_pos = np.zeros_like(batch_tgt_start_idx, dtype="int64") - tgt_pos = tgt_pos.reshape(-1, 1, 1) - batch["init_score"] = np.zeros_like(tgt_ids, dtype="float32").reshape(-1, 1).tolist() - batch["tgt_ids"] = tgt_ids.tolist() - batch["tgt_pos"] = tgt_pos.tolist() - batch["parent_idx"] = np.array(range(batch_size), dtype="int32") - - batch["tgt_generation_mask"] = batch["generation_mask"][:, 0:1, :].astype("float32") - else: - mask_return_list = mask( - batch_tokens=batch_token_ids, - vocab_size=self.vocab_size, - sent_b_starts=batch_tgt_start_idx, - is_unidirectional=True, - use_latent=True, - use_bow=self.use_bow, - ) - batch["tgt_label"] = mask_return_list[0] - batch["tgt_pos"] = mask_return_list[1] - if self.use_bow: - batch["bow_label"] = mask_return_list[2] - batch["bow_pos"] = mask_return_list[3] - - batch_data_id = [record.data_id for record in batch_records] - batch["data_id"] = np.array(batch_data_id).astype("int64").reshape([-1, 1]) - return batch diff --git a/examples/dialogue/plato-2/utils/__init__.py b/examples/dialogue/plato-2/utils/__init__.py deleted file mode 100644 index 1a9ff1098dd3..000000000000 --- a/examples/dialogue/plato-2/utils/__init__.py +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Utils.""" - -from itertools import chain - -import numpy as np -import paddle - - -def repeat_array(array, times): - """Repeate numpy array.""" - if isinstance(array, list): - return list(chain(*([array] * times))) - else: - return np.concatenate([array] * times, axis=0) - - -def gen_inputs(inputs, latent_type_size): - batch_size = len(inputs["data_id"]) - inputs = {name: repeat_array(array, latent_type_size) for name, array in inputs.items()} - # Add latent_id - inputs["latent_id"] = np.array( - [i for i in range(latent_type_size) for _ in range(batch_size)], dtype="int64" - ).reshape([-1, 1]) - - # print('\nplato_inputs:') - for key in inputs: - inputs[key] = paddle.to_tensor(inputs[key]) - if key in ["token_ids", "type_ids", "pos_ids", "tgt_ids", "tgt_pos", "data_id"]: - inputs[key] = paddle.squeeze(inputs[key], axis=-1) - # print(key, inputs[key].shape, inputs[key].dtype) - return inputs - - -def pad_batch_data(insts, pad_id=0): - """Pad the instances to the max sequence length in batch.""" - max_len = max(map(len, insts)) - inst_data = np.array([list(inst) + [pad_id] * (max_len - len(inst)) for inst in insts]) - return inst_data.astype("int64").reshape([-1, max_len, 1]) diff --git a/examples/dialogue/plato-2/utils/args.py b/examples/dialogue/plato-2/utils/args.py deleted file mode 100644 index b112acf6ba73..000000000000 --- a/examples/dialogue/plato-2/utils/args.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Parse argument.""" - -import argparse -import json - - -class Args(dict): - """Arguments class - - Store arguments in training / infer / ... scripts. - """ - - def __getattr__(self, name): - if name in self.keys(): - return self[name] - for v in self.values(): - if isinstance(v, Args): - if name in v: - return v[name] - return None - - def get(self, key, default_value=None): - """Get the value of corresponding key.""" - if key in self.keys(): - return self[key] - for v in self.values(): - if isinstance(v, Args): - if key in v: - return v[key] - return default_value - - def __setattr__(self, name, value): - self[name] = value - - def save(self, filename): - with open(filename, "w") as fp: - json.dump(self, fp, ensure_ascii=False, indent=4, sort_keys=False) - - def load(self, filename, group_name=None): - if group_name is not None: - if group_name not in self: - self[group_name] = Args() - self[group_name].load(filename) - return - with open(filename, "r") as fp: - params_dict = json.load(fp) - for k, v in params_dict.items(): - if isinstance(v, dict): - self[k].update(Args(v)) - else: - self[k] = v - - -def parse_args(parser: argparse.ArgumentParser, allow_unknown=False) -> Args: - """Parse hyper-parameters from cmdline.""" - if allow_unknown: - parsed, _ = parser.parse_known_args() - else: - parsed = parser.parse_args() - args = Args() - optional_args = parser._action_groups[1] - for action in optional_args._group_actions[1:]: - arg_name = action.dest - args[arg_name] = getattr(parsed, arg_name) - for group in parser._action_groups[2:]: - group_args = Args() - for action in group._group_actions: - arg_name = action.dest - group_args[arg_name] = getattr(parsed, arg_name) - if len(group_args) > 0: - if group.title in args: - args[group.title].update(group_args) - else: - args[group.title] = group_args - return args diff --git a/examples/dialogue/plato-2/utils/masking.py b/examples/dialogue/plato-2/utils/masking.py deleted file mode 100644 index fb6be808448a..000000000000 --- a/examples/dialogue/plato-2/utils/masking.py +++ /dev/null @@ -1,119 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Reader utils.""" - -import numpy as np - - -def mask( - batch_tokens, - vocab_size, - bos_id=1, - eos_id=2, - mask_id=3, - sent_b_starts=None, - labels=None, - is_unidirectional=False, - use_latent=False, - use_bow=False, -): - """ - Add mask for batch_tokens, return out, mask_label, mask_pos; - Note: mask_pos responding the batch_tokens after padded; - """ - batch_tokens = np.copy(batch_tokens) - max_len = max(map(len, batch_tokens)) - mask_label = [] - mask_pos = [] - if labels is not None: - label_pos = [] - - if is_unidirectional: - # unidirectional language model - if use_latent: - max_len += 1 - shift_len = 1 - else: - shift_len = 0 - for sent_index, sent in enumerate(batch_tokens): - sent_b_index = sent_b_starts[sent_index] if sent_b_starts is not None else 0 - if labels is not None: - label_pos.append(sent_index * max_len + len(sent) - 1 + shift_len) - mask_label.extend(sent[sent_b_index + 1 :]) - mask_pos.extend([sent_index * max_len + i + shift_len for i in range(sent_b_index, len(sent) - 1)]) - mask_label = np.array(mask_label).astype("int64").reshape([-1, 1]) - mask_pos = np.array(mask_pos).astype("int64").reshape([-1, 1]) - return_list = [mask_label, mask_pos] - - # latent related (bow label and pos) - if use_latent and use_bow: - bow_label = [] - bow_pos = [] - for sent_index, sent in enumerate(batch_tokens): - sent_b_index = sent_b_starts[sent_index] if sent_b_starts is not None else 0 - - def __filter__(tok_id): - # TODO: exclude [EOS] from bow loss - return True - - bow_pos.extend([sent_index for i in range(sent_b_index + 1, len(sent)) if __filter__(sent[i])]) - bow_label.extend([sent[i] for i in range(sent_b_index + 1, len(sent)) if __filter__(sent[i])]) - bow_label = np.array(bow_label).astype("int64").reshape([-1, 1]) - bow_pos = np.array(bow_pos).astype("int64").reshape([-1, 1]) - return_list += [bow_label, bow_pos] - else: - # bidirectional mask language model - total_token_num = sum(map(len, batch_tokens)) - prob_mask = np.random.rand(total_token_num) - # TODO: fix replace_ids, include [UNK] - replace_ids = np.random.randint(3, high=vocab_size, size=total_token_num) - prob_index = 0 - for sent_index, sent in enumerate(batch_tokens): - # add pair label position - if labels is not None: - label_pos.append(sent_index * max_len) - - # add mask label and position - for token_index, token in enumerate(sent): - if token == eos_id or token == bos_id: - continue - prob = prob_mask[prob_index + token_index] - if prob > 0.15: - continue - elif 0.03 < prob <= 0.15: - # mask - mask_label.append(sent[token_index]) - sent[token_index] = mask_id - mask_pos.append(sent_index * max_len + token_index) - elif 0.015 < prob <= 0.03: - # random replace - mask_label.append(sent[token_index]) - sent[token_index] = replace_ids[prob_index + token_index] - mask_pos.append(sent_index * max_len + token_index) - else: - # keep the original token - mask_label.append(sent[token_index]) - mask_pos.append(sent_index * max_len + token_index) - - prob_index += len(sent) - - mask_label = np.array(mask_label).astype("int64").reshape([-1, 1]) - mask_pos = np.array(mask_pos).astype("int64").reshape([-1, 1]) - return_list = [batch_tokens, mask_label, mask_pos] - - if labels is not None: - label_pos = np.array(label_pos).astype("int64").reshape([-1, 1]) - assert len(labels) == len(label_pos) - return_list.append(label_pos) - return return_list diff --git a/examples/dialogue/plato-2/utils/tokenization.py b/examples/dialogue/plato-2/utils/tokenization.py deleted file mode 100644 index 7d4741ba984e..000000000000 --- a/examples/dialogue/plato-2/utils/tokenization.py +++ /dev/null @@ -1,189 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""Tokenization classes.""" - -import collections -import sentencepiece as spm -import unicodedata - -from utils.args import str2bool - - -def clean_text(text): - """Performs invalid character removal and whitespace cleanup on text.""" - text = text.replace("“", '"').replace("”", '"').replace("‘", "'").replace("’", "'").replace("—", "-") - - output = [] - for char in text: - if _is_control(char): - continue - if _is_whitespace(char): - output.append(" ") - else: - output.append(char) - return "".join(output) - - -def preprocess_text(inputs, remove_space=True, lower=False): - """preprocess data by removing extra space and normalize data.""" - outputs = inputs - if remove_space: - outputs = " ".join(inputs.strip().split()) - - outputs = unicodedata.normalize("NFKD", outputs) - outputs = "".join([c for c in outputs if not unicodedata.combining(c)]) - if lower: - outputs = outputs.lower() - - return outputs - - -def encode_pieces(spm_model, text, return_unicode=True, sample=False): - """turn sentences into word pieces.""" - # liujiaxiang: add for ernie-albert, mainly consider for “/”/‘/’/— causing too many unk - text = clean_text(text) - - if not sample: - pieces = spm_model.EncodeAsPieces(text) - else: - pieces = spm_model.SampleEncodeAsPieces(text, 64, 0.1) - - return pieces - - -def encode_ids(spm_model, text, sample=False): - """turn sentences into word pieces.""" - pieces = encode_pieces(spm_model, text, return_unicode=False, sample=sample) - ids = [spm_model.PieceToId(piece) for piece in pieces] - return ids - - -def convert_to_unicode(text): - """Converts `text` to Unicode (if it's not already), assuming utf-8 input.""" - if isinstance(text, str): - return text - elif isinstance(text, bytes): - return text.decode("utf-8", "ignore") - else: - raise ValueError("Unsupported string type: %s" % (type(text))) - - -def load_vocab(vocab_file): - """Loads a vocabulary file into a dictionary.""" - vocab = collections.OrderedDict() - fin = open(vocab_file, "r", encoding="UTF-8") - for num, line in enumerate(fin): - items = convert_to_unicode(line.rstrip()).split("\t") - if len(items) > 2: - break - token = items[0] - index = items[1] if len(items) == 2 else num - token = token.strip() - vocab[token] = int(index) - return vocab - - -def convert_by_vocab(vocab, items): - """Converts a sequence of [tokens|ids] using the vocab.""" - output = [] - for item in items: - output.append(vocab[item]) - return output - - -class SentencePieceTokenizer(object): - """Runs end-to-end tokenziation.""" - - @classmethod - def add_cmdline_args(cls, parser): - """Add cmdline argurments.""" - group = parser.add_argument_group("Tokenizer") - group.add_argument("--vocab_path", type=str, required=True) - group.add_argument("--do_lower_case", type=str2bool, default=False) - group.add_argument("--spm_model_file", type=str, required=True) - return group - - def __init__(self, args): - self.spm_model = spm.SentencePieceProcessor() - self.spm_model.Load(args.spm_model_file) - self.vocab = load_vocab(args.vocab_path) - self.do_lower_case = args.do_lower_case - self.inv_vocab = {v: k for k, v in self.vocab.items()} - - def tokenize(self, text): - """Tokenizes a piece of text.""" - text = preprocess_text(text, lower=self.do_lower_case) - return encode_pieces(self.spm_model, text, return_unicode=True) - - def convert_tokens_to_ids(self, tokens): - """Convert tokens to ids.""" - ret = [] - unk_id = self.vocab[""] - for token in tokens: - if token in self.vocab: - ret.append(self.vocab[token]) - else: - ret.append(unk_id) - return ret - - def convert_ids_to_tokens(self, ids): - """Convert ids to tokens.""" - return convert_by_vocab(self.inv_vocab, ids) - - def merge_subword(self, tokens): - """Merge subword.""" - ret = [] - for token in tokens: - if token.startswith("▁"): - ret.append(token[1:]) - else: - if len(ret): - ret[-1] += token - else: - ret.append(token) - - ret = [token for token in ret if token] - return ret - - def convert_ids_to_str(self, ids): - """Convert ids to string.""" - tokens = self.convert_ids_to_tokens(ids) - tokens = self.merge_subword(tokens) - res = " ".join(tokens).replace("", "") - res = res.replace("", "\n").replace("\n ", "\n").strip() - return res - - -def _is_whitespace(char): - """Checks whether `chars` is a whitespace character.""" - # \t, \n, and \r are technically contorl characters but we treat them - # as whitespace since they are generally considered as such. - if char == " " or char == "\t" or char == "\n" or char == "\r": - return True - cat = unicodedata.category(char) - if cat == "Zs": - return True - return False - - -def _is_control(char): - """Checks whether `chars` is a control character.""" - # These are technically control characters but we count them as whitespace - # characters. - if char == "\t" or char == "\n" or char == "\r": - return False - cat = unicodedata.category(char) - if cat.startswith("C"): - return True - return False diff --git a/examples/dialogue/plato-xl b/examples/dialogue/plato-xl deleted file mode 120000 index 3225c24e6351..000000000000 --- a/examples/dialogue/plato-xl +++ /dev/null @@ -1 +0,0 @@ -../../model_zoo/plato-xl \ No newline at end of file diff --git a/examples/dialogue/unified_transformer/finetune.py b/examples/dialogue/unified_transformer/finetune.py deleted file mode 100644 index daeb700d3605..000000000000 --- a/examples/dialogue/unified_transformer/finetune.py +++ /dev/null @@ -1,165 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import math -import os -import time - -import paddle -import paddle.distributed as dist -import paddle.nn as nn -import paddle.nn.functional as F -from datasets import load_dataset -from paddle.optimizer import AdamW -from paddle.optimizer.lr import NoamDecay -from utils import create_data_loader, print_args, set_seed - -from paddlenlp.transformers import ( - UnifiedTransformerLMHeadModel, - UnifiedTransformerTokenizer, -) - - -# yapf: disable -def parse_args(): - parser = argparse.ArgumentParser(__doc__) - parser.add_argument('--model_name_or_path', type=str, default='unified_transformer-12L-cn-luge', help='The path or shortcut name of the pre-trained model.') - parser.add_argument('--save_dir', type=str, default='./checkpoints', help='The directory where the checkpoints will be saved.') - parser.add_argument('--logging_steps', type=int, default=100, help='Log every X updates steps.') - parser.add_argument('--save_steps', type=int, default=1000, help='Save checkpoint every X updates steps.') - parser.add_argument('--seed', type=int, default=2021, help='Random seed for initialization.') - parser.add_argument('--batch_size', type=int, default=16, help='Batch size per GPU/CPU for training.') - parser.add_argument('--lr', type=float, default=5e-5, help='The initial learning rate.') - parser.add_argument('--weight_decay', type=float, default=0.01, help='The weight decay for optimizer.') - parser.add_argument('--epochs', type=int, default=3, help='Total number of training epochs to perform.') - parser.add_argument('--warmup_steps', type=int, default=2500, help='The number of warmup steps.') - parser.add_argument('--max_grad_norm', type=float, default=0.1, help='The max value of grad norm.') - parser.add_argument('--max_seq_len', type=int, default=512, help='The maximum sequence length of training.') - parser.add_argument('--max_response_len', type=int, default=128, help='The maximum response sequence length of training.') - parser.add_argument('--max_knowledge_len', type=int, default=256, help='The maximum knowledge sequence length of training.') - parser.add_argument('--device', type=str, default='gpu', help='The device to select for training the model.') - - args = parser.parse_args() - return args -# yapf: enable - - -def save_ckpt(model, tokenizer, save_dir, name): - output_dir = os.path.join(save_dir, "model_{}".format(name)) - if not os.path.exists(output_dir): - os.makedirs(output_dir) - # Need better way to get inner model of DataParallel - model_to_save = model._layers if isinstance(model, paddle.DataParallel) else model - model_to_save.save_pretrained(output_dir) - tokenizer.save_pretrained(output_dir) - - -def train(args): - paddle.set_device(args.device) - world_size = dist.get_world_size() - if world_size > 1: - dist.init_parallel_env() - - set_seed(args.seed) - - model = UnifiedTransformerLMHeadModel.from_pretrained(args.model_name_or_path) - tokenizer = UnifiedTransformerTokenizer.from_pretrained(args.model_name_or_path) - - if world_size > 1: - model = paddle.DataParallel(model) - - train_ds, dev_ds = load_dataset("duconv", split=("train", "dev")) - train_ds, train_data_loader = create_data_loader(train_ds, tokenizer, args, "train") - dev_ds, dev_data_loader = create_data_loader(dev_ds, tokenizer, args, "dev") - - lr_scheduler = NoamDecay(1 / (args.warmup_steps * (args.lr**2)), args.warmup_steps) - # Generate parameter names needed to perform weight decay. - # All bias and LayerNorm parameters are excluded. - decay_params = [p.name for n, p in model.named_parameters() if not any(nd in n for nd in ["bias", "norm"])] - optimizer = AdamW( - learning_rate=lr_scheduler, - parameters=model.parameters(), - weight_decay=args.weight_decay, - apply_decay_param_fun=lambda x: x in decay_params, - grad_clip=nn.ClipGradByGlobalNorm(args.max_grad_norm), - ) - - step = 0 - total_time = 0.0 - best_ppl = 1e9 - for epoch in range(args.epochs): - print("\nEpoch %d/%d" % (epoch + 1, args.epochs)) - batch_start_time = time.time() - for inputs in train_data_loader: - step += 1 - labels = inputs[-1] - - logits = model(*inputs[:-1]) - loss = F.cross_entropy(logits, labels) - loss.backward() - optimizer.step() - lr_scheduler.step() - optimizer.clear_grad() - - total_time += time.time() - batch_start_time - if step % args.logging_steps == 0: - ppl = paddle.exp(loss) - print( - "step %d - loss: %.4f - ppl: %.4f - lr: %.7f - %.3fs/step" - % (step, loss, ppl, optimizer.get_lr(), total_time / args.logging_steps) - ) - total_time = 0.0 - if step % args.save_steps == 0: - ppl = evaluation(model, dev_data_loader) - if dist.get_rank() == 0: - save_ckpt(model, tokenizer, args.save_dir, step) - if ppl < best_ppl: - best_ppl = ppl - save_ckpt(model, tokenizer, args.save_dir, "best") - print("Saved step {} as best model.\n".format(step)) - batch_start_time = time.time() - print("\nTraining completed.") - - -@paddle.no_grad() -def evaluation(model, data_loader): - print("\nEval begin...") - model.eval() - total_tokens = 0 - total_loss = 0.0 - start_time = time.time() - step = 0 - for inputs in data_loader: - step += 1 - labels = inputs[-1] - - logits = model(*inputs[:-1]) - loss = F.cross_entropy(logits, labels, reduction="sum") - - total_loss += loss.item() - total_tokens += labels.shape[0] - - avg_loss = total_loss / total_tokens - ppl = math.exp(avg_loss) - avg_speed = (time.time() - start_time) / step - print("loss: %.4f - ppl: %.4f - %.3fs/step" % (avg_loss, ppl, avg_speed)) - model.train() - return ppl - - -if __name__ == "__main__": - args = parse_args() - print_args(args) - train(args) diff --git a/examples/dialogue/unified_transformer/infer.py b/examples/dialogue/unified_transformer/infer.py deleted file mode 100644 index 3781f73e16aa..000000000000 --- a/examples/dialogue/unified_transformer/infer.py +++ /dev/null @@ -1,146 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import time - -import paddle -from datasets import load_dataset -from utils import create_data_loader, print_args, select_response, set_seed - -from paddlenlp.metrics import BLEU, Distinct -from paddlenlp.transformers import ( - UnifiedTransformerLMHeadModel, - UnifiedTransformerTokenizer, -) - - -# yapf: disable -def parse_args(): - parser = argparse.ArgumentParser(__doc__) - parser.add_argument('--model_name_or_path', type=str, default='unified_transformer-12L-cn-luge', help='The path or shortcut name of the pre-trained model.') - parser.add_argument('--output_path', type=str, default='./predict.txt', help='The file path where the infer result will be saved.') - parser.add_argument('--logging_steps', type=int, default=100, help='Log every X updates steps.') - parser.add_argument('--seed', type=int, default=2021, help='Random seed for initialization.') - parser.add_argument('--batch_size', type=int, default=16, help='Batch size per GPU/CPU for training.') - parser.add_argument('--max_seq_len', type=int, default=512, help='The maximum sequence length of training.') - parser.add_argument('--max_response_len', type=int, default=128, help='The maximum response sequence length of training.') - parser.add_argument('--max_knowledge_len', type=int, default=256, help='The maximum knowledge sequence length of training.') - parser.add_argument('--min_dec_len', type=int, default=1, help='The minimum sequence length of generation.') - parser.add_argument('--max_dec_len', type=int, default=64, help='The maximum sequence length of generation.') - parser.add_argument('--num_return_sequences', type=int, default=20, help='The numbers of returned sequences for one input in generation.') - parser.add_argument('--decode_strategy', type=str, default='sampling', help='The decode strategy in generation.') - parser.add_argument('--top_k', type=int, default=0, help='The number of highest probability vocabulary tokens to keep for top-k sampling.') - parser.add_argument('--temperature', type=float, default=1.0, help='The value used to module the next token probabilities.') - parser.add_argument('--top_p', type=float, default=1.0, help='The cumulative probability for top-p sampling.') - parser.add_argument('--num_beams', type=int, default=0, help='The number of beams for beam search.') - parser.add_argument('--length_penalty', type=float, default=1.0, help='The exponential penalty to the sequence length for beam search.') - parser.add_argument('--early_stopping', type=eval, default=False, help='Whether to stop the beam search when at least `num_beams` sentences are finished per batch or not.') - parser.add_argument('--device', type=str, default='gpu', help='The device to select for training the model.') - parser.add_argument('--faster', action='store_true', help='Whether to process inference using faster transformer. ') - parser.add_argument('--use_fp16_decoding', action='store_true', help='Whether to use fp16 when using faster transformer. Only works when using faster transformer. ') - - args = parser.parse_args() - return args -# yapf: enable - - -def calc_bleu_and_distinct(preds, targets): - assert len(preds) == len(targets), ( - "The length of pred_responses should be equal to the length of " - "target_responses. But received {} and {}.".format(len(preds), len(targets)) - ) - bleu1 = BLEU(n_size=1) - bleu2 = BLEU(n_size=2) - distinct1 = Distinct(n_size=1) - distinct2 = Distinct(n_size=2) - for pred, target in zip(preds, targets): - pred_tokens = pred.split() - target_token = target.split() - - bleu1.add_inst(pred_tokens, [target_token]) - bleu2.add_inst(pred_tokens, [target_token]) - - distinct1.add_inst(pred_tokens) - distinct2.add_inst(pred_tokens) - - print("\n" + "*" * 15) - print("The auto evaluation result is:") - print("BLEU-1:", bleu1.score()) - print("BLEU-2:", bleu2.score()) - print("DISTINCT-1:", distinct1.score()) - print("DISTINCT-2:", distinct2.score()) - - -@paddle.no_grad() -def infer(args): - paddle.set_device(args.device) - set_seed(args.seed) - - model = UnifiedTransformerLMHeadModel.from_pretrained(args.model_name_or_path) - tokenizer = UnifiedTransformerTokenizer.from_pretrained(args.model_name_or_path) - - test_ds = load_dataset("duconv", split="test_1") - test_ds, test_data_loader = create_data_loader(test_ds, tokenizer, args, "test") - - model.eval() - total_time = 0.0 - start_time = time.time() - pred_responses = [] - for step, inputs in enumerate(test_data_loader, 1): - input_ids, token_type_ids, position_ids, attention_mask, seq_len = inputs - output = model.generate( - input_ids=input_ids, - token_type_ids=token_type_ids, - position_ids=position_ids, - attention_mask=attention_mask, - seq_len=seq_len, - max_length=args.max_dec_len, - min_length=args.min_dec_len, - decode_strategy=args.decode_strategy, - temperature=args.temperature, - top_k=args.top_k, - top_p=args.top_p, - num_beams=args.num_beams, - length_penalty=args.length_penalty, - early_stopping=args.early_stopping, - num_return_sequences=args.num_return_sequences, - use_fp16_decoding=args.use_fp16_decoding, - use_fast=args.faster, - ) - - total_time += time.time() - start_time - if step % args.logging_steps == 0: - print("step %d - %.3fs/step" % (step, total_time / args.logging_steps)) - total_time = 0.0 - - ids, scores = output - results = select_response(ids, scores, tokenizer, args.max_dec_len, args.num_return_sequences) - pred_responses.extend(results) - - start_time = time.time() - - with open(args.output_path, "w", encoding="utf-8") as fout: - for response in pred_responses: - fout.write(response + "\n") - print("\nSave inference result into: %s" % args.output_path) - - target_responses = [example["response"] for example in test_ds] - calc_bleu_and_distinct(pred_responses, target_responses) - - -if __name__ == "__main__": - args = parse_args() - print_args(args) - infer(args) diff --git a/examples/dialogue/unified_transformer/interaction.py b/examples/dialogue/unified_transformer/interaction.py deleted file mode 100644 index cde62e5057d6..000000000000 --- a/examples/dialogue/unified_transformer/interaction.py +++ /dev/null @@ -1,107 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - -import paddle -from termcolor import colored, cprint -from utils import print_args, select_response, set_seed - -from paddlenlp.transformers import ( - UnifiedTransformerLMHeadModel, - UnifiedTransformerTokenizer, -) - - -# yapf: disable -def parse_args(): - parser = argparse.ArgumentParser(__doc__) - parser.add_argument('--model_name_or_path', type=str, default='plato-mini', help='The path or shortcut name of the pre-trained model.') - parser.add_argument('--seed', type=int, default=None, help='Random seed for initialization.') - parser.add_argument('--min_dec_len', type=int, default=1, help='The minimum sequence length of generation.') - parser.add_argument('--max_dec_len', type=int, default=64, help='The maximum sequence length of generation.') - parser.add_argument('--num_return_sequences', type=int, default=20, help='The numbers of returned sequences for one input in generation.') - parser.add_argument('--decode_strategy', type=str, default='sampling', help='The decode strategy in generation.') - parser.add_argument('--top_k', type=int, default=5, help='The number of highest probability vocabulary tokens to keep for top-k sampling.') - parser.add_argument('--temperature', type=float, default=1.0, help='The value used to module the next token probabilities.') - parser.add_argument('--top_p', type=float, default=1.0, help='The cumulative probability for top-p sampling.') - parser.add_argument('--num_beams', type=int, default=0, help='The number of beams for beam search.') - parser.add_argument('--length_penalty', type=float, default=1.0, help='The exponential penalty to the sequence length for beam search.') - parser.add_argument('--early_stopping', type=eval, default=False, help='Whether to stop the beam search when at least `num_beams` sentences are finished per batch or not.') - parser.add_argument('--device', type=str, default='gpu', help='The device to select for training the model.') - - args = parser.parse_args() - return args -# yapf: enable - - -def interaction(args, model, tokenizer): - history = [] - start_info = "Enter [EXIT] to quit the interaction, [NEXT] to start a new conversation." - cprint(start_info, "yellow", attrs=["bold"]) - while True: - user_utt = input(colored("[Human]: ", "red", attrs=["bold"])).strip() - if user_utt == "[EXIT]": - break - elif user_utt == "[NEXT]": - history = [] - cprint(start_info, "yellow", attrs=["bold"]) - else: - history.append(user_utt) - inputs = tokenizer.dialogue_encode( - history, add_start_token_as_response=True, return_tensors=True, is_split_into_words=False - ) - inputs["input_ids"] = inputs["input_ids"].astype("int64") - ids, scores = model.generate( - input_ids=inputs["input_ids"], - token_type_ids=inputs["token_type_ids"], - position_ids=inputs["position_ids"], - attention_mask=inputs["attention_mask"], - max_length=args.max_dec_len, - min_length=args.min_dec_len, - decode_strategy=args.decode_strategy, - temperature=args.temperature, - top_k=args.top_k, - top_p=args.top_p, - num_beams=args.num_beams, - length_penalty=args.length_penalty, - early_stopping=args.early_stopping, - num_return_sequences=args.num_return_sequences, - use_fast=True, - ) - bot_response = select_response( - ids, scores, tokenizer, args.max_dec_len, args.num_return_sequences, keep_space=False - )[0] - print(colored("[Bot]:", "blue", attrs=["bold"]), colored(bot_response, attrs=["bold"])) - history.append(bot_response) - return - - -def main(args): - paddle.set_device(args.device) - if args.seed is not None: - set_seed(args.seed) - - # Initialize the model and tokenizer - model = UnifiedTransformerLMHeadModel.from_pretrained(args.model_name_or_path) - tokenizer = UnifiedTransformerTokenizer.from_pretrained(args.model_name_or_path) - - model.eval() - interaction(args, model, tokenizer) - - -if __name__ == "__main__": - args = parse_args() - print_args(args) - main(args) diff --git a/examples/dialogue/unified_transformer/utils.py b/examples/dialogue/unified_transformer/utils.py deleted file mode 100644 index 90585d69e0ee..000000000000 --- a/examples/dialogue/unified_transformer/utils.py +++ /dev/null @@ -1,265 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import random -from functools import partial - -import numpy as np - -import paddle -import paddle.distributed as dist -from paddle.io import DataLoader, DistributedBatchSampler, BatchSampler -from paddlenlp.data import Pad - - -def print_args(args): - print("----------- Configuration Arguments -----------") - for arg, value in sorted(vars(args).items()): - print("%s: %s" % (arg, value)) - print("------------------------------------------------") - - -def set_seed(seed): - # Use the same data seed(for data shuffle) for all procs to guarantee data - # consistency after sharding. - random.seed(seed) - np.random.seed(seed) - # Maybe different op seeds(for dropout) for different procs is better. - paddle.seed(seed + dist.get_rank()) - - -def preprocess_examples(examples, mode="train"): - """ - For training set and dev set, treat each utterance of the first speaker as - the response, and concatenate the goal, knowledge and the dialog’s previous - utterances as the history. In this way, multiple history-response pairs - are constructed. - """ - if mode == "test": - return examples - new_examples = {} - goal = [] - knowledge = [] - history = [] - response = [] - - conv = examples["conversation"] - for index, conversation in enumerate(conv): - for i in range(0, len(conversation), 2): - goal.append(examples["goal"][index]) - knowledge.append(examples["knowledge"][index]) - history.append(conversation[:i]) - response.append(conversation[i]) - new_examples["goal"] = goal - new_examples["knowledge"] = knowledge - new_examples["history"] = history - new_examples["response"] = response - - return new_examples - - -def convert_example(example, tokenizer, max_seq_len=512, max_response_len=128, max_knowledge_len=256, mode="train"): - """Convert all examples into necessary features.""" - goal = example["goal"] - knowledge = example["knowledge"] - goal_knowledge = " ".join([" ".join(lst) for lst in goal + knowledge]) - - if mode != "test": - tokenized_example = tokenizer.dialogue_encode( - example["history"], - response=example["response"], - knowledge=goal_knowledge, - task_type="knowledge", - max_seq_len=max_seq_len, - max_response_len=max_response_len, - max_knowledge_len=max_knowledge_len, - return_length=True, - ) - response_start = tokenized_example["input_ids"].index(tokenizer.cls_token_id, 1) - response_end = tokenized_example["seq_len"] - # Use to gather the logits corresponding to the labels during training - tokenized_example["masked_positions"] = list(range(response_start, response_end - 1)) - tokenized_example["labels"] = tokenized_example["input_ids"][response_start + 1 : response_end] - return tokenized_example - else: - tokenized_example = tokenizer.dialogue_encode( - example["history"], - knowledge=goal_knowledge, - task_type="knowledge", - max_seq_len=max_seq_len, - max_knowledge_len=max_knowledge_len, - add_start_token_as_response=True, - return_length=True, - ) - - if "response" in example: - tokenized_example["response"] = example["response"] - return tokenized_example - - -def batchify_fn(batch_examples, pad_val, mode): - def pad_mask(batch_attention_mask): - batch_size = len(batch_attention_mask) - max_len = max(map(len, batch_attention_mask)) - attention_mask = np.ones((batch_size, max_len, max_len), dtype="float32") * -1e9 - for i, mask_data in enumerate(attention_mask): - seq_len = len(batch_attention_mask[i]) - mask_data[-seq_len:, -seq_len:] = np.array(batch_attention_mask[i], dtype="float32") - # In order to ensure the correct broadcasting mechanism, expand one - # dimension to the second dimension (n_head of Transformer). - attention_mask = np.expand_dims(attention_mask, axis=1) - return attention_mask - - pad_func = Pad(pad_val=pad_val, pad_right=False, dtype="int64") - - input_ids = pad_func([example["input_ids"] for example in batch_examples]) - token_type_ids = pad_func([example["token_type_ids"] for example in batch_examples]) - position_ids = pad_func([example["position_ids"] for example in batch_examples]) - - attention_mask = pad_mask([example["attention_mask"] for example in batch_examples]) - - if mode != "test": - max_len = max([example["seq_len"] for example in batch_examples]) - masked_positions = np.concatenate( - [ - np.array(example["masked_positions"]) + (max_len - example["seq_len"]) + i * max_len - for i, example in enumerate(batch_examples) - ] - ) - labels = np.concatenate([np.array(example["labels"], dtype="int64") for example in batch_examples]) - return input_ids, token_type_ids, position_ids, attention_mask, masked_positions, labels - else: - seq_len = np.asarray([example["seq_len"] for example in batch_examples]).astype("int32") - return input_ids, token_type_ids, position_ids, attention_mask, seq_len - - -def create_data_loader(dataset, tokenizer, args, mode): - trans_func1 = partial(preprocess_examples, mode=mode) - trans_func2 = partial( - convert_example, - tokenizer=tokenizer, - max_seq_len=args.max_seq_len, - max_response_len=args.max_response_len, - max_knowledge_len=args.max_knowledge_len, - mode=mode, - ) - remove_columns = None - if mode in ["train", "dev"]: - remove_columns = ["id", "conversation"] - - dataset = dataset.map(trans_func1, batched=True, batch_size=None, remove_columns=remove_columns).map(trans_func2) - if mode == "train": - batch_sampler = DistributedBatchSampler(dataset, batch_size=args.batch_size, shuffle=True) - else: - batch_sampler = BatchSampler(dataset, batch_size=args.batch_size, shuffle=False) - collate_fn = partial(batchify_fn, pad_val=tokenizer.pad_token_id, mode=mode) - data_loader = DataLoader(dataset, batch_sampler=batch_sampler, collate_fn=collate_fn, return_list=True) - return dataset, data_loader - - -def post_process_response(token_ids, tokenizer): - """Post-process the decoded sequence. Truncate from the first .""" - eos_pos = len(token_ids) - for i, tok_id in enumerate(token_ids): - if tok_id == tokenizer.sep_token_id: - eos_pos = i - break - token_ids = token_ids[:eos_pos] - tokens = tokenizer.convert_ids_to_tokens(token_ids) - tokens = tokenizer.merge_subword(tokens) - return token_ids, tokens - - -def get_in_turn_repetition(pred, is_cn=False): - """Get in-turn repetition.""" - if len(pred) == 0: - return 1.0 - if isinstance(pred[0], str): - pred = [tok.lower() for tok in pred] - if is_cn: - pred = "".join(pred) - tri_grams = set() - for i in range(len(pred) - 2): - tri_gram = tuple(pred[i : i + 3]) - if tri_gram in tri_grams: - return True - tri_grams.add(tri_gram) - return False - - -def select_response(ids, scores, tokenizer, max_dec_len=None, num_return_sequences=1, keep_space=True): - results = [] - group = [] - tmp = [] - if scores is not None: - ids = ids.numpy() - scores = scores.numpy() - - if len(ids) != len(scores) or (len(ids) % num_return_sequences) != 0: - raise ValueError( - "the length of `ids` is {}, but the `num_return_sequences` is {}".format( - len(ids), num_return_sequences - ) - ) - - for pred, score in zip(ids, scores): - pred_token_ids, pred_tokens = post_process_response(pred, tokenizer) - num_token = len(pred_token_ids) - if keep_space: - response = " ".join(pred_tokens) - else: - response = "".join(pred_tokens) - - in_turn_repetition = get_in_turn_repetition(pred_tokens, True) or get_in_turn_repetition(pred_token_ids) - # not ending - if max_dec_len is not None and num_token >= max_dec_len: - score -= 1e3 - elif in_turn_repetition: - score -= 1e3 - - tmp.append([response, score]) - if len(tmp) == num_return_sequences: - group.append(tmp) - tmp = [] - - for preds in group: - preds = sorted(preds, key=lambda x: -x[1]) - results.append(preds[0][0]) - else: - ids = ids.numpy() - - for pred in ids: - pred_token_ids, pred_tokens = post_process_response(pred, tokenizer) - num_token = len(pred_token_ids) - if keep_space: - response = " ".join(pred_tokens) - else: - response = "".join(pred_tokens) - - in_turn_repetition = get_in_turn_repetition(pred_tokens, True) or get_in_turn_repetition(pred_token_ids) - - last_pos = 0 - if (max_dec_len is not None and num_token >= max_dec_len) or in_turn_repetition: - tmp.append([response]) - else: - tmp.insert(last_pos, [response]) - last_pos += 1 - - if len(tmp) == num_return_sequences: - group.append(tmp) - tmp = [] - - for preds in group: - results.append(preds[0][0]) - return results diff --git a/examples/few_shot/RGL/README.md b/examples/few_shot/RGL/README.md deleted file mode 100644 index 14c183d8a6ed..000000000000 --- a/examples/few_shot/RGL/README.md +++ /dev/null @@ -1,129 +0,0 @@ -# RGL: A Simple yet Effective Relation Graph Augmented Prompt-based Tuning Approach for Few-Shot Learning - -This is the implementation of the paper [RGL: A Simple yet Effective Relation Graph Augmented Prompt-based Tuning Approach for Few-Shot Learning](https://aclanthology.org/2022.findings-naacl.81/). - -**************************** Updates ***************************** - -2022-07-11: Our training code has been released. - -2022-04-08: Our paper has been accepted to Findings of [NAACL 2022](https://aclanthology.org/2022.findings-naacl.81/)! - -# Overview - -

-overview -

- -We propose a simple yet effective Relation Graph augmented Learning RGL method that can obtain better performance in few-shot natural language understanding tasks. - -RGL constructs a relation graph based on the label consistency between samples in the same batch, and learns to solve the resultant node classification and link prediction problems of the relation graphs. In this way, RGL fully exploits the limited supervised information, which can boost the tuning effectiveness. - -# Prepare the data - -We evaluate on the GLUE variant for few-shot learning in the paper, including SST-2, SST-5, MR, CR, MPQA, Subj, TREC, CoLA, MNLI, MNLI-mm, SNLI, QNLI, RTE, MRPC, QQP and STS-B. Please download the [datasets](https://paddlenlp.bj.bcebos.com/datasets/k-shot-glue/rgl-k-shot.zip) and extract the data files to the path ``./data/k-shot``. - - -# Experiments - -The structure of the code: - -``` -├── scripts/ -│ ├── run_pet.sh # Script for PET -│ └── run_rgl.sh # Script for RGL -├── template.py # The parser for prompt template -├── verbalizer.py # The mapping from labels to corresponding words -├── tokenizer.py # The tokenizer wrapeer to conduct text truncation -├── utils.py # The tools -└── rgl.py # The training process of RGL -``` - -## How to define a template - -We inspire from [OpenPrompt](https://github.com/thunlp/OpenPrompt/tree/main) and define template as a list of dictionary. The key of raw texts in datasets is `text`, and the corresponding value is the keyword of text in loaded dataset, where we use `text_a` to denote the first sentence in every example and `text_b` to denote the other sentences by default. - -For example, given the template ``{'text':'text_a'} It was {'mask'}.`` and a sample text ``nothing happens , and it happens to flat characters .`` the input text will be ``nothing happens , and it happens to flat characters . It was .`` - - -## Quick start - -Run the following code for prompt-tuning. - -``` -export CUDA_VISIBLE_DEVICES=0 -python rgl.py \ ---output_dir ./checkpoints/ \ ---dataset SST-2 \ ---data_path ./data/k-hot/SST-2/16-13/ \ ---max_seq_length 128 \ ---max_steps 1000 \ ---logging_step 10 \ ---eval_step 100 \ ---batch_size 4 \ ---alpha 0.1 \ ---seed 13 \ ---learning_rate 1e-5 \ ---template "{'text':'text_a'} It was {'mask'}." \ ---verbalizer "{'0':'terrible','1':'great'}" -``` - -The configurations consist of: -- ``output_dir``: The directory to save model checkpoints. -- ``dataset``: The dataset name for few-shot learning. -- ``data_path``: The path to data files of ``dataset``. -- ``max_seq_length``: The maximum length of input text, including the prompt. -- ``max_steps``: The maximum steps for training. -- ``logging_step``: Print logs every ``logging_step``. -- ``eval_step``: Evaluate model every ``eval_step``. -- ``batch_size``: The number of samples per batch. -- ``alpha``: The weight of the loss proposed in RGL. -- ``seed``: Random seed. -- ``learning_rate``: The learning rate for tuning. -- ``template``: The template to define how to combine text data and prompt. -- ``verbalizer``: The verbalizer to map labels to words in vocabulary. - - -## Multiple runs for the best results - -To reproduce our experiments, you can use the scripts to get the results under different settings. We have defined the templates and the verbalizers in both ``./script/run_pet.sh`` and ``./script/run_rgl.sh``. You can refer to these scripts for more details. - -### Run PET - -``` -bash ./scripts/run_pet.sh SST-2 0 -``` - -where ``SST-2`` specifies the dataset used for prompt-tuning and you can replace it with any other downloaded datasets in ``./data/k-shot/ ``. Besides, ``0`` refers to the gpu device id. - -**NOTE**: The dataset name is case-sensitive to run the scripts. - -### Run RGL - -``` -bash ./scripts/run_rgl.sh SST-2 0 -``` - -Please see the descriptions above for the arguments. - - -# Citation - -Please cite our paper if you use RGL in your work: -``` -@inproceedings{wang-etal-2022-rgl, - title = "{RGL}: A Simple yet Effective Relation Graph Augmented Prompt-based Tuning Approach for Few-Shot Learning", - author = "Wang, Yaqing and - Tian, Xin and - Xiong, Haoyi and - Li, Yueyang and - Chen, Zeyu and - Guo, Sheng and - Dou, Dejing", - booktitle = "Findings of the Association for Computational Linguistics: NAACL 2022", - year = "2022", - publisher = "Association for Computational Linguistics", - url = "https://aclanthology.org/2022.findings-naacl.81", - pages = "1078--1084", -} - -``` diff --git a/examples/few_shot/RGL/data.py b/examples/few_shot/RGL/data.py deleted file mode 100644 index 32efac286aad..000000000000 --- a/examples/few_shot/RGL/data.py +++ /dev/null @@ -1,496 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import csv -import json -import os -from abc import abstractmethod -from collections import defaultdict -from dataclasses import dataclass, field - -import paddle -import pandas as pd -from paddle.metric import Accuracy - -from paddlenlp.datasets import MapDataset -from paddlenlp.metrics import AccuracyAndF1, Mcc, PearsonAndSpearman - - -@dataclass -class InputExample(object): - """Data structure of every example in datasets.""" - - uid: str = field(default=None, metadata={"help": "A unique identifier of the example."}) - text_a: str = field(default=None, metadata={"help": "The first text sequence in each example."}) - text_b: str = field(default=None, metadata={"help": "The other text sequences in each example."}) - cls_label: int = field(default=None, metadata={"help": "The label of classification tasks."}) - seq_label: list = field(default=None, metadata={"help": "The label of generation tasks."}) - meta: dict = field(default=None, metadata={"help": "An optional dictionary of other data for each example."}) - - def __repr__(self): - content = {k: v for k, v in self.__dict__.items() if v is not None} - content = json.dumps(content, indent=2, sort_keys=True) + "\n" - return str(content) - - def keys(self, keep_none=False): - return [key for key in self.__dict__.keys() if getattr(self, key) is not None] - - -class InputFeatures(dict): - """ - Data structure of every wrapped example or a batch of examples as the input of model. - - Args: - input_ids (paddle.Tensor): - The token ids. - attention_mask (paddle.Tensor): - The mask ids. - token_type_ids (paddle.Tensor, optional): - The token type ids. - input_embeds (paddle.Tensor, optional): - The embeddings of soft tokens. - mask_ids (paddle.Tensor, optional): - The mask ids where 1 denotes that a token is a mask, 0 denotes it is not a mask. - cls_label (list, optional): - The label of classification task. - seq_label (list, optional): - The label of generation task. - uid (list, optional): - The unique id(s) for example(s). - """ - - input_keys = [ - "input_ids", - "attention_mask", - "token_type_ids", - "input_embeds", - "cls_label", - "seq_label", - "label", - "uid", - "mask_ids", - "soft_token_ids", - ] - - def __init__( - self, - input_ids=None, - attention_mask=None, - token_type_ids=None, - input_embeds=None, - mask_ids=None, - label=None, - cls_label=None, - seq_label=None, - uid=None, - soft_token_ids=None, - ): - self.input_ids = input_ids - self.attention_mask = attention_mask - self.token_type_ids = token_type_ids - self.input_embeds = input_embeds - self.label = label - self.cls_label = cls_label - self.seq_label = seq_label - self.mask_ids = mask_ids - self.uid = uid - self.soft_token_ids = soft_token_ids - - @classmethod - def add_keys(cls, *args): - cls.input_keys.extend(args) - - def keys(self, keep_none=False): - if keep_none: - return self.input_keys - else: - return [key for key in self.input_keys if getattr(self, key) is not None] - - def values(self, keep_none=False): - return [getattr(self, key) for key in self.keys(keep_none=keep_none)] - - def items(self): - return [(key, getattr(self, key)) for key in self.keys()] - - def __len__(self): - return len(self.keys()) - - def __repr__(self): - return str(json.dumps(self.items()) + "\n") - - def __getitem__(self, key): - return getattr(self, key) - - def __iter__(self): - return iter(self.keys()) - - def __contains__(self, key, keep_none): - return key in self.keys(keep_none) - - def __setitem__(self, key, value): - if key not in self.input_keys: - raise KeyError("{} not in predefined keys, use add_keys to add it.".format(key)) - setattr(self, key, value) - - @staticmethod - def collate_fn(batch): - """Collate batch data in form of InputFeatures.""" - new_batch = {} - for key in batch[0]: - values = [b[key] for b in batch] - try: - new_batch[key] = paddle.to_tensor(values) - except ValueError: - new_batch[key] = values - - return InputFeatures(**new_batch) - - -class DataProcessor(object): - """Base class for reading datasets from files.""" - - def __init__(self, labels=None): - self._labels = labels - if labels is not None: - self._labels = sorted(labels) - - @property - def labels(self): - if not getattr(self, "_labels"): - raise ValueError("labels and label_mappings are not setted yet.") - return self._labels - - @labels.setter - def labels(self, labels): - if labels is not None: - self._labels = sorted(labels) - - @property - def label_mapping(self): - if not getattr(self, "_labels"): - raise ValueError("labels and label_mappings are not setted yet.") - if not getattr(self, "_label_mapping"): - self._label_mapping = {k: i for i, k in enumerate(self._labels)} - return self._label_mapping - - @label_mapping.setter - def label_mapping(self, label_mapping): - if getattr(self, "_labels"): - assert self._labels == sorted(list(label_mapping.keys())) - self._label_mapping = label_mapping - - @abstractmethod - def get_examples(self, data_dir, split): - raise NotImplementedError - - def get_train_examples(self, data_dir): - return self.get_examples(data_dir, "train") - - def get_dev_examples(self, data_dir): - return self.get_examples(data_dir, "dev") - - def get_test_exaples(self, data_dir): - return self.get_examples(data_dir, "test") - - @classmethod - def read_tsv(cls, input_file, quotechar=None): - with open(input_file, "r", encoding="utf-8-sig") as f: - data = csv.reader(f, delimiter="\t", quotechar=quotechar) - return [x for x in data] - - @classmethod - def read_csv(cls, input_file, header=None): - data = pd.read_csv(input_file, header=header) - return data.values.tolist() - - @classmethod - def read_json(cls, input_file): - with open(input_file, "r") as f: - data = [json.loads(x) for x in f.readlines()] - return data - - -class BoolQProcessor(DataProcessor): - def __init__(self): - super().__init__(["False", "True"]) - self.split_map = {"train": "train", "dev": "dev32", "test": "val"} - - def get_examples(self, data_dir, split): - split = self.split_map[split] - raw_data = self.read_json(os.path.join(data_dir, split + ".jsonl")) - examples = [] - for i, line in enumerate(raw_data): - examples.append( - InputExample( - uid="%s-%d" % (split, i), - text_a=line["passage"], - text_b=line["question"], - cls_label=str(line["label"]), - ) - ) - - return examples - - -class MrpcProcesser(DataProcessor): - def __init__(self): - super().__init__(["0", "1"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append(InputExample(uid="%s-%d" % (split, i), text_a=line[3], text_b=line[4], cls_label=line[0])) - - return examples - - -class MnliProcessor(DataProcessor): - def __init__(self): - super().__init__(["contradiction", "entailment", "neutral"]) - - def _process_file(self, split): - if split in ["dev", "test"]: - return split + "_matched" - return split - - def get_examples(self, data_dir, split): - split = self._process_file(split) - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append( - InputExample(uid="%s-%s" % (split, line[0]), text_a=line[8], text_b=line[9], cls_label=line[-1]) - ) - return examples - - -class MnliMismatchedProcessor(MnliProcessor): - def _process_file(self, split): - if split == "dev": - return split + "_matched" - if split == "test": - return split + "_mismatched" - return split - - -class SnliProcessor(DataProcessor): - def __init__(self): - super().__init__(["contradiction", "entailment", "neutral"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append( - InputExample(uid="%s-%s" % (split, line[0]), text_a=line[7], text_b=line[8], cls_label=line[-1]) - ) - return examples - - -class ColaProcessor(DataProcessor): - def __init__(self): - super().__init__(["0", "1"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - examples.append(InputExample(uid="%s-%d" % (split, i), text_a=line[3], text_b=None, cls_label=line[1])) - return examples - - -class Sst2Processor(DataProcessor): - def __init__(self): - super().__init__(["0", "1"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append(InputExample(uid="%s-%d" % (split, i), text_a=line[0], text_b=None, cls_label=line[1])) - return examples - - -class StsbProcessor(DataProcessor): - def __init__(self): - super().__init__(["0", "1"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append( - InputExample(uid="%s-%s" % (split, line[0]), text_a=line[7], text_b=line[8], cls_label=line[-1]) - ) - return examples - - -class QqpProcessor(DataProcessor): - def __init__(self): - super().__init__(["0", "1"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - try: - examples.append( - InputExample(uid="%s-%s" % (split, line[0]), text_a=line[3], text_b=line[4], cls_label=line[5]) - ) - except IndexError: - continue - return examples - - -class QnliProcessor(DataProcessor): - def __init__(self): - super().__init__(["entailment", "not_entailment"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append( - InputExample(uid="%s-%s" % (split, line[0]), text_a=line[1], text_b=line[2], cls_label=line[-1]) - ) - return examples - - -class RteProcessor(DataProcessor): - def __init__(self): - super().__init__(["entailment", "not_entailment"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append( - InputExample(uid="%s-%s" % (split, line[0]), text_a=line[1], text_b=line[2], cls_label=line[-1]) - ) - return examples - - -class WnliProcessor(DataProcessor): - def __init__(self): - super().__init__(["0", "1"]) - - def get_examples(self, data_dir, split): - raw_data = self.read_tsv(os.path.join(data_dir, split + ".tsv")) - examples = [] - for i, line in enumerate(raw_data): - if i == 0: - continue - examples.append( - InputExample(uid="%s-%s" % (split, line[0]), text_a=line[1], text_b=line[2], cls_label=line[-1]) - ) - return examples - - -class TextClassificationProcessor(DataProcessor): - def __init__(self, task_name): - NUM_LABELS = {"mr": 2, "sst-5": 5, "subj": 2, "trec": 6, "cr": 2, "mpqa": 2} - assert task_name in NUM_LABELS, "task_name not supported." - self.task_name = task_name - self._labels = list(range(NUM_LABELS[self.task_name])) - - def get_examples(self, data_dir, split): - raw_data = self.read_csv(os.path.join(data_dir, split + ".csv")) - examples = [] - for i, line in enumerate(raw_data): - examples.append(InputExample(uid="%s-%d" % (split, i), text_a=line[1], cls_label=line[0])) - return examples - - -# The processor mapping for datasets in RGL paper. -PROCESSOR_MAPPING = { - "mrpc": MrpcProcesser(), - "mnli": MnliProcessor(), - "mnli-mm": MnliMismatchedProcessor(), - "snli": SnliProcessor(), - "cola": ColaProcessor(), - "sst-2": Sst2Processor(), - "sts-b": StsbProcessor(), - "qqp": QqpProcessor(), - "qnli": QnliProcessor(), - "rte": RteProcessor(), - "wnli": WnliProcessor(), - "cr": TextClassificationProcessor("cr"), - "mr": TextClassificationProcessor("mr"), - "sst-5": TextClassificationProcessor("sst-5"), - "subj": TextClassificationProcessor("subj"), - "mpqa": TextClassificationProcessor("mpqa"), - "trec": TextClassificationProcessor("trec"), - "boolq": BoolQProcessor(), -} - -# The task mapping for datasets. -TASK_MAPPING = defaultdict(lambda: "classification") -TASK_MAPPING["sts-b"] = "regression" - -# The metric mapping for datasets. -METRIC_MAPPING = defaultdict(Accuracy) -METRIC_MAPPING.update( - { - "mrpc": AccuracyAndF1(name=["acc", "precision", "recall", "f1", "acc_and_f1"]), - "qqp": AccuracyAndF1(name=["acc", "precision", "recall", "f1", "acc_and_f1"]), - "cola": Mcc(), - "sts-b": PearsonAndSpearman(name=["pearson", "spearman", "corr"]), - } -) - - -def load_dataset(dataset, data_path=None, splits=[]): - """ - Read datasets from files. - - Args: - dataset (str): - The dataset name in lowercase. - data_path (str): - The path to the dataset directory, including train, dev or test file. - splits (list): - Which file(s) of dataset to read, such as ['train', 'dev', 'test']. - - """ - assert len(splits) > 0, "No splits, can not load dataset {}".format(dataset) - processor = PROCESSOR_MAPPING[dataset] - data = [] - if "train" in splits: - train_examples = processor.get_train_examples(data_path) - data.append(MapDataset(train_examples)) - if "dev" in splits: - dev_examples = processor.get_dev_examples(data_path) - data.append(MapDataset(dev_examples)) - if "test" in splits: - test_examples = processor.get_test_exaples(data_path) - data.append(MapDataset(test_examples)) - data.append(processor.labels) - return data diff --git a/examples/few_shot/RGL/rgl.py b/examples/few_shot/RGL/rgl.py deleted file mode 100644 index dd137c71b700..000000000000 --- a/examples/few_shot/RGL/rgl.py +++ /dev/null @@ -1,239 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os -from functools import partial - -import numpy as np -import paddle -import paddle.nn as nn -from data import METRIC_MAPPING, TASK_MAPPING, InputFeatures, load_dataset -from template import ManualTemplate -from tokenizer import MLMTokenizerWrapper -from utils import ( - LinearSchedulerWarmup, - check_args, - convert_example, - create_dataloader, - set_seed, -) -from verbalizer import ManualVerbalizer -from visualdl import LogWriter - -from paddlenlp.transformers import AutoModelForMaskedLM, AutoTokenizer -from paddlenlp.utils.log import logger - -# yapf: disable -parser = argparse.ArgumentParser('Implementation of RGL paper.') -parser.add_argument('--seed', type=int, default=1000, help='Random seed.') -parser.add_argument('--device', type=str, default='gpu', choices=['gpu', 'cpu'], help='Device for training, default to gpu.') -parser.add_argument('--dataset', type=str, default='SST-2', help='The build-in few-shot dataset.') -parser.add_argument('--data_path', type=str, default=None, help='The path to local dataset in .tsv files.') - -parser.add_argument('--model_name_or_path', type=str, default='roberta-large', help='The build-in pretrained LM or the path to local model parameters.') -parser.add_argument('--template', type=str, default="{'text':'text_a'} It was {'mask'}.", help='The input template.') -parser.add_argument('--verbalizer', type=str, default="{'0':'terrible', '1':'great'}", help='The label mapping of output.') -parser.add_argument('--alpha', type=float, default=0, help='The weight of link prediction loss in RGL.') -parser.add_argument('--max_seq_length', type=int, default=512, help='The maximum length of input text.') -parser.add_argument('--max_grad_norm', type=float, default=1.0, help='The maximum norm of all parameters.') - -parser.add_argument('--num_epoch', type=int, default=0, help='The number of epoch for training.') -parser.add_argument('--max_steps', type=int, default=1000, help='Maximum steps, which overwrites num_epoch.') -parser.add_argument('--batch_size', type=int, default=32, help='The number of samples used per step.') -parser.add_argument('--learning_rate', type=float, default=1e-5, help='The learning rate of optimizer.') -parser.add_argument('--weight_decay', type=float, default=0.0, help='Weight decay if we apply some.') -parser.add_argument('--warmup_steps', type=int, default=0, help='The warmup steps for leanring rate scheduler.') -parser.add_argument('--logging_step', type=int, default=100, help='Print logs every logging_step steps.') -parser.add_argument('--eval_step', type=int, default=100, help='Evaluate model every eval_step steps.') -parser.add_argument('--save_best', action='store_true', help='Save the best model according to evaluation results. Save the last checkpoint if False.') -parser.add_argument('--output_dir', type=str, default='./checkpoints/', help='The path to save checkpoints.') -parser.add_argument('--overwrite_output', action='store_true', help='Whether overwrite the output_dir.') -args = parser.parse_args() -# yapf: enable - -check_args(args) -for arg in vars(args): - logger.info(format(arg, "<20") + format(str(getattr(args, arg)), "<")) - - -@paddle.no_grad() -def evaluate(model, dataloader, metric, verbalizer, task_type, bound=(0, 5)): - if task_type == "regression": - logsoftmax = nn.LogSoftmax(axis=-1) - lb, ub = bound - model.eval() - metric.reset() - for batch in dataloader: - logits = model(input_ids=batch["input_ids"], attention_mask=batch["attention_mask"]) - label_logits = verbalizer.process_logits(logits, batch["mask_ids"]) - if task_type == "regression": - label_logits = logsoftmax(label_logits) - label_logits = paddle.exp(label_logits[..., 1].unsqueeze(-1)) * (ub - lb) + lb - correct = metric.compute(label_logits, batch["label"]) - metric.update(correct) - score = metric.accumulate() - score = score if isinstance(score, (list, tuple)) else [score] - logger.info("{:>20}".format("Evaluation results:")) - for name, value in zip(metric.name(), score): - logger.info("{:>20} = {:.6f}".format(name, value)) - model.train() - return score[0] - - -def contrastive_loss(sentence_embeddings, labels, task_type="classification"): - """Compute the loss proposed in RGL method.""" - - def _raw_equal(x, y): - return int(x == y) - - def _max_equal(x, y): - return int(np.argmax(x, axis=0) == np.argmax(y, axis=0)) - - equal_int = _raw_equal if task_type == "classification" else _max_equal - bce_metric = nn.CrossEntropyLoss() - cos_metric = nn.CosineSimilarity(axis=0, eps=1e-6) - batch_size = sentence_embeddings.shape[0] - loss = 0 - for i in range(batch_size): - for j in range(batch_size): - score = cos_metric(sentence_embeddings[i], sentence_embeddings[j]) - score = score.unsqueeze(0) - logits = paddle.concat([(1 - score) * 50, (1 + score) * 50], axis=-1) - label = paddle.to_tensor(equal_int(labels[i], labels[j])) - loss += bce_metric(logits.reshape([-1, logits.shape[-1]]), label.unsqueeze(0)) - loss = loss / (batch_size * (batch_size - 1)) - loss = loss / 100 - return loss - - -def main(): - paddle.set_device(args.device) - set_seed(args.seed) - - task_type = TASK_MAPPING[args.dataset] - model = AutoModelForMaskedLM.from_pretrained(args.model_name_or_path) - tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) - tokenizer_wrapper = MLMTokenizerWrapper(args.max_seq_length, tokenizer) - - train_ds, dev_ds, test_ds, label_list = load_dataset( - args.dataset, data_path=args.data_path, splits=["train", "dev", "test"] - ) - - template = ManualTemplate(tokenizer, args.template) - logger.info("Set template: {}".format(template.template)) - verbalizer = ManualVerbalizer(tokenizer, labels=label_list, label_to_words=eval(args.verbalizer), prefix=" ") - logger.info("Set verbalizer: {}".format(args.verbalizer)) - - trans_fn = partial(convert_example, template=template, verbalizer=verbalizer, tokenizer_wrapper=tokenizer_wrapper) - - train_loader = create_dataloader(train_ds, "train", args.batch_size, InputFeatures.collate_fn, trans_fn) - dev_loader = create_dataloader(dev_ds, "dev", args.batch_size, InputFeatures.collate_fn, trans_fn) - test_loader = create_dataloader(test_ds, "test", args.batch_size, InputFeatures.collate_fn, trans_fn) - if args.max_steps > 0: - num_epoch = args.max_steps // len(train_loader) + int(args.max_steps % len(train_loader) > 0) - max_steps = args.max_steps - else: - num_epoch = args.num_epoch - max_steps = args.num_epoch * len(train_loader) - - lr_scheduler = LinearSchedulerWarmup(args.learning_rate, args.warmup_steps, max_steps) - 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=args.weight_decay, - grad_clip=paddle.nn.ClipGradByGlobalNorm(args.max_grad_norm), - apply_decay_param_fun=lambda x: x in decay_params, - ) - - metric_fn = METRIC_MAPPING[args.dataset] - if task_type == "regression": - loss_fn = nn.KLDivLoss() - lb, ub = 0, 5 - logsoftmax = nn.LogSoftmax(axis=-1) - else: - loss_fn = nn.CrossEntropyLoss() - with LogWriter(logdir="./log/pet/train") as writer: - best_metric = -float("inf") - global_step = 1 - global_loss = 0 - for epoch in range(1, num_epoch + 1): - for step, batch in enumerate(train_loader, start=1): - writer.add_scalar("train/lr", lr_scheduler.get_lr(), global_step) - - logits = model(input_ids=batch["input_ids"], attention_mask=batch["attention_mask"]) - label_logits = verbalizer.process_logits(logits, batch["mask_ids"]) - if task_type == "regression": - label_logits = logsoftmax(label_logits) - - labels = paddle.stack( - [ - 1 - (batch["label"].reshape([-1]) - lb) / (ub - lb), - (batch["label"].reshape([-1]) - lb) / (ub - lb), - ], - axis=-1, - ) - loss = loss_fn(label_logits.reshape([-1, 2]), labels) - else: - labels = paddle.to_tensor(batch["label"], dtype="int64") - loss = loss_fn(label_logits.reshape([-1, label_logits.shape[-1]]), labels.reshape([-1])) - if args.alpha > 0: - con_loss = contrastive_loss(logits, labels, task_type=task_type) - loss += args.alpha * con_loss - global_loss += loss.item() - - loss.backward() - optimizer.step() - lr_scheduler.step() - optimizer.clear_grad() - - writer.add_scalar("train/loss", loss.item(), global_step) - - if global_step % args.logging_step == 0: - avg_loss = global_loss / args.logging_step - logger.info( - "Epoch: {:3d}/{:3d}, Global Step: {:4d}, Loss: {:e}".format( - epoch, num_epoch, global_step, avg_loss - ) - ) - global_loss = 0 - - if global_step % args.eval_step == 0: - logger.info("{0:-^30}".format(" Validate ")) - value = evaluate(model, dev_loader, metric_fn, verbalizer, task_type) - if args.save_best and value > best_metric: - best_metric = value - save_path = os.path.join(args.output_dir, "model_best") - if not os.path.exists(save_path): - os.makedirs(save_path) - model.save_pretrained(save_path) - tokenizer.save_pretrained(save_path) - - global_step += 1 - if global_step > max_steps: - break - - logger.info("{0:-^30}".format(" Test ")) - evaluate(model, test_loader, metric_fn, verbalizer, task_type) - if not args.save_best: - save_path = os.path.join(args.output_dir, "model_last") - if not os.path.exists(save_path): - os.makedirs(save_path) - model.save_pretrained(save_path) - tokenizer.save_pretrained(save_path) - - -if __name__ == "__main__": - main() diff --git a/examples/few_shot/RGL/scripts/run_pet.sh b/examples/few_shot/RGL/scripts/run_pet.sh deleted file mode 100644 index ca50d8c6bd00..000000000000 --- a/examples/few_shot/RGL/scripts/run_pet.sh +++ /dev/null @@ -1,114 +0,0 @@ -dataset=$1 -device=$2 - -MAX_LEN=128 -dataname=$dataset - -case $dataset in - CoLA) - temp="{'text':'text_a'} This is {'mask'}." - verb="{'0':'incorrect','1':'correct'}" - ;; - MRPC) - temp="{'text':'text_a'}{'mask'},{'text':'text_b'}" - verb="{'0':'No','1':'Yes'}" - ;; - QQP) - temp="{'text':'text_a'}{'mask'},{'text':'text_b'}" - verb="{'0':'No','1':'Yes'}" - ;; - STS-B) - temp="{'text':'text_a'}{'mask'},{'text':'text_b'}" - verb="{'0':'No','1':'Yes'}" - ;; - MNLI) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'contradiction':'No','entailment':'Yes','neutral':'Maybe'}" - MAX_LEN=256 - ;; - MNLI-mm) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'contradiction':'No','entailment':'Yes','neutral':'Maybe'}" - MAX_LEN=256 - dataname='MNLI' - ;; - SNLI) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'contradiction':'No','entailment':'Yes','neutral':'Maybe'}" - MAX_LEN=256 - ;; - QNLI) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'not_entailment':'No','entailment':'Yes'}" - ;; - RTE) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'not_entailment':'No','entailment':'Yes'}" - MAX_LEN=256 - ;; - mr) - temp="{'text':'text_a'} It was {'mask'}" - verb="{0:'terrible',1:'great'}" - MAX_LEN=160 - ;; - sst-5) - temp="{'text':'text_a'} It was {'mask'}." - temp="{'text':'text_a'} {'mask'}" - verb="{0:'terrible',1:'bad',2:'okay',3:'good',4:'great'}" - ;; - SST-2) - temp="{'text':'text_a'} It was {'mask'}." - verb="{'0':'terrible','1':'great'}" - ;; - subj) - temp="{'text':'text_a'} This is {'mask'}." - verb="{0:'subjective',1:'objective'}" - MAX_LEN=256 - ;; - trec) - temp="{'mask'}:{'text':'text_a'}" - verb="{0:'Description',1:'Entity',2:'Expression',3:'Human',4:'Location',5:'Number'}" - ;; - cr) - temp="{'text':'text_a'} It was {'mask'}." - verb="{0:'terrible',1:'great'}" - MAX_LEN=160 - ;; - mpqa) - temp="{'text':'text_a'} It was {'mask'}" - verb="{0:'terrible',1:'great'}" - MAX_LEN=128 - ;; - -esac - -echo $temp -echo $verb - - -ALPHA=0 -for seed in 13 21 42 87 100 -do - for lr in 1e-5 2e-5 5e-5 - do - for bs in 2 4 8 - do - CUDA_VISIBLE_DEVICES=$device python rgl.py \ - --output_dir ./ckpt_pet_roberta_$seed/ \ - --dataset $dataset \ - --data_path ./data/k-shot/$dataname/16-$seed/ \ - --max_seq_length $MAX_LEN \ - --max_steps 1000 \ - --logging_step 10 \ - --eval_step 100 \ - --batch_size $bs \ - --alpha $ALPHA \ - --seed $seed \ - --learning_rate $lr \ - --template "$temp" \ - --verbalizer "$verb" \ - --overwrite_output - done - done -done - diff --git a/examples/few_shot/RGL/scripts/run_rgl.sh b/examples/few_shot/RGL/scripts/run_rgl.sh deleted file mode 100644 index 9b1a5d2dc216..000000000000 --- a/examples/few_shot/RGL/scripts/run_rgl.sh +++ /dev/null @@ -1,115 +0,0 @@ -dataset=$1 -device=$2 - -MAX_LEN=128 -dataname=$dataset - -case $dataset in - CoLA) - temp="{'text':'text_a'} This is {'mask'}." - verb="{'0':'incorrect','1':'correct'}" - ;; - MRPC) - temp="{'text':'text_a'}{'mask'},{'text':'text_b'}" - verb="{'0':'No','1':'Yes'}" - ;; - QQP) - temp="{'text':'text_a'}{'mask'},{'text':'text_b'}" - verb="{'0':'No','1':'Yes'}" - ;; - STS-B) - temp="{'text':'text_a'}{'mask'},{'text':'text_b'}" - verb="{'0':'No','1':'Yes'}" - ;; - MNLI) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'contradiction':'No','entailment':'Yes','neutral':'Maybe'}" - MAX_LEN=256 - ;; - MNLI-mm) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'contradiction':'No','entailment':'Yes','neutral':'Maybe'}" - MAX_LEN=256 - dataname='MNLI' - ;; - SNLI) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'contradiction':'No','entailment':'Yes','neutral':'Maybe'}" - MAX_LEN=256 - ;; - QNLI) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'not_entailment':'No','entailment':'Yes'}" - ;; - RTE) - temp="{'text':'text_a'}?{'mask'},{'text':'text_b'}" - verb="{'not_entailment':'No','entailment':'Yes'}" - MAX_LEN=256 - ;; - mr) - temp="{'text':'text_a'} It was {'mask'}" - verb="{0:'terrible',1:'great'}" - MAX_LEN=160 - ;; - sst-5) - temp="{'text':'text_a'} It was {'mask'}." - temp="{'text':'text_a'} {'mask'}" - verb="{0:'terrible',1:'bad',2:'okay',3:'good',4:'great'}" - ;; - SST-2) - temp="{'text':'text_a'} It was {'mask'}." - verb="{'0':'terrible','1':'great'}" - ;; - subj) - temp="{'text':'text_a'} This is {'mask'}." - verb="{0:'subjective',1:'objective'}" - MAX_LEN=256 - ;; - trec) - temp="{'mask'}:{'text':'text_a'}" - verb="{0:'Description',1:'Entity',2:'Expression',3:'Human',4:'Location',5:'Number'}" - ;; - cr) - temp="{'text':'text_a'} It was {'mask'}." - verb="{0:'terrible',1:'great'}" - MAX_LEN=160 - ;; - mpqa) - temp="{'text':'text_a'} It was {'mask'}" - verb="{0:'terrible',1:'great'}" - MAX_LEN=128 - ;; - -esac - -echo $temp -echo $verb - - -for seed in 13 21 42 87 100 -do - for lr in 1e-5 2e-5 5e-5 - do - for bs in 2 4 8 - do - for alpha in 0.1 0.3 0.5 0.7 1 - do - CUDA_VISIBLE_DEVICES=$device python rgl.py \ - --output_dir ./ckpt_rgl_$seed/ \ - --dataset $dataset \ - --data_path ./data/k-shot/$dataname/16-$seed/ \ - --max_seq_length $MAX_LEN \ - --max_steps 1000 \ - --logging_step 100 \ - --eval_step 1000 \ - --batch_size $bs \ - --alpha $alpha \ - --seed $seed \ - --learning_rate $lr \ - --template "$temp" \ - --verbalizer "$verb" \ - --overwrite_output - done - done - done -done diff --git a/examples/few_shot/RGL/template.py b/examples/few_shot/RGL/template.py deleted file mode 100644 index 9f0561fc2402..000000000000 --- a/examples/few_shot/RGL/template.py +++ /dev/null @@ -1,391 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from abc import abstractmethod - -import paddle -import paddle.nn as nn -from data import InputExample - -from paddlenlp.utils.log import logger - - -class Template(nn.Layer): - """ - Base template class used to preprocess the inputs of model. - - Args: - tokenizer (paddlenlp.transformers.PretrainedTokenizer): - The tokenizer of pretrained models. - text_mapping (dict): - The dictionary to map text name in template to that in InputExample. - For example, {'premise': 'text_a', 'hypothesis': 'text_b'}. - - """ - - registered_input_names = ["mask_ids", "shortenable_ids"] - - def __init__(self, tokenizer, text_mapping=None): - super().__init__() - self.tokenizer = tokenizer - self.text_mapping = text_mapping - self._process_lock = False - - self.part_start = "{" - self.part_end = "}" - - @property - def template(self): - if not hasattr(self, "_template"): - raise RuntimeError("Property template has not been set before used.") - return self._template - - @template.setter - def template(self, template): - if template is None: - return - self._template = template - self.process_template() - - @abstractmethod - def process_template(self): - """A hook to process template text when it is set.""" - raise NotImplementedError - - def get_default_mask_ids(self): - """List to denote whether an item in template is a mask token.""" - return [1 if "mask" in p else 0 for p in self.template] - - def get_default_shortenable_ids(self): - """List to denote whther an item in template can be truncated.""" - idx = [] - for p in self.template: - if "shortenable" in p: - idx.append(1 if p["shortenable"] else 0) - else: - idx.append(1 if "text" in p else 0) - return idx - - def incorporate_template_text(self, example, template=None): - """Replace each item in template with real text.""" - inputs = template.copy() if self.template is None else self.template.copy() - - for i, p in enumerate(inputs): - if "text" in p: - inputs[i] = p["add_prefix_space"] + getattr(example, p["text"]) - elif "mask" in p: - inputs[i] = self.tokenizer.mask_token - elif "hard" in p: - inputs[i] = p["add_prefix_space"] + p["hard"] - elif "sep" in p: - inputs[i] = self.tokenizer.sep_token - else: - raise ValueError("can not parse {}".format(p)) - - return inputs - - def parse_inputs(self, inputs: str): - """Parse items from the input template text.""" - parsed = [] - i = 0 - while i < len(inputs): - p = {"add_prefix_space": " " if (i > 0 and inputs[i - 1] == " ") else ""} - while i < len(inputs) and inputs[i] == " ": - p["add_prefix_space"] = " " - i = i + 1 - if i == len(inputs): - break - - if inputs[i] == self.part_start: - j = i + 1 - count_part = 1 - while j < len(inputs): - if inputs[j] == self.part_end: - count_part -= 1 - if count_part == 0: - break - elif inputs[j] == self.part_start: - count_part += 1 - j = j + 1 - if j == len(inputs): - raise ValueError( - "{} at position {} has no corresponding {}".format(self.part_start, i, self.part_end) - ) - try: - part = eval("{%s}" % inputs[i + 1 : j]) - if isinstance(part, set): - part = {k: None for k in part} - p.update(part) - except: - import traceback - - logger.error(traceback.format_exc()) - logger.error("syntax error in {}".format("{%s}" % inputs[i + 1 : j])) - exit() - i = j + 1 - else: - j = i + 1 - while j < len(inputs): - if inputs[j] == self.part_start: - break - j = j + 1 - p["hard"] = inputs[i:j].rstrip(" ") - i = j - parsed.append(p) - - return parsed - - def wrap_one_example(self, example): - """Process InputExample according to the predefined template.""" - if self.template is None: - raise ValueError("template has not been initialized.") - if isinstance(example, InputExample): - text = self.incorporate_template_text(example) - - non_empty_keys = example.keys() - for key in self.text_mapping: - if self.text_mapping[key] in non_empty_keys: - non_empty_keys.remove(self.text_mapping[key]) - - keys, values = ["text"], [text] - for name in self.registered_input_names: - keys.append(name) - v = None - if hasattr(self, name) and getattr(self, name) is not None: - v = getattr(self, name) - elif hasattr(self, "get_default_" + name): - v = getattr(self, "get_default_" + name)() - setattr(self, name, v) - else: - raise ValueError( - """ - Template's part attribute '{}' is registered but not - initialized. Try using template.{} = [...] to - initialize or create a get_default_{}(self) - method in your template.""".format( - name, name, name - ) - ) - values.append(v) - - wrapped_parts_to_tokenize = [] - for value in list(zip(*values)): - wrapped_parts_to_tokenize.append(dict(zip(keys, value))) - - wrapped_parts_not_to_tokenize = {key: getattr(example, key) for key in non_empty_keys} - return [wrapped_parts_to_tokenize, wrapped_parts_not_to_tokenize] - else: - raise TypeError("InputExample") - - -class ManualTemplate(Template): - """ - ManualTemplate for hard prompt methods, such as PET, EFL. - """ - - def __init__(self, tokenizer, template=None, text_mapping={"text_a": "text_a", "text_b": "text_b"}): - super().__init__(tokenizer=tokenizer, text_mapping=text_mapping) - self.template = template - - def process_template(self): - self._template = self.parse_inputs(self._template) - - -class SoftTemplate(Template): - """ - SoftTemplate on the input layer for soft prompt methods, such as p-tuning. - """ - - registered_input_names = ["soft_token_ids", "mask_ids", "shortenable_ids"] - - def __init__(self, tokenizer, model, template=None, text_mapping={"text_a": "text_a", "text_b": "text_b"}): - super().__init__(tokenizer=tokenizer, text_mapping=text_mapping) - for module in model.children(): - if type(module).__name__.endswith("Model"): - self.token_embeddings = module.embeddings.word_embeddings - break - self.token_embeddings.weight.stop_gradient = True - self.embedding_size = self.token_embeddings.weight.shape[-1] - self.template = template - - def process_template(self): - self._template = self.parse_inputs(self._template) - self.process_soft_tokens() - self.generate_parameters() - - def incorporate_template_text(self, example, template=None): - """Replace each item in template with real text.""" - inputs = template.copy() if self.template is None else self.template.copy() - - for i, p in enumerate(inputs): - if "text" in p: - inputs[i] = p["add_prefix_space"] + getattr(example, p["text"]) - elif "mask" in p: - inputs[i] = self.tokenizer.mask_token - elif "hard" in p: - inputs[i] = p["add_prefix_space"] + p["hard"] - elif "soft" in p: - inputs[i] = p["add_prefix_space"] + p["soft"] - elif "sep" in p: - inputs[i] = self.tokenizer.sep_token - else: - raise ValueError("can not parse {}".format(p)) - - return inputs - - def process_soft_tokens(self): - inputs = [] - soft_token_ids = [] - num_soft_token = 0 - soft2word_init = {} - soft_id_reindex = {} - - for part in self.template: - if "soft" not in part and "soft_id" not in part: - soft_token_ids.append(0) - inputs.append(part) - continue - - if "soft" in part and part["soft"] is not None: - if "duplicate" in part: - logger.warnings("Ignore ``duplicate``. It is " "incompatible with ``soft`` with text values.") - - # Get word tokens and ids for soft token initialization. - init_token_ids = self.tokenizer( - part["add_prefix_space"] + part["soft"], add_special_tokens=False, return_token_type_ids=False - )["input_ids"] - init_tokens = self.tokenizer.convert_ids_to_tokens(init_token_ids) - assert len(init_tokens) == len(init_token_ids) - - # Create soft ids and corresponding ``soft`` part in template. - next_num_soft = num_soft_token + 1 - num_soft_token += len(init_tokens) - id_list = list(range(next_num_soft, num_soft_token + 1)) - - soft_token_ids.extend(id_list) - inputs.extend([{"add_prefix_space": part["add_prefix_space"], "soft": token} for token in init_tokens]) - for soft_id, word_id in zip(id_list, init_token_ids): - soft2word_init[soft_id] = word_id - - # Check the ids of ``soft`` and ``soft_id``. - if "soft_id" in part: - if part["soft_id"] in soft_id_reindex: - assert id_list == soft_id_reindex[part["soft_id"]] - else: - soft_id_reindex[part["soft_id"]] = id_list - continue - - if "soft_id" in part and part["soft_id"] in soft_id_reindex: - if "duplicate" in part: - logger.warnings("Ignore ``duplicate``. Initialize " "``soft`` by ``soft_id`` directly.") - id_list = soft_id_reindex[part["soft_id"]] - - elif "duplicate" in part: - assert isinstance(part["duplicate"], int) - if "same" in part: - num_soft_token += 1 - id_list = [num_soft_token for _ in range(part["duplicate"])] - else: - next_num_soft = num_soft_token + 1 - num_soft_token += part["duplicate"] - id_list = list(range(next_num_soft, num_soft_token + 1)) - else: - num_soft_token += 1 - id_list = [num_soft_token] - - if "soft_id" in part: - soft_id_reindex[part["soft_id"]] = id_list - - soft_token_ids.extend(id_list) - inputs.extend([{"add_prefix_space": part["add_prefix_space"], "soft": ""} for _ in range(len(id_list))]) - - self._template = inputs - self.soft_token_ids = soft_token_ids - self.num_soft_token = num_soft_token - self.soft2word_init = soft2word_init - - if self.num_soft_token == 0: - logger.warnings("No soft tokens in template. " "Use ManualTemplate for better performance.") - - def generate_parameters(self): - """ - Generate parameters for soft tokens. - """ - if self.num_soft_token == 0: - return None - self.soft_embeddings = nn.Embedding(self.num_soft_token + 1, self.embedding_size) - - weight = self.soft_embeddings.weight.clone().detach() - for soft_id, word_id in self.soft2word_init.items(): - weight[soft_id] = self.token_embeddings(paddle.to_tensor(word_id)) - self.soft_embeddings.weight.set_value(weight) - - def process_batch(self, batch): - word_embeds = self.token_embeddings(batch["input_ids"]) - batch["input_ids"] = None - if not hasattr(self, "soft_embeddings"): - batch["input_embeds"] = word_embeds - else: - soft_embeds = self.soft_embeddings(batch["soft_token_ids"]) - input_embeds = paddle.where((batch["soft_token_ids"] > 0).unsqueeze(-1), soft_embeds, word_embeds) - batch["input_embeds"] = input_embeds - return batch - - -class PTuningTemplate(SoftTemplate): - def __init__( - self, tokenizer, model, template, prompt_encoder="lstm", text_mapping={"text_a": "text_a", "text_b": "text_b"} - ): - super().__init__(tokenizer=tokenizer, model=model, text_mapping=text_mapping) - self.prompt_encoder = prompt_encoder - self.template = template - - def generate_parameters(self): - super().generate_parameters() - if self.prompt_encoder == "lstm": - self.lstm_head = nn.LSTM( - input_size=self.embedding_size, - hidden_size=self.embedding_size, - num_layers=2, - direction="bidirect", - time_major=False, - ) - self.mlp_head = nn.Sequential( - nn.Linear(2 * self.embedding_size, self.embedding_size), - nn.ReLU(), - nn.Linear(self.embedding_size, self.embedding_size), - ) - elif self.prompt_encoder == "mlp": - self.mlp_head = nn.Sequential( - nn.Linear(self.embedding_size, self.embedding_size), - nn.ReLU(), - nn.Linear(self.embedding_size, self.embedding_size), - ) - else: - raise ValueError("Unsupported soft token encoder: {}".format(self.prompt_encoder)) - - def process_batch(self, batch): - word_embeds = self.token_embeddings(batch["input_ids"]) - batch["input_ids"] = None - if not hasattr(self, "soft_embeddings"): - batch["input_embeds"] = word_embeds - else: - soft_embeds = self.soft_embeddings(batch["soft_token_ids"]) - if self.prompt_encoder == "lstm": - soft_embeds = self.lstm_head(soft_embeds)[0] - soft_embeds = self.mlp_head(soft_embeds) - - input_embeds = paddle.where((batch["soft_token_ids"] > 0).unsqueeze(-1), soft_embeds, word_embeds) - batch["input_embeds"] = input_embeds - return batch diff --git a/examples/few_shot/RGL/tokenizer.py b/examples/few_shot/RGL/tokenizer.py deleted file mode 100644 index 91f2fbd1fad6..000000000000 --- a/examples/few_shot/RGL/tokenizer.py +++ /dev/null @@ -1,261 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import itertools -import warnings -from collections import defaultdict -from functools import partial - -import numpy as np - - -class TokenizerWrapper: - """ - Process examples encoded by template, such as truncating and padding. - - Args: - max_seq_length (int): - The maximum length of input data (prompt and text). - tokenizer (paddlenlp.transformers.PreTrainedTokenizer): - The tokenizer of pretrained model. - truncate_method (str): - How to truncate input data. - Choices: ``tail``, ``head``, ``manual``. - create_token_type_ids (bool): - Whether to create token_type_ids for inputs. - seq_length_list (list, optional): - The list of maximum length for every part in input data. - """ - - def __init__(self, max_seq_length, tokenizer, truncate_method="tail", create_token_type_ids=False, **kwargs): - self.max_seq_length = max_seq_length - self.tokenizer = tokenizer - if truncate_method == "manual": - assert hasattr(kwargs, "seq_length_list"), "seq_length_list " "should be defined for manual truncation." - self.seq_length_list = kwargs["seq_length_list"] - self.truncate_fn = partial(self.truncate_from_end, etype="tail") - elif truncate_method == "tail" or truncate_method == "head": - self.truncate_fn = partial(self.truncate_from_end, etype=truncate_method) - else: - raise NotImplementedError - - self.create_token_type_ids = create_token_type_ids - - self.num_truncated_sentences = 0 - self.total_passed_sentences = 0 - - @property - def special_tokens_maps(self): - if not hasattr(self, "_special_tokens_map"): - self._special_tokens_map = { - "": getattr(self.tokenizer, "cls_token", ""), - "": getattr(self.tokenizer, "sep_token", ""), - "": getattr(self.tokenizer, "pad_token", ""), - "": getattr(self.tokenizer, "mask_token", ""), - "": getattr(self.tokenizer, "unk_token", ""), - } - return self._special_tokens_map - - @property - def truncate_rate(self): - if self.total_passed_sentences == 0: - return None - else: - return self.num_truncated_sentences / self.total_passed_sentences - - @staticmethod - def truncate_by_manual(input_dict, max_len_list=[]): - """ - Truncate input data by manually defined maximum sequence length. - - Args: - input_dict (dict): - The dictionary of an input example. - max_len_list (list): - The maximum length of every part in example. - ``-1`` denotes that there is no limit on length. - """ - truncated_dict = defaultdict(list) - shortenable_ids = input_dict["shortenable_ids"] - truncated_dict["shortenable_ids"] = shortenable_ids - for attr_name, attr_values in input_dict.items(): - text_idx = 0 - for i, value in enumerate(attr_values): - if shortenable_ids[i][0] == 0: - continue - if text_idx >= len(max_len_list): - break - if len(value) > 0: - max_len = max_len_list[text_idx] - if max_len < 0: - attr_values[i] = value - else: - attr_values[i] = value[:max_len] - text_idx += 1 - truncated_dict[attr_name] = attr_values - return truncated_dict - - @staticmethod - def truncate_from_end(input_dict, num_tokens_to_truncate=0, etype="tail"): - assert etype in ["head", "tail"] - step = 1 if etype == "head" else -1 - idx_offset = 0 if etype == "head" else 1 - truncated_dict = defaultdict(list) - shortenable_ids = input_dict["shortenable_ids"] - for attr_name in input_dict: - attr_values = input_dict[attr_name] - count = num_tokens_to_truncate - for i, value in enumerate(attr_values[::step]): - index = int(step * (idx_offset + i)) - if len(value) == 0 or shortenable_ids[index][0] == 0: - continue - if count < len(value): - attr_values[index] = value[:-count] - else: - attr_values[index] = [] - count -= len(value) - if count <= 0: - break - truncated_dict[attr_name] = attr_values - - return truncated_dict - - @staticmethod - def concate_parts(input_dict): - for key in input_dict: - input_dict[key] = list(itertools.chain(*input_dict[key])) - return input_dict - - @staticmethod - def padding(input_dict, max_len, pad_id_for_inputs=0, pad_id_for_others: int = 0) -> None: - for key, value in input_dict.items(): - if len(input_dict[key]) > max_len: - raise ValueError( - f"""Truncated seq length of '{key}' still greater than - max length {max_len}. One possible reason is that - no enough shortenable parts in template. Try adding - {{"shortenable": "True"}} property. - """ - ) - if "input" in key: - input_dict[key].extend([pad_id_for_inputs] * (max_len - len(value))) - else: - input_dict[key].extend([pad_id_for_others] * (max_len - len(value))) - return input_dict - - def truncate(self, inputs): - if hasattr(self, "seq_length_list"): - inputs = self.truncate_by_manual(inputs, self.seq_length_list) - total_tokens = sum([len(part) for part in inputs["input_ids"]]) - num_specials = self.num_special_tokens_to_add - num_tokens_to_truncate = total_tokens - self.max_seq_length + num_specials - self.total_passed_sentences += 1 - if num_tokens_to_truncate > 0: - self.num_truncated_sentences += 1 - inputs = self.truncate_fn(input_dict=inputs, num_tokens_to_truncate=num_tokens_to_truncate) - return inputs - - def add_special_tokens(self, encode_inputs): - for key in encode_inputs: - if key == "input_ids": - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - encode_inputs[key] = self.tokenizer.build_inputs_with_special_tokens(encode_inputs[key]) - else: - special_tokens_mask = np.array(self.tokenizer.get_special_tokens_mask(encode_inputs[key])) - with_special_tokens = np.array(self.tokenizer.build_inputs_with_special_tokens(encode_inputs[key])) - with_special_tokens[special_tokens_mask == 1] = 0 - encode_inputs[key] = with_special_tokens.tolist() - return encode_inputs - - -class MLMTokenizerWrapper(TokenizerWrapper): - input_keys = ["input_ids", "attention_mask", "token_type_ids"] - - @property - def mask_token(self): - return self.tokenizer.mask_token - - @property - def mask_token_id(self): - return self.tokenizer.mask_token_id - - @property - def soft_token(self): - return self.tokenizer.unk_token - - @property - def soft_token_id(self): - return self.tokenizer.unk_token_id - - @property - def num_special_tokens_to_add(self): - if not hasattr(self, "_num_specials"): - self._num_specials = self.tokenizer.num_special_tokens_to_add() - return self._num_specials - - def get_token_type_ids(self, encoded_inputs): - token_type_ids = [0] * len(encoded_inputs["input_ids"]) - sep_token = getattr(self.tokenizer, "sep_token", -1) - if sep_token >= 0: - sep_index = np.where([x == sep_token for x in encoded_inputs["input_ids"]])[0] - for i, x in enumerate(sep_index[1:]): - pre_x = sep_index[i - 1] - sep_index[pre_x + 1 : x + 1] = [i + 1] * (x - pre_x) - return token_type_ids - - def tokenize_one_example(self, wrapped_example): - to_tokenize, not_to_tokenize = wrapped_example - - encode_inputs = defaultdict(list) - for part in to_tokenize: - if part["mask_ids"] == 1: - text = [self.mask_token_id] - - if part["text"] in self.special_tokens_maps.keys(): - to_replace = self.special_tokens_maps[part["text"]] - if to_replace is not None: - part["text"] = to_replace - else: - raise KeyError("This tokenizer doesn't specify {} token.".format(part["prompt"])) - - if "soft_token_ids" in part and part["soft_token_ids"] == 1: - text = [self.soft_token_id] - else: - text = self.tokenizer.encode(part["text"], add_special_tokens=False, return_token_type_ids=False)[ - "input_ids" - ] - - text_len = len(text) - encode_inputs["input_ids"].append(text) - for key in part: - if key not in ["text"]: - encode_inputs[key].append([part[key]] * text_len) - encode_inputs = self.truncate(inputs=encode_inputs) - encode_inputs.pop("shortenable_ids") - encode_inputs = self.concate_parts(encode_inputs) - encode_inputs = self.add_special_tokens(encode_inputs) - encode_inputs["attention_mask"] = [1] * len(encode_inputs["input_ids"]) - if self.create_token_type_ids: - encode_inputs["token_type_ids"] = self.get_token_type_ids(encode_inputs) - encode_inputs = self.padding( - encode_inputs, max_len=self.max_seq_length, pad_id_for_inputs=self.tokenizer.pad_token_id - ) - - return {**encode_inputs} - - -tokenizer_mapping = { - "roberta": MLMTokenizerWrapper, -} diff --git a/examples/few_shot/RGL/utils.py b/examples/few_shot/RGL/utils.py deleted file mode 100644 index f855145c444d..000000000000 --- a/examples/few_shot/RGL/utils.py +++ /dev/null @@ -1,81 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import random - -import numpy as np -import paddle -from data import InputFeatures -from paddle.io import DataLoader -from paddle.optimizer.lr import LambdaDecay - -from paddlenlp.datasets import MapDataset - - -def set_seed(seed): - """set random seed""" - random.seed(seed) - np.random.seed(seed) - paddle.seed(seed) - - -def check_args(args): - """check output_dir and make it when not exist""" - if os.path.exists(args.output_dir): - if os.listdir(args.output_dir) and not args.overwrite_output: - raise ValueError("Path Configuration: output_dir {} exists!".format(args.output_dir)) - if not os.path.exists(args.output_dir): - os.makedirs(args.output_dir) - - args.dataset = args.dataset.lower() - - -def convert_example(example, template, tokenizer_wrapper, verbalizer=None): - if verbalizer is not None and hasattr(verbalizer, "wrap_one_example"): - example = verbalizer.wrap_one_example(example) - example = template.wrap_one_example(example) - encoded_inputs = InputFeatures(**tokenizer_wrapper.tokenize_one_example(example), **example[1]) - return encoded_inputs - - -def create_dataloader(dataset, mode="train", batch_size=1, batchify_fn=None, trans_fn=None): - if isinstance(dataset, list): - dataset = MapDataset(dataset) - assert isinstance(dataset, MapDataset) - - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - batch_sampler = paddle.io.DistributedBatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - else: - batch_sampler = paddle.io.BatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - - return DataLoader(dataset=dataset, batch_sampler=batch_sampler, collate_fn=batchify_fn, return_list=True) - - -class LinearSchedulerWarmup(LambdaDecay): - """ - Linear scheduler with warm up. - """ - - def __init__(self, learning_rate, warmup_steps, max_steps, last_epoch=-1, verbose=False): - def lr_lambda(current_step): - if current_step < warmup_steps: - return float(current_step) / float(max(1, warmup_steps)) - return max(0.0, float(max_steps - current_step) / float(max(1, max_steps - warmup_steps))) - - super().__init__(learning_rate, lr_lambda, last_epoch, verbose) diff --git a/examples/few_shot/RGL/verbalizer.py b/examples/few_shot/RGL/verbalizer.py deleted file mode 100644 index 0e741235dcc0..000000000000 --- a/examples/few_shot/RGL/verbalizer.py +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from abc import abstractmethod -from typing import Dict, List, Union - -import numpy as np -import paddle -import paddle.nn as nn -import paddle.nn.functional as F -from data import InputExample - -from paddlenlp.transformers import PretrainedTokenizer - - -class Verbalizer(nn.Layer): - """ - Base verbalizer class used to process the outputs and labels. - - Args: - tokenizer (paddlenlp.transformers.PretrainedTokenizer): - The tokenizer of pretrained models. - labels (list): - The sequence of labels in task. - - """ - - def __init__(self, tokenizer: PretrainedTokenizer = None, labels: List = None): - super().__init__() - assert labels is not None, "Label list for current task is not set yet." - self.tokenizer = tokenizer - self.labels = sorted(labels) - self._process_lock = False - - @property - def vocab(self): - if not hasattr(self, "_vocab"): - self._vocab = self.tokenizer.convert_ids_to_tokens(np.arange(self.vocab_size).tolist()) - return self._vocab - - @property - def vocab_size(self): - return self.tokenizer.vocab_size - - @property - def label_to_words(self): - if not hasattr(self, "_label_to_words"): - raise RuntimeError("Property label_to_words has not been set before used.") - return self._label_to_words - - @label_to_words.setter - def label_to_words(self, label_to_words: Union[List, Dict]): - if label_to_words is None: - return - if isinstance(label_to_words, dict): - new_keys = sorted(list(label_to_words.keys())) - assert new_keys == self.labels, "label_to_words {} does not match the predefined labels {}.".format( - new_keys, self.labels - ) - self._label_to_words = {k: label_to_words[k] for k in self.labels} - elif isinstance(label_to_words, list): - assert len(self.labels) == len( - label_to_words - ), "The lengths of label_to_words and predefined labels do not match." - self._label_to_words = {k: v for k, v in zip(self.labels, label_to_words)} - else: - raise TypeError("Unsupported type {} for label_to_words".format(type(label_to_words))) - self.process_label_words() - - @property - def labels_to_ids(self): - if not hasattr(self, "labels"): - raise RuntimeError("Property labels_to_ids has not been set before used.") - return {k: i for i, k in enumerate(self.labels)} - - @property - def ids_to_labels(self): - if not hasattr(self, "labels"): - raise RuntimeError("Property ids_to_labels has not been set before used.") - return {i: k for i, k in enumerate(self.labels)} - - @abstractmethod - def process_label_words( - self, - ): - """A hook to process verbalizer when it is set.""" - raise NotImplementedError - - @abstractmethod - def project(self, logits, **kwargs): - """ - Project the logits with shape ```[batch_size, vocab_size]``` into - label_word_logits with shape ```[batch_size, num_label_words]```. - """ - raise NotImplementedError - - @staticmethod - def aggregate(label_words_logits, atype="mean", ndim=2): - """ - Aggregate embeddings when multiple words are mapped to one label. - - Args: - label_words_logits (paddle.Tensor): - The logits of words which could be mapped to labels. - atype (str): - The aggregation strategy, including mean and first. - ndim (str): - The aggregated embeddings' number of dimensions. - - """ - if label_words_logits.ndim > ndim: - if atype == "mean": - return label_words_logits.mean(axis=-1) - elif atype == "max": - return label_words_logits.max(axis=-1) - elif atype == "first": - return label_words_logits[..., 0, :] - else: - raise ValueError("Unsupported aggreate type {}".format(atype)) - return label_words_logits - - def normalize(self, logits): - """Normalize the logits of every example.""" - new_logits = F.softmax(logits.reshape(logits.shape[0], -1), axis=-1) - return new_logits.reshape(*logits.shape) - - -class ManualVerbalizer(Verbalizer): - """ - Manual Verbalizer to map labels to words for hard prompt methods. - - Args: - tokenizer (paddlenlp.transformers.PretrainedTokenizer): - The tokenizer of pretrained models. - labels (list): - The sequence of all labels. - label_to_words (dict or list): - The dictionary or corresponding list to map labels to words. - prefix (str): - The prefix string of words, used in PLMs like RoBERTa, which is sensitive to the prefix. - """ - - def __init__(self, tokenizer, labels=None, label_to_words=None, prefix=""): - super().__init__(tokenizer=tokenizer, labels=labels) - self.tokenizer = tokenizer - self.labels = labels - self.prefix = prefix - self.label_to_words = label_to_words - - def process_label_words(self): - word_ids = [] - for label in self.labels: - word_ids.append( - self.tokenizer.encode( - self.prefix + self._label_to_words[label], add_special_tokens=False, return_token_type_ids=False - )["input_ids"] - ) - self.word_ids = paddle.to_tensor(word_ids, dtype="int64").squeeze() - self.label_to_words_ids = {k: v for k, v in zip(self.labels, word_ids)} - - def process_logits(self, logits, mask_ids=None, **kwargs): - if mask_ids is not None: - logits = logits[mask_ids == 1] - label_words_logits = logits.index_select(index=self.word_ids, axis=-1) - return label_words_logits - - def wrap_one_example(self, example): - """Process labels in InputExample According to the predefined verbalizer.""" - if isinstance(example, InputExample): - try: - example.label = self.labels_to_ids[example.cls_label] - except KeyError: - # Regression tasks. - example.label = eval(example.cls_label) - return example - else: - raise TypeError("InputExample") diff --git a/examples/few_shot/efl/README.md b/examples/few_shot/efl/README.md deleted file mode 100644 index f8656b690172..000000000000 --- a/examples/few_shot/efl/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# EFL - - -[Entailment as Few-Shot Learner](https://arxiv.org/abs/2104.14690) - - -## 算法简介 - -Entailment as Few-Shot Learner(EFL)提出将 NLP Fine-tune 任务转换统一转换为 Entailment 二分类任务,为小样本场景下的任务求解提供了新的视角。EFL 的主要思想如下图所示,该算法也可以使用 `Template` 实现标签描述与数据文本的拼接,定义方式详见[Prompt API 文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/advanced_guide/prompt.md)。 - -![EFL](https://user-images.githubusercontent.com/25607475/204245126-bd94e87c-f25f-471e-af1c-d1e05f7a2897.png) - -## 快速开始 - -CLUE(Chinese Language Understanding Evaluation)作为中文语言理解权威测评榜单,在学术界和工业界都有着广泛影响。FewCLUE 是其设立的中文小样本学习测评子榜,旨在探索小样本学习最佳模型和中文实践。PaddleNLP 内置了 FewCLUE 数据集,可以直接用来进行 EFL 算法训练、评估、预测,并生成 FewCLUE 榜单的提交结果,参与 FewCLUE 竞赛。 - -### 代码结构说明 -``` -├── run_train.py # EFL 算法提示学习脚本 -├── data.py # 数据集构造、数据增强 -├── utils.py # FewCLUE 提交结果保存等工具函数 -└── prompt/ # FewCLUE 各数据集的 prompt 定义文件 -``` - -### 数据准备 - -读取 FewCLUE 数据集只需要 1 行代码,这部分代码在 `data.py` 脚本中。以情感分类数据集 `eprstmt` 为例: - -``` -from paddlenlp.datasets import load_dataset - -# 通过指定 "fewclue" 和数据集名字 name="eprstmt" 即可一键加载 FewCLUE 中的 eprstmt 数据集 -train_ds, dev_ds, public_test_ds = load_dataset("fewclue", name="eprstmt", splits=("train_0", "dev_0", "test_public")) -``` - -### 模型训练、评估、预测 - -通过如下命令,指定 GPU 0 卡, 在 FewCLUE 的 `eprstmt` 数据集上进行训练&评估 -``` -python -u -m paddle.distributed.launch --gpus "0" run_train.py \ - --output_dir checkpoint_eprstmt \ - --task_name eprstmt \ - --split_id few_all \ - --prompt_path prompt/eprstmt.json \ - --prompt_index 0 \ - --do_train \ - --do_eval \ - --do_test \ - --do_predict \ - --do_label \ - --max_steps 1000 \ - --learning_rate 3e-5 \ - --eval_steps 100 \ - --save_steps 100 \ - --logging_steps 5 \ - --per_device_train_batch_size 16 \ - --max_seq_length 128 \ - --load_best_model_at_end \ - --metric_for_best_model accuracy \ - --save_total_limit 1 -``` -参数含义说明 -- `task_name`: FewCLUE 中的数据集名字 -- `split_id`: 数据集编号,包括0, 1, 2, 3, 4 和 few_all -- `prompt_path`: prompt 定义文件名 -- `prompt_index`: 使用定义文件中第 `prompt_index` 个 prompt -- `augment_type`: 数据增强策略,可选 swap, delete, insert, substitute -- `num_augment`: 数据增强策略为每个样本生成的样本数量 -- `word_augment_percent`: 每个序列中数据增强词所占的比例 -- `pseudo_data_path`: 使用模型标注的伪标签数据文件路径 -- `do_label`: 是否使用训练后的模型给无标签数据标注伪标签 -- `do_test`: 是否在公开测试集上评估模型效果 -- `model_name_or_path`: 预训练模型名,默认为 `ernie-1.0-large-zh-cw` -- `use_rdrop`: 是否使用对比学习策略 R-Drop -- `alpha_rdrop`: R-Drop 损失值权重,默认为 0.5 -- `dropout`: 预训练模型的 dropout 参数值,用于 R-Drop 策略中参数配置 -- `export_type`: 模型导出格式,默认为 `paddle`,动态图转静态图 -- 更多配置参考 [Trainer 参数文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/trainer.md#trainingarguments-%E5%8F%82%E6%95%B0%E4%BB%8B%E7%BB%8D) 和 [PromptTrainer 参数文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/advanced_guide/prompt.md#prompttrainer%E5%8F%82%E6%95%B0%E5%88%97%E8%A1%A8) - -### 模型部署 - -Coming soon... - -## References -[1] Wang, Sinong, Han Fang, Madian Khabsa, Hanzi Mao, and Hao Ma. “Entailment as Few-Shot Learner.” ArXiv:2104.14690 [Cs], April 29, 2021. http://arxiv.org/abs/2104.14690. diff --git a/examples/few_shot/efl/data.py b/examples/few_shot/efl/data.py deleted file mode 100644 index b33ea7927166..000000000000 --- a/examples/few_shot/efl/data.py +++ /dev/null @@ -1,134 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json - -import numpy as np - -from paddlenlp.datasets import MapDataset, load_dataset - - -def extend_with_pseudo_data(data_ds, pseudo_path, labels_to_ids): - """ - Extend train dataset with pseudo labeled examples if exists. - """ - if pseudo_path is None: - return data_ds - with open(pseudo_path, "r", encoding="utf-8") as fp: - pseudo_data = [json.loads(x.strip()) for x in fp] - data_ds = MapDataset([x for x in data_ds] + pseudo_data) - return data_ds - - -def convert_efl(data_ds, label_words, orig_key, is_train=False, num_neg=5): - efl_data_ds = [] - label_list = sorted(label_words.keys()) - for example in data_ds: - label = label_words[example[orig_key]] if orig_key in example else None - sub_list = label_list - if is_train and label is not None and len(label_list) > num_neg: - rand_index = np.random.permutation(len(label_list)) - sub_list = [example[orig_key]] + [label_list[i] for i in rand_index[:num_neg]] - for key in sub_list: - new_example = example.copy() - cand = label_words[key] - new_example["candidate_label"] = cand - if label is not None: - new_example["labels"] = int(cand == label) - efl_data_ds.append(new_example) - return MapDataset(efl_data_ds) - - -def convert_chid(data_ds): - """ - Insert idioms into positions of `#idiom#` so that the task is converted - to binary classification. - """ - split_data_ds = [] - for example in data_ds: - fragments = example["content"].split("#idiom#") - label = example.get("answer", None) - for index, cand in enumerate(example["candidates"]): - new_example = {"content_pre": fragments[0], "content_post": fragments[1], "idiom": cand} - if label is not None: - new_example["label"] = str(int(index == label)) - split_data_ds.append(new_example) - return MapDataset(split_data_ds) - - -def convert_cluewsc(data_ds): - """ - Mark the pronoun and entity with special tokens. - """ - marked_data_ds = [] - for example in data_ds: - target, text = example["target"], list(example["text"]) - pronoun, p_index = target["span2_text"], target["span2_index"] - entity, e_index = target["span1_text"], target["span1_index"] - label = example.get("label", None) - if p_index > e_index: - text.insert(p_index, "_") - text.insert(p_index + len(pronoun) + 1, "_") - text.insert(e_index, "[") - text.insert(e_index + len(entity) + 1, "]") - else: - text.insert(e_index, "[") - text.insert(e_index + len(entity) + 1, "]") - text.insert(p_index, "_") - text.insert(p_index + len(pronoun) + 1, "_") - new_example = {"text": "".join(text), "pronoun": pronoun, "entity": entity} - if label is not None: - new_example["label"] = label - marked_data_ds.append(new_example) - return MapDataset(marked_data_ds) - - -def load_fewclue_dataset(args, verbalizer): - """ - Load fewclue datasets and convert them to the standard format of PET. - """ - split_id = args.split_id - splits = [f"train_{split_id}", f"dev_{split_id}", "test_public", "test"] - if args.task_name == "cluewsc": - train_ds, dev_ds, public_test_ds, test_ds = load_dataset("fewclue", name=args.task_name, splits=splits) - unlabeled_ds = None - else: - splits.append("unlabeled") - train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds = load_dataset( - "fewclue", name=args.task_name, splits=splits - ) - data_ds = [train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds] - - # Preprocess data for EFL. - if args.task_name == "chid": - for index, sub_data_ds in enumerate(data_ds): - data_ds[index] = convert_chid(sub_data_ds) - elif args.task_name == "cluewsc": - for index, sub_data_ds in enumerate(data_ds[:-1]): - data_ds[index] = convert_cluewsc(sub_data_ds) - - orig_key = "label" - if args.task_name == "tnews": - orig_key = "label_desc" - elif args.task_name == "iflytek": - orig_key = "label_des" - for index, sub_data_ds in enumerate(data_ds): - is_train = index == 0 - if sub_data_ds is not None: - data_ds[index] = convert_efl(sub_data_ds, args.label_words, orig_key, is_train) - - # Extend train dataset with pseudo-label data. - data_ds[0] = extend_with_pseudo_data(data_ds[0], args.pseudo_data_path, verbalizer.labels_to_ids) - - return data_ds diff --git a/examples/few_shot/efl/prompt/bustm.json b/examples/few_shot/efl/prompt/bustm.json deleted file mode 100644 index b44363510642..000000000000 --- a/examples/few_shot/efl/prompt/bustm.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "下边两个句子说的是{'text': 'candidate_label'}的事情。“{'text': 'sentence1'}”和“{'text': 'sentence2'}”"} - ], - "verbalizer": [ - {"0": "不同", "1": "相关"} - ] -} diff --git a/examples/few_shot/efl/prompt/chid.json b/examples/few_shot/efl/prompt/chid.json deleted file mode 100644 index b3c1e648e29a..000000000000 --- a/examples/few_shot/efl/prompt/chid.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "成语[{'text':'idiom'}]使用{'text': 'candidate_label'}的例子:{'text':'content_pre'}({'text': 'idiom'}){'text': 'content_post'}"} - ], - "verbalizer": [ - {"0": "错误", "1": "正确"} - ] -} diff --git a/examples/few_shot/efl/prompt/cluewsc.json b/examples/few_shot/efl/prompt/cluewsc.json deleted file mode 100644 index 1e736c43332d..000000000000 --- a/examples/few_shot/efl/prompt/cluewsc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "{'text': 'text'}{'text': 'pronoun'}指的{'text': 'candidate_label'}{'text': 'entity'}"} - ], - "verbalizer": [ - {"false": "不是", "true": "是"} - ] -} diff --git a/examples/few_shot/efl/prompt/csl.json b/examples/few_shot/efl/prompt/csl.json deleted file mode 100644 index 6d19eee927f8..000000000000 --- a/examples/few_shot/efl/prompt/csl.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "给定以下几个词语:{'options': 'keyword', 'add_prompt': '[OPT],'}{'text': 'candidate_label'}扩写成“{'text': 'abst'}”"} - ], - "verbalizer": [ - {"0": "不能", "1": "可以"} - ] -} diff --git a/examples/few_shot/efl/prompt/csldcp.json b/examples/few_shot/efl/prompt/csldcp.json deleted file mode 100644 index 2dd84e36ca21..000000000000 --- a/examples/few_shot/efl/prompt/csldcp.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "template": [ - {"text": "这篇论文阐述了{'text': 'candidate_label'}。{'text': 'content'}"} - ], - "verbalizer": [ - [ - "材料科学与工程", - "作物学", - "口腔医学", - "药学", - "教育学", - "水利工程", - "理论经济学", - "食品科学与工程", - "畜牧学/兽医学", - "体育学", - "核科学与技术", - "力学", - "园艺学", - "水产", - "法学", - "地质学/地质资源与地质工程", - "石油与天然气工程", - "农林经济管理", - "信息与通信工程", - "图书馆、情报与档案管理", - "政治学", - "电气工程", - "海洋科学", - "民族学", - "航空宇航科学与技术", - "化学/化学工程与技术", - "哲学", - "公共卫生与预防医学", - "艺术学", - "农业工程", - "船舶与海洋工程", - "计算机科学与技术", - "冶金工程", - "交通运输工程", - "动力工程及工程热物理", - "纺织科学与工程", - "建筑学", - "环境科学与工程", - "公共管理", - "数学", - "物理学", - "林学/林业工程", - "心理学", - "历史学", - "工商管理", - "应用经济学", - "中医学/中药学", - "天文学", - "机械工程", - "土木工程", - "光学工程", - "地理学", - "农业资源利用", - "生物学/生物科学与工程", - "兵器科学与技术", - "矿业工程", - "大气科学", - "基础医学/临床医学", - "电子科学与技术", - "测绘科学与技术", - "控制科学与工程", - "军事学", - "中国语言文学", - "新闻传播学", - "社会学", - "地球物理学", - "植物保护" - ] - ] -} diff --git a/examples/few_shot/efl/prompt/eprstmt.json b/examples/few_shot/efl/prompt/eprstmt.json deleted file mode 100644 index 309146c5e7e5..000000000000 --- a/examples/few_shot/efl/prompt/eprstmt.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "这表达了{'text': 'candidate_label'}的情感。{'text':'sentence'}"} - ], - "verbalizer": [ - {"Negative": "不满意", "Positive": "满意"} - ] -} diff --git a/examples/few_shot/efl/prompt/iflytek.json b/examples/few_shot/efl/prompt/iflytek.json deleted file mode 100644 index 5199508e6f03..000000000000 --- a/examples/few_shot/efl/prompt/iflytek.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "template": [ - {"text": "这段文本的应用描述主题是{'text': 'candidate_label'}。{'text': 'sentence'}"} - ], - "verbalizer": [ - [ - "银行", - "社区服务", - "电商", - "支付", - "经营养成", - "卡牌", - "借贷", - "驾校", - "理财", - "职考", - "新闻", - "旅游资讯", - "公共交通", - "魔幻", - "医疗服务", - "影像剪辑", - "动作类", - "工具", - "体育竞技", - "小说", - "运动健身", - "相机", - "辅助工具", - "快递物流", - "高等教育", - "股票", - "菜谱", - "行车辅助", - "仙侠", - "亲子儿童", - "购物咨询", - "射击游戏", - "漫画", - "中小学", - "同城服务", - "成人教育", - "求职", - "电子产品", - "艺术", - "薅羊毛", - "约会社交", - "经营", - "兼职", - "短视频", - "音乐", - "英语", - "棋牌中心", - "摄影修图", - "养生保健", - "办公", - "政务", - "视频", - "论坛圈子", - "彩票", - "直播", - "其他", - "休闲益智", - "策略", - "即时通讯", - "汽车交易", - "违章", - "地图导航", - "民航", - "电台", - "语言(非英语)", - "搞笑", - "婚恋社交", - "社区超市", - "日常养车", - "杂志", - "视频教育", - "家政", - "影视娱乐", - "装修家居", - "体育咨讯", - "社交工具", - "餐饮店", - "美颜", - "问诊挂号", - "飞行空战", - "综合预定", - "电影票务", - "笔记", - "买房", - "外卖", - "母婴", - "打车", - "情侣社交", - "日程管理", - "租车", - "微博博客", - "百科", - "绘画", - "铁路", - "生活社交", - "租房", - "酒店", - "保险", - "问答交流", - "收款", - "MOBA", - "K歌", - "技术", - "减肥瘦身", - "工作社交", - "团购", - "记账", - "女性", - "公务员", - "二手", - "美妆美业", - "汽车咨询", - "行程管理", - "免费WIFI", - "教辅", - "成人", - "婚庆", - "民宿短租", - "出国" - ] - ] -} - diff --git a/examples/few_shot/efl/prompt/ocnli.json b/examples/few_shot/efl/prompt/ocnli.json deleted file mode 100644 index caa7fd2c5719..000000000000 --- a/examples/few_shot/efl/prompt/ocnli.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "“{'text': 'sentence1'}”和“{'text': 'sentence2'}”之间{'text': 'candidate_label'}。"} - ], - "verbalizer": [ - {"contradiction": "互相矛盾", "entailment": "相互包含", "neutral": "没有关系"} - ] -} diff --git a/examples/few_shot/efl/prompt/tnews.json b/examples/few_shot/efl/prompt/tnews.json deleted file mode 100644 index 4580cd766208..000000000000 --- a/examples/few_shot/efl/prompt/tnews.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "template": [ - {"text": "下边报道一条{'text': 'candidate_label'}新闻{'text':'sentence'}"} - ], - "verbalizer": [ - { - "news_story": "故事", - "news_entertainment": "明星", - "news_finance": "财经", - "news_sports": "体育", - "news_edu": "校园", - "news_game": "游戏", - "news_culture": "文化", - "news_tech": "科技", - "news_car": "汽车", - "news_travel": "旅行", - "news_world": "国际", - "news_agriculture": "农业", - "news_military": "军事", - "news_house": "房产", - "news_stock": "股票" - } - ] -} diff --git a/examples/few_shot/efl/run_train.py b/examples/few_shot/efl/run_train.py deleted file mode 100644 index 8dd47043d762..000000000000 --- a/examples/few_shot/efl/run_train.py +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import time -from dataclasses import dataclass, field -from functools import partial - -import paddle -from data import load_fewclue_dataset -from paddle.metric import Accuracy -from paddle.static import InputSpec -from utils import load_prompt_arguments, save_fewclue_prediction, save_pseudo_data - -from paddlenlp.prompt import ( - ManualTemplate, - ManualVerbalizer, - PromptModelForSequenceClassification, - PromptTrainer, - PromptTuningArguments, -) -from paddlenlp.trainer import PdArgumentParser -from paddlenlp.transformers import AutoModelForSequenceClassification, AutoTokenizer -from paddlenlp.utils.log import logger - - -# yapf: disable -@dataclass -class DataArguments: - task_name: str = field(default="eprstmt", metadata={"help": "The task name in FewCLUE."}) - split_id: str = field(default="0", metadata={"help": "The split id of datasets, including 0, 1, 2, 3, 4, few_all."}) - prompt_path: str = field(default="prompt/eprstmt.json", metadata={"help": "Path to the defined prompts."}) - prompt_index: int = field(default=0, metadata={"help": "The index of defined prompt for training."}) - pseudo_data_path: str = field(default=None, metadata={"help": "Path to data with pseudo labels."}) - do_label: bool = field(default=False, metadata={"help": "Whether to label unsupervised data in unlabeled datasets"}) - do_test: bool = field(default=False, metadata={"help": "Whether to evaluate model on public test datasets."}) - - -@dataclass -class ModelArguments: - model_name_or_path: str = field(default="ernie-1.0-large-zh-cw", metadata={"help": "Build-in pretrained model name or the path to local model."}) - export_type: str = field(default='paddle', metadata={"help": "The type to export. Support `paddle` and `onnx`."}) - dropout: float = field(default=0.1, metadata={"help": "The dropout used for pretrained model."}) -# yapf: enable - - -def main(): - # Parse the arguments. - parser = PdArgumentParser((ModelArguments, DataArguments, PromptTuningArguments)) - model_args, data_args, training_args = parser.parse_args_into_dataclasses() - data_args = load_prompt_arguments(data_args) - training_args.print_config(model_args, "Model") - training_args.print_config(data_args, "Data") - paddle.set_device(training_args.device) - - # Load the pretrained language model. - tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path) - model = AutoModelForSequenceClassification.from_pretrained( - model_args.model_name_or_path, - num_labels=2, - hidden_dropout_prob=model_args.dropout, - attention_probs_dropout_prob=model_args.dropout, - ) - - # Define template for preprocess and verbalizer for postprocess. - template = ManualTemplate(data_args.prompt, tokenizer, training_args.max_seq_length) - logger.info("Using template: {}".format(template.prompt)) - - verbalizer = ManualVerbalizer(data_args.label_words, tokenizer) - ids_to_labels = {idx: label for idx, label in enumerate(verbalizer.labels)} - logger.info("Using verbalizer: {}".format(data_args.label_words)) - - # Load datasets. - train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds = load_fewclue_dataset(data_args, verbalizer=verbalizer) - - # Define the criterion. - criterion = paddle.nn.CrossEntropyLoss() - - # Initialize the prompt model with the above variables. - prompt_model = PromptModelForSequenceClassification( - model, template, None, freeze_plm=training_args.freeze_plm, freeze_dropout=training_args.freeze_dropout - ) - - # Define the metric function. - def compute_metrics(eval_preds, num_labels): - metric = Accuracy() - preds = paddle.to_tensor(eval_preds.predictions) - preds = paddle.nn.functional.softmax(preds, axis=1)[:, 1] - preds = preds.reshape([-1, num_labels]) - labels = paddle.to_tensor(eval_preds.label_ids) - labels = paddle.argmax(labels.reshape([-1, num_labels]), axis=1) - correct = metric.compute(preds, labels) - metric.update(correct) - acc = metric.accumulate() - return {"accuracy": acc} - - # Initialize the trainer. - compute_metrics = partial(compute_metrics, num_labels=len(verbalizer.labels)) - trainer = PromptTrainer( - model=prompt_model, - tokenizer=tokenizer, - args=training_args, - criterion=criterion, - train_dataset=train_ds, - eval_dataset=dev_ds, - callbacks=None, - compute_metrics=compute_metrics, - ) - - # Traininig. - if training_args.do_train: - train_result = trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - metrics = train_result.metrics - trainer.save_model() - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - time_stamp = time.strftime("%m%d-%H-%M-%S", time.localtime()) - - # Test. - if data_args.do_test and public_test_ds is not None: - test_ret = trainer.predict(public_test_ds) - trainer.log_metrics("test", test_ret.metrics) - - # Predict. - if training_args.do_predict and test_ds is not None: - pred_ret = trainer.predict(test_ds) - logger.info("Prediction done.") - predict_path = os.path.join(training_args.output_dir, "fewclue_submit_examples_" + time_stamp) - save_fewclue_prediction(predict_path, data_args.task_name, pred_ret, verbalizer, ids_to_labels) - - # Label unsupervised data. - if data_args.do_label and unlabeled_ds is not None: - label_ret = trainer.predict(unlabeled_ds) - logger.info("Labeling done.") - pseudo_path = os.path.join(training_args.output_dir, "pseudo_data_" + time_stamp + ".txt") - save_pseudo_data(pseudo_path, data_args.task_name, label_ret, verbalizer, ids_to_labels) - - # Export static model. - if training_args.do_export: - input_spec = [ - InputSpec(shape=[None, None], dtype="int64"), # input_ids, - InputSpec(shape=[None, None], dtype="int64"), # token_type_ids - InputSpec(shape=[None, None], dtype="int64"), # position_ids - InputSpec(shape=[None, None, None, None], dtype="float32"), # attention_mask - ] - export_path = os.path.join(training_args.output_dir, "export") - trainer.export_model(export_path, input_spec=input_spec, export_type=model_args.export_type) - - -if __name__ == "__main__": - main() diff --git a/examples/few_shot/efl/utils.py b/examples/few_shot/efl/utils.py deleted file mode 100644 index dfc6463bb69d..000000000000 --- a/examples/few_shot/efl/utils.py +++ /dev/null @@ -1,252 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import os -import pathlib - -import numpy as np -import paddle - -from paddlenlp.datasets import load_dataset - -LABEL_TO_STANDARD = { - "tnews": { - "news_story": "100", - "news_culture": "101", - "news_entertainment": "102", - "news_sports": "103", - "news_finance": "104", - "news_house": "106", - "news_car": "107", - "news_edu": "108", - "news_tech": "109", - "news_military": "110", - "news_travel": "112", - "news_world": "113", - "news_stock": "114", - "news_agriculture": "115", - "news_game": "116", - }, - "iflytek": { - "打车": 0, - "美颜": 100, - "影像剪辑": 101, - "摄影修图": 102, - "相机": 103, - "绘画": 104, - "二手": 105, - "电商": 106, - "团购": 107, - "外卖": 108, - "电影票务": 109, - "社区服务": 10, - "社区超市": 110, - "购物咨询": 111, - "笔记": 112, - "办公": 113, - "日程管理": 114, - "女性": 115, - "经营": 116, - "收款": 117, - "其他": 118, - "薅羊毛": 11, - "魔幻": 12, - "仙侠": 13, - "卡牌": 14, - "飞行空战": 15, - "射击游戏": 16, - "休闲益智": 17, - "动作类": 18, - "体育竞技": 19, - "地图导航": 1, - "棋牌中心": 20, - "经营养成": 21, - "策略": 22, - "MOBA": 23, - "辅助工具": 24, - "约会社交": 25, - "即时通讯": 26, - "工作社交": 27, - "论坛圈子": 28, - "婚恋社交": 29, - "免费WIFI": 2, - "情侣社交": 30, - "社交工具": 31, - "生活社交": 32, - "微博博客": 33, - "新闻": 34, - "漫画": 35, - "小说": 36, - "技术": 37, - "教辅": 38, - "问答交流": 39, - "租车": 3, - "搞笑": 40, - "杂志": 41, - "百科": 42, - "影视娱乐": 43, - "求职": 44, - "兼职": 45, - "视频": 46, - "短视频": 47, - "音乐": 48, - "直播": 49, - "同城服务": 4, - "电台": 50, - "K歌": 51, - "成人": 52, - "中小学": 53, - "职考": 54, - "公务员": 55, - "英语": 56, - "视频教育": 57, - "高等教育": 58, - "成人教育": 59, - "快递物流": 5, - "艺术": 60, - "语言(非英语)": 61, - "旅游资讯": 62, - "综合预定": 63, - "民航": 64, - "铁路": 65, - "酒店": 66, - "行程管理": 67, - "民宿短租": 68, - "出国": 69, - "婚庆": 6, - "工具": 70, - "亲子儿童": 71, - "母婴": 72, - "驾校": 73, - "违章": 74, - "汽车咨询": 75, - "汽车交易": 76, - "日常养车": 77, - "行车辅助": 78, - "租房": 79, - "家政": 7, - "买房": 80, - "装修家居": 81, - "电子产品": 82, - "问诊挂号": 83, - "养生保健": 84, - "医疗服务": 85, - "减肥瘦身": 86, - "美妆美业": 87, - "菜谱": 88, - "餐饮店": 89, - "公共交通": 8, - "体育咨讯": 90, - "运动健身": 91, - "支付": 92, - "保险": 93, - "股票": 94, - "借贷": 95, - "理财": 96, - "彩票": 97, - "记账": 98, - "银行": 99, - "政务": 9, - }, -} - - -def load_prompt_arguments(args): - """ - Load prompt and label words according to prompt index. - """ - with open(args.prompt_path, "r", encoding="utf-8") as fp: - configs = json.load(fp) - assert len(configs["verbalizer"]) == len(configs["template"]) - assert configs["verbalizer"][0] is not None - verbalizer = [configs["verbalizer"][0]] - last_verb_index = 0 - for index, verb in enumerate(configs["verbalizer"][1:]): - if verb is None or len(verb) == 0: - verbalizer.append(configs["verbalizer"][last_verb_index]) - else: - verbalizer.append(verb) - last_verb_index = index + 1 - configs["verbalizer"] = verbalizer - args.prompt = configs["template"][args.prompt_index]["text"] - label_words = configs["verbalizer"][args.prompt_index] - if isinstance(label_words, list): - label_words = {k: k for k in label_words} - args.label_words = label_words - return args - - -def save_pseudo_data(save_path, task_name, label_preds, verbalizer, labels): - """ - Combine unsupervised data and corresponding predicted labels and - save one example per line. - """ - if task_name == "cluewsc": - return None - - num_labels = len(labels) - data_ds = load_dataset("fewclue", name=task_name, splits="unlabeled") - preds = paddle.to_tensor(label_preds.predictions) - preds = paddle.nn.functional.softmax(preds, axis=1)[:, 1].numpy() - preds = preds.reshape([-1, num_labels]) - label_preds = np.argmax(preds, axis=1) - label_probs = np.max(preds, axis=1) - pseudo_data = [] - for index, example in enumerate(data_ds): - example["labels"] = labels[label_preds[index]] - example["prob"] = str(label_probs[index]) - pseudo_data.append(example) - save_data(pseudo_data, save_path) - - -def save_fewclue_prediction(save_path, task_name, label_preds, verbalizer, labels): - """ - Extract predicted labels and save as the format required by FewCLUE. - """ - num_labels = len(labels) - preds = paddle.to_tensor(label_preds.predictions) - preds = paddle.nn.functional.softmax(preds, axis=1)[:, 1] - preds = preds.reshape([-1, num_labels]) - if task_name == "chid": - batch_size = preds.shape[0] - preds = paddle.nn.functional.softmax(preds, axis=1)[:, 1] - preds = preds.reshape([batch_size // 7, 7]) - preds = paddle.nn.functional.softmax(preds, axis=1).numpy() - preds = np.argmax(preds, axis=1) - test_ds = load_dataset("fewclue", name=task_name, splits="test") - - ret_list = [] - maps = LABEL_TO_STANDARD.get(task_name, None) - for idx, example in enumerate(test_ds): - uid = example.get("id", idx) - if task_name in ["bustm", "csl"]: - ret_list.append({"id": uid, "label": str(preds[idx])}) - elif task_name == "chid": - ret_list.append({"id": uid, "answer": preds[idx]}) - elif task_name in ["cluewsc", "eprstmt", "ocnli", "csldcp"]: - ret_list.append({"id": uid, "label": labels[preds[idx]]}) - elif task_name in ["iflytek", "tnews"]: - ret_list.append({"id": uid, "label": str(maps[labels[preds[idx]]])}) - save_file = task_name if task_name in ["bustm", "csldcp", "eprstmt"] else task_name + "f" - save_data(ret_list, save_path, save_file + "_predict.json") - - -def save_data(data, save_path, save_file=None): - if save_file is not None: - pathlib.Path(save_path).mkdir(parents=True, exist_ok=True) - save_path = os.path.join(save_path, save_file) - with open(save_path, "w") as fp: - for example in data: - fp.write(json.dumps(example, ensure_ascii=False) + "\n") diff --git a/examples/few_shot/p-tuning/README.md b/examples/few_shot/p-tuning/README.md deleted file mode 100644 index 38d2f0af9c52..000000000000 --- a/examples/few_shot/p-tuning/README.md +++ /dev/null @@ -1,85 +0,0 @@ -# P-Tuning - -[GPT Understands, Too](https://arxiv.org/pdf/2103.10385.pdf) - -## 算法简介 - -P-tuning 引入可学习的连续型提示向量 prompt embeddings 参数, 让模型自己去学习最优的 prompt embedding, 而不再依赖人工去设置自然语言形式的提示(Prompt)信息。P-Tuning 算法的数据和模型定义如下图所示,对应于数据预处理模块 `SoftTemplate` 和标签词映射模块 `MaskedLMVerbalizer`,详细介绍及定义方法参见 [Prompt API 文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/advanced_guide/prompt.md)。 - -![p-tuning](https://user-images.githubusercontent.com/25607475/204214359-3036c6c6-f101-4a5f-958c-abe0e40c243a.png) - - -## 快速开始 - -CLUE(Chinese Language Understanding Evaluation)作为中文语言理解权威测评榜单,在学术界和工业界都有着广泛影响。FewCLUE 是其设立的中文小样本学习测评子榜,旨在探索小样本学习最佳模型和中文实践。PaddleNLP 内置了 FewCLUE 数据集,可以直接用来进行 PET 策略训练、评估、预测,并生成 FewCLUE 榜单的提交结果,参与 FewCLUE 竞赛。 -PaddleNLP 内置了 FewCLUE 数据集,可以直接用来进行 P-tuning 策略训练、评估、预测,并生成 FewCLUE 榜单的提交结果,参与 FewCLUE 竞赛。 - -### 代码结构及说明 -``` -├── run_train.py # P-Tuning 算法提示学习脚本 -├── data.py # 数据集构造、数据增强 -├── utils.py # FewCLUE 提交结果保存等工具函数 -└── prompt/ # FewCLUE 各数据集的 prompt 定义文件 -``` - -### 数据准备 - -读取 FewCLUE 数据集只需要 1 行代码,这部分代码在 `data.py` 脚本中。以情感分类数据集 `eprstmt` 为例: -``` -from paddlenlp.datasets import load_dataset - -# 通过指定 "fewclue" 和数据集名字 name="eprstmt" 即可一键加载 FewCLUE 中的 eprstmt 数据集 -train_ds, dev_ds, public_test_ds = load_dataset("fewclue", name="eprstmt", splits=("train_0", "dev_0", "test_public")) -``` - -### 模型训练、评估、预测 - -通过如下命令,指定 GPU 0 卡, 使用一个连续型提示向量在 FewCLUE 的 `eprstmt` 数据集上进行训练和评估。如果要使用多个可学习连续型提示向量,可修改 `./prompt/` 目录下相应的文件,修改 `soft` 的长度属性 `length` 即可。 -``` -python -u -m paddle.distributed.launch --gpus "0" run_train.py \ - --output_dir checkpoint_eprstmt \ - --task_name eprstmt \ - --split_id few_all \ - --prompt_path prompt/eprstmt.json \ - --prompt_index 0 \ - --do_train \ - --do_eval \ - --do_test \ - --do_predict \ - --do_label \ - --max_steps 1000 \ - --learning_rate 3e-5 \ - --eval_steps 100 \ - --save_steps 100 \ - --logging_steps 5 \ - --per_device_train_batch_size 16 \ - --max_seq_length 128 \ - --load_best_model_at_end \ - --metric_for_best_model accuracy \ - --save_total_limit 1 -``` - -参数含义说明 -- `task_name`: FewCLUE 中的数据集名字 -- `split_id`: 数据集编号,包括0, 1, 2, 3, 4 和 few_all -- `prompt_path`: prompt 定义文件名 -- `prompt_index`: 使用定义文件中第 `prompt_index` 个 prompt -- `augment_type`: 数据增强策略,可选 swap, delete, insert, substitute -- `num_augment`: 数据增强策略为每个样本生成的样本数量 -- `word_augment_percent`: 每个序列中数据增强词所占的比例 -- `pseudo_data_path`: 使用模型标注的伪标签数据文件路径 -- `do_label`: 是否使用训练后的模型给无标签数据标注伪标签 -- `do_test`: 是否在公开测试集上评估模型效果 -- `model_name_or_path`: 预训练模型名,默认为 `ernie-1.0-large-zh-cw` -- `use_rdrop`: 是否使用对比学习策略 R-Drop -- `alpha_rdrop`: R-Drop 损失值权重,默认为 0.5 -- `dropout`: 预训练模型的 dropout 参数值,用于 R-Drop 策略中参数配置 -- `export_type`: 模型导出格式,默认为 `paddle`,动态图转静态图 -- 更多配置参考 [Trainer 参数文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/trainer.md#trainingarguments-%E5%8F%82%E6%95%B0%E4%BB%8B%E7%BB%8D) 和 [PromptTrainer 参数文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/advanced_guide/prompt.md#prompttrainer%E5%8F%82%E6%95%B0%E5%88%97%E8%A1%A8) - -### 模型部署 - -Coming soon... - -## References -[1]X. Liu et al., “GPT Understands, Too,” arXiv:2103.10385 [cs], Mar. 2021, Accessed: Mar. 22, 2021. [Online]. Available: http://arxiv.org/abs/2103.10385 diff --git a/examples/few_shot/p-tuning/data.py b/examples/few_shot/p-tuning/data.py deleted file mode 100644 index 6f96ac02cdc8..000000000000 --- a/examples/few_shot/p-tuning/data.py +++ /dev/null @@ -1,202 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -from functools import partial - -import paddle - -from paddlenlp.dataaug import WordDelete, WordInsert, WordSubstitute, WordSwap -from paddlenlp.datasets import MapDataset, load_dataset - - -def extend_with_pseudo_data(data_ds, pseudo_path, labels_to_ids): - """ - Extend train dataset with pseudo labeled examples if exists. - """ - if pseudo_path is None: - return data_ds - with open(pseudo_path, "r", encoding="utf-8") as fp: - pseudo_data = [json.loads(x.strip()) for x in fp] - data_ds = MapDataset([x for x in data_ds] + pseudo_data) - return data_ds - - -def extend_with_data_augment(data_ds, aug_type, num_aug=10, percent=0.1, aug_base="mlm", example_keys=None): - """ - Extend train dataset with augmentation. - """ - if example_keys is None: - return data_ds - if aug_type is None or aug_type == "None": - return data_ds - if aug_type == "delete": - aug = WordDelete(create_n=num_aug, aug_percent=percent) - elif aug_type == "substitute": - aug = WordSubstitute(aug_base, create_n=num_aug, aug_percent=percent) - elif aug_type == "insert": - aug = WordInsert(aug_base, create_n=num_aug, aug_percent=percent) - elif aug_type == "swap": - aug = WordSwap(create_n=num_aug, aug_percent=percent) - else: - raise ValueError("Unsupported data augment strategy `{}`".format(aug_type)) - - aug_data = [] - for example in data_ds: - for key in example_keys: - text_aug = aug.augment(example[key]) - for text in text_aug: - new_example = example.copy() - example[key] = text - aug_data.append(new_example) - - data_ds = MapDataset([x for x in data_ds] + aug_data) - return data_ds - - -def convert_chid(data_ds): - """ - Insert idioms into positions of `#idiom#` so that the task is converted - to binary classification. - """ - split_data_ds = [] - for example in data_ds: - fragments = example["content"].split("#idiom#") - label = example.get("answer", None) - for index, cand in enumerate(example["candidates"]): - new_example = {"content_pre": fragments[0], "content_post": fragments[1], "idiom": cand} - if label is not None: - new_example["label"] = str(int(index == label)) - split_data_ds.append(new_example) - return MapDataset(split_data_ds) - - -def convert_csl(data_ds): - """ - Concatanate keywords and it can be replaced by keyword `options` in develop versioin. - """ - concat_data_ds = [] - for example in data_ds: - example["keyword"] = ",".join(example["keyword"]) - concat_data_ds.append(example) - return MapDataset(concat_data_ds) - - -def convert_cluewsc(data_ds): - """ - Mark the pronoun and entity with special tokens. - """ - marked_data_ds = [] - for example in data_ds: - target, text = example["target"], list(example["text"]) - pronoun, p_index = target["span2_text"], target["span2_index"] - entity, e_index = target["span1_text"], target["span1_index"] - label = example.get("label", None) - if p_index > e_index: - text.insert(p_index, "_") - text.insert(p_index + len(pronoun) + 1, "_") - text.insert(e_index, "[") - text.insert(e_index + len(entity) + 1, "]") - else: - text.insert(e_index, "[") - text.insert(e_index + len(entity) + 1, "]") - text.insert(p_index, "_") - text.insert(p_index + len(pronoun) + 1, "_") - new_example = {"text": "".join(text), "pronoun": pronoun, "entity": entity} - if label is not None: - new_example["label"] = label - marked_data_ds.append(new_example) - return MapDataset(marked_data_ds) - - -def convert_labels_to_ids(example, orig_key, labels_to_ids, pop_keys=None): - """ - Convert the keyword in datasets to `labels`. - """ - if orig_key in example: - example["label_ids"] = labels_to_ids[example.pop(orig_key)] - if pop_keys is not None: - for key in pop_keys: - if key in example: - example.pop(key) - return example - - -def convert_ids_to_words(example, token_ids): - """ - Convert label id to the first word in mapping from labels to words, - the length of which should coincide with that of `mask` in prompt. - """ - if "label_ids" in example: - labels = paddle.index_select(token_ids, paddle.to_tensor(example.pop("label_ids")), axis=0).squeeze(0) - example["labels"] = labels - return example - - -def load_fewclue_dataset(args, verbalizer, example_keys=None): - """ - Load fewclue datasets and convert them to the standard format of PET. - """ - split_id = args.split_id - splits = [f"train_{split_id}", f"dev_{split_id}", "test_public", "test"] - if args.task_name == "cluewsc": - train_ds, dev_ds, public_test_ds, test_ds = load_dataset("fewclue", name=args.task_name, splits=splits) - unlabeled_ds = None - else: - splits.append("unlabeled") - train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds = load_dataset( - "fewclue", name=args.task_name, splits=splits - ) - data_ds = [train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds] - - # Preprocess data for mask prediction task. - if args.task_name == "chid": - for index, sub_data_ds in enumerate(data_ds): - data_ds[index] = convert_chid(sub_data_ds) - elif args.task_name == "cluewsc": - for index, sub_data_ds in enumerate(data_ds[:-1]): - data_ds[index] = convert_cluewsc(sub_data_ds) - elif args.task_name == "csl": - for index, sub_data_ds in enumerate(data_ds): - data_ds[index] = convert_csl(sub_data_ds) - orig_key = "label" - pop_keys = ["id"] - if args.task_name == "tnews": - orig_key = "label_desc" - pop_keys = ["keywords", "label", "id"] - elif args.task_name == "iflytek": - orig_key = "label_des" - pop_keys = ["id", "label"] - elif args.task_name == "ocnli": - pop_keys = ["level", "label0", "label1", "label2", "label3", "label4", "genre", "prem_id", "id"] - convert_label = partial( - convert_labels_to_ids, orig_key=orig_key, labels_to_ids=verbalizer.labels_to_ids, pop_keys=pop_keys - ) - for index, sub_data_ds in enumerate(data_ds): - if sub_data_ds is not None: - data_ds[index] = sub_data_ds.map(convert_label) - - # Extend train dataset with data augmentation and pseudo-label data. - data_ds[0] = extend_with_data_augment( - data_ds[0], args.augment_type, args.num_augment, args.word_augment_percent, args.augment_method, example_keys - ) - data_ds[0] = extend_with_pseudo_data(data_ds[0], args.pseudo_data_path, verbalizer.labels_to_ids) - - dev_labels = [x["label_ids"] for x in data_ds[1]] - test_labels = [x["label_ids"] for x in data_ds[2]] - - convert_fn = partial(convert_ids_to_words, token_ids=verbalizer.token_ids[:, 0, :]) - data_ds[:3] = [x.map(convert_fn) for x in data_ds[:3]] - - return data_ds, (dev_labels, test_labels) diff --git a/examples/few_shot/p-tuning/prompt/bustm.json b/examples/few_shot/p-tuning/prompt/bustm.json deleted file mode 100644 index 345930ea51a9..000000000000 --- a/examples/few_shot/p-tuning/prompt/bustm.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'soft'}{'text': 'sentence1'}{'text': 'sentence2'}"} - ], - "verbalizer": [ - {"0": "不", "1": "很"} - ] -} diff --git a/examples/few_shot/p-tuning/prompt/chid.json b/examples/few_shot/p-tuning/prompt/chid.json deleted file mode 100644 index cc3b30195fa7..000000000000 --- a/examples/few_shot/p-tuning/prompt/chid.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'soft'}{'text':'content_pre'}{'text': 'idiom'}{'text': 'content_post'}"} - ], - "verbalizer": [ - {"0": "否", "1": "是"} - ] -} diff --git a/examples/few_shot/p-tuning/prompt/cluewsc.json b/examples/few_shot/p-tuning/prompt/cluewsc.json deleted file mode 100644 index c0ef7573441b..000000000000 --- a/examples/few_shot/p-tuning/prompt/cluewsc.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'mask'}{'soft'}{'text': 'text'}{'text': 'pronoun'}指的是{'text': 'entity'}"} - ], - "verbalizer": [ - {"false": "错误", "true": "正确"} - ] -} diff --git a/examples/few_shot/p-tuning/prompt/csl.json b/examples/few_shot/p-tuning/prompt/csl.json deleted file mode 100644 index 443ba172a2fe..000000000000 --- a/examples/few_shot/p-tuning/prompt/csl.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'soft'}本文关键词有{'text': 'keyword'}{'text': 'abst'}"} - ], - "verbalizer": [ - {"0": "不", "1": "很"} - ] -} diff --git a/examples/few_shot/p-tuning/prompt/csldcp.json b/examples/few_shot/p-tuning/prompt/csldcp.json deleted file mode 100644 index 5bb12c680f4e..000000000000 --- a/examples/few_shot/p-tuning/prompt/csldcp.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'mask'}{'soft'}{'text': 'content'}"} - ], - "verbalizer": [ - { - "材料科学与工程": "材料", - "作物学": "作物", - "口腔医学": "口腔", - "药学": "药学", - "教育学": "教育", - "水利工程": "水利", - "理论经济学": "理经", - "食品科学与工程": "食品", - "畜牧学/兽医学": "畜牧", - "体育学": "体育", - "核科学与技术": "核科", - "力学": "力学", - "园艺学": "园艺", - "水产": "水产", - "法学": "法学", - "地质学/地质资源与地质工程": "地质", - "石油与天然气工程": "石油", - "农林经济管理": "农林", - "信息与通信工程": "通信", - "图书馆、情报与档案管理": "图书", - "政治学": "政治", - "电气工程": "电气", - "海洋科学": "海洋", - "民族学": "民族", - "航空宇航科学与技术": "航空", - "化学/化学工程与技术": "化学", - "哲学": "哲学", - "公共卫生与预防医学": "卫生", - "艺术学": "艺术", - "农业工程": "农工", - "船舶与海洋工程": "船舶", - "计算机科学与技术": "计科", - "冶金工程": "冶金", - "交通运输工程": "交通", - "动力工程及工程热物理": "动力", - "纺织科学与工程": "纺织", - "建筑学": "建筑", - "环境科学与工程": "环境", - "公共管理": "公管", - "数学": "数学", - "物理学": "物理", - "林学/林业工程": "林学", - "心理学": "心理", - "历史学": "历史", - "工商管理": "工管", - "应用经济学": "应经", - "中医学/中药学": "中医", - "天文学": "天文", - "机械工程": "机械", - "土木工程": "土木", - "光学工程": "光学", - "地理学": "地理", - "农业资源利用": "农业", - "生物学/生物科学与工程": "生物", - "兵器科学与技术": "兵器", - "矿业工程": "矿业", - "大气科学": "大气", - "基础医学/临床医学": "基础", - "电子科学与技术": "电子", - "测绘科学与技术": "测绘", - "控制科学与工程": "控制", - "军事学": "军事", - "中国语言文学": "中文", - "新闻传播学": "新闻", - "社会学": "社会", - "地球物理学":"地球", - "植物保护":"植保" - } - ] -} diff --git a/examples/few_shot/p-tuning/prompt/eprstmt.json b/examples/few_shot/p-tuning/prompt/eprstmt.json deleted file mode 100644 index ea6941cdd963..000000000000 --- a/examples/few_shot/p-tuning/prompt/eprstmt.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'soft'}{'text':'sentence'}"} - ], - "verbalizer": [ - {"Negative": "不", "Positive": "很"} - ] -} diff --git a/examples/few_shot/p-tuning/prompt/iflytek.json b/examples/few_shot/p-tuning/prompt/iflytek.json deleted file mode 100644 index 198ce1994973..000000000000 --- a/examples/few_shot/p-tuning/prompt/iflytek.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "template": [ - {"text": "{'mask': None, 'length': 4}{'soft'}{'text': 'sentence'}"} - ], - "verbalizer": [ - { - "银行": "银行办理", - "社区服务": "社区服务", - "电商": "电商网购", - "支付": "支付交易", - "经营养成": "经营养成", - "卡牌": "卡牌游戏", - "借贷": "借贷借款", - "驾校": "驾校学车", - "理财": "投资理财", - "职考": "职业考试", - "新闻": "新闻资讯", - "旅游资讯": "旅游资讯", - "公共交通": "公共交通", - "魔幻": "魔幻游戏", - "医疗服务": "医疗服务", - "影像剪辑": "影像剪辑", - "动作类": "动作游戏", - "工具": "使用工具", - "体育竞技": "体育竞技", - "小说": "小说阅读", - "运动健身": "运动健身", - "相机": "相机拍照", - "辅助工具": "辅助工具", - "快递物流": "快递物流", - "高等教育": "高等教育", - "股票": "股票炒股", - "菜谱": "做菜菜谱", - "行车辅助": "行车帮助", - "仙侠": "仙侠小说", - "亲子儿童": "亲子儿童", - "购物咨询": "购物资讯", - "射击游戏": "射击游戏", - "漫画": "动漫漫画", - "中小学": "中学小学", - "同城服务": "同城跑腿", - "成人教育": "成人教育", - "求职": "面试求职", - "电子产品": "电子产品", - "艺术": "艺术学习", - "薅羊毛": "比价省钱", - "约会社交": "约会社交", - "经营": "经营管理", - "兼职": "兼职赚钱", - "短视频": "拍短视频", - "音乐": "音乐乐库", - "英语": "英语学习", - "棋牌中心": "棋牌中心", - "摄影修图": "摄影修图", - "养生保健": "养生保健", - "办公": "办公工具", - "政务": "政务服务", - "视频": "视频拍摄", - "论坛圈子": "论坛圈子", - "彩票": "彩票乐透", - "直播": "直播娱乐", - "其他": "其他类别", - "休闲益智": "休闲益智", - "策略": "策略游戏", - "即时通讯": "即时通讯", - "汽车交易": "汽车交易", - "违章": "违章罚款", - "地图导航": "地图导航", - "民航": "民用航空", - "电台": "电台播报", - "语言(非英语)": "小语种类", - "搞笑": "搞笑娱乐", - "婚恋社交": "婚恋社交", - "社区超市": "社区超市", - "日常养车": "日常养车", - "杂志": "杂志期刊", - "视频教育": "线上教育", - "家政": "家政服务", - "影视娱乐": "影视娱乐", - "装修家居": "装修家居", - "体育咨讯": "体育资讯", - "社交工具": "社交工具", - "餐饮店": "餐饮美食", - "美颜": "美颜相机", - "问诊挂号": "问诊挂号", - "飞行空战": "飞行空战", - "综合预定": "综合预定", - "电影票务": "电影票务", - "笔记": "笔记记录", - "买房": "买房购房", - "外卖": "外卖配送", - "母婴": "母婴产品", - "打车": "打车出行", - "情侣社交": "情侣社交", - "日程管理": "日程管理", - "租车": "租车出行", - "微博博客": "微博博客", - "百科": "知识百科", - "绘画": "绘画学习", - "铁路": "铁路交通", - "生活社交": "生活社交", - "租房": "租房房源", - "酒店": "酒店住宿", - "保险": "保险理赔", - "问答交流": "问答交流", - "收款": "收款交易", - "MOBA": "多人竞技", - "K歌": "唱歌K歌", - "技术": "技术学习", - "减肥瘦身": "减肥瘦身", - "工作社交": "工作社交", - "团购": "团购拼单", - "记账": "记录记账", - "女性": "女性生活", - "公务员": "公务员类", - "二手": "二手交易", - "美妆美业": "美妆美业", - "汽车咨询": "汽车资讯", - "行程管理": "行程管理", - "免费WIFI": "WIFI", - "教辅": "教育辅助", - "成人": "成人两性", - "婚庆": "婚庆结婚", - "民宿短租": "民宿短租", - "出国": "出国相关" - } - ] -} - diff --git a/examples/few_shot/p-tuning/prompt/ocnli.json b/examples/few_shot/p-tuning/prompt/ocnli.json deleted file mode 100644 index 796cb691f99d..000000000000 --- a/examples/few_shot/p-tuning/prompt/ocnli.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'mask'}{'soft'}{'text': 'sentence1'}{'text': 'sentence2'}"} - ], - "verbalizer": [ - {"contradiction": "不同", "entailment": "相似", "neutral": "无关"} - ] -} diff --git a/examples/few_shot/p-tuning/prompt/tnews.json b/examples/few_shot/p-tuning/prompt/tnews.json deleted file mode 100644 index 822c30badd52..000000000000 --- a/examples/few_shot/p-tuning/prompt/tnews.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "template": [ - {"text": "{'mask'}{'mask'}{'soft'}{'text':'sentence'}"} - ], - "verbalizer": [ - { - "news_story": "八卦", - "news_entertainment": "明星", - "news_finance": "财经", - "news_sports": "体育", - "news_edu": "校园", - "news_game": "游戏", - "news_culture": "文化", - "news_tech": "科技", - "news_car": "汽车", - "news_travel": "旅行", - "news_world": "国际", - "news_agriculture": "农业", - "news_military": "军事", - "news_house": "房子", - "news_stock": "股票" - } - ] -} diff --git a/examples/few_shot/p-tuning/run_train.py b/examples/few_shot/p-tuning/run_train.py deleted file mode 100644 index abe66b7bd3fa..000000000000 --- a/examples/few_shot/p-tuning/run_train.py +++ /dev/null @@ -1,175 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import time -from dataclasses import dataclass, field -from functools import partial - -import paddle -from data import load_fewclue_dataset -from paddle.metric import Accuracy -from paddle.static import InputSpec -from utils import load_prompt_arguments, save_fewclue_prediction, save_pseudo_data - -from paddlenlp.prompt import ( - MaskedLMVerbalizer, - PromptModelForSequenceClassification, - PromptTrainer, - PromptTuningArguments, - SoftTemplate, -) -from paddlenlp.trainer import PdArgumentParser -from paddlenlp.transformers import AutoModelForMaskedLM, AutoTokenizer -from paddlenlp.utils.log import logger - - -# yapf: disable -@dataclass -class DataArguments: - task_name: str = field(default="eprstmt", metadata={"help": "The task name in FewCLUE."}) - split_id: str = field(default="0", metadata={"help": "The split id of datasets, including 0, 1, 2, 3, 4, few_all."}) - prompt_path: str = field(default="prompt/eprstmt.json", metadata={"help": "Path to the defined prompts."}) - prompt_index: int = field(default=0, metadata={"help": "The index of defined prompt for training."}) - augment_type: str = field(default=None, metadata={"help": "The strategy used for data augmentation, including `swap`, `delete`, `insert`, `subsitute`."}) - num_augment: str = field(default=5, metadata={"help": "Number of augmented data per example, which works when `augment_type` is set."}) - word_augment_percent: str = field(default=0.1, metadata={"help": "Percentage of augmented words in sequences, used for `swap`, `delete`, `insert`, `subsitute`."}) - augment_method: str = field(default="mlm", metadata={"help": "Strategy used for `insert` and `subsitute`."}) - pseudo_data_path: str = field(default=None, metadata={"help": "Path to data with pseudo labels."}) - do_label: bool = field(default=False, metadata={"help": "Whether to label unsupervised data in unlabeled datasets"}) - do_test: bool = field(default=False, metadata={"help": "Whether to evaluate model on public test datasets."}) - - -@dataclass -class ModelArguments: - model_name_or_path: str = field(default="ernie-1.0-large-zh-cw", metadata={"help": "Build-in pretrained model name or the path to local model."}) - export_type: str = field(default='paddle', metadata={"help": "The type to export. Support `paddle` and `onnx`."}) - dropout: float = field(default=0.1, metadata={"help": "The dropout used for pretrained model."}) -# yapf: enable - - -def main(): - # Parse the arguments. - parser = PdArgumentParser((ModelArguments, DataArguments, PromptTuningArguments)) - model_args, data_args, training_args = parser.parse_args_into_dataclasses() - data_args = load_prompt_arguments(data_args) - training_args.print_config(model_args, "Model") - training_args.print_config(data_args, "Data") - paddle.set_device(training_args.device) - - # Load the pretrained language model. - tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path) - model = AutoModelForMaskedLM.from_pretrained( - model_args.model_name_or_path, - hidden_dropout_prob=model_args.dropout, - attention_probs_dropout_prob=model_args.dropout, - ) - - # Define template for preprocess and verbalizer for postprocess. - template = SoftTemplate(data_args.prompt, tokenizer, training_args.max_seq_length, model.get_input_embeddings()) - logger.info("Using template: {}".format(template.prompt)) - - verbalizer = MaskedLMVerbalizer(data_args.label_words, tokenizer) - labels_to_ids = verbalizer.labels_to_ids - ids_to_labels = {idx: label for label, idx in labels_to_ids.items()} - logger.info("Using verbalizer: {}".format(data_args.label_words)) - - # Load datasets. - data_ds, label_list = load_fewclue_dataset(data_args, verbalizer=verbalizer, example_keys=template.example_keys) - train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds = data_ds - dev_labels, test_labels = label_list - - # Define the criterion. - criterion = paddle.nn.CrossEntropyLoss() - - # Initialize the prompt model with the above variables. - prompt_model = PromptModelForSequenceClassification( - model, template, verbalizer, freeze_plm=training_args.freeze_plm, freeze_dropout=training_args.freeze_dropout - ) - - # Define the metric function. - def compute_metrics(eval_preds, labels, verbalizer): - metric = Accuracy() - predictions = paddle.to_tensor(eval_preds.predictions) - predictions = verbalizer.aggregate_multiple_mask(predictions) - correct = metric.compute(predictions, paddle.to_tensor(labels)) - metric.update(correct) - acc = metric.accumulate() - return {"accuracy": acc} - - # Initialize the trainer. - dev_compute_metrics = partial(compute_metrics, labels=dev_labels, verbalizer=verbalizer) - trainer = PromptTrainer( - model=prompt_model, - tokenizer=tokenizer, - args=training_args, - criterion=criterion, - train_dataset=train_ds, - eval_dataset=dev_ds, - callbacks=None, - compute_metrics=dev_compute_metrics, - ) - - # Traininig. - if training_args.do_train: - train_result = trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - metrics = train_result.metrics - trainer.save_model() - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - time_stamp = time.strftime("%m%d-%H-%M-%S", time.localtime()) - - # Test. - if data_args.do_test and public_test_ds is not None: - test_compute_metrics = partial(compute_metrics, labels=test_labels, verbalizer=verbalizer) - trainer.compute_metrics = test_compute_metrics - test_ret = trainer.predict(public_test_ds) - trainer.log_metrics("test", test_ret.metrics) - - # Predict. - if training_args.do_predict and test_ds is not None: - pred_ret = trainer.predict(test_ds) - logger.info("Prediction done.") - predict_path = os.path.join(training_args.output_dir, "fewclue_submit_examples_" + time_stamp) - save_fewclue_prediction(predict_path, data_args.task_name, pred_ret, verbalizer, ids_to_labels) - - # Label unsupervised data. - if data_args.do_label and unlabeled_ds is not None: - label_ret = trainer.predict(unlabeled_ds) - logger.info("Labeling done.") - pseudo_path = os.path.join(training_args.output_dir, "pseudo_data_" + time_stamp + ".txt") - save_pseudo_data(pseudo_path, data_args.task_name, label_ret, verbalizer, ids_to_labels) - - # Export static model. - if training_args.do_export: - template = prompt_model.template - template_keywords = template.extract_template_keywords(template.prompt) - input_spec = [ - InputSpec(shape=[None, None], dtype="int64"), # input_ids, - InputSpec(shape=[None, None], dtype="int64"), # token_type_ids - InputSpec(shape=[None, None], dtype="int64"), # position_ids - InputSpec(shape=[None, None, None, None], dtype="float32"), # attention_mask - InputSpec(shape=[None], dtype="int64"), # masked_positions - InputSpec(shape=[None, None], dtype="int64"), # soft_token_ids - ] - if "encoder" in template_keywords: - input_spec.append(InputSpec(shape=[None, None], dtype="int64")) # encoder_ids - export_path = os.path.join(training_args.output_dir, "export") - trainer.export_model(export_path, input_spec=input_spec, export_type=model_args.export_type) - - -if __name__ == "__main__": - main() diff --git a/examples/few_shot/p-tuning/utils.py b/examples/few_shot/p-tuning/utils.py deleted file mode 100644 index 989b4e6b81a8..000000000000 --- a/examples/few_shot/p-tuning/utils.py +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import os -import pathlib - -import numpy as np -import paddle - -from paddlenlp.datasets import load_dataset - -LABEL_TO_STANDARD = { - "tnews": { - "news_story": "100", - "news_culture": "101", - "news_entertainment": "102", - "news_sports": "103", - "news_finance": "104", - "news_house": "106", - "news_car": "107", - "news_edu": "108", - "news_tech": "109", - "news_military": "110", - "news_travel": "112", - "news_world": "113", - "news_stock": "114", - "news_agriculture": "115", - "news_game": "116", - }, - "iflytek": { - "打车": 0, - "美颜": 100, - "影像剪辑": 101, - "摄影修图": 102, - "相机": 103, - "绘画": 104, - "二手": 105, - "电商": 106, - "团购": 107, - "外卖": 108, - "电影票务": 109, - "社区服务": 10, - "社区超市": 110, - "购物咨询": 111, - "笔记": 112, - "办公": 113, - "日程管理": 114, - "女性": 115, - "经营": 116, - "收款": 117, - "其他": 118, - "薅羊毛": 11, - "魔幻": 12, - "仙侠": 13, - "卡牌": 14, - "飞行空战": 15, - "射击游戏": 16, - "休闲益智": 17, - "动作类": 18, - "体育竞技": 19, - "地图导航": 1, - "棋牌中心": 20, - "经营养成": 21, - "策略": 22, - "MOBA": 23, - "辅助工具": 24, - "约会社交": 25, - "即时通讯": 26, - "工作社交": 27, - "论坛圈子": 28, - "婚恋社交": 29, - "免费WIFI": 2, - "情侣社交": 30, - "社交工具": 31, - "生活社交": 32, - "微博博客": 33, - "新闻": 34, - "漫画": 35, - "小说": 36, - "技术": 37, - "教辅": 38, - "问答交流": 39, - "租车": 3, - "搞笑": 40, - "杂志": 41, - "百科": 42, - "影视娱乐": 43, - "求职": 44, - "兼职": 45, - "视频": 46, - "短视频": 47, - "音乐": 48, - "直播": 49, - "同城服务": 4, - "电台": 50, - "K歌": 51, - "成人": 52, - "中小学": 53, - "职考": 54, - "公务员": 55, - "英语": 56, - "视频教育": 57, - "高等教育": 58, - "成人教育": 59, - "快递物流": 5, - "艺术": 60, - "语言(非英语)": 61, - "旅游资讯": 62, - "综合预定": 63, - "民航": 64, - "铁路": 65, - "酒店": 66, - "行程管理": 67, - "民宿短租": 68, - "出国": 69, - "婚庆": 6, - "工具": 70, - "亲子儿童": 71, - "母婴": 72, - "驾校": 73, - "违章": 74, - "汽车咨询": 75, - "汽车交易": 76, - "日常养车": 77, - "行车辅助": 78, - "租房": 79, - "家政": 7, - "买房": 80, - "装修家居": 81, - "电子产品": 82, - "问诊挂号": 83, - "养生保健": 84, - "医疗服务": 85, - "减肥瘦身": 86, - "美妆美业": 87, - "菜谱": 88, - "餐饮店": 89, - "公共交通": 8, - "体育咨讯": 90, - "运动健身": 91, - "支付": 92, - "保险": 93, - "股票": 94, - "借贷": 95, - "理财": 96, - "彩票": 97, - "记账": 98, - "银行": 99, - "政务": 9, - }, -} - - -def load_prompt_arguments(args): - """ - Load prompt and label words according to prompt index. - """ - with open(args.prompt_path, "r", encoding="utf-8") as fp: - configs = json.load(fp) - assert len(configs["verbalizer"]) == len(configs["template"]) - assert configs["verbalizer"][0] is not None - verbalizer = [configs["verbalizer"][0]] - last_verb_index = 0 - for index, verb in enumerate(configs["verbalizer"][1:]): - if verb is None or len(verb) == 0: - verbalizer.append(configs["verbalizer"][last_verb_index]) - else: - verbalizer.append(verb) - last_verb_index = index + 1 - configs["verbalizer"] = verbalizer - args.prompt = configs["template"][args.prompt_index]["text"] - label_words = configs["verbalizer"][args.prompt_index] - if isinstance(label_words, list): - label_words = {k: k for k in label_words} - args.label_words = label_words - return args - - -def save_pseudo_data(save_path, task_name, label_preds, verbalizer, labels): - """ - Combine unsupervised data and corresponding predicted labels and - save one example per line. - """ - if task_name == "cluewsc": - return None - - data_ds = load_dataset("fewclue", name=task_name, splits="unlabeled") - preds = paddle.to_tensor(label_preds.predictions) - preds = verbalizer.aggregate_multiple_mask(preds) - preds = paddle.nn.functional.softmax(preds, axis=1).numpy() - label_preds = np.argmax(preds, axis=1) - label_probs = np.max(preds, axis=1) - pseudo_data = [] - for index, example in enumerate(data_ds): - example["labels"] = labels[label_preds[index]] - example["prob"] = str(label_probs[index]) - pseudo_data.append(example) - save_data(pseudo_data, save_path) - - -def save_fewclue_prediction(save_path, task_name, label_preds, verbalizer, labels): - """ - Extract predicted labels and save as the format required by FewCLUE. - """ - preds = paddle.to_tensor(label_preds.predictions) - preds = verbalizer.aggregate_multiple_mask(preds) - if task_name == "chid": - batch_size = preds.shape[0] - preds = paddle.nn.functional.softmax(preds, axis=1)[:, 1] - preds = preds.reshape([batch_size // 7, 7]) - preds = paddle.nn.functional.softmax(preds, axis=1).numpy() - preds = np.argmax(preds, axis=1) - test_ds = load_dataset("fewclue", name=task_name, splits="test") - - ret_list = [] - maps = LABEL_TO_STANDARD.get(task_name, None) - for idx, example in enumerate(test_ds): - uid = example.get("id", idx) - if task_name in ["bustm", "csl"]: - ret_list.append({"id": uid, "label": str(preds[idx])}) - elif task_name == "chid": - ret_list.append({"id": uid, "answer": preds[idx]}) - elif task_name in ["cluewsc", "eprstmt", "ocnli", "csldcp"]: - ret_list.append({"id": uid, "label": labels[preds[idx]]}) - elif task_name in ["iflytek", "tnews"]: - ret_list.append({"id": uid, "label": str(maps[labels[preds[idx]]])}) - save_file = task_name if task_name in ["bustm", "csldcp", "eprstmt"] else task_name + "f" - save_data(ret_list, save_path, save_file + "_predict.json") - - -def save_data(data, save_path, save_file=None): - if save_file is not None: - pathlib.Path(save_path).mkdir(parents=True, exist_ok=True) - save_path = os.path.join(save_path, save_file) - with open(save_path, "w") as fp: - for example in data: - fp.write(json.dumps(example, ensure_ascii=False) + "\n") diff --git a/examples/few_shot/pet/README.md b/examples/few_shot/pet/README.md deleted file mode 100644 index 0499883d4707..000000000000 --- a/examples/few_shot/pet/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# PET - -[Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference](https://arxiv.org/abs/2001.07676) - -## 算法简介 - -自然语言处理任务可以通过给预训练模型提供“任务描述”等方式来进行无监督学习,但效果一般低于有监督训练。而 Pattern-Exploiting Training (PET) 是一种半监督方法,通过将输入转换为完形填空形式的短语来帮助语言模型理解任务。然后用这些短语来给无标注数据打软标签。最后在得到的标注数据集上用有监督方法进行训练。在小样本设置下,PET 在部分任务上远超有监督学习和强半监督学习方法。以 PET 为代表的提示学习与微调学习的区别如下图所示,包括数据预处理模块 `Template` 和标签词映射模块 `Verbalizer`。详细介绍及定义方法参见 [Prompt API 文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/advanced_guide/prompt.md)。 - -![PET_and_FT](https://user-images.githubusercontent.com/25607475/192727706-0a17b5ef-db6b-46be-894d-0ee315306776.png) - - -## 快速开始 - -CLUE(Chinese Language Understanding Evaluation)作为中文语言理解权威测评榜单,在学术界和工业界都有着广泛影响。FewCLUE 是其设立的中文小样本学习测评子榜,旨在探索小样本学习最佳模型和中文实践。PaddleNLP 内置了 FewCLUE 数据集,可以直接用来进行 PET 算法训练、评估、预测,并生成 FewCLUE 榜单的提交结果,参与 FewCLUE 竞赛。 - -### 代码结构说明 -``` -├── run_train.py # PET 算法提示学习脚本 -├── data.py # 数据集构造、数据增强 -├── utils.py # FewCLUE 提交结果保存等工具函数 -└── prompt/ # FewCLUE 各数据集的 prompt 定义文件 -``` - -### 数据准备 - -读取 FewCLUE 数据集只需要 1 行代码,这部分代码在 `data.py` 脚本中。以情感分类数据集 `eprstmt` 为例: - -``` -from paddlenlp.datasets import load_dataset - -# 通过指定 "fewclue" 和数据集名字 name="eprstmt" 即可一键加载 FewCLUE 中的eprstmt 数据集 -train_ds, dev_ds, public_test_ds = load_dataset("fewclue", name="eprstmt", splits=("train_0", "dev_0", "test_public")) -``` - -### 模型训练、评估、预测 - -通过如下命令,指定 GPU 0 卡, 在 FewCLUE 的 `eprstmt` 数据集上进行训练&评估 -``` -python -u -m paddle.distributed.launch --gpus "0" run_train.py \ - --output_dir checkpoint_eprstmt \ - --task_name eprstmt \ - --split_id few_all \ - --prompt_path prompt/eprstmt.json \ - --prompt_index 0 \ - --do_train \ - --do_eval \ - --do_test \ - --do_predict \ - --do_label \ - --max_steps 1000 \ - --learning_rate 3e-5 \ - --eval_steps 100 \ - --save_steps 100 \ - --logging_steps 5 \ - --per_device_train_batch_size 16 \ - --max_seq_length 128 \ - --load_best_model_at_end \ - --metric_for_best_model accuracy \ - --save_total_limit 1 -``` -参数含义说明 -- `task_name`: FewCLUE 中的数据集名字 -- `split_id`: 数据集编号,包括0, 1, 2, 3, 4 和 few_all -- `prompt_path`: prompt 定义文件名 -- `prompt_index`: 使用定义文件中第 `prompt_index` 个 prompt -- `augment_type`: 数据增强策略,可选 swap, delete, insert, substitute -- `num_augment`: 数据增强策略为每个样本生成的样本数量 -- `word_augment_percent`: 每个序列中数据增强词所占的比例 -- `pseudo_data_path`: 使用模型标注的伪标签数据文件路径 -- `do_label`: 是否使用训练后的模型给无标签数据标注伪标签 -- `do_test`: 是否在公开测试集上评估模型效果 -- `model_name_or_path`: 预训练模型名,默认为 `ernie-1.0-large-zh-cw` -- `use_rdrop`: 是否使用对比学习策略 R-Drop -- `alpha_rdrop`: R-Drop 损失值权重,默认为 0.5 -- `dropout`: 预训练模型的 dropout 参数值,用于 R-Drop 策略中参数配置 -- `export_type`: 模型导出格式,默认为 `paddle`,动态图转静态图 -- 更多配置参考 [Trainer 参数文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/trainer.md#trainingarguments-%E5%8F%82%E6%95%B0%E4%BB%8B%E7%BB%8D) 和 [PromptTrainer 参数文档](https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/advanced_guide/prompt.md#prompttrainer%E5%8F%82%E6%95%B0%E5%88%97%E8%A1%A8) - -### 模型部署 - -Coming soon... - -## References -[1] Schick, Timo, and Hinrich Schütze. “Exploiting Cloze Questions for Few Shot Text Classification and Natural Language Inference.” ArXiv:2001.07676 [Cs], January 25, 2021. http://arxiv.org/abs/2001.07676. diff --git a/examples/few_shot/pet/data.py b/examples/few_shot/pet/data.py deleted file mode 100644 index ba2cca683830..000000000000 --- a/examples/few_shot/pet/data.py +++ /dev/null @@ -1,191 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -from functools import partial - -import paddle - -from paddlenlp.dataaug import WordDelete, WordInsert, WordSubstitute, WordSwap -from paddlenlp.datasets import MapDataset, load_dataset - - -def extend_with_pseudo_data(data_ds, pseudo_path, labels_to_ids): - """ - Extend train dataset with pseudo labeled examples if exists. - """ - if pseudo_path is None: - return data_ds - with open(pseudo_path, "r", encoding="utf-8") as fp: - pseudo_data = [json.loads(x.strip()) for x in fp] - data_ds = MapDataset([x for x in data_ds] + pseudo_data) - return data_ds - - -def extend_with_data_augment(data_ds, aug_type, num_aug=10, percent=0.1, aug_base="mlm", example_keys=None): - """ - Extend train dataset with augmentation. - """ - if example_keys is None: - return data_ds - if aug_type is None or aug_type == "None": - return data_ds - if aug_type == "delete": - aug = WordDelete(create_n=num_aug, aug_percent=percent) - elif aug_type == "substitute": - aug = WordSubstitute(aug_base, create_n=num_aug, aug_percent=percent) - elif aug_type == "insert": - aug = WordInsert(aug_base, create_n=num_aug, aug_percent=percent) - elif aug_type == "swap": - aug = WordSwap(create_n=num_aug, aug_percent=percent) - else: - raise ValueError("Unsupported data augment strategy `{}`".format(aug_type)) - - aug_data = [] - for example in data_ds: - for key in example_keys: - text_aug = aug.augment(example[key]) - for text in text_aug: - new_example = example.copy() - example[key] = text - aug_data.append(new_example) - - data_ds = MapDataset([x for x in data_ds] + aug_data) - return data_ds - - -def convert_chid(data_ds): - """ - Insert idioms into positions of `#idiom#` so that the task is converted - to binary classification. - """ - split_data_ds = [] - for example in data_ds: - fragments = example["content"].split("#idiom#") - label = example.get("answer", None) - for index, cand in enumerate(example["candidates"]): - new_example = {"content_pre": fragments[0], "content_post": fragments[1], "idiom": cand} - if label is not None: - new_example["label"] = str(int(index == label)) - split_data_ds.append(new_example) - return MapDataset(split_data_ds) - - -def convert_csl(data_ds): - """ - Concatanate keywords and it can be replaced by keyword `options` in develop versioin. - """ - concat_data_ds = [] - for example in data_ds: - example["keyword"] = ",".join(example["keyword"]) - concat_data_ds.append(example) - return MapDataset(concat_data_ds) - - -def convert_cluewsc(data_ds): - """ - Mark the pronoun and entity with special tokens. - """ - marked_data_ds = [] - for example in data_ds: - target, text = example["target"], list(example["text"]) - pronoun, p_index = target["span2_text"], target["span2_index"] - entity, e_index = target["span1_text"], target["span1_index"] - label = example.get("label", None) - if p_index > e_index: - text.insert(p_index, "_") - text.insert(p_index + len(pronoun) + 1, "_") - text.insert(e_index, "[") - text.insert(e_index + len(entity) + 1, "]") - else: - text.insert(e_index, "[") - text.insert(e_index + len(entity) + 1, "]") - text.insert(p_index, "_") - text.insert(p_index + len(pronoun) + 1, "_") - new_example = {"text": "".join(text), "pronoun": pronoun, "entity": entity} - if label is not None: - new_example["label"] = label - marked_data_ds.append(new_example) - return MapDataset(marked_data_ds) - - -def convert_labels_to_ids(example, orig_key, labels_to_ids): - """ - Convert the keyword in datasets to `labels`. - """ - if orig_key in example: - example["label_ids"] = labels_to_ids[example.pop(orig_key)] - return example - - -def convert_ids_to_words(example, token_ids): - """ - Convert label id to the first word in mapping from labels to words, - the length of which should coincide with that of `mask` in prompt. - """ - if "label_ids" in example: - labels = paddle.index_select(token_ids, paddle.to_tensor(example.pop("label_ids")), axis=0).squeeze(0) - example["labels"] = labels - return example - - -def load_fewclue_dataset(args, verbalizer, example_keys=None): - """ - Load fewclue datasets and convert them to the standard format of PET. - """ - split_id = args.split_id - splits = [f"train_{split_id}", f"dev_{split_id}", "test_public", "test"] - if args.task_name == "cluewsc": - train_ds, dev_ds, public_test_ds, test_ds = load_dataset("fewclue", name=args.task_name, splits=splits) - unlabeled_ds = None - else: - splits.append("unlabeled") - train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds = load_dataset( - "fewclue", name=args.task_name, splits=splits - ) - data_ds = [train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds] - - # Preprocess data for mask prediction task. - if args.task_name == "chid": - for index, sub_data_ds in enumerate(data_ds): - data_ds[index] = convert_chid(sub_data_ds) - elif args.task_name == "cluewsc": - for index, sub_data_ds in enumerate(data_ds[:-1]): - data_ds[index] = convert_cluewsc(sub_data_ds) - elif args.task_name == "csl": - for index, sub_data_ds in enumerate(data_ds): - data_ds[index] = convert_csl(sub_data_ds) - orig_key = "label" - if args.task_name == "tnews": - orig_key = "label_desc" - elif args.task_name == "iflytek": - orig_key = "label_des" - convert_label = partial(convert_labels_to_ids, orig_key=orig_key, labels_to_ids=verbalizer.labels_to_ids) - for index, sub_data_ds in enumerate(data_ds): - if sub_data_ds is not None: - data_ds[index] = sub_data_ds.map(convert_label) - - # Extend train dataset with data augmentation and pseudo-label data. - data_ds[0] = extend_with_data_augment( - data_ds[0], args.augment_type, args.num_augment, args.word_augment_percent, args.augment_method, example_keys - ) - data_ds[0] = extend_with_pseudo_data(data_ds[0], args.pseudo_data_path, verbalizer.labels_to_ids) - - dev_labels = [x["label_ids"] for x in data_ds[1]] - test_labels = [x["label_ids"] for x in data_ds[2]] - - convert_fn = partial(convert_ids_to_words, token_ids=verbalizer.token_ids[:, 0, :]) - data_ds[:3] = [x.map(convert_fn) for x in data_ds[:3]] - - return data_ds, (dev_labels, test_labels) diff --git a/examples/few_shot/pet/prompt/bustm.json b/examples/few_shot/pet/prompt/bustm.json deleted file mode 100644 index ab377ea85708..000000000000 --- a/examples/few_shot/pet/prompt/bustm.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "template": [ - {"text": "下边两句话说的是一个事情吗?{'mask'}“{'text': 'sentence1'}”和“{'text': 'sentence2'}”"}, - {"text": "下边两个句子说的是{'mask'}{'mask'}的事情。“{'text': 'sentence1'}”和“{'text': 'sentence2'}”"}, - {"text": "“{'text': 'sentence1'}”和“{'text': 'sentence2'}”意思{'mask'}{'mask'}。"}, - {"text": "“{'text':'sentence1'}”和“{'text':'sentence2'}”描述的是{'mask'}{'mask'}的事情。"} - ], - "verbalizer": [ - {"0": "不", "1": "是"}, - {"0": "不同", "1": "相同"}, - {"0": "不同", "1": "一样"}, - {"0": "不同", "1": "相同"} - ] -} diff --git a/examples/few_shot/pet/prompt/chid.json b/examples/few_shot/pet/prompt/chid.json deleted file mode 100644 index 24dac2d41100..000000000000 --- a/examples/few_shot/pet/prompt/chid.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "template": [ - {"text": "{'text':'content_pre'}({'text': 'idiom'}){'text': 'content_post'}{'mask'}"}, - {"text": "{'text':'content_pre'}({'text': 'idiom'}){'text': 'content_post'}成语{'text':'idiom'}用在这个句子中{'mask'}合适。"}, - {"text": "选一个合适的词语填在括号里,你会选“{'text': 'idiom'}”吗?{'mask'}。“{'text':'content_pre'}(){'text': 'content_post'}”"}, - {"text": "下边句中成语[{'text':'idiom'}]的理解正确吗?{'mask'}{'mask'}。“{'text':'content_pre'}({'text': 'idiom'}){'text': 'content_post'}”"} - ], - "verbalizer": [ - {"0": "否", "1": "是"}, - {"0": "不", "1": "很"}, - {"0": "不", "1": "会"}, - {"0": "错误", "1": "正确"} - ] -} \ No newline at end of file diff --git a/examples/few_shot/pet/prompt/cluewsc.json b/examples/few_shot/pet/prompt/cluewsc.json deleted file mode 100644 index 76badab27eb8..000000000000 --- a/examples/few_shot/pet/prompt/cluewsc.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "template": [ - {"text": "{'text': 'text'}{'text': 'pronoun'}指的{'mask'}是{'text': 'entity'}"}, - {"text": "{'text': 'text'}{'text': 'pronoun'}指的是{'text': 'entity'}。这里{'text': 'pronoun'}理解得对吗?{'mask'}"}, - {"text": "{'text': 'text'}{'text': 'pronoun'}{'mask'}{'mask'}地代表了{'text': 'entity'}"} - ], - "verbalizer": [ - {"false": "不", "true": "就"}, - {"false": "错", "true": "对"}, - {"false": "错误", "true": "正确"} - ] -} diff --git a/examples/few_shot/pet/prompt/csl.json b/examples/few_shot/pet/prompt/csl.json deleted file mode 100644 index c604c90d0ce5..000000000000 --- a/examples/few_shot/pet/prompt/csl.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "template": [ - {"text": "给定以下几个词语:{'text': 'keyword'}{'mask'}{'mask'}扩写成“{'text': 'abst'}”"}, - {"text": "{'text':'abst'}这段话中关键词包括{'text':'keyword', 'truncate': False}对吗?{'mask'}。"}, - {"text": "{'text':'keyword'}这几个词和下边这段话内容{'mask'}关。“{'text':'abst'}”"}, - {"text": "“{'text':'abst'}”本文的内容{'mask'}{'mask'}“{'text':'keyword'}”"} - ], - "verbalizer": [ - {"0": "不能", "1": "可以"}, - {"0": "错", "1": "对"}, - {"0": "无", "1": "有"}, - {"0": "不含", "1": "包括"} - ] -} diff --git a/examples/few_shot/pet/prompt/csldcp.json b/examples/few_shot/pet/prompt/csldcp.json deleted file mode 100644 index e0fcf846b7ed..000000000000 --- a/examples/few_shot/pet/prompt/csldcp.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "template": [ - {"text": "阅读下边一段{'mask'}{'mask'}学的资料:“{'text': 'content'}”"}, - {"text": "阅读下边这段{'mask'}{'mask'}方面的材料:“{'text': 'content'}”"}, - {"text": "阅读这段{'mask'}{'mask'}学的文献:“{'text': 'content'}”"}, - {"text": "阅读这段{'mask'}{'mask'}学的材料:“{'text': 'content'}”"} - ], - "verbalizer": [ - { - "材料科学与工程": "材料", - "作物学": "作物", - "口腔医学": "口腔", - "药学": "药学", - "教育学": "教育", - "水利工程": "水利", - "理论经济学": "理经", - "食品科学与工程": "食品", - "畜牧学/兽医学": "畜牧", - "体育学": "体育", - "核科学与技术": "核科", - "力学": "力学", - "园艺学": "园艺", - "水产": "水产", - "法学": "法学", - "地质学/地质资源与地质工程": "地质", - "石油与天然气工程": "石油", - "农林经济管理": "农林", - "信息与通信工程": "通信", - "图书馆、情报与档案管理": "图书", - "政治学": "政治", - "电气工程": "电气", - "海洋科学": "海洋", - "民族学": "民族", - "航空宇航科学与技术": "航空", - "化学/化学工程与技术": "化学", - "哲学": "哲学", - "公共卫生与预防医学": "卫生", - "艺术学": "艺术", - "农业工程": "农工", - "船舶与海洋工程": "船舶", - "计算机科学与技术": "计科", - "冶金工程": "冶金", - "交通运输工程": "交通", - "动力工程及工程热物理": "动力", - "纺织科学与工程": "纺织", - "建筑学": "建筑", - "环境科学与工程": "环境", - "公共管理": "公管", - "数学": "数学", - "物理学": "物理", - "林学/林业工程": "林学", - "心理学": "心理", - "历史学": "历史", - "工商管理": "工管", - "应用经济学": "应经", - "中医学/中药学": "中医", - "天文学": "天文", - "机械工程": "机械", - "土木工程": "土木", - "光学工程": "光学", - "地理学": "地理", - "农业资源利用": "农业", - "生物学/生物科学与工程": "生物", - "兵器科学与技术": "兵器", - "矿业工程": "矿业", - "大气科学": "大气", - "基础医学/临床医学": "基础", - "电子科学与技术": "电子", - "测绘科学与技术": "测绘", - "控制科学与工程": "控制", - "军事学": "军事", - "中国语言文学": "中文", - "新闻传播学": "新闻", - "社会学": "社会", - "地球物理学":"地球", - "植物保护":"植保" - }, - {}, - {}, - {} - ] -} diff --git a/examples/few_shot/pet/prompt/eprstmt.json b/examples/few_shot/pet/prompt/eprstmt.json deleted file mode 100644 index 84e408def087..000000000000 --- a/examples/few_shot/pet/prompt/eprstmt.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "template": [ - {"text": "{'text':'sentence'}我{'mask'}喜欢。"}, - {"text": "我{'mask'}喜欢。{'text':'sentence'}"}, - {"text": "{'mask'}{'mask'}推荐这件商品!{'text':'sentence'}"}, - {"text": "我对这个东西{'mask'}满意。{'text':'sentence'}"}, - {"text": "{'mask'}理想。{'text':'sentence'}"}, - {"text": "{'text':'sentence'}这句话表示我{'mask'}满意。"} - ], - "verbalizer": [ - {"Negative": "不", "Positive": "很"}, - {"Negative": "不", "Positive": "很"}, - {"Negative": "很不", "Positive": "非常"}, - {"Negative": "不", "Positive": "很"}, - {"Negative": "不", "Positive": "很"}, - {"Negative": "不", "Positive": "很"} - ] -} diff --git a/examples/few_shot/pet/prompt/iflytek.json b/examples/few_shot/pet/prompt/iflytek.json deleted file mode 100644 index 9bce98d3f57a..000000000000 --- a/examples/few_shot/pet/prompt/iflytek.json +++ /dev/null @@ -1,253 +0,0 @@ -{ - "template": [ - {"text": "下边介绍的是和{'mask': None, 'length': 4}相关的产品:{'text': 'sentence'}"}, - {"text": "搜索更多{'mask'}{'mask'}相关的应用程序。{'text': 'sentence'}"}, - {"text": "这段话跟什么有关?{'mask'}{'mask'}“{'text': 'sentence'}”"} - ], - "verbalizer": [ - { - "银行": "银行办理", - "社区服务": "社区服务", - "电商": "电商网购", - "支付": "支付交易", - "经营养成": "经营养成", - "卡牌": "卡牌游戏", - "借贷": "借贷借款", - "驾校": "驾校学车", - "理财": "投资理财", - "职考": "职业考试", - "新闻": "新闻资讯", - "旅游资讯": "旅游资讯", - "公共交通": "公共交通", - "魔幻": "魔幻游戏", - "医疗服务": "医疗服务", - "影像剪辑": "影像剪辑", - "动作类": "动作游戏", - "工具": "使用工具", - "体育竞技": "体育竞技", - "小说": "小说阅读", - "运动健身": "运动健身", - "相机": "相机拍照", - "辅助工具": "辅助工具", - "快递物流": "快递物流", - "高等教育": "高等教育", - "股票": "股票炒股", - "菜谱": "做菜菜谱", - "行车辅助": "行车帮助", - "仙侠": "仙侠小说", - "亲子儿童": "亲子儿童", - "购物咨询": "购物资讯", - "射击游戏": "射击游戏", - "漫画": "动漫漫画", - "中小学": "中学小学", - "同城服务": "同城跑腿", - "成人教育": "成人教育", - "求职": "面试求职", - "电子产品": "电子产品", - "艺术": "艺术学习", - "薅羊毛": "比价省钱", - "约会社交": "约会社交", - "经营": "经营管理", - "兼职": "兼职赚钱", - "短视频": "拍短视频", - "音乐": "音乐乐库", - "英语": "英语学习", - "棋牌中心": "棋牌中心", - "摄影修图": "摄影修图", - "养生保健": "养生保健", - "办公": "办公工具", - "政务": "政务服务", - "视频": "视频拍摄", - "论坛圈子": "论坛圈子", - "彩票": "彩票乐透", - "直播": "直播娱乐", - "其他": "其他类别", - "休闲益智": "休闲益智", - "策略": "策略游戏", - "即时通讯": "即时通讯", - "汽车交易": "汽车交易", - "违章": "违章罚款", - "地图导航": "地图导航", - "民航": "民用航空", - "电台": "电台播报", - "语言(非英语)": "小语种类", - "搞笑": "搞笑娱乐", - "婚恋社交": "婚恋社交", - "社区超市": "社区超市", - "日常养车": "日常养车", - "杂志": "杂志期刊", - "视频教育": "线上教育", - "家政": "家政服务", - "影视娱乐": "影视娱乐", - "装修家居": "装修家居", - "体育咨讯": "体育资讯", - "社交工具": "社交工具", - "餐饮店": "餐饮美食", - "美颜": "美颜相机", - "问诊挂号": "问诊挂号", - "飞行空战": "飞行空战", - "综合预定": "综合预定", - "电影票务": "电影票务", - "笔记": "笔记记录", - "买房": "买房购房", - "外卖": "外卖配送", - "母婴": "母婴产品", - "打车": "打车出行", - "情侣社交": "情侣社交", - "日程管理": "日程管理", - "租车": "租车出行", - "微博博客": "微博博客", - "百科": "知识百科", - "绘画": "绘画学习", - "铁路": "铁路交通", - "生活社交": "生活社交", - "租房": "租房房源", - "酒店": "酒店住宿", - "保险": "保险理赔", - "问答交流": "问答交流", - "收款": "收款交易", - "MOBA": "多人竞技", - "K歌": "唱歌K歌", - "技术": "技术学习", - "减肥瘦身": "减肥瘦身", - "工作社交": "工作社交", - "团购": "团购拼单", - "记账": "记录记账", - "女性": "女性生活", - "公务员": "公务员类", - "二手": "二手交易", - "美妆美业": "美妆美业", - "汽车咨询": "汽车资讯", - "行程管理": "行程管理", - "免费WIFI": "WIFI", - "教辅": "教育辅助", - "成人": "成人两性", - "婚庆": "婚庆结婚", - "民宿短租": "民宿短租", - "出国": "出国相关" - }, - { - "银行": "银行", - "社区服务": "社区", - "电商": "网购", - "支付": "付钱", - "经营养成": "养成", - "卡牌": "纸牌", - "借贷": "借钱", - "驾校": "学车", - "理财": "投资", - "职考": "考试", - "新闻": "新闻", - "旅游资讯": "旅游", - "公共交通": "交通", - "魔幻": "魔幻", - "医疗服务": "医疗", - "影像剪辑": "剪辑", - "动作类": "动作", - "工具": "工具", - "体育竞技": "体育", - "小说": "小说", - "运动健身": "运动", - "相机": "相机", - "辅助工具": "辅助", - "快递物流": "快递", - "高等教育": "教育", - "股票": "股票", - "菜谱": "菜谱", - "行车辅助": "帮助", - "仙侠": "仙侠", - "亲子儿童": "小孩", - "购物咨询": "购物", - "射击游戏": "射击", - "漫画": "漫画", - "中小学": "小学", - "同城服务": "跑腿", - "成人教育": "成人", - "求职": "面试", - "电子产品": "电子", - "艺术": "艺术", - "薅羊毛": "赚钱", - "约会社交": "约会", - "经营": "经营", - "兼职": "兼职", - "短视频": "短片", - "音乐": "音乐", - "英语": "英语", - "棋牌中心": "棋牌", - "摄影修图": "拍照", - "养生保健": "养生", - "办公": "办公", - "政务": "政务", - "视频": "视频", - "论坛圈子": "论坛", - "彩票": "彩票", - "直播": "直播", - "其他": "其他", - "休闲益智": "休闲", - "策略": "策略", - "即时通讯": "通讯", - "汽车交易": "买车", - "违章": "违章", - "地图导航": "地图", - "民航": "航空", - "电台": "电台", - "语言(非英语)": "语言", - "搞笑": "搞笑", - "婚恋社交": "婚恋", - "社区超市": "超市", - "日常养车": "养车", - "杂志": "杂志", - "视频教育": "线上", - "家政": "家政", - "影视娱乐": "影视", - "装修家居": "装修", - "体育咨讯": "资讯", - "社交工具": "交流", - "餐饮店": "美食", - "美颜": "美颜", - "问诊挂号": "挂号", - "飞行空战": "飞行", - "综合预定": "预定", - "电影票务": "票务", - "笔记": "笔记", - "买房": "买房", - "外卖": "外卖", - "母婴": "母婴", - "打车": "打车", - "情侣社交": "情侣", - "日程管理": "日程", - "租车": "租车", - "微博博客": "博客", - "百科": "百科", - "绘画": "绘画", - "铁路": "铁路", - "生活社交": "生活", - "租房": "租房", - "酒店": "酒店", - "保险": "保险", - "问答交流": "问答", - "收款": "收款", - "MOBA": "多人", - "K歌": "唱歌", - "技术": "技术", - "减肥瘦身": "减肥", - "工作社交": "工作", - "团购": "团购", - "记账": "记录", - "女性": "女性", - "公务员": "公务", - "二手": "二手", - "美妆美业": "美妆", - "汽车咨询": "汽车", - "行程管理": "行程", - "免费WIFI": "上网", - "教辅": "教辅", - "成人": "两性", - "婚庆": "婚庆", - "民宿短租": "民宿", - "出国": "出国" - }, - {} - ] -} - diff --git a/examples/few_shot/pet/prompt/ocnli.json b/examples/few_shot/pet/prompt/ocnli.json deleted file mode 100644 index 0519816f080b..000000000000 --- a/examples/few_shot/pet/prompt/ocnli.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "template": [ - {"text": "“{'text': 'sentence1'}”和“{'text': 'sentence2'}”之间的逻辑关系是{'mask'}{'mask'}"}, - {"text": "“{'text': 'sentence1'}”和“{'text': 'sentence2'}”说的是{'mask'}{'mask'}的东西。"}, - {"text": "下边两句话之间有什么逻辑关系?{'mask'}{'mask'}“{'text': 'sentence1'}”{'sep'}“{'text': 'sentence2'}”"} - ], - "verbalizer": [ - {"contradiction": "矛盾", "entailment": "蕴含", "neutral": "中立"}, - {"contradiction": "矛盾", "entailment": "蕴含", "neutral": "中立"}, - {"contradiction": "不同", "entailment": "类似", "neutral": "无关"} - ] -} \ No newline at end of file diff --git a/examples/few_shot/pet/prompt/tnews.json b/examples/few_shot/pet/prompt/tnews.json deleted file mode 100644 index 5a2c7449b8e1..000000000000 --- a/examples/few_shot/pet/prompt/tnews.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "template": [ - {"text": "阅读下边一则{'mask'}{'mask'}新闻:{'text':'sentence'}"}, - {"text": "阅读这篇标题为「{'text':'sentence'}」的文章,它讲的是{'mask'}{'mask'}。"}, - {"text": "下边这则新闻属于{'mask'}{'mask'}话题{'text':'sentence'}"}, - {"text": "下边这则新闻属于什么话题呢?{'mask'}{'mask'}{'text':'sentence'}"} - ], - "verbalizer": [ - { - "news_story": "八卦", - "news_entertainment": "明星", - "news_finance": "财经", - "news_sports": "体育", - "news_edu": "校园", - "news_game": "游戏", - "news_culture": "文化", - "news_tech": "科技", - "news_car": "汽车", - "news_travel": "旅行", - "news_world": "国际", - "news_agriculture": "农业", - "news_military": "军事", - "news_house": "房子", - "news_stock": "股票" - }, - {}, - {}, - {} - ] -} diff --git a/examples/few_shot/pet/run_train.py b/examples/few_shot/pet/run_train.py deleted file mode 100644 index 3bab91cfe712..000000000000 --- a/examples/few_shot/pet/run_train.py +++ /dev/null @@ -1,170 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import time -from dataclasses import dataclass, field -from functools import partial - -import paddle -from data import load_fewclue_dataset -from paddle.metric import Accuracy -from paddle.static import InputSpec -from utils import load_prompt_arguments, save_fewclue_prediction, save_pseudo_data - -from paddlenlp.prompt import ( - ManualTemplate, - MaskedLMVerbalizer, - PromptModelForSequenceClassification, - PromptTrainer, - PromptTuningArguments, -) -from paddlenlp.trainer import PdArgumentParser -from paddlenlp.transformers import AutoModelForMaskedLM, AutoTokenizer -from paddlenlp.utils.log import logger - - -# yapf: disable -@dataclass -class DataArguments: - task_name: str = field(default="eprstmt", metadata={"help": "The task name in FewCLUE."}) - split_id: str = field(default="0", metadata={"help": "The split id of datasets, including 0, 1, 2, 3, 4, few_all."}) - prompt_path: str = field(default="prompt/eprstmt.json", metadata={"help": "Path to the defined prompts."}) - prompt_index: int = field(default=0, metadata={"help": "The index of defined prompt for training."}) - augment_type: str = field(default=None, metadata={"help": "The strategy used for data augmentation, including `swap`, `delete`, `insert`, `subsitute`."}) - num_augment: str = field(default=5, metadata={"help": "Number of augmented data per example, which works when `augment_type` is set."}) - word_augment_percent: str = field(default=0.1, metadata={"help": "Percentage of augmented words in sequences, used for `swap`, `delete`, `insert`, `subsitute`."}) - augment_method: str = field(default="mlm", metadata={"help": "Strategy used for `insert` and `subsitute`."}) - pseudo_data_path: str = field(default=None, metadata={"help": "Path to data with pseudo labels."}) - do_label: bool = field(default=False, metadata={"help": "Whether to label unsupervised data in unlabeled datasets"}) - do_test: bool = field(default=False, metadata={"help": "Whether to evaluate model on public test datasets."}) - - -@dataclass -class ModelArguments: - model_name_or_path: str = field(default="ernie-1.0-large-zh-cw", metadata={"help": "Build-in pretrained model name or the path to local model."}) - export_type: str = field(default='paddle', metadata={"help": "The type to export. Support `paddle` and `onnx`."}) - dropout: float = field(default=0.1, metadata={"help": "The dropout used for pretrained model."}) -# yapf: enable - - -def main(): - # Parse the arguments. - parser = PdArgumentParser((ModelArguments, DataArguments, PromptTuningArguments)) - model_args, data_args, training_args = parser.parse_args_into_dataclasses() - data_args = load_prompt_arguments(data_args) - training_args.print_config(model_args, "Model") - training_args.print_config(data_args, "Data") - paddle.set_device(training_args.device) - - # Load the pretrained language model. - tokenizer = AutoTokenizer.from_pretrained(model_args.model_name_or_path) - model = AutoModelForMaskedLM.from_pretrained( - model_args.model_name_or_path, - hidden_dropout_prob=model_args.dropout, - attention_probs_dropout_prob=model_args.dropout, - ) - - # Define template for preprocess and verbalizer for postprocess. - template = ManualTemplate(data_args.prompt, tokenizer, training_args.max_seq_length) - logger.info("Using template: {}".format(template.prompt)) - - verbalizer = MaskedLMVerbalizer(data_args.label_words, tokenizer) - labels_to_ids = verbalizer.labels_to_ids - ids_to_labels = {idx: label for label, idx in labels_to_ids.items()} - logger.info("Using verbalizer: {}".format(data_args.label_words)) - - # Load datasets. - data_ds, label_list = load_fewclue_dataset(data_args, verbalizer=verbalizer, example_keys=template.example_keys) - train_ds, dev_ds, public_test_ds, test_ds, unlabeled_ds = data_ds - dev_labels, test_labels = label_list - - # Define the criterion. - criterion = paddle.nn.CrossEntropyLoss() - - # Initialize the prompt model with the above variables. - prompt_model = PromptModelForSequenceClassification( - model, template, verbalizer, freeze_plm=training_args.freeze_plm, freeze_dropout=training_args.freeze_dropout - ) - - # Define the metric function. - def compute_metrics(eval_preds, labels, verbalizer): - metric = Accuracy() - predictions = paddle.to_tensor(eval_preds.predictions) - predictions = verbalizer.aggregate_multiple_mask(predictions) - correct = metric.compute(predictions, paddle.to_tensor(labels)) - metric.update(correct) - acc = metric.accumulate() - return {"accuracy": acc} - - # Initialize the trainer. - dev_compute_metrics = partial(compute_metrics, labels=dev_labels, verbalizer=verbalizer) - trainer = PromptTrainer( - model=prompt_model, - tokenizer=tokenizer, - args=training_args, - criterion=criterion, - train_dataset=train_ds, - eval_dataset=dev_ds, - callbacks=None, - compute_metrics=dev_compute_metrics, - ) - - # Traininig. - if training_args.do_train: - train_result = trainer.train(resume_from_checkpoint=training_args.resume_from_checkpoint) - metrics = train_result.metrics - trainer.save_model() - trainer.log_metrics("train", metrics) - trainer.save_metrics("train", metrics) - trainer.save_state() - - time_stamp = time.strftime("%m%d-%H-%M-%S", time.localtime()) - - # Test. - if data_args.do_test and public_test_ds is not None: - test_compute_metrics = partial(compute_metrics, labels=test_labels, verbalizer=verbalizer) - trainer.compute_metrics = test_compute_metrics - test_ret = trainer.predict(public_test_ds) - trainer.log_metrics("test", test_ret.metrics) - - # Predict. - if training_args.do_predict and test_ds is not None: - pred_ret = trainer.predict(test_ds) - logger.info("Prediction done.") - predict_path = os.path.join(training_args.output_dir, "fewclue_submit_examples_" + time_stamp) - save_fewclue_prediction(predict_path, data_args.task_name, pred_ret, verbalizer, ids_to_labels) - - # Label unsupervised data. - if data_args.do_label and unlabeled_ds is not None: - label_ret = trainer.predict(unlabeled_ds) - logger.info("Labeling done.") - pseudo_path = os.path.join(training_args.output_dir, "pseudo_data_" + time_stamp + ".txt") - save_pseudo_data(pseudo_path, data_args.task_name, label_ret, verbalizer, ids_to_labels) - - # Export static model. - if training_args.do_export: - input_spec = [ - InputSpec(shape=[None, None], dtype="int64"), # input_ids, - InputSpec(shape=[None, None], dtype="int64"), # token_type_ids - InputSpec(shape=[None, None], dtype="int64"), # position_ids - InputSpec(shape=[None, None, None, None], dtype="float32"), # attention_mask - InputSpec(shape=[None], dtype="int64"), # masked_positions - ] - export_path = os.path.join(training_args.output_dir, "export") - trainer.export_model(export_path, input_spec=input_spec, export_type=model_args.export_type) - - -if __name__ == "__main__": - main() diff --git a/examples/few_shot/pet/utils.py b/examples/few_shot/pet/utils.py deleted file mode 100644 index 989b4e6b81a8..000000000000 --- a/examples/few_shot/pet/utils.py +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import json -import os -import pathlib - -import numpy as np -import paddle - -from paddlenlp.datasets import load_dataset - -LABEL_TO_STANDARD = { - "tnews": { - "news_story": "100", - "news_culture": "101", - "news_entertainment": "102", - "news_sports": "103", - "news_finance": "104", - "news_house": "106", - "news_car": "107", - "news_edu": "108", - "news_tech": "109", - "news_military": "110", - "news_travel": "112", - "news_world": "113", - "news_stock": "114", - "news_agriculture": "115", - "news_game": "116", - }, - "iflytek": { - "打车": 0, - "美颜": 100, - "影像剪辑": 101, - "摄影修图": 102, - "相机": 103, - "绘画": 104, - "二手": 105, - "电商": 106, - "团购": 107, - "外卖": 108, - "电影票务": 109, - "社区服务": 10, - "社区超市": 110, - "购物咨询": 111, - "笔记": 112, - "办公": 113, - "日程管理": 114, - "女性": 115, - "经营": 116, - "收款": 117, - "其他": 118, - "薅羊毛": 11, - "魔幻": 12, - "仙侠": 13, - "卡牌": 14, - "飞行空战": 15, - "射击游戏": 16, - "休闲益智": 17, - "动作类": 18, - "体育竞技": 19, - "地图导航": 1, - "棋牌中心": 20, - "经营养成": 21, - "策略": 22, - "MOBA": 23, - "辅助工具": 24, - "约会社交": 25, - "即时通讯": 26, - "工作社交": 27, - "论坛圈子": 28, - "婚恋社交": 29, - "免费WIFI": 2, - "情侣社交": 30, - "社交工具": 31, - "生活社交": 32, - "微博博客": 33, - "新闻": 34, - "漫画": 35, - "小说": 36, - "技术": 37, - "教辅": 38, - "问答交流": 39, - "租车": 3, - "搞笑": 40, - "杂志": 41, - "百科": 42, - "影视娱乐": 43, - "求职": 44, - "兼职": 45, - "视频": 46, - "短视频": 47, - "音乐": 48, - "直播": 49, - "同城服务": 4, - "电台": 50, - "K歌": 51, - "成人": 52, - "中小学": 53, - "职考": 54, - "公务员": 55, - "英语": 56, - "视频教育": 57, - "高等教育": 58, - "成人教育": 59, - "快递物流": 5, - "艺术": 60, - "语言(非英语)": 61, - "旅游资讯": 62, - "综合预定": 63, - "民航": 64, - "铁路": 65, - "酒店": 66, - "行程管理": 67, - "民宿短租": 68, - "出国": 69, - "婚庆": 6, - "工具": 70, - "亲子儿童": 71, - "母婴": 72, - "驾校": 73, - "违章": 74, - "汽车咨询": 75, - "汽车交易": 76, - "日常养车": 77, - "行车辅助": 78, - "租房": 79, - "家政": 7, - "买房": 80, - "装修家居": 81, - "电子产品": 82, - "问诊挂号": 83, - "养生保健": 84, - "医疗服务": 85, - "减肥瘦身": 86, - "美妆美业": 87, - "菜谱": 88, - "餐饮店": 89, - "公共交通": 8, - "体育咨讯": 90, - "运动健身": 91, - "支付": 92, - "保险": 93, - "股票": 94, - "借贷": 95, - "理财": 96, - "彩票": 97, - "记账": 98, - "银行": 99, - "政务": 9, - }, -} - - -def load_prompt_arguments(args): - """ - Load prompt and label words according to prompt index. - """ - with open(args.prompt_path, "r", encoding="utf-8") as fp: - configs = json.load(fp) - assert len(configs["verbalizer"]) == len(configs["template"]) - assert configs["verbalizer"][0] is not None - verbalizer = [configs["verbalizer"][0]] - last_verb_index = 0 - for index, verb in enumerate(configs["verbalizer"][1:]): - if verb is None or len(verb) == 0: - verbalizer.append(configs["verbalizer"][last_verb_index]) - else: - verbalizer.append(verb) - last_verb_index = index + 1 - configs["verbalizer"] = verbalizer - args.prompt = configs["template"][args.prompt_index]["text"] - label_words = configs["verbalizer"][args.prompt_index] - if isinstance(label_words, list): - label_words = {k: k for k in label_words} - args.label_words = label_words - return args - - -def save_pseudo_data(save_path, task_name, label_preds, verbalizer, labels): - """ - Combine unsupervised data and corresponding predicted labels and - save one example per line. - """ - if task_name == "cluewsc": - return None - - data_ds = load_dataset("fewclue", name=task_name, splits="unlabeled") - preds = paddle.to_tensor(label_preds.predictions) - preds = verbalizer.aggregate_multiple_mask(preds) - preds = paddle.nn.functional.softmax(preds, axis=1).numpy() - label_preds = np.argmax(preds, axis=1) - label_probs = np.max(preds, axis=1) - pseudo_data = [] - for index, example in enumerate(data_ds): - example["labels"] = labels[label_preds[index]] - example["prob"] = str(label_probs[index]) - pseudo_data.append(example) - save_data(pseudo_data, save_path) - - -def save_fewclue_prediction(save_path, task_name, label_preds, verbalizer, labels): - """ - Extract predicted labels and save as the format required by FewCLUE. - """ - preds = paddle.to_tensor(label_preds.predictions) - preds = verbalizer.aggregate_multiple_mask(preds) - if task_name == "chid": - batch_size = preds.shape[0] - preds = paddle.nn.functional.softmax(preds, axis=1)[:, 1] - preds = preds.reshape([batch_size // 7, 7]) - preds = paddle.nn.functional.softmax(preds, axis=1).numpy() - preds = np.argmax(preds, axis=1) - test_ds = load_dataset("fewclue", name=task_name, splits="test") - - ret_list = [] - maps = LABEL_TO_STANDARD.get(task_name, None) - for idx, example in enumerate(test_ds): - uid = example.get("id", idx) - if task_name in ["bustm", "csl"]: - ret_list.append({"id": uid, "label": str(preds[idx])}) - elif task_name == "chid": - ret_list.append({"id": uid, "answer": preds[idx]}) - elif task_name in ["cluewsc", "eprstmt", "ocnli", "csldcp"]: - ret_list.append({"id": uid, "label": labels[preds[idx]]}) - elif task_name in ["iflytek", "tnews"]: - ret_list.append({"id": uid, "label": str(maps[labels[preds[idx]]])}) - save_file = task_name if task_name in ["bustm", "csldcp", "eprstmt"] else task_name + "f" - save_data(ret_list, save_path, save_file + "_predict.json") - - -def save_data(data, save_path, save_file=None): - if save_file is not None: - pathlib.Path(save_path).mkdir(parents=True, exist_ok=True) - save_path = os.path.join(save_path, save_file) - with open(save_path, "w") as fp: - for example in data: - fp.write(json.dumps(example, ensure_ascii=False) + "\n") diff --git a/examples/information_extraction/DuIE/predict.sh b/examples/information_extraction/DuIE/predict.sh deleted file mode 100644 index dd4a1da7f4cd..000000000000 --- a/examples/information_extraction/DuIE/predict.sh +++ /dev/null @@ -1,14 +0,0 @@ -set -eux - -export CUDA_VISIBLE_DEVICES=0 -export BATCH_SIZE=64 -export CKPT=./checkpoints/model_90000.pdparams -export DATASET_FILE=./data/test1.json - -python run_duie.py \ - --do_predict \ - --init_checkpoint $CKPT \ - --predict_data_file $DATASET_FILE \ - --max_seq_length 128 \ - --batch_size $BATCH_SIZE - diff --git a/examples/information_extraction/waybill_ie/README.md b/examples/information_extraction/waybill_ie/README.md deleted file mode 100644 index c842c91c7242..000000000000 --- a/examples/information_extraction/waybill_ie/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# 快递单信息抽取 (Waybill Information Extraction) - -## 简介 - -本示例将通过BiGRU-CRF和ERNIE + FC两类模型,演示如何从用户提供的快递单中,抽取姓名、电话、省、市、区、详细地址等内容,形成结构化信息。辅助物流行业从业者进行有效信息的提取,从而降低客户填单的成本。 - -## 快速开始 - -### 数据准备 - -执行以下命令,下载并解压示例数据集: - -```bash -python download.py --data_dir ./waybill_ie -``` - -数据示例如下: - -``` -1^B6^B6^B2^B0^B2^B0^B0^B0^B7^B7^B宣^B荣^B嗣^B甘^B肃^B省^B白^B银^B市^B会^B宁^B县^B河^B畔^B镇^B十^B字^B街^B金^B海^B超^B市^B西^B行^B5^B0^B米 T-B^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BP-B^BP-I^BP-I^BA1-B^BA1-I^BA1-I^BA2-B^BA2-I^BA2-I^BA3-B^BA3-I^BA3-I^BA4-B^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I -1^B3^B5^B5^B2^B6^B6^B4^B3^B0^B7^B姜^B骏^B炜^B云^B南^B省^B德^B宏^B傣^B族^B景^B颇^B族^B自^B治^B州^B盈^B江^B县^B平^B原^B镇^B蜜^B回^B路^B下^B段 T-B^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BT-I^BP-B^BP-I^BP-I^BA1-B^BA1-I^BA1-I^BA2-B^BA2-I^BA2-I^BA2-I^BA2-I^BA2-I^BA2-I^BA2-I^BA2-I^BA2-I^BA3-B^BA3-I^BA3-I^BA4-B^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I^BA4-I -``` -数据集中以特殊字符"\t"分隔文本、标签,以特殊字符"\002"(示例中显示为"^B")分隔每个字。标签的定义如下: - -| 标签 | 定义 | 标签 | 定义 | -| -------- | -------- |-------- | -------- | -| P-B | 姓名起始位置 | P-I | 姓名中间位置或结束位置 | -| T-B | 电话起始位置 | T-I | 电话中间位置或结束位置 | -| A1-B | 省份起始位置 | A1-I | 省份中间位置或结束位置 | -| A2-B | 城市起始位置 | A2-I | 城市中间位置或结束位置 | -| A3-B | 县区起始位置 | A3-I | 县区中间位置或结束位置 | -| A4-B | 详细地址起始位置 | A4-I | 详细地址中间位置或结束位置 | -| O | 无关字符 | | | - -数据标注采用**BIO模式**。其中 B(begin) 表示一个标签类别的开头,比如 P-B 指的是姓名的开头;相应的,I(inside) 表示一个标签的延续。O表示Outside无关字符。更多标注模式介绍请参考[Inside–outside–beginning (tagging)](https://en.wikipedia.org/wiki/Inside%E2%80%93outside%E2%80%93beginning_(tagging)) - -### 启动训练 - -本项目提供了两种模型结构,一种是BiGRU+CRF结构,另一种是ERNIE+FC结构,前者显存占用小,推理速度快;后者能够在更快收敛并取得更高的精度,但推理速度较慢。 - -#### 启动BiGRU + CRF训练 - -```bash -export CUDA_VISIBLE_DEVICES=0 -python run_bigru_crf.py -``` - -#### 启动ERNIE + FC训练 - -```bash -export CUDA_VISIBLE_DEVICES=0 -python run_ernie.py -``` -##### 模型导出 -使用动态图训练结束之后,还可以将动态图参数导出成静态图参数,具体代码见export_model.py。静态图参数保存在output_path指定路径中。 运行方式: - -基于 `ERNIE` 的模型结构的导出方式 - -```bash -python export_ernie_model.py --params_path ernie_ckpt/model_80/model_state.pdparams --output_path=./output -``` - -基于 `ERNIE + CRF` 的模型结构的导出方式 - -```bash -python export_ernie_crf_model.py --params_path ernie_ckpt/model_80/model_state.pdparams --output_path=./output -``` - -基于 `BIGRU + CRF` 的模型结构的导出方式 - -```bash -python export_bigru_crf_model.py --params_path bigru_crf_ckpt/model_80/model_state.pdparams --output_path=./output -``` - -其中`params_path`是指动态图训练保存的参数路径,`output_path`是指静态图参数导出路径。 - -#### 模型部署 -导出模型之后,可以用于部署,deploy/python文件提供了python部署预测示例。运行方式: - -基于 `ERNIE` 的模型 - -```bash -python deploy/python/predict_ernie.py --model_dir ./output -``` - -基于 `ERNIE + CRF` 的模型 - -```bash -python deploy/python/predict_ernie_crf.py --model_dir ./output -``` - -基于 `BIGRU + CRF` 的模型 - -```bash -python deploy/python/predict_bigru_crf.py --model_dir ./output -``` - -## 更多详细教程请参考: - -[基于Bi-GRU+CRF的快递单信息抽取](https://aistudio.baidu.com/aistudio/projectdetail/1317771) - -[使用预训练模型ERNIE优化快递单信息抽取](https://aistudio.baidu.com/aistudio/projectdetail/1329361) diff --git a/examples/information_extraction/waybill_ie/data.py b/examples/information_extraction/waybill_ie/data.py deleted file mode 100644 index d276b4551074..000000000000 --- a/examples/information_extraction/waybill_ie/data.py +++ /dev/null @@ -1,79 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from paddlenlp.datasets import MapDataset - - -def load_dict(dict_path): - vocab = {} - i = 0 - with open(dict_path, "r", encoding="utf-8") as fin: - for line in fin: - key = line.strip("\n") - vocab[key] = i - i += 1 - return vocab - - -def load_dataset(datafiles): - def read(data_path): - with open(data_path, "r", encoding="utf-8") as fp: - next(fp) # Skip header - for line in fp.readlines(): - words, labels = line.strip("\n").split("\t") - words = words.split("\002") - labels = labels.split("\002") - yield words, labels - - if isinstance(datafiles, str): - return MapDataset(list(read(datafiles))) - elif isinstance(datafiles, list) or isinstance(datafiles, tuple): - return [MapDataset(list(read(datafile))) for datafile in datafiles] - - -def parse_decodes(sentences, predictions, lengths, label_vocab): - """Parse the padding result - - Args: - sentences (list): the tagging sentences. - predictions (list): the prediction tags. - lengths (list): the valid length of each sentence. - label_vocab (dict): the label vocab. - - Returns: - outputs (list): the formatted output. - """ - predictions = [x for batch in predictions for x in batch] - lengths = [x for batch in lengths for x in batch] - id_label = dict(zip(label_vocab.values(), label_vocab.keys())) - - outputs = [] - for idx, end in enumerate(lengths): - sent = sentences[idx][:end] - tags = [id_label[x] for x in predictions[idx][:end]] - sent_out = [] - tags_out = [] - words = "" - for s, t in zip(sent, tags): - if t.endswith("-B") or t == "O": - if len(words): - sent_out.append(words) - tags_out.append(t.split("-")[0]) - words = s - else: - words += s - if len(sent_out) < len(tags_out): - sent_out.append(words) - outputs.append("".join([str((s, t)) for s, t in zip(sent_out, tags_out)])) - return outputs diff --git a/examples/information_extraction/waybill_ie/deploy/python/predict_bigru_crf.py b/examples/information_extraction/waybill_ie/deploy/python/predict_bigru_crf.py deleted file mode 100644 index 2578b69c4c6c..000000000000 --- a/examples/information_extraction/waybill_ie/deploy/python/predict_bigru_crf.py +++ /dev/null @@ -1,290 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import os -from functools import partial - -import paddle -from paddle import inference - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.datasets import load_dataset -from paddlenlp.utils.log import logger - -parser = argparse.ArgumentParser(__doc__) -parser.add_argument("--model_dir", type=str, default="./output", help="The path to parameters in static graph.") -parser.add_argument( - "--data_dir", type=str, default="./waybill_ie/data", help="The folder where the dataset is located." -) -parser.add_argument("--batch_size", type=int, default=200, help="The number of sequences contained in a mini-batch.") -parser.add_argument( - "--device", - default="gpu", - type=str, - choices=["cpu", "gpu"], - help="The device to select to train the model, is must be cpu/gpu.", -) -parser.add_argument( - "--use_tensorrt", default=False, type=eval, choices=[True, False], help="Enable to use tensorrt to speed up." -) -parser.add_argument( - "--precision", default="fp32", type=str, choices=["fp32", "fp16", "int8"], help="The tensorrt precision." -) -parser.add_argument("--cpu_threads", default=10, type=int, help="Number of threads to predict when using cpu.") -parser.add_argument( - "--enable_mkldnn", - default=False, - type=eval, - choices=[True, False], - help="Enable to use mkldnn to speed up when using cpu.", -) -parser.add_argument( - "--benchmark", type=eval, default=False, help="To log some information about environment and running." -) -parser.add_argument("--save_log_path", type=str, default="./log_output/", help="The file path to save log.") -args = parser.parse_args() - - -def load_dict(dict_path): - vocab = {} - i = 0 - with open(dict_path, "r", encoding="utf-8") as fin: - for line in fin: - key = line.strip("\n") - vocab[key] = i - i += 1 - return vocab - - -def load_vocab(dict_path): - """Load vocab from file""" - vocab = {} - reverse = None - with open(dict_path, "r", encoding="utf8") as fin: - for i, line in enumerate(fin): - terms = line.strip("\n").split("\t") - if len(terms) == 2: - if reverse is None: - reverse = True if terms[0].isdigit() else False - if reverse: - value, key = terms - else: - key, value = terms - elif len(terms) == 1: - key, value = terms[0], i - else: - raise ValueError("Error line: %s in file: %s" % (line, dict_path)) - vocab[key] = value - return vocab - - -def parse_decodes(sentences, predictions, lengths, label_vocab): - """Parse the padding result - - Args: - sentences (list): the tagging sentences. - predictions (list): the prediction tags. - lengths (list): the valid length of each sentence. - label_vocab (dict): the label vocab. - - Returns: - outputs (list): the formatted output. - """ - predictions = [x for batch in predictions for x in batch] - lengths = [x for batch in lengths for x in batch] - id_label = dict(zip(label_vocab.values(), label_vocab.keys())) - - outputs = [] - for idx, end in enumerate(lengths): - sent = sentences[idx][:end] - print(predictions[idx][:end]) - tags = [id_label[x] for x in predictions[idx][:end]] - sent_out = [] - tags_out = [] - words = "" - for s, t in zip(sent, tags): - if t.endswith("-B") or t == "O": - if len(words): - sent_out.append(words) - tags_out.append(t.split("-")[0]) - words = s - else: - words += s - if len(sent_out) < len(tags_out): - sent_out.append(words) - outputs.append("".join([str((s, t)) for s, t in zip(sent_out, tags_out)])) - return outputs - - -def convert_tokens_to_ids(tokens, vocab, oov_token=None): - token_ids = [] - oov_id = vocab.get(oov_token) if oov_token else None - for token in tokens: - token_id = vocab.get(token, oov_id) - token_ids.append(token_id) - return token_ids - - -def convert_to_features(example, word_vocab): - tokens = example[0] - token_ids = convert_tokens_to_ids(tokens, word_vocab, "OOV") - return token_ids, len(token_ids) - - -def read(data_path): - with open(data_path, "r", encoding="utf-8") as fp: - next(fp) # Skip header - for line in fp.readlines(): - words, labels = line.strip("\n").split("\t") - words = words.split("\002") - labels = labels.split("\002") - yield words, labels - - -class Predictor(object): - def __init__( - self, - model_dir, - device="gpu", - batch_size=200, - use_tensorrt=False, - precision="fp32", - enable_mkldnn=False, - benchmark=False, - save_log_path="", - ): - self.batch_size = batch_size - model_file = os.path.join(model_dir, "inference.pdmodel") - param_file = os.path.join(model_dir, "inference.pdiparams") - if not os.path.exists(model_file): - raise ValueError("not find model file path {}".format(model_file)) - if not os.path.exists(param_file): - raise ValueError("not find params file path {}".format(param_file)) - config = paddle.inference.Config(model_file, param_file) - if device == "gpu": - # set GPU configs accordingly - # such as initialize the gpu memory, enable tensorrt - config.enable_use_gpu(100, 0) - precision_map = { - "fp16": inference.PrecisionType.Half, - "fp32": inference.PrecisionType.Float32, - "int8": inference.PrecisionType.Int8, - } - precision_mode = precision_map[precision] - - if use_tensorrt: - config.enable_tensorrt_engine( - max_batch_size=batch_size, min_subgraph_size=30, precision_mode=precision_mode - ) - elif device == "cpu": - # set CPU configs accordingly, - # such as enable_mkldnn, set_cpu_math_library_num_threads - config.disable_gpu() - if enable_mkldnn: - # cache 10 different shapes for mkldnn to avoid memory leak - config.set_mkldnn_cache_capacity(10) - config.enable_mkldnn() - config.set_cpu_math_library_num_threads(args.cpu_threads) - elif device == "xpu": - # set XPU configs accordingly - config.enable_xpu(100) - - config.switch_use_feed_fetch_ops(False) - self.predictor = paddle.inference.create_predictor(config) - self.input_handles = [self.predictor.get_input_handle(name) for name in self.predictor.get_input_names()] - self.output_handle = self.predictor.get_output_handle(self.predictor.get_output_names()[0]) - - if args.benchmark: - import auto_log - - pid = os.getpid() - self.autolog = auto_log.AutoLogger( - model_name="ernie-3.0-medium-zh", - model_precision=precision, - batch_size=self.batch_size, - data_shape="dynamic", - save_path=save_log_path, - inference_config=config, - pids=pid, - process_name=None, - gpu_ids=0, - time_keys=["preprocess_time", "inference_time", "postprocess_time"], - warmup=0, - logger=logger, - ) - - def predict(self, dataset, batchify_fn, word_vocab, label_vocab): - if args.benchmark: - self.autolog.times.start() - all_preds = [] - all_lens = [] - num_of_examples = len(dataset) - trans_func = partial(convert_to_features, word_vocab=word_vocab) - start_idx = 0 - while start_idx < num_of_examples: - end_idx = start_idx + self.batch_size - end_idx = end_idx if end_idx < num_of_examples else num_of_examples - batch_data = [trans_func(example) for example in dataset[start_idx:end_idx]] - - if args.benchmark: - self.autolog.times.stamp() - input_ids, lens = batchify_fn(batch_data) - self.input_handles[0].copy_from_cpu(input_ids) - self.input_handles[1].copy_from_cpu(lens) - self.predictor.run() - preds = self.output_handle.copy_to_cpu() - - if args.benchmark: - self.autolog.times.stamp() - # Drop CLS prediction - all_preds.append(preds) - print(preds.shape) - all_lens.append(lens) - - start_idx += self.batch_size - - if args.benchmark: - self.autolog.times.end(stamp=True) - sentences = [example[0] for example in dataset.data] - results = parse_decodes(sentences, all_preds, all_lens, label_vocab) - return results - - -if __name__ == "__main__": - test_ds = load_dataset(read, data_path=os.path.join(args.data_dir, "test.txt"), lazy=False) - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - word_vocab = load_dict(os.path.join(args.data_dir, "word.dic")) - - trans_func = partial(convert_to_features, word_vocab=word_vocab) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=word_vocab.get("OOV", 0), dtype="int64"), # token_ids - Stack(dtype="int64"), # seq_len - ): fn(samples) - - predictor = Predictor( - args.model_dir, - args.device, - args.batch_size, - args.use_tensorrt, - args.precision, - args.enable_mkldnn, - args.benchmark, - args.save_log_path, - ) - - results = predictor.predict(test_ds, batchify_fn, word_vocab, label_vocab) - print("\n".join(results)) - if args.benchmark: - predictor.autolog.report() diff --git a/examples/information_extraction/waybill_ie/deploy/python/predict_ernie.py b/examples/information_extraction/waybill_ie/deploy/python/predict_ernie.py deleted file mode 100644 index bdd3ccfeba9b..000000000000 --- a/examples/information_extraction/waybill_ie/deploy/python/predict_ernie.py +++ /dev/null @@ -1,283 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import os -from functools import partial - -import numpy as np -import paddle -from paddle import inference - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.datasets import load_dataset -from paddlenlp.transformers import AutoTokenizer -from paddlenlp.utils.log import logger - -parser = argparse.ArgumentParser(__doc__) -parser.add_argument("--model_dir", type=str, default="./output", help="The path to parameters in static graph.") -parser.add_argument( - "--data_dir", type=str, default="./waybill_ie/data", help="The folder where the dataset is located." -) -parser.add_argument("--batch_size", type=int, default=200, help="The number of sequences contained in a mini-batch.") -parser.add_argument( - "--device", - default="gpu", - type=str, - choices=["cpu", "gpu"], - help="The device to select to train the model, is must be cpu/gpu.", -) -parser.add_argument( - "--use_tensorrt", default=False, type=eval, choices=[True, False], help="Enable to use tensorrt to speed up." -) -parser.add_argument( - "--precision", default="fp32", type=str, choices=["fp32", "fp16", "int8"], help="The tensorrt precision." -) -parser.add_argument("--cpu_threads", default=10, type=int, help="Number of threads to predict when using cpu.") -parser.add_argument( - "--enable_mkldnn", - default=False, - type=eval, - choices=[True, False], - help="Enable to use mkldnn to speed up when using cpu.", -) -parser.add_argument( - "--benchmark", type=eval, default=False, help="To log some information about environment and running." -) -parser.add_argument("--save_log_path", type=str, default="./log_output/", help="The file path to save log.") -args = parser.parse_args() - - -def load_dict(dict_path): - vocab = {} - i = 0 - with open(dict_path, "r", encoding="utf-8") as fin: - for line in fin: - key = line.strip("\n") - vocab[key] = i - i += 1 - return vocab - - -def load_vocab(dict_path): - """Load vocab from file""" - vocab = {} - reverse = None - with open(dict_path, "r", encoding="utf8") as fin: - for i, line in enumerate(fin): - terms = line.strip("\n").split("\t") - if len(terms) == 2: - if reverse is None: - reverse = True if terms[0].isdigit() else False - if reverse: - value, key = terms - else: - key, value = terms - elif len(terms) == 1: - key, value = terms[0], i - else: - raise ValueError("Error line: %s in file: %s" % (line, dict_path)) - vocab[key] = value - return vocab - - -def parse_decodes(sentences, predictions, lengths, label_vocab): - """Parse the padding result - - Args: - sentences (list): the tagging sentences. - predictions (list): the prediction tags. - lengths (list): the valid length of each sentence. - label_vocab (dict): the label vocab. - - Returns: - outputs (list): the formatted output. - """ - predictions = [x for batch in predictions for x in batch] - lengths = [x for batch in lengths for x in batch] - id_label = dict(zip(label_vocab.values(), label_vocab.keys())) - - outputs = [] - for idx, end in enumerate(lengths): - sent = sentences[idx][:end] - tags = [id_label[x] for x in predictions[idx][:end]] - sent_out = [] - tags_out = [] - words = "" - for s, t in zip(sent, tags): - if t.endswith("-B") or t == "O": - if len(words): - sent_out.append(words) - tags_out.append(t.split("-")[0]) - words = s - else: - words += s - if len(sent_out) < len(tags_out): - sent_out.append(words) - outputs.append("".join([str((s, t)) for s, t in zip(sent_out, tags_out)])) - return outputs - - -def convert_to_features(example, tokenizer): - tokens = example[0] - tokenized_input = tokenizer(tokens, return_length=True, is_split_into_words="token") - # Token '[CLS]' and '[SEP]' will get label 'O' - return tokenized_input["input_ids"], tokenized_input["token_type_ids"], tokenized_input["seq_len"] - - -def read(data_path): - with open(data_path, "r", encoding="utf-8") as fp: - next(fp) # Skip header - for line in fp.readlines(): - words, labels = line.strip("\n").split("\t") - words = words.split("\002") - labels = labels.split("\002") - yield words, labels - - -class Predictor(object): - def __init__( - self, - model_dir, - device="gpu", - batch_size=200, - use_tensorrt=False, - precision="fp32", - enable_mkldnn=False, - benchmark=False, - save_log_path="", - ): - self.batch_size = batch_size - model_file = os.path.join(model_dir, "inference.pdmodel") - param_file = os.path.join(model_dir, "inference.pdiparams") - if not os.path.exists(model_file): - raise ValueError("not find model file path {}".format(model_file)) - if not os.path.exists(param_file): - raise ValueError("not find params file path {}".format(param_file)) - config = paddle.inference.Config(model_file, param_file) - if device == "gpu": - # set GPU configs accordingly - # such as initialize the gpu memory, enable tensorrt - config.enable_use_gpu(100, 0) - precision_map = { - "fp16": inference.PrecisionType.Half, - "fp32": inference.PrecisionType.Float32, - "int8": inference.PrecisionType.Int8, - } - precision_mode = precision_map[precision] - - if use_tensorrt: - config.enable_tensorrt_engine( - max_batch_size=batch_size, min_subgraph_size=30, precision_mode=precision_mode - ) - elif device == "cpu": - # set CPU configs accordingly, - # such as enable_mkldnn, set_cpu_math_library_num_threads - config.disable_gpu() - if enable_mkldnn: - # cache 10 different shapes for mkldnn to avoid memory leak - config.set_mkldnn_cache_capacity(10) - config.enable_mkldnn() - config.set_cpu_math_library_num_threads(args.cpu_threads) - elif device == "xpu": - # set XPU configs accordingly - config.enable_xpu(100) - - config.switch_use_feed_fetch_ops(False) - self.predictor = paddle.inference.create_predictor(config) - self.input_handles = [self.predictor.get_input_handle(name) for name in self.predictor.get_input_names()] - self.output_handle = self.predictor.get_output_handle(self.predictor.get_output_names()[0]) - - if args.benchmark: - import auto_log - - pid = os.getpid() - self.autolog = auto_log.AutoLogger( - model_name="ernie-3.0-medium-zh", - model_precision=precision, - batch_size=self.batch_size, - data_shape="dynamic", - save_path=save_log_path, - inference_config=config, - pids=pid, - process_name=None, - gpu_ids=0, - time_keys=["preprocess_time", "inference_time", "postprocess_time"], - warmup=0, - logger=logger, - ) - - def predict(self, dataset, batchify_fn, tokenizer, label_vocab): - if args.benchmark: - self.autolog.times.start() - all_preds = [] - all_lens = [] - num_of_examples = len(dataset) - trans_func = partial(convert_to_features, tokenizer=tokenizer) - start_idx = 0 - while start_idx < num_of_examples: - end_idx = start_idx + self.batch_size - end_idx = end_idx if end_idx < num_of_examples else num_of_examples - batch_data = [trans_func(example) for example in dataset[start_idx:end_idx]] - - if args.benchmark: - self.autolog.times.stamp() - input_ids, segment_ids, lens = batchify_fn(batch_data) - self.input_handles[0].copy_from_cpu(input_ids) - self.input_handles[1].copy_from_cpu(segment_ids) - self.predictor.run() - logits = self.output_handle.copy_to_cpu() - - if args.benchmark: - self.autolog.times.stamp() - preds = np.argmax(logits, axis=-1) - # Drop CLS prediction - preds = preds[:, 1:] - all_preds.append(preds) - all_lens.append(lens) - - start_idx += self.batch_size - - if args.benchmark: - self.autolog.times.end(stamp=True) - sentences = [example[0] for example in dataset.data] - results = parse_decodes(sentences, all_preds, all_lens, label_vocab) - return results - - -if __name__ == "__main__": - tokenizer = AutoTokenizer.from_pretrained("ernie-3.0-medium-zh") - test_ds = load_dataset(read, data_path=os.path.join(args.data_dir, "test.txt"), lazy=False) - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id, dtype="int64"), # input_ids - Pad(axis=0, pad_val=tokenizer.pad_token_type_id, dtype="int64"), # token_type_ids - Stack(dtype="int64"), # seq_len - ): fn(samples) - - predictor = Predictor( - args.model_dir, - args.device, - args.batch_size, - args.use_tensorrt, - args.precision, - args.enable_mkldnn, - args.benchmark, - args.save_log_path, - ) - - results = predictor.predict(test_ds, batchify_fn, tokenizer, label_vocab) - print("\n".join(results)) - if args.benchmark: - predictor.autolog.report() diff --git a/examples/information_extraction/waybill_ie/deploy/python/predict_ernie_crf.py b/examples/information_extraction/waybill_ie/deploy/python/predict_ernie_crf.py deleted file mode 100644 index 1158a49aafe2..000000000000 --- a/examples/information_extraction/waybill_ie/deploy/python/predict_ernie_crf.py +++ /dev/null @@ -1,263 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import os -from functools import partial - -import paddle -from paddle import inference - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.datasets import load_dataset -from paddlenlp.transformers import AutoTokenizer -from paddlenlp.utils.log import logger - -# yapf: disable -parser = argparse.ArgumentParser(__doc__) -parser.add_argument("--model_dir", type=str, default='./output', help="The path to parameters in static graph.") -parser.add_argument("--data_dir", type=str, default="./waybill_ie/data", help="The folder where the dataset is located.") -parser.add_argument("--batch_size", type=int, default=200, help="The number of sequences contained in a mini-batch.") -parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"], help="The device to select to train the model, is must be cpu/gpu.") -parser.add_argument('--use_tensorrt', default=False, type=eval, choices=[True, False], help='Enable to use tensorrt to speed up.') -parser.add_argument("--precision", default="fp32", type=str, choices=["fp32", "fp16", "int8"], help='The tensorrt precision.') -parser.add_argument('--cpu_threads', default=10, type=int, help='Number of threads to predict when using cpu.') -parser.add_argument('--enable_mkldnn', default=False, type=eval, choices=[True, False], help='Enable to use mkldnn to speed up when using cpu.') -parser.add_argument("--benchmark", type=eval, default=False, help="To log some information about environment and running.") -parser.add_argument("--save_log_path", type=str, default="./log_output/", help="The file path to save log.") -args = parser.parse_args() -# yapf: enable - - -def load_dict(dict_path): - vocab = {} - i = 0 - with open(dict_path, "r", encoding="utf-8") as fin: - for line in fin: - key = line.strip("\n") - vocab[key] = i - i += 1 - return vocab - - -def load_vocab(dict_path): - """Load vocab from file""" - vocab = {} - reverse = None - with open(dict_path, "r", encoding="utf8") as fin: - for i, line in enumerate(fin): - terms = line.strip("\n").split("\t") - if len(terms) == 2: - if reverse is None: - reverse = True if terms[0].isdigit() else False - if reverse: - value, key = terms - else: - key, value = terms - elif len(terms) == 1: - key, value = terms[0], i - else: - raise ValueError("Error line: %s in file: %s" % (line, dict_path)) - vocab[key] = value - return vocab - - -def parse_decodes(sentences, predictions, lengths, label_vocab): - """Parse the padding result - - Args: - sentences (list): the tagging sentences. - predictions (list): the prediction tags. - lengths (list): the valid length of each sentence. - label_vocab (dict): the label vocab. - - Returns: - outputs (list): the formatted output. - """ - predictions = [x for batch in predictions for x in batch] - lengths = [x for batch in lengths for x in batch] - id_label = dict(zip(label_vocab.values(), label_vocab.keys())) - - outputs = [] - for idx, end in enumerate(lengths): - sent = sentences[idx][:end] - tags = [id_label[x] for x in predictions[idx][:end]] - sent_out = [] - tags_out = [] - words = "" - for s, t in zip(sent, tags): - if t.endswith("-B") or t == "O": - if len(words): - sent_out.append(words) - tags_out.append(t.split("-")[0]) - words = s - else: - words += s - if len(sent_out) < len(tags_out): - sent_out.append(words) - outputs.append("".join([str((s, t)) for s, t in zip(sent_out, tags_out)])) - return outputs - - -def convert_to_features(example, tokenizer): - tokens = example[0] - tokenized_input = tokenizer(tokens, return_length=True, is_split_into_words="token") - # Token '[CLS]' and '[SEP]' will get label 'O' - return tokenized_input["input_ids"], tokenized_input["token_type_ids"], tokenized_input["seq_len"] - - -def read(data_path): - with open(data_path, "r", encoding="utf-8") as fp: - next(fp) # Skip header - for line in fp.readlines(): - words, labels = line.strip("\n").split("\t") - words = words.split("\002") - labels = labels.split("\002") - yield words, labels - - -class Predictor(object): - def __init__( - self, - model_dir, - device="gpu", - batch_size=200, - use_tensorrt=False, - precision="fp32", - enable_mkldnn=False, - benchmark=False, - save_log_path="", - ): - self.batch_size = batch_size - model_file = os.path.join(model_dir, "inference.pdmodel") - param_file = os.path.join(model_dir, "inference.pdiparams") - if not os.path.exists(model_file): - raise ValueError("not find model file path {}".format(model_file)) - if not os.path.exists(param_file): - raise ValueError("not find params file path {}".format(param_file)) - config = paddle.inference.Config(model_file, param_file) - if device == "gpu": - # set GPU configs accordingly - # such as initialize the gpu memory, enable tensorrt - config.enable_use_gpu(100, 0) - precision_map = { - "fp16": inference.PrecisionType.Half, - "fp32": inference.PrecisionType.Float32, - "int8": inference.PrecisionType.Int8, - } - precision_mode = precision_map[precision] - - if use_tensorrt: - config.enable_tensorrt_engine( - max_batch_size=batch_size, min_subgraph_size=30, precision_mode=precision_mode - ) - elif device == "cpu": - # set CPU configs accordingly, - # such as enable_mkldnn, set_cpu_math_library_num_threads - config.disable_gpu() - if enable_mkldnn: - # cache 10 different shapes for mkldnn to avoid memory leak - config.set_mkldnn_cache_capacity(10) - config.enable_mkldnn() - config.set_cpu_math_library_num_threads(args.cpu_threads) - elif device == "xpu": - # set XPU configs accordingly - config.enable_xpu(100) - - config.switch_use_feed_fetch_ops(False) - self.predictor = paddle.inference.create_predictor(config) - self.input_handles = [self.predictor.get_input_handle(name) for name in self.predictor.get_input_names()] - self.output_handle = self.predictor.get_output_handle(self.predictor.get_output_names()[0]) - - if args.benchmark: - import auto_log - - pid = os.getpid() - self.autolog = auto_log.AutoLogger( - model_name="ernie-3.0-medium-zh", - model_precision=precision, - batch_size=self.batch_size, - data_shape="dynamic", - save_path=save_log_path, - inference_config=config, - pids=pid, - process_name=None, - gpu_ids=0, - time_keys=["preprocess_time", "inference_time", "postprocess_time"], - warmup=0, - logger=logger, - ) - - def predict(self, dataset, batchify_fn, tokenizer, label_vocab): - if args.benchmark: - self.autolog.times.start() - all_preds = [] - all_lens = [] - num_of_examples = len(dataset) - trans_func = partial(convert_to_features, tokenizer=tokenizer) - start_idx = 0 - while start_idx < num_of_examples: - end_idx = start_idx + self.batch_size - end_idx = end_idx if end_idx < num_of_examples else num_of_examples - batch_data = [trans_func(example) for example in dataset[start_idx:end_idx]] - - if args.benchmark: - self.autolog.times.stamp() - input_ids, segment_ids, lens = batchify_fn(batch_data) - self.input_handles[0].copy_from_cpu(input_ids) - self.input_handles[1].copy_from_cpu(segment_ids) - self.input_handles[2].copy_from_cpu(lens) - self.predictor.run() - preds = self.output_handle.copy_to_cpu() - - if args.benchmark: - self.autolog.times.stamp() - preds = [pred[1:] for pred in preds] - all_preds.append(preds) - all_lens.append(lens) - - start_idx += self.batch_size - - if args.benchmark: - self.autolog.times.end(stamp=True) - sentences = [example[0] for example in dataset.data] - results = parse_decodes(sentences, all_preds, all_lens, label_vocab) - return results - - -if __name__ == "__main__": - tokenizer = AutoTokenizer.from_pretrained("ernie-3.0-medium-zh") - test_ds = load_dataset(read, data_path=os.path.join(args.data_dir, "test.txt"), lazy=False) - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id, dtype="int64"), # input_ids - Pad(axis=0, pad_val=tokenizer.pad_token_type_id, dtype="int64"), # token_type_ids - Stack(dtype="int64"), # seq_len - ): fn(samples) - - predictor = Predictor( - args.model_dir, - args.device, - args.batch_size, - args.use_tensorrt, - args.precision, - args.enable_mkldnn, - args.benchmark, - args.save_log_path, - ) - - results = predictor.predict(test_ds, batchify_fn, tokenizer, label_vocab) - print("\n".join(results)) - if args.benchmark: - predictor.autolog.report() diff --git a/examples/information_extraction/waybill_ie/download.py b/examples/information_extraction/waybill_ie/download.py deleted file mode 100644 index a76b56b99aee..000000000000 --- a/examples/information_extraction/waybill_ie/download.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the 'License'); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an 'AS IS' BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import sys - -from paddle.utils.download import get_path_from_url - -URL = "https://bj.bcebos.com/paddlenlp/paddlenlp/datasets/waybill.tar.gz" - - -def main(arguments): - parser = argparse.ArgumentParser() - parser.add_argument("-d", "--data_dir", help="directory to save data to", type=str, default="./") - args = parser.parse_args(arguments) - get_path_from_url(URL, args.data_dir) - - -if __name__ == "__main__": - sys.exit(main(sys.argv[1:])) diff --git a/examples/information_extraction/waybill_ie/export_bigru_crf_model.py b/examples/information_extraction/waybill_ie/export_bigru_crf_model.py deleted file mode 100644 index b439dc30836a..000000000000 --- a/examples/information_extraction/waybill_ie/export_bigru_crf_model.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os - -import paddle -from data import load_dict -from model import BiGRUWithCRF - -parser = argparse.ArgumentParser() -parser.add_argument( - "--params_path", - type=str, - required=True, - default="./checkpoint/model_900/model_state.pdparams", - help="The path to model parameters to be loaded.", -) -parser.add_argument( - "--output_path", type=str, default="./output", help="The path of model parameter in static graph to be saved." -) -parser.add_argument( - "--data_dir", type=str, default="./waybill_ie/data", help="The folder where the dataset is located." -) -args = parser.parse_args() - -if __name__ == "__main__": - # The number of labels should be in accordance with the training dataset. - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - word_vocab = load_dict(os.path.join(args.data_dir, "word.dic")) - - # Define the model netword and its loss - model = BiGRUWithCRF(300, 256, len(word_vocab), len(label_vocab)) - if args.params_path and os.path.isfile(args.params_path): - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - model.eval() - - model = paddle.jit.to_static( - model, - input_spec=[ - paddle.static.InputSpec(shape=[None, None], dtype="int64"), # input_ids - paddle.static.InputSpec(shape=[None], dtype="int64"), # lengths - ], - ) - - save_path = os.path.join(args.output_path, "inference") - paddle.jit.save(model, save_path) diff --git a/examples/information_extraction/waybill_ie/export_ernie_crf_model.py b/examples/information_extraction/waybill_ie/export_ernie_crf_model.py deleted file mode 100644 index 9f1d6839e54e..000000000000 --- a/examples/information_extraction/waybill_ie/export_ernie_crf_model.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os - -import paddle -from data import load_dict -from model import ErnieCrfForTokenClassification - -from paddlenlp.transformers import AutoModelForTokenClassification - -# fmt: off -parser = argparse.ArgumentParser() -parser.add_argument("--params_path", type=str, required=True, default="./checkpoint/model_900/model_state.pdparams", help="The path to model parameters to be loaded.") -parser.add_argument("--output_path", type=str, default="./output", help="The path of model parameter in static graph to be saved.") -parser.add_argument("--data_dir", type=str, default="./waybill_ie/data", help="The folder where the dataset is located.") -args = parser.parse_args() -# fmt: on - -if __name__ == "__main__": - # The number of labels should be in accordance with the training dataset. - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - - # Define the model netword and its loss - ernie = AutoModelForTokenClassification.from_pretrained("ernie-3.0-medium-zh", num_labels=len(label_vocab)) - model = ErnieCrfForTokenClassification(ernie) - if args.params_path and os.path.isfile(args.params_path): - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - model.eval() - - model = paddle.jit.to_static( - model, - input_spec=[ - paddle.static.InputSpec(shape=[None, None], dtype="int64"), # input_ids - paddle.static.InputSpec(shape=[None, None], dtype="int64"), # segment_ids - paddle.static.InputSpec(shape=[None], dtype="int64"), # lengths - ], - ) - - save_path = os.path.join(args.output_path, "inference") - paddle.jit.save(model, save_path) diff --git a/examples/information_extraction/waybill_ie/export_ernie_model.py b/examples/information_extraction/waybill_ie/export_ernie_model.py deleted file mode 100644 index 2436a98b4af8..000000000000 --- a/examples/information_extraction/waybill_ie/export_ernie_model.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os - -import paddle -from data import load_dict - -from paddlenlp.transformers import AutoModelForTokenClassification - -# fmt: off -parser = argparse.ArgumentParser() -parser.add_argument("--params_path", type=str, required=True, default="./checkpoint/model_900/model_state.pdparams", help="The path to model parameters to be loaded.") -parser.add_argument("--output_path", type=str, default="./output", help="The path of model parameter in static graph to be saved.") -parser.add_argument("--data_dir", type=str, default="./waybill_ie/data", help="The folder where the dataset is located.") -args = parser.parse_args() -# fmt: on - -if __name__ == "__main__": - # The number of labels should be in accordance with the training dataset. - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - - model = AutoModelForTokenClassification.from_pretrained("ernie-3.0-medium-zh", num_labels=len(label_vocab)) - - if args.params_path and os.path.isfile(args.params_path): - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - model.eval() - - model = paddle.jit.to_static( - model, - input_spec=[ - paddle.static.InputSpec(shape=[None, None], dtype="int64"), # input_ids - paddle.static.InputSpec(shape=[None, None], dtype="int64"), # segment_ids - ], - ) - - save_path = os.path.join(args.output_path, "inference") - paddle.jit.save(model, save_path) diff --git a/examples/information_extraction/waybill_ie/model.py b/examples/information_extraction/waybill_ie/model.py deleted file mode 100644 index d6d1e8dfb36f..000000000000 --- a/examples/information_extraction/waybill_ie/model.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn - -from paddlenlp.embeddings import TokenEmbedding -from paddlenlp.layers.crf import LinearChainCrf, LinearChainCrfLoss -from paddlenlp.utils.tools import compare_version - -if compare_version(paddle.version.full_version, "2.2.0") >= 0: - # paddle.text.ViterbiDecoder is supported by paddle after version 2.2.0 - from paddle.text import ViterbiDecoder -else: - from paddlenlp.layers.crf import ViterbiDecoder - - -class BiGRUWithCRF(nn.Layer): - def __init__(self, emb_size, hidden_size, word_num, label_num, use_w2v_emb=False): - super(BiGRUWithCRF, self).__init__() - if use_w2v_emb: - self.word_emb = TokenEmbedding(extended_vocab_path="./data/word.dic", unknown_token="OOV") - else: - self.word_emb = nn.Embedding(word_num, emb_size) - self.gru = nn.GRU(emb_size, hidden_size, num_layers=2, direction="bidirect") - # We need `label_num + 2` for appending BOS and EOS tag - self.fc = nn.Linear(hidden_size * 2, label_num + 2) - self.crf = LinearChainCrf(label_num) - self.crf_loss = LinearChainCrfLoss(self.crf) - self.viterbi_decoder = ViterbiDecoder(self.crf.transitions) - - def forward(self, inputs, lengths, labels=None): - embs = self.word_emb(inputs) - output, _ = self.gru(embs) - emission = self.fc(output) - if labels is not None: - loss = self.crf_loss(emission, lengths, labels) - return loss - else: - _, prediction = self.viterbi_decoder(emission, lengths) - return prediction - - -class ErnieCrfForTokenClassification(nn.Layer): - def __init__(self, ernie, crf_lr=100): - super().__init__() - self.num_labels = ernie.num_labels - self.ernie = ernie # allow ernie to be config - self.crf = LinearChainCrf(self.num_labels, crf_lr=crf_lr, with_start_stop_tag=False) - self.crf_loss = LinearChainCrfLoss(self.crf) - self.viterbi_decoder = ViterbiDecoder(self.crf.transitions, False) - - def forward( - self, input_ids, token_type_ids=None, lengths=None, position_ids=None, attention_mask=None, labels=None - ): - logits = self.ernie( - input_ids, token_type_ids=token_type_ids, attention_mask=attention_mask, position_ids=position_ids - ) - - if labels is not None: - loss = self.crf_loss(logits, lengths, labels) - return loss - else: - _, prediction = self.viterbi_decoder(logits, lengths) - return prediction diff --git a/examples/information_extraction/waybill_ie/run_bigru_crf.py b/examples/information_extraction/waybill_ie/run_bigru_crf.py deleted file mode 100644 index f458d36de5b3..000000000000 --- a/examples/information_extraction/waybill_ie/run_bigru_crf.py +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os -from functools import partial - -import paddle -from data import load_dataset, load_dict, parse_decodes -from model import BiGRUWithCRF - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.metrics import ChunkEvaluator - -parser = argparse.ArgumentParser() - -# yapf: disable -parser.add_argument("--save_dir", default='./bigru_crf_ckpt', type=str, help="The output directory where the model checkpoints will be written.") -parser.add_argument("--epochs", default=10, type=int, help="Total number of training epochs to perform.") -parser.add_argument("--batch_size", default=200, type=int, help="Batch size per GPU/CPU for training.") -parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"], help="The device to select to train the model, is must be cpu/gpu.") -parser.add_argument("--data_dir", default='./waybill_ie/data', type=str, help="The folder where the dataset is located.") - -args = parser.parse_args() -# yapf: enable - - -def convert_tokens_to_ids(tokens, vocab, oov_token=None): - token_ids = [] - oov_id = vocab.get(oov_token) if oov_token else None - for token in tokens: - token_id = vocab.get(token, oov_id) - token_ids.append(token_id) - return token_ids - - -def convert_to_features(example, word_vocab, label_vocab): - tokens, labels = example - token_ids = convert_tokens_to_ids(tokens, word_vocab, "OOV") - label_ids = convert_tokens_to_ids(labels, label_vocab, "O") - return token_ids, len(token_ids), label_ids - - -@paddle.no_grad() -def evaluate(model, metric, data_loader): - model.eval() - metric.reset() - for token_ids, lengths, label_ids in data_loader: - preds = model(token_ids, lengths) - n_infer, n_label, n_correct = metric.compute(lengths, preds, label_ids) - metric.update(n_infer.numpy(), n_label.numpy(), n_correct.numpy()) - precision, recall, f1_score = metric.accumulate() - print("[EVAL] Precision: %f - Recall: %f - F1: %f" % (precision, recall, f1_score)) - model.train() - - -@paddle.no_grad() -def predict(model, data_loader, ds, label_vocab): - all_preds = [] - all_lens = [] - for token_ids, lengths, label_ids in data_loader: - preds = model(token_ids, lengths) - all_preds.append(preds.numpy()) - all_lens.append(lengths) - sentences = [example[0] for example in ds.data] - results = parse_decodes(sentences, all_preds, all_lens, label_vocab) - return results - - -if __name__ == "__main__": - paddle.set_device(args.device) - - # Create dataset, tokenizer and dataloader. - train_ds, dev_ds, test_ds = load_dataset( - datafiles=( - os.path.join(args.data_dir, "train.txt"), - os.path.join(args.data_dir, "dev.txt"), - os.path.join(args.data_dir, "test.txt"), - ) - ) - - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - word_vocab = load_dict(os.path.join(args.data_dir, "word.dic")) - - trans_func = partial(convert_to_features, word_vocab=word_vocab, label_vocab=label_vocab) - train_ds.map(trans_func) - dev_ds.map(trans_func) - test_ds.map(trans_func) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=word_vocab.get("OOV", 0), dtype="int32"), # token_ids - Stack(dtype="int64"), # seq_len - Pad(axis=0, pad_val=label_vocab.get("O", 0), dtype="int64"), # label_ids - ): fn(samples) - - train_loader = paddle.io.DataLoader( - dataset=train_ds, - batch_size=args.batch_size, - shuffle=True, - drop_last=True, - return_list=True, - collate_fn=batchify_fn, - ) - - dev_loader = paddle.io.DataLoader( - dataset=dev_ds, batch_size=args.batch_size, drop_last=True, return_list=True, collate_fn=batchify_fn - ) - - test_loader = paddle.io.DataLoader( - dataset=test_ds, batch_size=args.batch_size, drop_last=True, return_list=True, collate_fn=batchify_fn - ) - - # Define the model netword and its loss - model = BiGRUWithCRF(300, 256, len(word_vocab), len(label_vocab)) - - optimizer = paddle.optimizer.Adam(learning_rate=0.001, parameters=model.parameters()) - metric = ChunkEvaluator(label_list=label_vocab.keys(), suffix=True) - - step = 0 - for epoch in range(args.epochs): - for token_ids, lengths, label_ids in train_loader: - loss = model(token_ids, lengths, label_ids) - loss = loss.mean() - loss.backward() - optimizer.step() - optimizer.clear_grad() - step += 1 - print("[TRAIN] Epoch:%d - Step:%d - Loss: %f" % (epoch, step, loss)) - evaluate(model, metric, dev_loader) - paddle.save(model.state_dict(), os.path.join(args.save_dir, "model_%d" % step, "model_state.pdparams")) - - preds = predict(model, test_loader, test_ds, label_vocab) - file_path = "bigru_crf_results.txt" - with open(file_path, "w", encoding="utf8") as fout: - fout.write("\n".join(preds)) - # Print some examples - print("The results have been saved into: %s, some examples are shown below: " % file_path) - print("\n".join(preds[:10])) diff --git a/examples/information_extraction/waybill_ie/run_ernie.py b/examples/information_extraction/waybill_ie/run_ernie.py deleted file mode 100644 index d21baad79a77..000000000000 --- a/examples/information_extraction/waybill_ie/run_ernie.py +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os -from functools import partial - -import paddle -from data import load_dataset, load_dict, parse_decodes - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.metrics import ChunkEvaluator -from paddlenlp.transformers import AutoModelForTokenClassification, AutoTokenizer - -# fmt: off -parser = argparse.ArgumentParser() -parser.add_argument("--save_dir", default="./ernie_ckpt", type=str, help="The output directory where the model checkpoints will be written.") -parser.add_argument("--epochs", default=10, type=int, help="Total number of training epochs to perform.") -parser.add_argument("--batch_size", default=200, type=int, help="Batch size per GPU/CPU for training.") -parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"], help="The device to select to train the model, is must be cpu/gpu.") -parser.add_argument("--data_dir", default="./waybill_ie/data", type=str, help="The folder where the dataset is located.") -args = parser.parse_args() -# fmt: on - - -def convert_to_features(example, tokenizer, label_vocab): - tokens, labels = example - tokenized_input = tokenizer(tokens, return_length=True, is_split_into_words="token") - # Token '[CLS]' and '[SEP]' will get label 'O' - labels = ["O"] + labels + ["O"] - tokenized_input["labels"] = [label_vocab[x] for x in labels] - return ( - tokenized_input["input_ids"], - tokenized_input["token_type_ids"], - tokenized_input["seq_len"], - tokenized_input["labels"], - ) - - -@paddle.no_grad() -def evaluate(model, metric, data_loader): - model.eval() - metric.reset() - for input_ids, seg_ids, lens, labels in data_loader: - logits = model(input_ids, seg_ids) - preds = paddle.argmax(logits, axis=-1) - n_infer, n_label, n_correct = metric.compute(lens, preds, labels) - metric.update(n_infer.numpy(), n_label.numpy(), n_correct.numpy()) - precision, recall, f1_score = metric.accumulate() - print("[EVAL] Precision: %f - Recall: %f - F1: %f" % (precision, recall, f1_score)) - model.train() - - -@paddle.no_grad() -def predict(model, data_loader, ds, label_vocab): - all_preds = [] - all_lens = [] - for input_ids, seg_ids, lens, labels in data_loader: - logits = model(input_ids, seg_ids) - preds = paddle.argmax(logits, axis=-1) - # Drop CLS prediction - preds = [pred[1:] for pred in preds.numpy()] - all_preds.append(preds) - all_lens.append(lens) - sentences = [example[0] for example in ds.data] - results = parse_decodes(sentences, all_preds, all_lens, label_vocab) - return results - - -def create_dataloader(dataset, mode="train", batch_size=1, batchify_fn=None, trans_fn=None): - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - batch_sampler = paddle.io.DistributedBatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - else: - batch_sampler = paddle.io.BatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - - return paddle.io.DataLoader(dataset=dataset, batch_sampler=batch_sampler, collate_fn=batchify_fn, return_list=True) - - -if __name__ == "__main__": - paddle.set_device(args.device) - rank = paddle.distributed.get_rank() - trainer_num = paddle.distributed.get_world_size() - if trainer_num > 1: - paddle.distributed.init_parallel_env() - # Create dataset, tokenizer and dataloader. - train_ds, dev_ds, test_ds = load_dataset( - datafiles=( - os.path.join(args.data_dir, "train.txt"), - os.path.join(args.data_dir, "dev.txt"), - os.path.join(args.data_dir, "test.txt"), - ) - ) - - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - tokenizer = AutoTokenizer.from_pretrained("ernie-3.0-medium-zh") - - trans_func = partial(convert_to_features, tokenizer=tokenizer, label_vocab=label_vocab) - - train_ds.map(trans_func) - dev_ds.map(trans_func) - test_ds.map(trans_func) - - ignore_label = -1 - - def batchify_fn(samples): - fn = Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id, dtype="int32"), # input_ids - Pad(axis=0, pad_val=tokenizer.pad_token_type_id, dtype="int32"), # token_type_ids - Stack(dtype="int64"), # seq_len - Pad(axis=0, pad_val=label_vocab.get("O", 0), dtype="int64"), # labels - ) - return fn(samples) - - train_loader = create_dataloader( - dataset=train_ds, mode="train", batch_size=args.batch_size, batchify_fn=batchify_fn - ) - - dev_loader = create_dataloader(dataset=dev_ds, mode="dev", batch_size=args.batch_size, batchify_fn=batchify_fn) - - test_loader = create_dataloader(dataset=test_ds, mode="test", batch_size=args.batch_size, batchify_fn=batchify_fn) - - # Define the model netword and its loss - model = AutoModelForTokenClassification.from_pretrained("ernie-3.0-medium-zh", num_labels=len(label_vocab)) - if trainer_num > 1: - model = paddle.DataParallel(model) - metric = ChunkEvaluator(label_list=label_vocab.keys(), suffix=True) - loss_fn = paddle.nn.loss.CrossEntropyLoss(ignore_index=ignore_label) - optimizer = paddle.optimizer.AdamW(learning_rate=2e-5, parameters=model.parameters()) - - step = 0 - for epoch in range(args.epochs): - for input_ids, token_type_ids, length, labels in train_loader: - logits = model(input_ids, token_type_ids) - loss = paddle.mean(loss_fn(logits, labels)) - loss.backward() - optimizer.step() - optimizer.clear_grad() - step += 1 - print("[TRAIN] Epoch:%d - Step:%d - Loss: %f" % (epoch, step, loss)) - evaluate(model, metric, dev_loader) - model_to_save = model._layers if isinstance(model, paddle.DataParallel) else model - model_to_save.save_pretrained(os.path.join(args.save_dir, "model_%d" % step)) - - if rank == 0: - preds = predict(model, test_loader, test_ds, label_vocab) - file_path = "ernie_results.txt" - with open(file_path, "w", encoding="utf8") as fout: - fout.write("\n".join(preds)) - # Print some examples - print("The results have been saved in the file: %s, some examples are shown below: " % file_path) - print("\n".join(preds[:10])) diff --git a/examples/information_extraction/waybill_ie/run_ernie_crf.py b/examples/information_extraction/waybill_ie/run_ernie_crf.py deleted file mode 100644 index b9d03b77e643..000000000000 --- a/examples/information_extraction/waybill_ie/run_ernie_crf.py +++ /dev/null @@ -1,147 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os -from functools import partial - -import paddle -from data import load_dataset, load_dict, parse_decodes -from model import ErnieCrfForTokenClassification - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.metrics import ChunkEvaluator -from paddlenlp.transformers import AutoModelForTokenClassification, AutoTokenizer - -# fmt: off -parser = argparse.ArgumentParser() -parser.add_argument("--save_dir", default="./ernie_crf_ckpt", type=str, help="The output directory where the model checkpoints will be written.") -parser.add_argument("--epochs", default=10, type=int, help="Total number of training epochs to perform.") -parser.add_argument("--batch_size", default=200, type=int, help="Batch size per GPU/CPU for training.") -parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"], help="The device to select to train the model, is must be cpu/gpu.") -parser.add_argument("--data_dir", default="./waybill_ie/data", type=str, help="The folder where the dataset is located.") -args = parser.parse_args() -# fmt: on - - -def convert_to_features(example, tokenizer, label_vocab): - tokens, labels = example - tokenized_input = tokenizer(tokens, return_length=True, is_split_into_words="token") - # Token '[CLS]' and '[SEP]' will get label 'O' - labels = ["O"] + labels + ["O"] - tokenized_input["labels"] = [label_vocab[x] for x in labels] - return ( - tokenized_input["input_ids"], - tokenized_input["token_type_ids"], - tokenized_input["seq_len"], - tokenized_input["labels"], - ) - - -@paddle.no_grad() -def evaluate(model, metric, data_loader): - model.eval() - metric.reset() - for input_ids, seg_ids, lens, labels in data_loader: - preds = model(input_ids, seg_ids, lengths=lens) - n_infer, n_label, n_correct = metric.compute(lens, preds, labels) - metric.update(n_infer.numpy(), n_label.numpy(), n_correct.numpy()) - precision, recall, f1_score = metric.accumulate() - print("[EVAL] Precision: %f - Recall: %f - F1: %f" % (precision, recall, f1_score)) - model.train() - - -@paddle.no_grad() -def predict(model, data_loader, ds, label_vocab): - all_preds = [] - all_lens = [] - for input_ids, seg_ids, lens, labels in data_loader: - preds = model(input_ids, seg_ids, lengths=lens) - # Drop CLS prediction - preds = [pred[1:] for pred in preds.numpy()] - all_preds.append(preds) - all_lens.append(lens) - sentences = [example[0] for example in ds.data] - results = parse_decodes(sentences, all_preds, all_lens, label_vocab) - return results - - -if __name__ == "__main__": - paddle.set_device(args.device) - - # Create dataset, tokenizer and dataloader. - train_ds, dev_ds, test_ds = load_dataset( - datafiles=( - os.path.join(args.data_dir, "train.txt"), - os.path.join(args.data_dir, "dev.txt"), - os.path.join(args.data_dir, "test.txt"), - ) - ) - - label_vocab = load_dict(os.path.join(args.data_dir, "tag.dic")) - tokenizer = AutoTokenizer.from_pretrained("ernie-3.0-medium-zh") - - trans_func = partial(convert_to_features, tokenizer=tokenizer, label_vocab=label_vocab) - - train_ds.map(trans_func) - dev_ds.map(trans_func) - test_ds.map(trans_func) - - def batchify_fn(samples): - fn = Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id, dtype="int32"), # input_ids - Pad(axis=0, pad_val=tokenizer.pad_token_type_id, dtype="int32"), # token_type_ids - Stack(dtype="int64"), # seq_len - Pad(axis=0, pad_val=label_vocab.get("O", 0), dtype="int64"), # labels - ) - return fn(samples) - - train_loader = paddle.io.DataLoader( - dataset=train_ds, batch_size=args.batch_size, return_list=True, collate_fn=batchify_fn - ) - dev_loader = paddle.io.DataLoader( - dataset=dev_ds, batch_size=args.batch_size, return_list=True, collate_fn=batchify_fn - ) - test_loader = paddle.io.DataLoader( - dataset=test_ds, batch_size=args.batch_size, return_list=True, collate_fn=batchify_fn - ) - - # Define the model netword and its loss - ernie = AutoModelForTokenClassification.from_pretrained("ernie-3.0-medium-zh", num_labels=len(label_vocab)) - model = ErnieCrfForTokenClassification(ernie) - - metric = ChunkEvaluator(label_list=label_vocab.keys(), suffix=True) - optimizer = paddle.optimizer.AdamW(learning_rate=2e-5, parameters=model.parameters()) - - step = 0 - for epoch in range(args.epochs): - for input_ids, token_type_ids, lengths, labels in train_loader: - loss = model(input_ids, token_type_ids, lengths=lengths, labels=labels) - avg_loss = paddle.mean(loss) - avg_loss.backward() - optimizer.step() - optimizer.clear_grad() - step += 1 - print("[TRAIN] Epoch:%d - Step:%d - Loss: %f" % (epoch, step, avg_loss)) - evaluate(model, metric, dev_loader) - - paddle.save(model.state_dict(), os.path.join(args.save_dir, "model_%d" % step, "model_state.pdparams")) - - preds = predict(model, test_loader, test_ds, label_vocab) - file_path = "ernie_crf_results.txt" - with open(file_path, "w", encoding="utf8") as fout: - fout.write("\n".join(preds)) - # Print some examples - print("The results have been saved in the file: %s, some examples are shown below: " % file_path) - print("\n".join(preds[:10])) diff --git a/examples/machine_translation/seq2seq/README.md b/examples/machine_translation/seq2seq/README.md deleted file mode 100644 index 2f271dfb6b4f..000000000000 --- a/examples/machine_translation/seq2seq/README.md +++ /dev/null @@ -1,104 +0,0 @@ -# Machine Translation using Seq2Seq with Attention - -以下是本范例模型的简要目录结构及说明: - -``` -. -├── deploy # 预测部署目录 -│ └── python -│ └── infer.py # 用预测模型进行推理的程序 -├── README.md # 文档,本文件 -├── args.py # 训练、预测、导出模型以及模型参数配置程序 -├── data.py # 数据读入程序 -├── train.py # 训练主程序 -├── predict.py # 预测主程序 -├── export_model.py # 导出预测模型的程序 -└── seq2seq_attn.py # 带注意力机制的翻译模型程序 -``` - -## 简介 - -Sequence to Sequence (Seq2Seq),使用编码器-解码器(Encoder-Decoder)结构,用编码器将源序列编码成vector,再用解码器将该vector解码为目标序列。Seq2Seq 广泛应用于机器翻译,自动对话机器人,文档摘要自动生成,图片描述自动生成等任务中。 - -本目录包含Seq2Seq的一个经典样例:机器翻译,带Attention机制的翻译模型。Seq2Seq翻译模型,模拟了人类在进行翻译类任务时的行为:先解析源语言,理解其含义,再根据该含义来写出目标语言的语句。更多关于机器翻译的具体原理和数学表达式,我们推荐参考飞桨官网[机器翻译案例](https://www.paddlepaddle.org.cn/documentation/docs/zh/user_guides/nlp_case/machine_translation/README.cn.html)。 - -## 模型概览 - -本模型中,在编码器方面,我们采用了基于LSTM的多层的RNN encoder;在解码器方面,我们使用了带注意力(Attention)机制的RNN decoder,在预测时我们使用柱搜索(beam search)算法来生成翻译的目标语句。 - -## 数据介绍 - -本教程使用[IWSLT'15 English-Vietnamese data ](https://nlp.stanford.edu/projects/nmt/)数据集中的英语到越南语的数据作为训练语料,tst2012的数据作为开发集,tst2013的数据作为测试集。 - -### 数据获取 -如果用户在初始化数据集时没有提供路径,数据集会自动下载到`paddlenlp.utils.env.DATA_HOME`的`IWSLT15/`路径下,例如在linux系统下,默认存储路径是`~/.paddlenlp/datasets/IWSLT15`。 - -## 模型训练 - -执行以下命令即可训练带有注意力机制的Seq2Seq机器翻译模型: - -```sh -python train.py \ - --num_layers 2 \ - --hidden_size 512 \ - --batch_size 128 \ - --dropout 0.2 \ - --init_scale 0.1 \ - --max_grad_norm 5.0 \ - --device gpu \ - --model_path ./attention_models -``` - -各参数的具体说明请参阅 `args.py` 。训练程序会在每个epoch训练结束之后,save一次模型。 - -**NOTE:** 如需恢复模型训练,则`init_from_ckpt`只需指定到文件名即可,不需要添加文件尾缀。如`--init_from_ckpt=attention_models/5`即可,程序会自动加载模型参数`attention_models/5.pdparams`,也会自动加载优化器状态`attention_models/5.pdopt`。 - -## 模型预测 - -训练完成之后,可以使用保存的模型(由 `--init_from_ckpt` 指定)对测试集的数据集进行beam search解码。生成的翻译结果位于`--infer_output_file`指定的路径,预测命令如下: - -```sh -python predict.py \ - --num_layers 2 \ - --hidden_size 512 \ - --batch_size 128 \ - --dropout 0.2 \ - --init_scale 0.1 \ - --max_grad_norm 5.0 \ - --init_from_ckpt attention_models/9 \ - --infer_output_file infer_output.txt \ - --beam_size 10 \ - --device gpu -``` - -各参数的具体说明请参阅 `args.py` ,注意预测时所用模型超参数需和训练时一致。 - -## 预测效果评价 -取第10个epoch的结果,用取beam_size为10的beam search解码,`predict.py`脚本在生成翻译结果之后,会调用`paddlenlp.metrics.BLEU`计算翻译结果的BLEU指标,最终计算出的BLEU分数为0.24329954822714048 - -## 保存预测模型 -这里指定的参数`export_path` 表示导出预测模型文件的前缀。保存时会添加后缀(`pdiparams`,`pdiparams.info`,`pdmodel`)。 -```shell -python export_model.py \ - --num_layers 2 \ - --hidden_size 512 \ - --batch_size 128 \ - --dropout 0.2 \ - --init_scale 0.1 \ - --max_grad_norm 5.0 \ - --init_from_ckpt attention_models/9.pdparams \ - --beam_size 10 \ - --export_path ./infer_model/model -``` - -## 基于预测引擎推理 -然后按照如下的方式对IWSLT15数据集中的测试集(有标注的)进行预测(基于Paddle的[Python预测API](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/05_inference_deployment/inference/python_infer_cn.html)): - -```shell -cd deploy/python -python infer.py \ - --export_path ../../infer_model/model \ - --device gpu \ - --batch_size 128 \ - --infer_output_file infer_output.txt -``` diff --git a/examples/machine_translation/seq2seq/args.py b/examples/machine_translation/seq2seq/args.py deleted file mode 100644 index 317917ab1189..000000000000 --- a/examples/machine_translation/seq2seq/args.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - - -def parse_args(): - parser = argparse.ArgumentParser(description=__doc__) - - parser.add_argument("--learning_rate", type=float, default=0.001, help="learning rate for optimizer") - - parser.add_argument("--num_layers", type=int, default=1, help="layers number of encoder and decoder") - - parser.add_argument("--hidden_size", type=int, default=100, help="hidden size of encoder and decoder") - - parser.add_argument("--batch_size", type=int, help="batch size of each step") - - parser.add_argument("--max_epoch", type=int, default=12, help="max epoch for the training") - - parser.add_argument("--max_len", type=int, default=50, help="max length for source and target sentence") - - parser.add_argument("--dropout", type=float, default=0.2, help="drop probability") - - parser.add_argument("--init_scale", type=float, default=0.0, help="init scale for parameter") - - parser.add_argument("--max_grad_norm", type=float, default=5.0, help="max grad norm for global norm clip") - - parser.add_argument("--log_freq", type=int, default=100, help="The frequency to print training logs") - - parser.add_argument("--model_path", type=str, default="model", help="model path for model to save") - - parser.add_argument("--infer_output_file", type=str, default="infer_output", help="file name for inference output") - - parser.add_argument("--beam_size", type=int, default=10, help="file name for inference") - - parser.add_argument( - "--device", default="gpu", choices=["gpu", "cpu", "xpu"], help="Device selected for inference." - ) - - parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.") - - parser.add_argument( - "--export_path", - type=str, - default=None, - help="The output file prefix used to save the exported inference model.", - ) - - args = parser.parse_args() - return args diff --git a/examples/machine_translation/seq2seq/data.py b/examples/machine_translation/seq2seq/data.py deleted file mode 100644 index 3e4f44901a42..000000000000 --- a/examples/machine_translation/seq2seq/data.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from functools import partial - -import numpy as np -import paddle - -from paddlenlp.data import Pad, SamplerHelper, Vocab -from paddlenlp.datasets import load_dataset - - -def create_train_loader(args): - batch_size = args.batch_size - max_len = args.max_len - - train_ds, dev_ds = load_dataset("iwslt15", splits=("train", "dev")) - src_vocab = Vocab.load_vocabulary(**train_ds.vocab_info["en"]) - tgt_vocab = Vocab.load_vocabulary(**train_ds.vocab_info["vi"]) - bos_id = src_vocab[src_vocab.bos_token] - eos_id = src_vocab[src_vocab.eos_token] - pad_id = eos_id - - def convert_example(example): - source = example["en"].split()[:max_len] - target = example["vi"].split()[:max_len] - - source = src_vocab.to_indices(source) - target = tgt_vocab.to_indices(target) - - return source, target - - key = lambda x, data_source: len(data_source[x][0]) - - # Truncate and convert example to ids - train_ds = train_ds.map(convert_example, lazy=False) - dev_ds = dev_ds.map(convert_example, lazy=False) - - train_batch_sampler = ( - SamplerHelper(train_ds).shuffle().sort(key=key, buffer_size=batch_size * 20).batch(batch_size=batch_size) - ) - - dev_batch_sampler = SamplerHelper(dev_ds).sort(key=key, buffer_size=batch_size * 20).batch(batch_size=batch_size) - - train_loader = paddle.io.DataLoader( - train_ds, - batch_sampler=train_batch_sampler, - collate_fn=partial(prepare_train_input, bos_id=bos_id, eos_id=eos_id, pad_id=pad_id), - ) - - dev_loader = paddle.io.DataLoader( - dev_ds, - batch_sampler=dev_batch_sampler, - collate_fn=partial(prepare_train_input, bos_id=bos_id, eos_id=eos_id, pad_id=pad_id), - ) - - return train_loader, dev_loader, len(src_vocab), len(tgt_vocab), pad_id - - -def create_infer_loader(args): - batch_size = args.batch_size - test_ds = load_dataset("iwslt15", splits="test") - src_vocab = Vocab.load_vocabulary(**test_ds.vocab_info["en"]) - tgt_vocab = Vocab.load_vocabulary(**test_ds.vocab_info["vi"]) - bos_id = src_vocab[src_vocab.bos_token] - eos_id = src_vocab[src_vocab.eos_token] - pad_id = eos_id - - def convert_example(example): - source = example["en"].split() - target = example["vi"].split() - - source = src_vocab.to_indices(source) - target = tgt_vocab.to_indices(target) - - return source, target - - test_ds.map(convert_example) - test_batch_sampler = SamplerHelper(test_ds).batch(batch_size=batch_size) - - test_loader = paddle.io.DataLoader( - test_ds, - batch_sampler=test_batch_sampler, - collate_fn=partial(prepare_infer_input, bos_id=bos_id, eos_id=eos_id, pad_id=pad_id), - ) - return test_loader, len(src_vocab), len(tgt_vocab), bos_id, eos_id - - -def prepare_infer_input(insts, bos_id, eos_id, pad_id): - insts = [([bos_id] + inst[0] + [eos_id], [bos_id] + inst[1] + [eos_id]) for inst in insts] - src, src_length = Pad(pad_val=pad_id, ret_length=True)([inst[0] for inst in insts]) - return src, src_length - - -def prepare_train_input(insts, bos_id, eos_id, pad_id): - # Add eos token id and bos token id. - insts = [([bos_id] + inst[0] + [eos_id], [bos_id] + inst[1] + [eos_id]) for inst in insts] - # Pad sequence using eos id. - src, src_length = Pad(pad_val=pad_id, ret_length=True)([inst[0] for inst in insts]) - tgt, tgt_length = Pad(pad_val=pad_id, ret_length=True, dtype="int64")([inst[1] for inst in insts]) - tgt_mask = (tgt[:, :-1] != pad_id).astype("float32") - return src, src_length, tgt[:, :-1], tgt[:, 1:, np.newaxis], tgt_mask diff --git a/examples/machine_translation/seq2seq/deploy/python/infer.py b/examples/machine_translation/seq2seq/deploy/python/infer.py deleted file mode 100644 index de6f80e07785..000000000000 --- a/examples/machine_translation/seq2seq/deploy/python/infer.py +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import io -import sys - -sys.path.append("../../") - -import numpy as np # noqa: E402 -import paddle # noqa: E402 -from args import parse_args # noqa: E402 -from data import create_infer_loader # noqa: E402 -from predict import post_process_seq # noqa: E402 - -from paddlenlp.data import Vocab # noqa: E402 -from paddlenlp.datasets import load_dataset # noqa: E402 -from paddlenlp.metrics import BLEU # noqa: E402 - - -class Predictor(object): - def __init__(self, predictor, input_handles, output_handles): - self.predictor = predictor - self.input_handles = input_handles - self.output_handles = output_handles - - @classmethod - def create_predictor(cls, args): - config = paddle.inference.Config(args.export_path + ".pdmodel", args.export_path + ".pdiparams") - if args.device == "gpu": - # set GPU configs accordingly - config.enable_use_gpu(100, 0) - elif args.device == "cpu": - # set CPU configs accordingly, - # such as enable_mkldnn, set_cpu_math_library_num_threads - config.disable_gpu() - elif args.device == "xpu": - # set XPU configs accordingly - config.enable_xpu(100) - config.switch_use_feed_fetch_ops(False) - predictor = paddle.inference.create_predictor(config) - input_handles = [predictor.get_input_handle(name) for name in predictor.get_input_names()] - output_handles = [predictor.get_output_handle(name) for name in predictor.get_output_names()] - return cls(predictor, input_handles, output_handles) - - def predict_batch(self, data): - for input_field, input_handle in zip(data, self.input_handles): - input_handle.copy_from_cpu(input_field.numpy() if isinstance(input_field, paddle.Tensor) else input_field) - self.predictor.run() - output = [output_handle.copy_to_cpu() for output_handle in self.output_handles] - return output - - def predict(self, dataloader, infer_output_file, trg_idx2word, bos_id, eos_id): - cand_list = [] - with io.open(infer_output_file, "w", encoding="utf-8") as f: - for data in dataloader(): - finished_seq = self.predict_batch(data)[0] - finished_seq = finished_seq[:, :, np.newaxis] if len(finished_seq.shape) == 2 else finished_seq - finished_seq = np.transpose(finished_seq, [0, 2, 1]) - for ins in finished_seq: - for beam_idx, beam in enumerate(ins): - id_list = post_process_seq(beam, bos_id, eos_id) - word_list = [trg_idx2word[id] for id in id_list] - sequence = " ".join(word_list) + "\n" - f.write(sequence) - cand_list.append(word_list) - break - - test_ds = load_dataset("iwslt15", splits="test") - bleu = BLEU() - for i, data in enumerate(test_ds): - ref = data["vi"].split() - bleu.add_inst(cand_list[i], [ref]) - print("BLEU score is %s." % bleu.score()) - - -def main(): - args = parse_args() - - predictor = Predictor.create_predictor(args) - test_loader, src_vocab_size, tgt_vocab_size, bos_id, eos_id = create_infer_loader(args) - tgt_vocab = Vocab.load_vocabulary(**test_loader.dataset.vocab_info["vi"]) - trg_idx2word = tgt_vocab.idx_to_token - - predictor.predict(test_loader, args.infer_output_file, trg_idx2word, bos_id, eos_id) - - -if __name__ == "__main__": - main() diff --git a/examples/machine_translation/seq2seq/export_model.py b/examples/machine_translation/seq2seq/export_model.py deleted file mode 100644 index 79b05c1dccb5..000000000000 --- a/examples/machine_translation/seq2seq/export_model.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -from args import parse_args -from data import create_infer_loader -from seq2seq_attn import Seq2SeqAttnInferModel - - -def main(): - args = parse_args() - _, src_vocab_size, tgt_vocab_size, bos_id, eos_id = create_infer_loader(args) - - # Build model and load trained parameters - model = Seq2SeqAttnInferModel( - src_vocab_size, - tgt_vocab_size, - args.hidden_size, - args.hidden_size, - args.num_layers, - args.dropout, - bos_id=bos_id, - eos_id=eos_id, - beam_size=args.beam_size, - max_out_len=256, - ) - - # Load the trained model - model.set_state_dict(paddle.load(args.init_from_ckpt)) - - # Wwitch to eval model - model.eval() - # Convert to static graph with specific input description - model = paddle.jit.to_static( - model, - input_spec=[ - paddle.static.InputSpec(shape=[None, None], dtype="int64"), # src - paddle.static.InputSpec(shape=[None], dtype="int64"), # src length - ], - ) - # Save converted static graph model - paddle.jit.save(model, args.export_path) - - -if __name__ == "__main__": - main() diff --git a/examples/machine_translation/seq2seq/predict.py b/examples/machine_translation/seq2seq/predict.py deleted file mode 100644 index 0da32d69d057..000000000000 --- a/examples/machine_translation/seq2seq/predict.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import io - -import numpy as np -import paddle -from args import parse_args -from data import create_infer_loader -from seq2seq_attn import Seq2SeqAttnInferModel - -from paddlenlp.data import Vocab -from paddlenlp.metrics import BLEU - - -def post_process_seq(seq, bos_idx, eos_idx, output_bos=False, output_eos=False): - """ - Post-process the decoded sequence. - """ - eos_pos = len(seq) - 1 - for i, idx in enumerate(seq): - if idx == eos_idx: - eos_pos = i - break - seq = [idx for idx in seq[: eos_pos + 1] if (output_bos or idx != bos_idx) and (output_eos or idx != eos_idx)] - return seq - - -def do_predict(args): - paddle.set_device(args.device) - - test_loader, src_vocab_size, tgt_vocab_size, bos_id, eos_id = create_infer_loader(args) - tgt_vocab = Vocab.load_vocabulary(**test_loader.dataset.vocab_info["vi"]) - - model = paddle.Model( - Seq2SeqAttnInferModel( - src_vocab_size, - tgt_vocab_size, - args.hidden_size, - args.hidden_size, - args.num_layers, - args.dropout, - bos_id=bos_id, - eos_id=eos_id, - beam_size=args.beam_size, - max_out_len=256, - ) - ) - - model.prepare() - - # Load the trained model - assert args.init_from_ckpt, "Please set reload_model to load the infer model." - model.load(args.init_from_ckpt) - - cand_list = [] - with io.open(args.infer_output_file, "w", encoding="utf-8") as f: - for data in test_loader(): - with paddle.no_grad(): - finished_seq = model.predict_batch(inputs=data)[0] - finished_seq = finished_seq[:, :, np.newaxis] if len(finished_seq.shape) == 2 else finished_seq - finished_seq = np.transpose(finished_seq, [0, 2, 1]) - for ins in finished_seq: - for beam_idx, beam in enumerate(ins): - id_list = post_process_seq(beam, bos_id, eos_id) - word_list = [tgt_vocab.to_tokens(id) for id in id_list] - sequence = " ".join(word_list) + "\n" - f.write(sequence) - cand_list.append(word_list) - break - - bleu = BLEU() - for i, data in enumerate(test_loader.dataset.data): - ref = data["vi"].split() - bleu.add_inst(cand_list[i], [ref]) - print("BLEU score is %s." % bleu.score()) - - -if __name__ == "__main__": - args = parse_args() - do_predict(args) diff --git a/examples/machine_translation/seq2seq/seq2seq_attn.py b/examples/machine_translation/seq2seq/seq2seq_attn.py deleted file mode 100644 index 5bbcf62b77c5..000000000000 --- a/examples/machine_translation/seq2seq/seq2seq_attn.py +++ /dev/null @@ -1,254 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F -import paddle.nn.initializer as I - - -class CrossEntropyCriterion(nn.Layer): - def __init__(self): - super(CrossEntropyCriterion, self).__init__() - - def forward(self, predict, label, trg_mask): - cost = F.cross_entropy(input=predict, label=label, soft_label=False, reduction="none") - cost = paddle.squeeze(cost, axis=[2]) - masked_cost = cost * trg_mask - batch_mean_cost = paddle.mean(masked_cost, axis=[0]) - seq_cost = paddle.sum(batch_mean_cost) - - return seq_cost - - -class Seq2SeqEncoder(nn.Layer): - def __init__(self, vocab_size, embed_dim, hidden_size, num_layers, dropout_prob=0.0, init_scale=0.1): - super(Seq2SeqEncoder, self).__init__() - self.embedder = nn.Embedding( - vocab_size, - embed_dim, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - ) - - self.lstm = nn.LSTM( - input_size=embed_dim, - hidden_size=hidden_size, - num_layers=num_layers, - direction="forward", - dropout=dropout_prob if num_layers > 1 else 0.0, - ) - - def forward(self, sequence, sequence_length): - inputs = self.embedder(sequence) - encoder_output, encoder_state = self.lstm(inputs, sequence_length=sequence_length) - - return encoder_output, encoder_state - - -class AttentionLayer(nn.Layer): - def __init__(self, hidden_size, bias=False, init_scale=0.1): - super(AttentionLayer, self).__init__() - self.input_proj = nn.Linear( - hidden_size, - hidden_size, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - bias_attr=bias, - ) - self.output_proj = nn.Linear( - hidden_size + hidden_size, - hidden_size, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - bias_attr=bias, - ) - - def forward(self, hidden, encoder_output, encoder_padding_mask): - encoder_output = self.input_proj(encoder_output) - attn_scores = paddle.matmul(paddle.unsqueeze(hidden, [1]), encoder_output, transpose_y=True) - - if encoder_padding_mask is not None: - attn_scores = paddle.add(attn_scores, encoder_padding_mask) - - attn_scores = F.softmax(attn_scores) - attn_out = paddle.squeeze(paddle.matmul(attn_scores, encoder_output), [1]) - attn_out = paddle.concat([attn_out, hidden], 1) - attn_out = self.output_proj(attn_out) - return attn_out - - -class Seq2SeqDecoderCell(nn.RNNCellBase): - def __init__(self, num_layers, input_size, hidden_size, dropout_prob=0.0): - super(Seq2SeqDecoderCell, self).__init__() - if dropout_prob > 0.0: - self.dropout = nn.Dropout(dropout_prob) - else: - self.dropout = None - - self.lstm_cells = nn.LayerList( - [ - nn.LSTMCell(input_size=input_size + hidden_size if i == 0 else hidden_size, hidden_size=hidden_size) - for i in range(num_layers) - ] - ) - - self.attention_layer = AttentionLayer(hidden_size) - - def forward(self, step_input, states, encoder_output, encoder_padding_mask=None): - lstm_states, input_feed = states - new_lstm_states = [] - step_input = paddle.concat([step_input, input_feed], 1) - for i, lstm_cell in enumerate(self.lstm_cells): - out, new_lstm_state = lstm_cell(step_input, lstm_states[i]) - if self.dropout: - step_input = self.dropout(out) - else: - step_input = out - - new_lstm_states.append(new_lstm_state) - out = self.attention_layer(step_input, encoder_output, encoder_padding_mask) - return out, [new_lstm_states, out] - - -class Seq2SeqDecoder(nn.Layer): - def __init__(self, vocab_size, embed_dim, hidden_size, num_layers, dropout_prob=0.0, init_scale=0.1): - super(Seq2SeqDecoder, self).__init__() - self.embedder = nn.Embedding( - vocab_size, - embed_dim, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - ) - self.lstm_attention = nn.RNN( - Seq2SeqDecoderCell(num_layers, embed_dim, hidden_size, dropout_prob), is_reverse=False, time_major=False - ) - self.output_layer = nn.Linear( - hidden_size, - vocab_size, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - bias_attr=False, - ) - - def forward(self, trg, decoder_initial_states, encoder_output, encoder_padding_mask): - inputs = self.embedder(trg) - - decoder_output, _ = self.lstm_attention( - inputs, - initial_states=decoder_initial_states, - encoder_output=encoder_output, - encoder_padding_mask=encoder_padding_mask, - ) - predict = self.output_layer(decoder_output) - - return predict - - -class Seq2SeqAttnModel(nn.Layer): - def __init__( - self, - src_vocab_size, - trg_vocab_size, - embed_dim, - hidden_size, - num_layers, - dropout_prob=0.0, - eos_id=1, - init_scale=0.1, - ): - super(Seq2SeqAttnModel, self).__init__() - self.hidden_size = hidden_size - self.eos_id = eos_id - self.num_layers = num_layers - self.INF = 1e9 - self.encoder = Seq2SeqEncoder(src_vocab_size, embed_dim, hidden_size, num_layers, dropout_prob, init_scale) - self.decoder = Seq2SeqDecoder(trg_vocab_size, embed_dim, hidden_size, num_layers, dropout_prob, init_scale) - - def forward(self, src, src_length, trg): - encoder_output, encoder_final_state = self.encoder(src, src_length) - - # Transfer shape of encoder_final_states to [num_layers, 2, batch_size, hidden_size] - encoder_final_states = [(encoder_final_state[0][i], encoder_final_state[1][i]) for i in range(self.num_layers)] - # Construct decoder initial states: use input_feed and the shape is - # [[h,c] * num_layers, input_feed], consistent with Seq2SeqDecoderCell.states - decoder_initial_states = [ - encoder_final_states, - self.decoder.lstm_attention.cell.get_initial_states(batch_ref=encoder_output, shape=[self.hidden_size]), - ] - # Build attention mask to avoid paying attention on padddings - src_mask = (src != self.eos_id).astype(paddle.get_default_dtype()) - encoder_padding_mask = (src_mask - 1.0) * self.INF - encoder_padding_mask = paddle.unsqueeze(encoder_padding_mask, [1]) - - predict = self.decoder(trg, decoder_initial_states, encoder_output, encoder_padding_mask) - return predict - - -class Seq2SeqAttnInferModel(Seq2SeqAttnModel): - def __init__( - self, - src_vocab_size, - trg_vocab_size, - embed_dim, - hidden_size, - num_layers, - dropout_prob=0.0, - bos_id=0, - eos_id=1, - beam_size=4, - max_out_len=256, - ): - args = dict(locals()) - args.pop("self") - args.pop("__class__", None) - self.bos_id = args.pop("bos_id") - self.beam_size = args.pop("beam_size") - self.max_out_len = args.pop("max_out_len") - self.num_layers = num_layers - super(Seq2SeqAttnInferModel, self).__init__(**args) - # Dynamic decoder for inference - self.beam_search_decoder = nn.BeamSearchDecoder( - self.decoder.lstm_attention.cell, - start_token=bos_id, - end_token=eos_id, - beam_size=beam_size, - embedding_fn=self.decoder.embedder, - output_fn=self.decoder.output_layer, - ) - - def forward(self, src, src_length): - encoder_output, encoder_final_state = self.encoder(src, src_length) - - encoder_final_state = [(encoder_final_state[0][i], encoder_final_state[1][i]) for i in range(self.num_layers)] - - # Initial decoder initial states - decoder_initial_states = [ - encoder_final_state, - self.decoder.lstm_attention.cell.get_initial_states(batch_ref=encoder_output, shape=[self.hidden_size]), - ] - # Build attention mask to avoid paying attention on paddings - src_mask = (src != self.eos_id).astype(paddle.get_default_dtype()) - - encoder_padding_mask = (src_mask - 1.0) * self.INF - encoder_padding_mask = paddle.unsqueeze(encoder_padding_mask, [1]) - - # Tile the batch dimension with beam_size - encoder_output = nn.BeamSearchDecoder.tile_beam_merge_with_batch(encoder_output, self.beam_size) - encoder_padding_mask = nn.BeamSearchDecoder.tile_beam_merge_with_batch(encoder_padding_mask, self.beam_size) - - # Dynamic decoding with beam search - seq_output, _ = nn.dynamic_decode( - decoder=self.beam_search_decoder, - inits=decoder_initial_states, - max_step_num=self.max_out_len, - encoder_output=encoder_output, - encoder_padding_mask=encoder_padding_mask, - ) - return seq_output diff --git a/examples/machine_translation/seq2seq/train.py b/examples/machine_translation/seq2seq/train.py deleted file mode 100644 index fec0708040f5..000000000000 --- a/examples/machine_translation/seq2seq/train.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn -from args import parse_args -from data import create_train_loader -from seq2seq_attn import CrossEntropyCriterion, Seq2SeqAttnModel - -from paddlenlp.metrics import Perplexity - - -def do_train(args): - paddle.set_device(args.device) - - # Define dataloader - train_loader, eval_loader, src_vocab_size, tgt_vocab_size, eos_id = create_train_loader(args) - - model = paddle.Model( - Seq2SeqAttnModel( - src_vocab_size, tgt_vocab_size, args.hidden_size, args.hidden_size, args.num_layers, args.dropout, eos_id - ) - ) - - grad_clip = nn.ClipGradByGlobalNorm(args.max_grad_norm) - optimizer = paddle.optimizer.Adam( - learning_rate=args.learning_rate, parameters=model.parameters(), grad_clip=grad_clip - ) - - ppl_metric = Perplexity() - model.prepare(optimizer, CrossEntropyCriterion(), ppl_metric) - - print(args) - if args.init_from_ckpt: - model.load(args.init_from_ckpt) - print("Loaded checkpoint from %s" % args.init_from_ckpt) - - benchmark_logger = paddle.callbacks.ProgBarLogger(log_freq=args.log_freq, verbose=3) - - model.fit( - train_data=train_loader, - eval_data=eval_loader, - epochs=args.max_epoch, - eval_freq=1, - save_freq=1, - save_dir=args.model_path, - callbacks=[benchmark_logger], - ) - - -if __name__ == "__main__": - args = parse_args() - do_train(args) diff --git a/examples/machine_translation/transformer/tls/distributed_utils.py b/examples/machine_translation/transformer/tls/distributed_utils.py deleted file mode 100644 index 26d6c0ca8d90..000000000000 --- a/examples/machine_translation/transformer/tls/distributed_utils.py +++ /dev/null @@ -1,19 +0,0 @@ -import paddle -import paddle.distributed as dist - - -def all_gather_tokens(data): - """Gathers num of tokens from all nodes. - `data` should be a tensor of num of tokens. - """ - if dist.get_world_size() < 2: - return data - if not hasattr(all_gather_tokens, "_in_buffer") or all_gather_tokens._in_buffer is None: - all_gather_tokens._in_buffer = data - all_gather_tokens._out_buffers = [] - in_buffer = all_gather_tokens._in_buffer - out_buffers = all_gather_tokens._out_buffers - - dist.all_gather(out_buffers, in_buffer) - - return paddle.add_n(out_buffers) diff --git a/examples/model_compression/distill_lstm/README.md b/examples/model_compression/distill_lstm/README.md deleted file mode 100644 index 56e63c435339..000000000000 --- a/examples/model_compression/distill_lstm/README.md +++ /dev/null @@ -1,194 +0,0 @@ -# Distilling Knowledge From Fine-tuned BERT into Bi-LSTM - -以下是本例的简要目录结构及说明: -``` -. -├── small.py # 小模型结构以及对小模型单独训练的脚本 -├── bert_distill.py # 用教师模型BERT蒸馏学生模型的蒸馏脚本 -├── data.py # 定义了dataloader等数据读取接口 -├── utils.py # 定义了将样本转成id的转换接口 -├── args.py # 参数配置脚本 -└── README.md # 文档,本文件 -``` - -## 简介 -本目录下的实验是将特定任务下BERT模型的知识蒸馏到基于Bi-LSTM的小模型中,主要参考论文 [Distilling Task-Specific Knowledge from BERT into Simple Neural Networks](https://arxiv.org/abs/1903.12136)实现。 - -在模型蒸馏中,较大的模型(在本例中是BERT)通常被称为教师模型,较小的模型(在本例中是Bi-LSTM)通常被称为学生模型。知识的蒸馏通常是通过模型学习蒸馏相关的损失函数实现,在本实验中,损失函数是均方误差损失函数,传入函数的两个参数分别是学生模型的输出和教师模型的输出。 - -在[论文](https://arxiv.org/abs/1903.12136)的模型蒸馏阶段,作者为了能让教师模型表达出更多的知识供学生模型学习,对训练数据进行了数据增强。作者使用了三种数据增强方式,分别是: - -1. Masking,即以一定的概率将原数据中的word token替换成`[MASK]`; - -2. POS—guided word replacement,即以一定的概率将原数据中的词用与其有相同POS tag的词替换; - -3. n-gram sampling,即以一定的概率,从每条数据中采样n-gram,其中n的范围可通过人工设置。 - -通过数据增强,可以产生更多无标签的训练数据,在训练过程中,学生模型可借助教师模型的“暗知识”,在更大的数据集上进行训练,产生更好的蒸馏效果。需要指出的是,实验只使用了第1和第3种数据增强方式。 -在英文数据集任务上,本文使用了Google News语料[预训练的Word Embedding](https://code.google.com/archive/p/word2vec/)初始化小模型的Embedding层。 - -本实验分为三个训练过程:在特定任务上对BERT的fine-tuning、在特定任务上对基于Bi-LSTM的小模型的训练(用于评价蒸馏效果)、将BERT模型的知识蒸馏到基于Bi-LSTM的小模型上。 - -## 数据、预训练模型介绍及获取 - -本实验使用GLUE中的SST-2、QQP以及中文情感分类数据集ChnSentiCorp中的训练集作为训练语料,用数据集中的验证集评估模型的效果。运行本目录下的实验,数据集会被自动下载到`paddlenlp.utils.env.DATA_HOME` 路径下,例如在linux系统下,例如对于GLUE中的QQP数据集,默认存储路径是`~/.paddlenlp/datasets/glue/QQP`,对于ChnSentiCorp数据集,则会下载到 `~/.paddlenlp/datasets/chnsenticorp`。 - -对于BERT的fine-tuning任务,本实验中使用了预训练模型`bert-bas-uncased`、`bert-wwm-ext-chinese`、`bert-base-chinese`。同样,这几个模型在训练时会被自动下载到`paddlenlp.utils.env.MODEL_HOME`路径下。例如,对于`bert-base-uncased`模型,在linux系统下,会被下载到`~/.paddlenlp/models/bert-base-uncased`下。 - -在中文数据集上的小模型训练的输入利用jieba分词,其中词表同本repo下[文本分类项目](../../text_classification/rnn)的词表,可通过运行以下命令进行下载: - -```shell -wget https://bj.bcebos.com/paddlenlp/data/senta_word_dict.txt -``` - -为了节省显存和运行时间,可以对ChnSentiCorp中未出现的词先进行过滤,并将最后的词表文件名和词表大小配置在下面的参数中。 - - -## 蒸馏实验过程 -### 训练BERT fine-tuning模型 -训练BERT的fine-tuning模型,可以去本repo下example中的[glue目录](../../benchmark/glue)下。关于glue的更多详细说明,可见glue目录下的README文档。 - -以GLUE的SST-2任务为例,调用BERT fine-tune的训练脚本,配置如下的参数,训练SST-2任务: - -```shell -cd ../../benchmark/glue -export CUDA_VISIBLE_DEVICES=0 -export TASK_NAME=SST-2 -python -u ./run_glue.py \ - --model_type bert \ - --model_name_or_path bert-base-uncased \ - --task_name $TASK_NAME \ - --max_seq_length 128 \ - --batch_size 128 \ - --learning_rate 3e-5 \ - --num_train_epochs 3 \ - --logging_steps 10 \ - --save_steps 10 \ - --output_dir ../model_compression/distill_lstm/pretrained_models/$TASK_NAME/ \ - --device gpu \ - -``` - -如果需要训练基于ChnSentiCorp数据集的BERT finetuning模型,可以进入[文本分类目录](../../text_classification/pretrained_models)下,将预训练模型改成BERT,并基于bert-base-chinese和bert-wwm-ext-chinese模型进行fine-tuning训练。 - -训练完成之后,可将训练效果最好的模型保存在本项目下的`pretrained_models/$TASK_NAME/`下。模型目录下有`model_config.json`, `model_state.pdparams`, `tokenizer_config.json`及`vocab.txt`这几个文件。 - - -### 训练小模型 - -尝试运行下面的脚本可以分别基于ChnSentiCorp、SST-2、QQP数据集对基于BiLSTM的小模型进行训练。 - - -```shell -CUDA_VISIBLE_DEVICES=0 python small.py \ - --task_name chnsenticorp \ - --max_epoch 20 \ - --vocab_size 1256608 \ - --batch_size 64 \ - --model_name bert-wwm-ext-chinese \ - --optimizer adam \ - --lr 3e-4 \ - --dropout_prob 0.2 \ - --vocab_path senta_word_dict.txt \ - --save_steps 10000 \ - --output_dir small_models/chnsenticorp/ - -``` - -```shell -CUDA_VISIBLE_DEVICES=0 python small.py \ - --task_name sst-2 \ - --vocab_size 30522 \ - --max_epoch 10 \ - --batch_size 64 \ - --lr 1.0 \ - --dropout_prob 0.4 \ - --output_dir small_models/SST-2 \ - --save_steps 10000 \ - --embedding_name w2v.google_news.target.word-word.dim300.en - -``` - -```shell -CUDA_VISIBLE_DEVICES=0 python small.py \ - --task_name qqp \ - --vocab_size 30522 \ - --max_epoch 35 \ - --batch_size 256 \ - --lr 2.0 \ - --dropout_prob 0.4 \ - --output_dir small_models/QQP \ - --save_steps 10000 \ - --embedding_name w2v.google_news.target.word-word.dim300.en - -``` - -### 蒸馏模型 -这一步是将教师模型BERT的知识蒸馏到基于BiLSTM的学生模型中,可以运行下面的命令分别基于ChnSentiCorp、SST-2、QQP数据集对基于BiLSTM的学生模型进行蒸馏。 - -```shell -CUDA_VISIBLE_DEVICES=0 python bert_distill.py \ - --task_name chnsenticorp \ - --vocab_size 1256608 \ - --max_epoch 6 \ - --lr 1.0 \ - --dropout_prob 0.1 \ - --batch_size 64 \ - --model_name bert-wwm-ext-chinese \ - --teacher_dir pretrained_models/chnsenticorp/best_bert_wwm_ext_model_880 \ - --vocab_path senta_word_dict.txt \ - --output_dir distilled_models/chnsenticorp \ - --save_steps 10000 \ - -``` - -```shell -CUDA_VISIBLE_DEVICES=0 python bert_distill.py \ - --task_name sst-2 \ - --vocab_size 30522 \ - --max_epoch 6 \ - --lr 1.0 \ - --task_name sst-2 \ - --dropout_prob 0.2 \ - --batch_size 128 \ - --model_name bert-base-uncased \ - --output_dir distilled_models/SST-2 \ - --teacher_dir pretrained_models/SST-2/best_model_610 \ - --save_steps 10000 \ - --embedding_name w2v.google_news.target.word-word.dim300.en \ - -``` - -```shell -CUDA_VISIBLE_DEVICES=0 python bert_distill.py \ - --task_name qqp \ - --vocab_size 30522 \ - --max_epoch 6 \ - --lr 1.0 \ - --dropout_prob 0.2 \ - --batch_size 256 \ - --model_name bert-base-uncased \ - --n_iter 10 \ - --output_dir distilled_models/QQP \ - --teacher_dir pretrained_models/QQP/best_model_17000 \ - --save_steps 10000 \ - --embedding_name w2v.google_news.target.word-word.dim300.en \ - -``` - -各参数的具体说明请参阅 `args.py` ,注意在训练不同任务时,需要调整对应的超参数。 - - -## 蒸馏实验结果 -本蒸馏实验基于GLUE的SST-2、QQP、中文情感分类ChnSentiCorp数据集。实验效果均使用每个数据集的验证集(dev)进行评价,评价指标是准确率(acc),其中QQP中包含f1值。利用基于BERT的教师模型去蒸馏基于Bi-LSTM的学生模型,对比Bi-LSTM小模型单独训练,在SST-2、QQP、ChnSentiCorp(中文情感分类)任务上分别有3.3%、1.9%、1.4%的提升。 - -| Model | SST-2(dev acc) | QQP(dev acc/f1) | ChnSentiCorp(dev acc) | ChnSentiCorp(dev acc) | -| ----------------- | ----------------- | -------------------------- | --------------------- | --------------------- | -| Teacher model | bert-base-uncased | bert-base-uncased | bert-base-chinese | bert-wwm-ext-chinese | -| BERT-base | 0.930046 | 0.905813(acc)/0.873472(f1) | 0.951667 | 0.955000 | -| Bi-LSTM | 0.854358 | 0.856616(acc)/0.799682(f1) | 0.920000 | 0.920000 | -| Distilled Bi-LSTM | 0.887615 | 0.875216(acc)/0.831254(f1) | 0.932500 | 0.934167 | - -## 参考文献 - -Tang R, Lu Y, Liu L, Mou L, Vechtomova O, Lin J. [Distilling Task-Specific Knowledge from BERT into Simple Neural Networks](https://arxiv.org/abs/1903.12136)[J]. arXiv preprint arXiv:1903.12136, 2019. diff --git a/examples/model_compression/distill_lstm/args.py b/examples/model_compression/distill_lstm/args.py deleted file mode 100644 index 07fd4b1bb191..000000000000 --- a/examples/model_compression/distill_lstm/args.py +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import argparse - -from paddlenlp.utils.env import MODEL_HOME - - -def parse_args(): - parser = argparse.ArgumentParser(description=__doc__) - - parser.add_argument("--task_name", type=str, default="sst-2", help="Task name.") - - parser.add_argument( - "--optimizer", type=str, default="adadelta", help="Optimizer to use, only support[adam|adadelta]." - ) - - parser.add_argument("--lr", type=float, default=1.0, help="Learning rate for optimizer.") - - parser.add_argument("--num_layers", type=int, default=1, help="Layers number of LSTM.") - - parser.add_argument("--emb_dim", type=int, default=300, help="Embedding dim.") - - parser.add_argument("--output_dim", type=int, default=2, help="Number of classifications.") - - parser.add_argument("--hidden_size", type=int, default=300, help="Hidden size of LSTM") - - parser.add_argument("--batch_size", type=int, default=64, help="Batch size of training.") - - parser.add_argument("--max_epoch", type=int, default=12, help="Max number of epochs for training.") - - parser.add_argument("--max_seq_length", type=int, default=128, help="Max length for sentence.") - - parser.add_argument( - "--n_iter", type=int, default=20, help="Number of iterations for one sample in data augmentation." - ) - - parser.add_argument("--dropout_prob", type=float, default=0.0, help="Drop probability.") - - parser.add_argument("--init_scale", type=float, default=0.1, help="Init scale for parameter") - - parser.add_argument("--log_freq", type=int, default=10, help="The frequency to print evaluation logs.") - - parser.add_argument("--save_steps", type=int, default=100, help="The frequency to print evaluation logs.") - - parser.add_argument("--padding_idx", type=int, default=0, help="The padding index of embedding.") - - parser.add_argument( - "--model_name", - type=str, - default="bert-base-uncased", - help="Teacher model's name. Maybe its tokenizer would be loaded and used by small model.", - ) - - parser.add_argument("--teacher_dir", type=str, help="Teacher model's directory.") - - parser.add_argument( - "--vocab_path", - type=str, - default=os.path.join(MODEL_HOME, "bert-base-uncased", "bert-base-uncased-vocab.txt"), - help="Student model's vocab path.", - ) - - parser.add_argument("--output_dir", type=str, default="models", help="Directory to save models .") - - parser.add_argument( - "--init_from_ckpt", type=str, default=None, help="The path of layer and optimizer to be loaded." - ) - - parser.add_argument( - "--whole_word_mask", - action="store_true", - help="If True, use whole word masking method in data augmentation in distilling.", - ) - - parser.add_argument("--embedding_name", type=str, default=None, help="The name of pretrained word embedding.") - - parser.add_argument("--vocab_size", type=int, default=10000, help="Student model's vocab size.") - - parser.add_argument( - "--alpha", type=float, default=0.0, help="Weight balance between cross entropy loss and mean square loss." - ) - - parser.add_argument( - "--seed", - type=int, - default=2021, - help="Random seed for model parameter initialization, data augmentation and so on.", - ) - - parser.add_argument( - "--device", default="gpu", choices=["gpu", "cpu", "xpu"], help="Device selected for inference." - ) - - args = parser.parse_args() - return args diff --git a/examples/model_compression/distill_lstm/bert_distill.py b/examples/model_compression/distill_lstm/bert_distill.py deleted file mode 100644 index 9f253a31b8f5..000000000000 --- a/examples/model_compression/distill_lstm/bert_distill.py +++ /dev/null @@ -1,172 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import time - -import paddle -import paddle.nn as nn -from args import parse_args -from data import create_distill_loader -from paddle.metric import Accuracy -from small import BiLSTM - -from paddlenlp.metrics import AccuracyAndF1 -from paddlenlp.transformers import BertForSequenceClassification - -METRIC_CLASSES = {"sst-2": Accuracy, "qqp": AccuracyAndF1, "chnsenticorp": Accuracy} - - -class TeacherModel(object): - def __init__(self, teacher_dir): - self.model = BertForSequenceClassification.from_pretrained(teacher_dir) - self.model.eval() - - -def evaluate(task_name, model, metric, data_loader): - model.eval() - metric.reset() - for i, batch in enumerate(data_loader): - if task_name == "qqp": - _, _, student_input_ids_1, seq_len_1, student_input_ids_2, seq_len_2, labels = batch - logits = model(student_input_ids_1, seq_len_1, student_input_ids_2, seq_len_2) - else: - _, _, student_input_ids, seq_len, labels = batch - logits = model(student_input_ids, seq_len) - - correct = metric.compute(logits, labels) - metric.update(correct) - res = metric.accumulate() - if isinstance(metric, AccuracyAndF1): - print( - "acc: %s, precision: %s, recall: %s, f1: %s, acc and f1: %s, " - % ( - res[0], - res[1], - res[2], - res[3], - res[4], - ), - end="", - ) - else: - print("acc: %s, " % (res), end="") - model.train() - - -def do_train(agrs): - paddle.set_device(args.device) - train_data_loader, dev_data_loader = create_distill_loader( - args.task_name, - model_name=args.model_name, - vocab_path=args.vocab_path, - batch_size=args.batch_size, - max_seq_length=args.max_seq_length, - n_iter=args.n_iter, - whole_word_mask=args.whole_word_mask, - seed=args.seed, - ) - - model = BiLSTM( - args.emb_dim, - args.hidden_size, - args.vocab_size, - args.output_dim, - args.vocab_path, - args.padding_idx, - args.num_layers, - args.dropout_prob, - args.init_scale, - args.embedding_name, - ) - - if args.optimizer == "adadelta": - optimizer = paddle.optimizer.Adadelta(learning_rate=args.lr, rho=0.95, parameters=model.parameters()) - else: - optimizer = paddle.optimizer.Adam(learning_rate=args.lr, parameters=model.parameters()) - - ce_loss = nn.CrossEntropyLoss() - mse_loss = nn.MSELoss() - - metric_class = METRIC_CLASSES[args.task_name] - metric = metric_class() - - teacher = TeacherModel(args.teacher_dir) - - print("Start to distill student model.") - - if args.init_from_ckpt: - model.set_state_dict(paddle.load(args.init_from_ckpt + ".pdparams")) - optimizer.set_state_dict(paddle.load(args.init_from_ckpt + ".pdopt")) - print("Loaded checkpoint from %s" % args.init_from_ckpt) - - global_step = 0 - tic_train = time.time() - for epoch in range(args.max_epoch): - model.train() - for i, batch in enumerate(train_data_loader): - global_step += 1 - if args.task_name == "qqp": - ( - bert_input_ids, - bert_segment_ids, - student_input_ids_1, - seq_len_1, - student_input_ids_2, - seq_len_2, - labels, - ) = batch - else: - bert_input_ids, bert_segment_ids, student_input_ids, seq_len, labels = batch - - # Calculate teacher model's forward. - with paddle.no_grad(): - teacher_logits = teacher.model(bert_input_ids, bert_segment_ids) - - # Calculate student model's forward. - if args.task_name == "qqp": - logits = model(student_input_ids_1, seq_len_1, student_input_ids_2, seq_len_2) - else: - logits = model(student_input_ids, seq_len) - - loss = args.alpha * ce_loss(logits, labels) + (1 - args.alpha) * mse_loss(logits, teacher_logits) - - loss.backward() - optimizer.step() - optimizer.clear_grad() - - if global_step % args.log_freq == 0: - print( - "global step %d, epoch: %d, batch: %d, loss: %f, speed: %.4f step/s" - % (global_step, epoch, i, loss, args.log_freq / (time.time() - tic_train)) - ) - tic_eval = time.time() - evaluate(args.task_name, model, metric, dev_data_loader) - print("eval done total : %s s" % (time.time() - tic_eval)) - tic_train = time.time() - - if global_step % args.save_steps == 0: - paddle.save( - model.state_dict(), os.path.join(args.output_dir, "step_" + str(global_step) + ".pdparams") - ) - paddle.save( - optimizer.state_dict(), os.path.join(args.output_dir, "step_" + str(global_step) + ".pdopt") - ) - - -if __name__ == "__main__": - args = parse_args() - print(args) - paddle.seed(args.seed) - do_train(args) diff --git a/examples/model_compression/distill_lstm/data.py b/examples/model_compression/distill_lstm/data.py deleted file mode 100644 index dec2b358260b..000000000000 --- a/examples/model_compression/distill_lstm/data.py +++ /dev/null @@ -1,322 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from functools import partial - -import jieba -import numpy as np -import paddle -from utils import ( - convert_example_for_distill, - convert_example_for_lstm, - convert_pair_example, -) - -from paddlenlp.data import Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import load_dataset -from paddlenlp.transformers import BertTokenizer - - -def load_vocab(vocab_file): - """Loads a vocabulary file into a dictionary.""" - vocab = {} - with open(vocab_file, "r", encoding="utf-8") as reader: - tokens = reader.readlines() - for index, token in enumerate(tokens): - token = token.rstrip("\n").split("\t")[0] - vocab[token] = index - return vocab - - -def ngram_sampling(words, words_2=None, p_ng=0.25, ngram_range=(2, 6)): - if np.random.rand() < p_ng: - ngram_len = np.random.randint(ngram_range[0], ngram_range[1] + 1) - ngram_len = min(ngram_len, len(words)) - start = np.random.randint(0, len(words) - ngram_len + 1) - words = words[start : start + ngram_len] - if words_2: - words_2 = words_2[start : start + ngram_len] - return words if not words_2 else (words, words_2) - - -def flatten(list_of_list): - final_list = [] - for each_list in list_of_list: - final_list += each_list - return final_list - - -def apply_data_augmentation( - data, task_name, tokenizer, n_iter=20, p_mask=0.1, p_ng=0.25, ngram_range=(2, 6), whole_word_mask=False, seed=0 -): - """ - Data Augmentation contains Masking and n-gram sampling. Tokenization and - Masking are performed at the same time, so that the masked token can be - directly replaced by `mask_token`, after what sampling is performed. - """ - - def _data_augmentation(data, tokenized_list, whole_word_mask=whole_word_mask): - # 1. Masking - words = [] - if not whole_word_mask: - words = [tokenizer.mask_token if np.random.rand() < p_mask else word for word in tokenized_list] - else: - for word in data.split(): - words += [[tokenizer.mask_token]] if np.random.rand() < p_mask else [tokenizer.tokenize(word)] - # 2. N-gram sampling - words = ngram_sampling(words, p_ng=p_ng, ngram_range=ngram_range) - words = flatten(words) if isinstance(words[0], list) else words - return words - - np.random.seed(seed) - new_data = [] - for example in data: - if task_name == "qqp": - data_list = tokenizer.tokenize(example["sentence1"]) - data_list_2 = tokenizer.tokenize(example["sentence2"]) - new_data.append({"sentence1": data_list, "sentence2": data_list_2, "labels": example["labels"]}) - else: - data_list = tokenizer.tokenize(example["sentence"]) - new_data.append({"sentence": data_list, "labels": example["labels"]}) - - for example in data: - for _ in range(n_iter): - if task_name == "qqp": - words = _data_augmentation(example["sentence1"], data_list) - words_2 = _data_augmentation(example["sentence2"], data_list_2) - new_data.append({"sentence1": words, "sentence2": words_2, "labels": example["labels"]}) - else: - words = _data_augmentation(example["sentence"], data_list) - new_data.append({"sentence": words, "labels": example["labels"]}) - return new_data - - -def apply_data_augmentation_for_cn( - data, tokenizer, vocab, n_iter=20, p_mask=0.1, p_ng=0.25, ngram_range=(2, 10), seed=0 -): - """ - Because BERT and jieba have different `tokenize` function, it returns - jieba_tokenizer(example['text'], bert_tokenizer(example['text']) and - example['label]) for each example in data. - jieba tokenization and Masking are performed at the same time, so that the - masked token can be directly replaced by `mask_token`, and other tokens - could be tokenized by BERT's tokenizer, from which tokenized example for - student model and teacher model would get at the same time. - """ - np.random.seed(seed) - new_data = [] - - for example in data: - if not example["text"]: - continue - text_tokenized = list(jieba.cut(example["text"])) - lstm_tokens = text_tokenized - bert_tokens = tokenizer.tokenize(example["text"]) - new_data.append({"lstm_tokens": lstm_tokens, "bert_tokens": bert_tokens, "label": example["label"]}) - for _ in range(n_iter): - # 1. Masking - lstm_tokens, bert_tokens = [], [] - for word in text_tokenized: - if np.random.rand() < p_mask: - lstm_tokens.append([vocab.unk_token]) - bert_tokens.append([tokenizer.unk_token]) - else: - lstm_tokens.append([word]) - bert_tokens.append(tokenizer.tokenize(word)) - # 2. N-gram sampling - lstm_tokens, bert_tokens = ngram_sampling(lstm_tokens, bert_tokens, p_ng, ngram_range) - lstm_tokens, bert_tokens = flatten(lstm_tokens), flatten(bert_tokens) - if lstm_tokens and bert_tokens: - new_data.append({"lstm_tokens": lstm_tokens, "bert_tokens": bert_tokens, "label": example["label"]}) - return new_data - - -def create_data_loader_for_small_model( - task_name, vocab_path, model_name=None, batch_size=64, max_seq_length=128, shuffle=True -): - """Data loader for bi-lstm, not bert.""" - if task_name == "chnsenticorp": - train_ds, dev_ds = load_dataset(task_name, splits=["train", "dev"]) - else: - train_ds, dev_ds = load_dataset("glue", task_name, splits=["train", "dev"]) - if task_name == "chnsenticorp": - vocab = Vocab.load_vocabulary( - vocab_path, - unk_token="[UNK]", - pad_token="[PAD]", - bos_token=None, - eos_token=None, - ) - pad_val = vocab["[PAD]"] - - else: - vocab = BertTokenizer.from_pretrained(model_name) - pad_val = vocab.pad_token_id - - trans_fn = partial( - convert_example_for_lstm, task_name=task_name, vocab=vocab, max_seq_length=max_seq_length, is_test=False - ) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=pad_val), Stack(dtype="int64"), Stack(dtype="int64") # input_ids # seq len # label - ): fn(samples) - - train_ds = train_ds.map(trans_fn, lazy=True) - dev_ds = dev_ds.map(trans_fn, lazy=True) - - train_data_loader, dev_data_loader = create_dataloader(train_ds, dev_ds, batch_size, batchify_fn, shuffle) - - return train_data_loader, dev_data_loader - - -def create_distill_loader( - task_name, - model_name, - vocab_path, - batch_size=64, - max_seq_length=128, - shuffle=True, - n_iter=20, - whole_word_mask=False, - seed=0, -): - """ - Returns batch data for bert and small model. - Bert and small model have different input representations. - """ - tokenizer = BertTokenizer.from_pretrained(model_name) - if task_name == "chnsenticorp": - train_ds, dev_ds = load_dataset(task_name, splits=["train", "dev"]) - vocab = Vocab.load_vocabulary( - vocab_path, - unk_token="[UNK]", - pad_token="[PAD]", - bos_token=None, - eos_token=None, - ) - pad_val = vocab["[PAD]"] - data_aug_fn = partial( - apply_data_augmentation_for_cn, tokenizer=tokenizer, vocab=vocab, n_iter=n_iter, seed=seed - ) - else: - train_ds, dev_ds = load_dataset("glue", task_name, splits=["train", "dev"]) - vocab = tokenizer - pad_val = tokenizer.pad_token_id - data_aug_fn = partial( - apply_data_augmentation, - task_name=task_name, - tokenizer=tokenizer, - n_iter=n_iter, - whole_word_mask=whole_word_mask, - seed=seed, - ) - train_ds = train_ds.map(data_aug_fn, batched=True) - print("Data augmentation has been applied.") - - trans_fn = partial( - convert_example_for_distill, - task_name=task_name, - tokenizer=tokenizer, - label_list=train_ds.label_list, - max_seq_length=max_seq_length, - vocab=vocab, - ) - - trans_fn_dev = partial( - convert_example_for_distill, - task_name=task_name, - tokenizer=tokenizer, - label_list=train_ds.label_list, - max_seq_length=max_seq_length, - vocab=vocab, - is_tokenized=False, - ) - - if task_name == "qqp": - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id), # bert input - Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # bert segment - Pad(axis=0, pad_val=pad_val), # small input_ids - Stack(dtype="int64"), # small seq len - Pad(axis=0, pad_val=pad_val), # small input_ids - Stack(dtype="int64"), # small seq len - Stack(dtype="int64"), # small label - ): fn(samples) - else: - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id), # bert input - Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # bert segment - Pad(axis=0, pad_val=pad_val), # small input_ids - Stack(dtype="int64"), # small seq len - Stack(dtype="int64"), # small label - ): fn(samples) - - train_ds = train_ds.map(trans_fn, lazy=True) - dev_ds = dev_ds.map(trans_fn_dev, lazy=True) - train_data_loader, dev_data_loader = create_dataloader(train_ds, dev_ds, batch_size, batchify_fn, shuffle) - return train_data_loader, dev_data_loader - - -def create_pair_loader_for_small_model( - task_name, model_name, vocab_path, batch_size=64, max_seq_length=128, shuffle=True, is_test=False -): - """Only support QQP now.""" - tokenizer = BertTokenizer.from_pretrained(model_name) - train_ds, dev_ds = load_dataset("glue", task_name, splits=["train", "dev"]) - vocab = Vocab.load_vocabulary( - vocab_path, - unk_token="[UNK]", - pad_token="[PAD]", - bos_token=None, - eos_token=None, - ) - - trans_func = partial( - convert_pair_example, - task_name=task_name, - vocab=tokenizer, - is_tokenized=False, - max_seq_length=max_seq_length, - is_test=is_test, - ) - train_ds = train_ds.map(trans_func, lazy=True) - dev_ds = dev_ds.map(trans_func, lazy=True) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=vocab["[PAD]"]), # input - Stack(), # length - Pad(axis=0, pad_val=vocab["[PAD]"]), # input - Stack(), # length - Stack(dtype="int64" if train_ds.label_list else "float32"), # label - ): fn(samples) - - train_data_loader, dev_data_loader = create_dataloader(train_ds, dev_ds, batch_size, batchify_fn, shuffle) - return train_data_loader, dev_data_loader - - -def create_dataloader(train_ds, dev_ds, batch_size, batchify_fn, shuffle=True): - train_batch_sampler = paddle.io.DistributedBatchSampler(train_ds, batch_size=batch_size, shuffle=shuffle) - - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=batch_size, shuffle=False) - - train_data_loader = paddle.io.DataLoader( - dataset=train_ds, batch_sampler=train_batch_sampler, collate_fn=batchify_fn, num_workers=0, return_list=True - ) - - dev_data_loader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, num_workers=0, return_list=True - ) - - return train_data_loader, dev_data_loader diff --git a/examples/model_compression/distill_lstm/small.py b/examples/model_compression/distill_lstm/small.py deleted file mode 100644 index 92681bd03991..000000000000 --- a/examples/model_compression/distill_lstm/small.py +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -import time - -import paddle -import paddle.nn as nn -import paddle.nn.initializer as I -from args import parse_args -from data import create_data_loader_for_small_model, create_pair_loader_for_small_model -from paddle.metric import Accuracy - -from paddlenlp.embeddings import TokenEmbedding -from paddlenlp.metrics import AccuracyAndF1 - -METRIC_CLASSES = {"sst-2": Accuracy, "qqp": AccuracyAndF1, "chnsenticorp": Accuracy} - - -class BiLSTM(nn.Layer): - def __init__( - self, - embed_dim, - hidden_size, - vocab_size, - output_dim, - vocab_path, - padding_idx=0, - num_layers=1, - dropout_prob=0.0, - init_scale=0.1, - embedding_name=None, - ): - super(BiLSTM, self).__init__() - if embedding_name is not None: - self.embedder = TokenEmbedding( - embedding_name, extended_vocab_path=vocab_path, keep_extended_vocab_only=True - ) - embed_dim = self.embedder.embedding_dim - else: - self.embedder = nn.Embedding(vocab_size, embed_dim, padding_idx) - - self.lstm = nn.LSTM(embed_dim, hidden_size, num_layers, "bidirectional", dropout=dropout_prob) - - self.fc = nn.Linear( - hidden_size * 2, - hidden_size, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - ) - - self.fc_1 = nn.Linear( - hidden_size * 8, - hidden_size, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - ) - - self.output_layer = nn.Linear( - hidden_size, - output_dim, - weight_attr=paddle.ParamAttr(initializer=I.Uniform(low=-init_scale, high=init_scale)), - ) - - def forward(self, x_1, seq_len_1, x_2=None, seq_len_2=None): - x_embed_1 = self.embedder(x_1) - lstm_out_1, (hidden_1, _) = self.lstm(x_embed_1, sequence_length=seq_len_1) - out_1 = paddle.concat((hidden_1[-2, :, :], hidden_1[-1, :, :]), axis=1) - if x_2 is not None: - x_embed_2 = self.embedder(x_2) - lstm_out_2, (hidden_2, _) = self.lstm(x_embed_2, sequence_length=seq_len_2) - out_2 = paddle.concat((hidden_2[-2, :, :], hidden_2[-1, :, :]), axis=1) - out = paddle.concat(x=[out_1, out_2, out_1 + out_2, paddle.abs(out_1 - out_2)], axis=1) - out = paddle.tanh(self.fc_1(out)) - else: - out = paddle.tanh(self.fc(out_1)) - logits = self.output_layer(out) - - return logits - - -def evaluate(task_name, model, loss_fct, metric, data_loader): - model.eval() - metric.reset() - for batch in data_loader: - if task_name == "qqp": - input_ids_1, seq_len_1, input_ids_2, seq_len_2, labels = batch - logits = model(input_ids_1, seq_len_1, input_ids_2, seq_len_2) - else: - input_ids, seq_len, labels = batch - logits = model(input_ids, seq_len) - loss = loss_fct(logits, labels) - correct = metric.compute(logits, labels) - metric.update(correct) - res = metric.accumulate() - if isinstance(metric, AccuracyAndF1): - print( - "eval loss: %f, acc: %s, precision: %s, recall: %s, f1: %s, acc and f1: %s, " - % ( - loss.numpy(), - res[0], - res[1], - res[2], - res[3], - res[4], - ), - end="", - ) - else: - print("eval loss: %f, acc: %s, " % (loss.numpy(), res), end="") - model.train() - return res[0] if isinstance(metric, AccuracyAndF1) else res - - -def do_train(args): - paddle.set_device(args.device) - metric_class = METRIC_CLASSES[args.task_name] - metric = metric_class() - if args.task_name == "qqp": - train_data_loader, dev_data_loader = create_pair_loader_for_small_model( - task_name=args.task_name, - vocab_path=args.vocab_path, - model_name=args.model_name, - batch_size=args.batch_size, - ) - else: - train_data_loader, dev_data_loader = create_data_loader_for_small_model( - task_name=args.task_name, - vocab_path=args.vocab_path, - model_name=args.model_name if args.task_name == "sst-2" else None, - batch_size=args.batch_size, - ) - - model = BiLSTM( - args.emb_dim, - args.hidden_size, - args.vocab_size, - args.output_dim, - args.vocab_path, - args.padding_idx, - args.num_layers, - args.dropout_prob, - args.init_scale, - args.embedding_name, - ) - - loss_fct = nn.CrossEntropyLoss() - - if args.optimizer == "adadelta": - optimizer = paddle.optimizer.Adadelta(learning_rate=args.lr, rho=0.95, parameters=model.parameters()) - else: - optimizer = paddle.optimizer.Adam(learning_rate=args.lr, parameters=model.parameters()) - - if args.init_from_ckpt: - model.set_state_dict(paddle.load(args.init_from_ckpt + ".pdparams")) - optimizer.set_state_dict(paddle.load(args.init_from_ckpt + ".pdopt")) - print("Loaded checkpoint from %s" % args.init_from_ckpt) - - global_step = 0 - tic_train = time.time() - for epoch in range(args.max_epoch): - for i, batch in enumerate(train_data_loader): - global_step += 1 - if args.task_name == "qqp": - input_ids_1, seq_len_1, input_ids_2, seq_len_2, labels = batch - logits = model(input_ids_1, seq_len_1, input_ids_2, seq_len_2) - else: - input_ids, seq_len, labels = batch - logits = model(input_ids, seq_len) - - loss = loss_fct(logits, labels) - - loss.backward() - optimizer.step() - optimizer.clear_grad() - - if global_step % args.log_freq == 0: - with paddle.no_grad(): - print( - "global step %d, epoch: %d, batch: %d, loss: %f, speed: %.4f step/s" - % (global_step, epoch, i, loss, args.log_freq / (time.time() - tic_train)) - ) - tic_eval = time.time() - - evaluate(args.task_name, model, loss_fct, metric, dev_data_loader) - print("eval done total : %s s" % (time.time() - tic_eval)) - tic_train = time.time() - - if global_step % args.save_steps == 0: - paddle.save( - model.state_dict(), os.path.join(args.output_dir, "step_" + str(global_step) + ".pdparams") - ) - paddle.save( - optimizer.state_dict(), os.path.join(args.output_dir, "step_" + str(global_step) + ".pdopt") - ) - - -if __name__ == "__main__": - args = parse_args() - print(args) - paddle.seed(args.seed) - do_train(args) diff --git a/examples/model_compression/distill_lstm/utils.py b/examples/model_compression/distill_lstm/utils.py deleted file mode 100644 index 0243d97a5a64..000000000000 --- a/examples/model_compression/distill_lstm/utils.py +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import jieba - -import numpy as np - - -def convert_example_for_lstm(example, task_name, vocab, is_tokenized=False, max_seq_length=128, is_test=False): - """convert a example for lstm's input""" - input_ids = [] - if task_name == "chnsenticorp": - if is_tokenized: - lstm_tokens = example["lstm_tokens"][:max_seq_length] - input_ids = [vocab[token] for token in lstm_tokens] - else: - tokenized_text = list(jieba.cut(example["text"]))[:max_seq_length] - input_ids = vocab[tokenized_text] - else: - if is_tokenized: - tokens = example["sentence"][:max_seq_length] - else: - tokens = vocab.tokenize(example["sentence"])[:max_seq_length] - input_ids = vocab.convert_tokens_to_ids(tokens) - - valid_length = np.array(len(input_ids), dtype="int64") - if not is_test: - label = ( - np.array(example["label"], dtype="int64") - if task_name == "chnsenticorp" - else np.array(example["labels"], dtype="int64") - ) - return input_ids, valid_length, label - return input_ids, valid_length - - -def convert_pair_example(example, task_name, vocab, is_tokenized=True, max_seq_length=128, is_test=False): - seq1 = convert_example_for_lstm( - {"sentence": example["sentence1"], "labels": example["labels"]}, - task_name, - vocab, - is_tokenized, - max_seq_length, - is_test, - )[:2] - - seq2 = convert_example_for_lstm( - {"sentence": example["sentence2"], "labels": example["labels"]}, - task_name, - vocab, - is_tokenized, - max_seq_length, - is_test, - ) - pair_features = seq1 + seq2 - - return pair_features - - -def convert_example_for_distill( - example, task_name, tokenizer, label_list, max_seq_length, vocab, is_tokenized=True, is_test=False -): - bert_features = convert_example_for_bert( - example, - tokenizer=tokenizer, - label_list=label_list, - is_tokenized=is_tokenized, - max_seq_length=max_seq_length, - is_test=is_test, - ) - if task_name == "qqp": - small_features = convert_pair_example(example, task_name, vocab, is_tokenized, max_seq_length, is_test) - else: - small_features = convert_example_for_lstm(example, task_name, vocab, is_tokenized, max_seq_length, is_test) - return bert_features[:2] + small_features - - -def convert_example_for_bert(example, tokenizer, label_list, is_tokenized=False, max_seq_length=512, is_test=False): - """convert a example for bert's input""" - if not is_test: - # `label_list == None` is for regression task - label_dtype = "int64" if label_list else "float32" - # Get the label - label = example["labels"] if "labels" in example else example["label"] - label = np.array([label], dtype=label_dtype) - # Convert raw text to feature - if "sentence1" in example: - example = tokenizer( - example["sentence1"], - text_pair=example["sentence2"], - max_seq_len=max_seq_length, - is_split_into_words=is_tokenized, - ) - else: - if "sentence" in example: - text = example["sentence"] - elif "text" in example: - text = example["text"] - else: - text = example["bert_tokens"] - example = tokenizer(text, max_seq_len=max_seq_length, is_split_into_words=is_tokenized) - - if not is_test: - return example["input_ids"], example["token_type_ids"], label - else: - return example["input_ids"], example["token_type_ids"] diff --git a/examples/model_interpretation/README.md b/examples/model_interpretation/README.md deleted file mode 100644 index ab3adf4eddab..000000000000 --- a/examples/model_interpretation/README.md +++ /dev/null @@ -1,255 +0,0 @@ -NLP可解释评估 -=== -深度学习模型在很多NLP任务上已经取得巨大成功,但其常被当作一个黑盒使用,内部预测机制对使用者是不透明的。这使得深度学习模型结果不被人信任,增加落地难度,尤其是在医疗、法律等特殊领域。同时,当模型出现效果不好或鲁棒性差等问题时,由于不了解其内部机制,导致很难对模型进行优化。近期,深度学习模型的可解释性被越来越多的人关注。但模型的可解释性评估还不够完善,本模块提供了3个NLP任务的评测数据和相关评测指标,旨在评估模型的可解释性。模块包含以下功能: - - 1. 完善可解释性评估体系,提供了评测数据和对应的评测指标 - 2. 提供了3种典型的证据抽取方法,分别是基于注意力(attention-based)、梯度(gradient-based)和线性模型(LIME)的证据抽取方法,并在LSTM、Transformer(RoBERTa-base和RoBERTa-large)等常用模型网络结构上完成实验验证,分别验证模型结构复杂度、模型参数规模对模型可解释的影响 - 3. 提供模型较全面的评估报告,含模型本身准确率等效果、以及在3个可解释评测指标上的结果 - -

-
-

- -可解释评估体系 ---- -### 评测数据 -我们提供了情感分析、相似度计算、阅读理解等三个NLP任务上的中英文数据集。对于每一个数据集,人工标注了证据数据和扰动数据。 - - 证据数据:给出模型预测依赖的证据(从人类认知角度),其由输入中的若干词构成。我们的标注标准包含3个维度:充分性(sufficiency)、简洁性(concision)、可理解性(understandability)。 - 扰动数据:旨在评估模型在扰动下的证据一致性。我们从抗干扰性、敏感性和泛化性等角度构建了扰动数据,其中,“敏感性”和“泛化性”维度下构建的数据可能会改变证据。 - -#### 样例数据(来自中文情感分析任务): - -

-
-

- -#### 数据规模 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
任务英文模型中文模型
规模证据平均长度比例证据平均数量规模证据平均长度比例证据平均数量
情感分析1,49919.20%2.11,64630.10%1.4
相似度任务1,65952.20%1.01,62970.50%1.0
阅读理解1,50710.20%1.01,7629.60%1.0
- -### 评估指标 -__合理性__:评估模型预测依赖的证据与人工标注证据的拟合度,我们这里使用macro-F1作为评估指标,其中模型预测依赖证据可以由本模块提供的证据分析方法(位于/model_interpretation/task/目录下)给出。
- -

-
-

-其中Sip和Sig分别代表针对第i条输入模型预测证据和人工标注证据,N代表数据集中数据的数量
- -__一致性__:评估(原始输入,对应扰动输入)对中词重要度排序的一致性。证据分析方法对输入中每个词赋予一个重要度,基于该重要度对输入中所有词进行排序。我们使用搜索排序中的MAP(mean average precision)指标来计算两个排序的一致性。这里给出了MAP的两种计算方式,分别见以下两个公式:
-公式一(正在使用):
-

-
-

-公式二:
-

-
-

-其中Xo和Xd分别代表原始输入和扰动输入的词重要度排序序列。|Xd|代表Xd中词的个数,Xo1:j表示Xo中前j最重要的词。函数G(x, Y)检查词x是否存在于列表Y中,如果存在则G(x, Y)=1。MAP越高表示两个序列排序一致性越高
- -__忠诚性__:评估模型给出的证据的忠诚性,即模型是否真的基于给出的证据进行预测的。这里从充分性和完备性两个角度进行评估。充分性,即模型给出的证据是否包含了预测需要的全部信息(即yri = yxi,其中ri表示输入xi的证据,yx表示模型对输入x的预测结果);完备性,即模型对输入x的预测结果(即yxi\ri ≠ yxi,其中xi\ri表示从输入xi中去除证据ri)。基于这两个维度,我们提出了一个新的指标New-P,计算方式如下:
- -

-
-

-

-
-

- -### 证据抽取方法 -证据抽取方法(rationale-extraction),顾名思义,就是从输入中抽取对模型预测至关重要的词,又被称为后验解释方法(post-hoc explanation methods)。 -该平台提供了3种典型的证据抽取方法,分别是:基于注意力机制(attention-based)的解释方法、基于梯度(gradient-based)的解释方法,和基于线性模型(linear-based)的解释方法:
- -Attention-based([Jain and Wallace, 2019](https://arxiv.org/pdf/1902.10186.pdf)): - - 将注意力分数作为词重要度。注意力分数的获取取决于具体模型架构,我们提供了基于LSTM和transformer框架的提取方法,见每个具体任务下的saliency_map目录。 - -Gradient-based([Sundararajan et al., 2017](https://arxiv.org/pdf/1703.01365.pdf)): - - 基于梯度给出每个词重要度。我们这里给出了integrated gradient计算方式,具体见saliency_map目录或论文[Axiomatic attribution for deep networks](https://arxiv.org/pdf/1703.01365.pdf)。 - -Linear-based([Ribeiro et al.. 2016](https://arxiv.org/pdf/1602.04938.pdf)): - - 使用线性模型局部模拟待验证模型,线性模型学习到的词的权重作为该词对预测结果的重要度,详细见论文[" why should i trust you?" explaining the predictions of any classifier](https://arxiv.org/pdf/1602.04938.pdf)。 - -### 三个任务的被评估模型 -为验证模型复杂度、参数规模对可解释的影响,针对每个任务,我们分别提供了基于LSTM(简单结构)的模型、及Transformer-based预训练模型(复杂结构),其中,对于预训练模型,提供了base版本和large版本。
-模型代码位置:/model_interpretation/task/{task}/,({task}可取值为["senti","similarity","mrc"],其中senti代表情感分析,similarity代表相似度计算,mrc代表阅读理解)
-模型运行及依赖环境请参考下方的“平台使用”。 - - -## 平台使用 -### 环境准备 -代码运行需要 Linux 主机,Python 3.8(推荐,其他低版本未测试过) 和 PaddlePaddle 2.1 以上版本。 - -### 推荐的环境 - -* 操作系统 CentOS 7.5 -* Python 3.8.12 -* PaddlePaddle 2.1.0 -* PaddleNLP 2.2.4 - -除此之外,需要使用支持 GPU 的硬件环境。 - -### PaddlePaddle - -需要安装GPU版的PaddlePaddle。 - -``` -# GPU 版本 -pip3 install paddlepaddle-gpu -``` - -更多关于 PaddlePaddle 的安装教程、使用方法等请参考[官方文档](https://www.paddlepaddle.org.cn/#quick-start). - -### 第三方 Python 库 -除 PaddlePaddle 及其依赖之外,还依赖其它第三方 Python 库,位于代码根目录的 requirements.txt 文件中。 - -可使用 pip 一键安装 - -```pip3 install -r requirements.txt``` - -## 数据准备 -### 模型训练数据 -#### 情感分析任务: - -中文推荐使用ChnSentiCorp,英文推荐使用SST-2。本模块提供的中英文情感分析模型就是基于这两个数据集的。若修改训练数据集,请修改/model_interpretation/task/senti/pretrained_models/train.py (RoBERTa) 以及 /model_interpretation/task/senti/rnn/train.py (LSTM)。 - -[//]:数据集会被缓存到/home/work/.paddlenlp/datasets/目录下 - -#### 相似度计算: - -中文推荐使用LCQMC,英文推荐使用QQP。本模块提供的中英文相似度计算模型就是基于这两个数据集的,若修改训练数据集,请修改/model_interpretation/task/similarity/pretrained_models/train_pointwise.py(RoBERTa)以及/model_interpretation/task/similarity/simnet/train.py(LSTM)。 - -#### 阅读理解中英文: - -中文推荐使用[DuReader_Checklist](https://dataset-bj.cdn.bcebos.com/lic2021/dureader_checklist.dataset.tar.gz),英文推荐使用[SQUDA2](https://rajpurkar.github.io/SQuAD-explorer/dataset/train-v2.0.json)。请将阅读理解训练数据放置在/model_interpretation/task/mrc/data目录下。 - -### 下载预训练模型 - -使用paddlenlp框架自动缓存模型文件。 - -### 其他数据下载 -请运行download.sh自动下载 - -### 评测数据 -评测数据样例位于/model_interpretation/data/目录下,每一行为一条JSON格式的数据。 -#### 情感分析数据格式: - id: 数据的编号,作为该条数据识别key; - context:原文本数据; - sent_token:原文本数据的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应; - sample_type: 数据的类性,分为原始数据(ori)和扰动数据(disturb); - rel_ids:与原始数据关联的扰动数据的id列表(只有原始数据有); - -#### 相似度数据格式: - id:数据的编号,作为该条数据识别key; - query(英文中为sentence1):句子1的原文本数据; - title(英文中为sentence2):句子2的原文本数据; - text_q_seg:句子1的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应; - text_t_seg:句子2的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应; - sample_type: 数据的类性,分为原始数据(ori)和扰动数据(disturb); - rel_ids:与原始数据关联的扰动数据的id列表(只有原始数据有); - -#### 阅读理解数据格式: - id:数据的编号,作为该条数据识别key; - title:文章标题; - context:文章主体; - question:文章的问题; - sent_token:原文本数据的标准分词,注意:golden证据是基于该分词的,预测证据也需要与该分词对应; - sample_type: 数据的类性,分为原始数据(ori)和扰动数据(disturb); - rel_ids:与原始数据关联的扰动数据的id列表(只有原始数据有); -## 模型运行 -### 模型预测: - - model_interpretation/task/{task}/run_inter_all.sh (生成所有结果) - model_interpretation/task/{task}/run_inter.sh (生成单个配置的结果,配置可以选择不同的评估模型,以及不同的证据抽取方法、语言) - -(注:{task}可取值为["senti","similarity","mrc"],其中senti代表情感分析,similarity代表相似度计算,mrc代表阅读理解) - -### 证据抽取: - cd model_interpretation/rationale_extraction - ./generate.sh - -### 可解释评估: -#### 合理性(plausibility): - model_interpretation/evaluation/plausibility/run_f1.sh -#### 一致性(consistency): - model_interpretation/evaluation/consistency/run_map.sh -#### 忠诚性(faithfulness): - model_interpretation/evaluation/faithfulness/run_newp.sh - -### 评估报告 -中文情感分析评估报告样例: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
模型 + 证据抽取方法情感分析
AccMacro-F1MAPNew_P
LSTM + IG56.836.859.891.4
RoBERTa-base + IG62.436.448.748.9
RoBERTa-large + IG65.338.341.937.8
diff --git a/examples/model_interpretation/data/mrc_ch b/examples/model_interpretation/data/mrc_ch deleted file mode 100644 index 09a10298751f..000000000000 --- a/examples/model_interpretation/data/mrc_ch +++ /dev/null @@ -1,100 +0,0 @@ -{"id": 1, "title": "地瓜是红薯吗", "context": "地瓜不是红薯。地瓜一般生吃或者凉拌,外形是纺锤型的,有明显的瓣状结构,内里的肉是白色的,有清淡的药香味,生吃又脆又甜,常食用可以预防肝癌、胃癌,营养价值非常高。红薯是粗粮,也叫番薯山芋。它是一种属管状花目,旋花科一年生的草本植物,富含丰富的矿物质和维生素,而且非常耐饱。", "question": "地瓜和红薯一样吗", "sent_token": ["地", "瓜", "不", "是", "红", "薯", "。", "地", "瓜", "一", "般", "生", "吃", "或", "者", "凉", "拌", ",", "外", "形", "是", "纺", "锤", "型", "的", ",", "有", "明", "显", "的", "瓣", "状", "结", "构", ",", "内", "里", "的", "肉", "是", "白", "色", "的", ",", "有", "清", "淡", "的", "药", "香", "味", ",", "生", "吃", "又", "脆", "又", "甜", ",", "常", "食", "用", "可", "以", "预", "防", "肝", "癌", "、", "胃", "癌", ",", "营", "养", "价", "值", "非", "常", "高", "。", "红", "薯", "是", "粗", "粮", ",", "也", "叫", "番", "薯", "山", "芋", "。", "它", "是", "一", "种", "属", "管", "状", "花", "目", ",", "旋", "花", "科", "一", "年", "生", "的", "草", "本", "植", "物", ",", "富", "含", "丰", "富", "的", "矿", "物", "质", "和", "维", "生", "素", ",", "而", "且", "非", "常", "耐", "饱", "。", "地", "瓜", "是", "红", "薯", "吗"], "sample_type": "ori", "rel_ids": [1763]} -{"id": 5, "title": "已满多少岁的人犯贩卖毒品罪应负刑事责任", "context": "根据《刑法》第十七条:已满十六周岁的人犯罪,应当负刑事责任。已满十四周岁不满十六周岁的人,犯故意杀人、故意伤害致人重伤或者死亡、强奸、抢劫、贩卖毒品、放火、爆炸、投放危险物质罪的,应当负刑事责任。", "question": "已满几周岁的人贩卖毒品罪应当负刑事责任", "sent_token": ["根", "据", "《", "刑", "法", "》", "第", "十", "七", "条", ":", "已", "满", "十", "六", "周", "岁", "的", "人", "犯", "罪", ",", "应", "当", "负", "刑", "事", "责", "任", "。", "已", "满", "十", "四", "周", "岁", "不", "满", "十", "六", "周", "岁", "的", "人", ",", "犯", "故", "意", "杀", "人", "、", "故", "意", "伤", "害", "致", "人", "重", "伤", "或", "者", "死", "亡", "、", "强", "奸", "、", "抢", "劫", "、", "贩", "卖", "毒", "品", "、", "放", "火", "、", "爆", "炸", "、", "投", "放", "危", "险", "物", "质", "罪", "的", ",", "应", "当", "负", "刑", "事", "责", "任", "。", "已", "满", "多", "少", "岁", "的", "人", "犯", "贩", "卖", "毒", "品", "罪", "应", "负", "刑", "事", "责", "任"], "sample_type": "ori", "rel_ids": [1767]} -{"id": 10, "title": "读研跟考研有什么区别", "context": "考研和读研的区别在于概念和意义不同。考研是指考生通过考试来得到研究生的入学资格,而考生并不是硕士研究生;而读研是指学生在高校攻读硕士研究生的过程,学生身份已经是硕士研究生。这二者并不等同,而是有先后关系,也就是说考生只有通过考研,才能成为硕士研究生,然后在规定的学习时间内读研。", "question": "考研跟读研有什么区别", "sent_token": ["考", "研", "和", "读", "研", "的", "区", "别", "在", "于", "概", "念", "和", "意", "义", "不", "同", "。", "考", "研", "是", "指", "考", "生", "通", "过", "考", "试", "来", "得", "到", "研", "究", "生", "的", "入", "学", "资", "格", ",", "而", "考", "生", "并", "不", "是", "硕", "士", "研", "究", "生", ";", "而", "读", "研", "是", "指", "学", "生", "在", "高", "校", "攻", "读", "硕", "士", "研", "究", "生", "的", "过", "程", ",", "学", "生", "身", "份", "已", "经", "是", "硕", "士", "研", "究", "生", "。", "这", "二", "者", "并", "不", "等", "同", ",", "而", "是", "有", "先", "后", "关", "系", ",", "也", "就", "是", "说", "考", "生", "只", "有", "通", "过", "考", "研", ",", "才", "能", "成", "为", "硕", "士", "研", "究", "生", ",", "然", "后", "在", "规", "定", "的", "学", "习", "时", "间", "内", "读", "研", "。", "读", "研", "跟", "考", "研", "有", "什", "么", "区", "别"], "sample_type": "ori", "rel_ids": [1772]} -{"id": 12, "title": "多效唑能和磷酸二氢钾一起用吗", "context": "多效唑能和磷酸二氢钾一起用。多效唑是植物的生长调节剂,主要是控制作物疯长的。而磷酸二氢钾属于叶面肥,施用后可促使作物的叶色更加浓绿,根系发达,药效完全不同,也并不排斥,可以混合使用。不过要注意施用时要严格按照说明施加,不可过量,否则会阻碍生长。", "question": "磷酸二氢钾能和多效唑一起用吗", "sent_token": ["多", "效", "唑", "能", "和", "磷", "酸", "二", "氢", "钾", "一", "起", "用", "。", "多", "效", "唑", "是", "植", "物", "的", "生", "长", "调", "节", "剂", ",", "主", "要", "是", "控", "制", "作", "物", "疯", "长", "的", "。", "而", "磷", "酸", "二", "氢", "钾", "属", "于", "叶", "面", "肥", ",", "施", "用", "后", "可", "促", "使", "作", "物", "的", "叶", "色", "更", "加", "浓", "绿", ",", "根", "系", "发", "达", ",", "药", "效", "完", "全", "不", "同", ",", "也", "并", "不", "排", "斥", ",", "可", "以", "混", "合", "使", "用", "。", "不", "过", "要", "注", "意", "施", "用", "时", "要", "严", "格", "按", "照", "说", "明", "施", "加", ",", "不", "可", "过", "量", ",", "否", "则", "会", "阻", "碍", "生", "长", "。", "多", "效", "唑", "能", "和", "磷", "酸", "二", "氢", "钾", "一", "起", "用", "吗"], "sample_type": "ori", "rel_ids": [1774]} -{"id": 14, "title": "猫能吃蛋黄吗", "context": "猫咪是可以吃蛋黄的。这里特定煮熟的白水蛋,猫咪不能吃生鸡蛋,因为生鸡蛋中有细菌,常见的是沙门氏菌,容易引起猫腹泻脱水,而且饲喂猫咪最好的只饲喂蛋黄。虽然可以吃蛋黄,但是需要掌握好量,一般一周最多吃两三次就可了。蛋黄中也含有丰富的胆固醇,易引发猫咪患脂肪肝和高脂血病。", "question": "猫咪可以吃生蛋黄吗", "sent_token": ["猫", "咪", "是", "可", "以", "吃", "蛋", "黄", "的", "。", "这", "里", "特", "定", "煮", "熟", "的", "白", "水", "蛋", ",", "猫", "咪", "不", "能", "吃", "生", "鸡", "蛋", ",", "因", "为", "生", "鸡", "蛋", "中", "有", "细", "菌", ",", "常", "见", "的", "是", "沙", "门", "氏", "菌", ",", "容", "易", "引", "起", "猫", "腹", "泻", "脱", "水", ",", "而", "且", "饲", "喂", "猫", "咪", "最", "好", "的", "只", "饲", "喂", "蛋", "黄", "。", "虽", "然", "可", "以", "吃", "蛋", "黄", ",", "但", "是", "需", "要", "掌", "握", "好", "量", ",", "一", "般", "一", "周", "最", "多", "吃", "两", "三", "次", "就", "可", "了", "。", "蛋", "黄", "中", "也", "含", "有", "丰", "富", "的", "胆", "固", "醇", ",", "易", "引", "发", "猫", "咪", "患", "脂", "肪", "肝", "和", "高", "脂", "血", "病", "。", "猫", "能", "吃", "蛋", "黄", "吗"], "sample_type": "ori", "rel_ids": [1776]} -{"id": 18, "title": "最近深圳限行吗", "context": "现在由于疫情的影响,深圳市不限行的了,但是没有必要尽量还是少出门,出门也要做好一系列的防护措施才可以。因为虽然目前国内疫情形势有所缓和,但是这并不意味着疫情的结束,国外疫情形势还是很严峻的,境外输入案例较多。", "question": "最近深圳没有限行吗", "sent_token": ["现", "在", "由", "于", "疫", "情", "的", "影", "响", ",", "深", "圳", "市", "不", "限", "行", "的", "了", ",", "但", "是", "没", "有", "必", "要", "尽", "量", "还", "是", "少", "出", "门", ",", "出", "门", "也", "要", "做", "好", "一", "系", "列", "的", "防", "护", "措", "施", "才", "可", "以", "。", "因", "为", "虽", "然", "目", "前", "国", "内", "疫", "情", "形", "势", "有", "所", "缓", "和", ",", "但", "是", "这", "并", "不", "意", "味", "着", "疫", "情", "的", "结", "束", ",", "国", "外", "疫", "情", "形", "势", "还", "是", "很", "严", "峻", "的", ",", "境", "外", "输", "入", "案", "例", "较", "多", "。", "最", "近", "深", "圳", "限", "行", "吗"], "sample_type": "ori", "rel_ids": [1780]} -{"id": 19, "title": "合同签字不盖章有效吗", "context": "可能有效可能无效。只有签字没有公章的合同是否有法律效力要根据具体情况分析:如果合同是由单位的委托代理人在其权限范围内、或单位的法定代表人签的字,则合同有效。", "question": "合同不签字不盖章有效吗", "sent_token": ["可", "能", "有", "效", "可", "能", "无", "效", "。", "只", "有", "签", "字", "没", "有", "公", "章", "的", "合", "同", "是", "否", "有", "法", "律", "效", "力", "要", "根", "据", "具", "体", "情", "况", "分", "析", ":", "如", "果", "合", "同", "是", "由", "单", "位", "的", "委", "托", "代", "理", "人", "在", "其", "权", "限", "范", "围", "内", "、", "或", "单", "位", "的", "法", "定", "代", "表", "人", "签", "的", "字", ",", "则", "合", "同", "有", "效", "。", "合", "同", "签", "字", "不", "盖", "章", "有", "效", "吗"], "sample_type": "ori", "rel_ids": [1781]} -{"id": 27, "title": "", "context": "吴三桂(1612年-1678年10月2日),字长伯,一字月所,明朝辽东人,明末清初著名政治军事人物,吴周政权建立者吴周太祖。", "question": "吴三贵什么朝代", "sent_token": ["吴", "三", "桂", "(", "1612", "年", "-", "1678", "年", "10", "月", "2", "日", ")", ",", "字", "长", "伯", ",", "一", "字", "月", "所", ",", "明", "朝", "辽", "东", "人", ",", "明", "末", "清", "初", "著", "名", "政", "治", "军", "事", "人", "物", ",", "吴", "周", "政", "权", "建", "立", "者", "吴", "周", "太", "祖", "。"], "sample_type": "ori", "rel_ids": [1789]} -{"id": 34, "title": "狗狗为什么互相闻屁股", "context": "相互闻屁股是狗狗打招呼的一种方式。狗狗的嗅觉很敏感,它们可以用相互闻屁股来了解狗狗的配偶状况、饮食习惯等,因为狗狗的屁股后面有两个肛门腺,在肛门腺里面涵盖了很多的信息素。处在发情期的狗狗也会通过闻屁股来挑选自己的配偶。", "question": "狗狗为什么总是闻屁股", "sent_token": ["相", "互", "闻", "屁", "股", "是", "狗", "狗", "打", "招", "呼", "的", "一", "种", "方", "式", "。", "狗", "狗", "的", "嗅", "觉", "很", "敏", "感", ",", "它", "们", "可", "以", "用", "相", "互", "闻", "屁", "股", "来", "了", "解", "狗", "狗", "的", "配", "偶", "状", "况", "、", "饮", "食", "习", "惯", "等", ",", "因", "为", "狗", "狗", "的", "屁", "股", "后", "面", "有", "两", "个", "肛", "门", "腺", ",", "在", "肛", "门", "腺", "里", "面", "涵", "盖", "了", "很", "多", "的", "信", "息", "素", "。", "处", "在", "发", "情", "期", "的", "狗", "狗", "也", "会", "通", "过", "闻", "屁", "股", "来", "挑", "选", "自", "己", "的", "配", "偶", "。", "狗", "狗", "为", "什", "么", "互", "相", "闻", "屁", "股"], "sample_type": "ori", "rel_ids": [1796]} -{"id": 36, "title": "出租房隔音差怎么解决", "context": "可以在窗户上贴一层隔音膜,在粘贴过程中要注意,不要出现气泡,以免影响隔音效果。若想要隔音效果更好点,还可以购买一些密封条安装在窗户缝隙处,这也能起到更好的隔音效果。另外,室内使用的家具可以更换成木质的,这样同样能起到一定的吸音效果。", "question": "出租房隔音不好怎么解决", "sent_token": ["可", "以", "在", "窗", "户", "上", "贴", "一", "层", "隔", "音", "膜", ",", "在", "粘", "贴", "过", "程", "中", "要", "注", "意", ",", "不", "要", "出", "现", "气", "泡", ",", "以", "免", "影", "响", "隔", "音", "效", "果", "。", "若", "想", "要", "隔", "音", "效", "果", "更", "好", "点", ",", "还", "可", "以", "购", "买", "一", "些", "密", "封", "条", "安", "装", "在", "窗", "户", "缝", "隙", "处", ",", "这", "也", "能", "起", "到", "更", "好", "的", "隔", "音", "效", "果", "。", "另", "外", ",", "室", "内", "使", "用", "的", "家", "具", "可", "以", "更", "换", "成", "木", "质", "的", ",", "这", "样", "同", "样", "能", "起", "到", "一", "定", "的", "吸", "音", "效", "果", "。", "出", "租", "房", "隔", "音", "差", "怎", "么", "解", "决"], "sample_type": "ori", "rel_ids": [1798]} -{"id": 40, "title": "鬼迷心窍(李宗盛演唱歌曲)_百度百科", "context": "《鬼迷心窍》是1992年黄日华、周海媚主演台湾电视剧《末代皇孙》的主题曲,是由李宗盛作词、作曲、演唱,收录于1992年影视剧音乐合辑《滚石九大天王之十二出好戏》当中。", "question": "鬼迷心窍原唱", "sent_token": ["《", "鬼", "迷", "心", "窍", "》", "是", "1992", "年", "黄", "日", "华", "、", "周", "海", "媚", "主", "演", "台", "湾", "电", "视", "剧", "《", "末", "代", "皇", "孙", "》", "的", "主", "题", "曲", ",", "是", "由", "李", "宗", "盛", "作", "词", "、", "作", "曲", "、", "演", "唱", ",", "收", "录", "于", "1992", "年", "影", "视", "剧", "音", "乐", "合", "辑", "《", "滚", "石", "九", "大", "天", "王", "之", "十", "二", "出", "好", "戏", "》", "当", "中", "。", "鬼", "迷", "心", "窍", "(", "李", "宗", "盛", "演", "唱", "歌", "曲", ")", "_", "百", "度", "百", "科"], "sample_type": "ori", "rel_ids": [1802]} -{"id": 41, "title": "", "context": "白龙马,名著小说《西游记》中的重要角色。本是西海龙王三太子,因纵火烧毁玉帝赏赐的明珠而被西海龙王上天告忤逆,要被斩首。后因南海观世菩萨出面才免于死罪,被贬到蛇盘山鹰愁涧等待唐僧取经。之后又误吃唐僧所骑的白马,被菩萨点化,变身为白龙。", "question": "白龙马的真正身份", "sent_token": ["白", "龙", "马", ",", "名", "著", "小", "说", "《", "西", "游", "记", "》", "中", "的", "重", "要", "角", "色", "。", "本", "是", "西", "海", "龙", "王", "三", "太", "子", ",", "因", "纵", "火", "烧", "毁", "玉", "帝", "赏", "赐", "的", "明", "珠", "而", "被", "西", "海", "龙", "王", "上", "天", "告", "忤", "逆", ",", "要", "被", "斩", "首", "。", "后", "因", "南", "海", "观", "世", "菩", "萨", "出", "面", "才", "免", "于", "死", "罪", ",", "被", "贬", "到", "蛇", "盘", "山", "鹰", "愁", "涧", "等", "待", "唐", "僧", "取", "经", "。", "之", "后", "又", "误", "吃", "唐", "僧", "所", "骑", "的", "白", "马", ",", "被", "菩", "萨", "点", "化", ",", "变", "身", "为", "白", "龙", "。"], "sample_type": "ori", "rel_ids": [1803]} -{"id": 43, "title": "", "context": "《湮灭》是由派拉蒙影业出品的科幻惊悚片,由亚历克斯·加兰执导,娜塔莉·波特曼、詹妮弗·杰森·李、吉娜·罗德里格兹、泰莎·汤普森联合主演。该片于2018年2月23日在美国上映。影片根据杰夫·梵德米尔所著《遗落的南境》三部曲的首部同名小说改编,讲述了生物学家莉娜为了自己的丈夫,她自愿加入了科学考察探险小队,去研究美国领土一块被检疫隔离的生态灾害区域的故事。", "question": "湮灭什么类型", "sent_token": ["《", "湮", "灭", "》", "是", "由", "派", "拉", "蒙", "影", "业", "出", "品", "的", "科", "幻", "惊", "悚", "片", ",", "由", "亚", "历", "克", "斯", "·", "加", "兰", "执", "导", ",", "娜", "塔", "莉", "·", "波", "特", "曼", "、", "詹", "妮", "弗", "·", "杰", "森", "·", "李", "、", "吉", "娜", "·", "罗", "德", "里", "格", "兹", "、", "泰", "莎", "·", "汤", "普", "森", "联", "合", "主", "演", "。", "该", "片", "于", "2018", "年", "2", "月", "23", "日", "在", "美", "国", "上", "映", "。", "影", "片", "根", "据", "杰", "夫", "·", "梵", "德", "米", "尔", "所", "著", "《", "遗", "落", "的", "南", "境", "》", "三", "部", "曲", "的", "首", "部", "同", "名", "小", "说", "改", "编", ",", "讲", "述", "了", "生", "物", "学", "家", "莉", "娜", "为", "了", "自", "己", "的", "丈", "夫", ",", "她", "自", "愿", "加", "入", "了", "科", "学", "考", "察", "探", "险", "小", "队", ",", "去", "研", "究", "美", "国", "领", "土", "一", "块", "被", "检", "疫", "隔", "离", "的", "生", "态", "灾", "害", "区", "域", "的", "故", "事", "。"], "sample_type": "ori", "rel_ids": [1805]} -{"id": 45, "title": "", "context": "网球运动的起源及演变可以用四句话来概括:网球孕育在法国,诞生在英国,开始普及和形成高潮在美国,现盛行全世界。", "question": "网球起源于哪国?", "sent_token": ["网", "球", "运", "动", "的", "起", "源", "及", "演", "变", "可", "以", "用", "四", "句", "话", "来", "概", "括", ":", "网", "球", "孕", "育", "在", "法", "国", ",", "诞", "生", "在", "英", "国", ",", "开", "始", "普", "及", "和", "形", "成", "高", "潮", "在", "美", "国", ",", "现", "盛", "行", "全", "世", "界", "。"], "sample_type": "ori", "rel_ids": [1807]} -{"id": 48, "title": "单人挑战巫女大蛇悲鸣需要多少体力_单人挑战巫女大蛇悲鸣需要体力", "context": "阴阳师巫女大蛇悲鸣单人通关需要12点体力组队通关的话只需要8点体力,挑战巫女大蛇悲鸣的体力消耗是普通御魂副本的2倍。奖励掉落5星与6星御魂,经验强化狗粮4星青吉鬼。在御魂副本1-10层原本掉落的基础上,巫女大蛇·悲鸣新增了蚌精、幽谷响、轮入道、蝠翼、狂骨这5种御魂的掉落,每日掉落御魂种类增加到5。", "question": "阴阳师 组队挑战大蛇悲鸣需要多少体力", "sent_token": ["阴", "阳", "师", "巫", "女", "大", "蛇", "悲", "鸣", "单", "人", "通", "关", "需", "要", "12", "点", "体", "力", "组", "队", "通", "关", "的", "话", "只", "需", "要", "8", "点", "体", "力", ",", "挑", "战", "巫", "女", "大", "蛇", "悲", "鸣", "的", "体", "力", "消", "耗", "是", "普", "通", "御", "魂", "副", "本", "的", "2", "倍", "。", "奖", "励", "掉", "落", "5", "星", "与", "6", "星", "御", "魂", ",", "经", "验", "强", "化", "狗", "粮", "4", "星", "青", "吉", "鬼", "。", "在", "御", "魂", "副", "本", "1", "-", "10", "层", "原", "本", "掉", "落", "的", "基", "础", "上", ",", "巫", "女", "大", "蛇", "·", "悲", "鸣", "新", "增", "了", "蚌", "精", "、", "幽", "谷", "响", "、", "轮", "入", "道", "、", "蝠", "翼", "、", "狂", "骨", "这", "5", "种", "御", "魂", "的", "掉", "落", ",", "每", "日", "掉", "落", "御", "魂", "种", "类", "增", "加", "到", "5", "。", "单", "人", "挑", "战", "巫", "女", "大", "蛇", "悲", "鸣", "需", "要", "多", "少", "体", "力", "_", "单", "人", "挑", "战", "巫", "女", "大", "蛇", "悲", "鸣", "需", "要", "体", "力"], "sample_type": "ori", "rel_ids": [1810]} -{"id": 53, "title": "", "context": "人类的心脏位于胸腔中部偏左,体积约相当于一个拳头大小,重量约350克。女性的心脏通常要比男性的体积小且重量轻。人的心脏外形像桃子,位于横膈之上,两肺间而偏左。", "question": "人类心脏多少斤", "sent_token": ["人", "类", "的", "心", "脏", "位", "于", "胸", "腔", "中", "部", "偏", "左", ",", "体", "积", "约", "相", "当", "于", "一", "个", "拳", "头", "大", "小", ",", "重", "量", "约", "350", "克", "。", "女", "性", "的", "心", "脏", "通", "常", "要", "比", "男", "性", "的", "体", "积", "小", "且", "重", "量", "轻", "。", "人", "的", "心", "脏", "外", "形", "像", "桃", "子", ",", "位", "于", "横", "膈", "之", "上", ",", "两", "肺", "间", "而", "偏", "左", "。"], "sample_type": "ori", "rel_ids": [1815]} -{"id": 54, "title": "紫菜变成紫色还能吃吗-有来医生", "context": "如果紫菜变成紫色的情况下,主要考虑还是紫菜受潮引起的,紫菜受潮以后容易滋生细菌,营养物质也会丧失,口感也会变差,一般情况下,建议不要食用,以免导致消化道的不良反应。紫菜中含有的营养物质是很丰富的,含有丰富的锌元素和铁元素,每天适当的吃一点,可以预防缺铁性贫血,可以预防缺锌引起的反复性口腔溃疡,可以增进食欲。", "question": "海苔回潮了还能吃吗", "sent_token": ["如", "果", "紫", "菜", "变", "成", "紫", "色", "的", "情", "况", "下", ",", "主", "要", "考", "虑", "还", "是", "紫", "菜", "受", "潮", "引", "起", "的", ",", "紫", "菜", "受", "潮", "以", "后", "容", "易", "滋", "生", "细", "菌", ",", "营", "养", "物", "质", "也", "会", "丧", "失", ",", "口", "感", "也", "会", "变", "差", ",", "一", "般", "情", "况", "下", ",", "建", "议", "不", "要", "食", "用", ",", "以", "免", "导", "致", "消", "化", "道", "的", "不", "良", "反", "应", "。", "紫", "菜", "中", "含", "有", "的", "营", "养", "物", "质", "是", "很", "丰", "富", "的", ",", "含", "有", "丰", "富", "的", "锌", "元", "素", "和", "铁", "元", "素", ",", "每", "天", "适", "当", "的", "吃", "一", "点", ",", "可", "以", "预", "防", "缺", "铁", "性", "贫", "血", ",", "可", "以", "预", "防", "缺", "锌", "引", "起", "的", "反", "复", "性", "口", "腔", "溃", "疡", ",", "可", "以", "增", "进", "食", "欲", "。", "紫", "菜", "变", "成", "紫", "色", "还", "能", "吃", "吗", "-", "有", "来", "医", "生"], "sample_type": "ori", "rel_ids": [1816]} -{"id": 68, "title": "", "context": "穿上盔甲后,托尼变身成了复仇者联盟中惩恶扬善的钢铁侠。复仇者联盟2:奥创纪元钢铁侠是美国演员小罗伯特·唐尼演的。小罗伯特唐尼的电影钢铁侠扮演者小罗伯特·。", "question": "谁演过钢铁侠", "sent_token": ["穿", "上", "盔", "甲", "后", ",", "托", "尼", "变", "身", "成", "了", "复", "仇", "者", "联", "盟", "中", "惩", "恶", "扬", "善", "的", "钢", "铁", "侠", "。", "复", "仇", "者", "联", "盟", "2", ":", "奥", "创", "纪", "元", "钢", "铁", "侠", "是", "美", "国", "演", "员", "小", "罗", "伯", "特", "·", "唐", "尼", "演", "的", "。", "小", "罗", "伯", "特", "唐", "尼", "的", "电", "影", "钢", "铁", "侠", "扮", "演", "者", "小", "罗", "伯", "特", "·", "。"], "sample_type": "ori", "rel_ids": [1830]} -{"id": 69, "title": "人间正道是沧桑是什么意思_酷知经验网", "context": "天若有情天亦老,人间正道是沧桑:上句借用李贺《金铜仙人辞汉歌》中诗句,原诗说的是汉武帝时制作的极贵重的宝物金铜仙人像,在三国时被魏明帝由长安迁往洛阳的传说。原句的意思是,对于这样的人间恨事,天若有情,也要因悲伤而衰老。", "question": "人间正道是沧桑上一句", "sent_token": ["天", "若", "有", "情", "天", "亦", "老", ",", "人", "间", "正", "道", "是", "沧", "桑", ":", "上", "句", "借", "用", "李", "贺", "《", "金", "铜", "仙", "人", "辞", "汉", "歌", "》", "中", "诗", "句", ",", "原", "诗", "说", "的", "是", "汉", "武", "帝", "时", "制", "作", "的", "极", "贵", "重", "的", "宝", "物", "金", "铜", "仙", "人", "像", ",", "在", "三", "国", "时", "被", "魏", "明", "帝", "由", "长", "安", "迁", "往", "洛", "阳", "的", "传", "说", "。", "原", "句", "的", "意", "思", "是", ",", "对", "于", "这", "样", "的", "人", "间", "恨", "事", ",", "天", "若", "有", "情", ",", "也", "要", "因", "悲", "伤", "而", "衰", "老", "。", "人", "间", "正", "道", "是", "沧", "桑", "是", "什", "么", "意", "思", "_", "酷", "知", "经", "验", "网"], "sample_type": "ori", "rel_ids": [1831]} -{"id": 72, "title": "", "context": "《艺妓回忆录》根据美国作家阿瑟-高顿的同名小说改编。于2005年12月1日上映,由章子怡·巩俐·杨紫琼等共同演绎。是一部时长约140分钟的电影。全篇充满着古典美,时代背景从1929年开始延续到二战结束,女主人公回忆了自己从小拼命挣扎、历尽荣辱的人生经历。", "question": "艺妓回忆录多长时间", "sent_token": ["《", "艺", "妓", "回", "忆", "录", "》", "根", "据", "美", "国", "作", "家", "阿", "瑟", "-", "高", "顿", "的", "同", "名", "小", "说", "改", "编", "。", "于", "2005", "年", "12", "月", "1", "日", "上", "映", ",", "由", "章", "子", "怡", "·", "巩", "俐", "·", "杨", "紫", "琼", "等", "共", "同", "演", "绎", "。", "是", "一", "部", "时", "长", "约", "140", "分", "钟", "的", "电", "影", "。", "全", "篇", "充", "满", "着", "古", "典", "美", ",", "时", "代", "背", "景", "从", "1929", "年", "开", "始", "延", "续", "到", "二", "战", "结", "束", ",", "女", "主", "人", "公", "回", "忆", "了", "自", "己", "从", "小", "拼", "命", "挣", "扎", "、", "历", "尽", "荣", "辱", "的", "人", "生", "经", "历", "。"], "sample_type": "ori", "rel_ids": [1834]} -{"id": 77, "title": "痛风挂哪个科室比较好?_39健康问答_39健康网", "context": "痛风属于代谢风湿性疾病,目前主要是在风湿免疫科治疗,所以患者需要挂风湿免疫科。风湿免疫科在绝大多数三级甲等医院都有独立的科室。由于这个科是一个新兴学科,在很多县级医院还没有成立,患者可以到内分泌科就诊,挂内分泌科。如果这两个科都没有患者,可以到骨科就诊,因为痛风首发表现是急性痛风性关节炎,骨科大夫对痛风也有一定的了解。", "question": "痛风属于什么类型疾病", "sent_token": ["痛", "风", "属", "于", "代", "谢", "风", "湿", "性", "疾", "病", ",", "目", "前", "主", "要", "是", "在", "风", "湿", "免", "疫", "科", "治", "疗", ",", "所", "以", "患", "者", "需", "要", "挂", "风", "湿", "免", "疫", "科", "。", "风", "湿", "免", "疫", "科", "在", "绝", "大", "多", "数", "三", "级", "甲", "等", "医", "院", "都", "有", "独", "立", "的", "科", "室", "。", "由", "于", "这", "个", "科", "是", "一", "个", "新", "兴", "学", "科", ",", "在", "很", "多", "县", "级", "医", "院", "还", "没", "有", "成", "立", ",", "患", "者", "可", "以", "到", "内", "分", "泌", "科", "就", "诊", ",", "挂", "内", "分", "泌", "科", "。", "如", "果", "这", "两", "个", "科", "都", "没", "有", "患", "者", ",", "可", "以", "到", "骨", "科", "就", "诊", ",", "因", "为", "痛", "风", "首", "发", "表", "现", "是", "急", "性", "痛", "风", "性", "关", "节", "炎", ",", "骨", "科", "大", "夫", "对", "痛", "风", "也", "有", "一", "定", "的", "了", "解", "。", "痛", "风", "挂", "哪", "个", "科", "室", "比", "较", "好", "?", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "ori", "rel_ids": [1839]} -{"id": 82, "title": "阴阳师武士之灵生前被谁所杀_游侠网", "context": "从武士之灵的传记中可以得知,武士之灵生前是被茨木童子所击杀。该问题来自游戏内的逢魔密信,正确回答问题之后就有机会获得包括金币、体力、勾玉和结界卡在内的多种游戏内道具物资奖励。", "question": "武士之灵生前被谁所杀", "sent_token": ["从", "武", "士", "之", "灵", "的", "传", "记", "中", "可", "以", "得", "知", ",", "武", "士", "之", "灵", "生", "前", "是", "被", "茨", "木", "童", "子", "所", "击", "杀", "。", "该", "问", "题", "来", "自", "游", "戏", "内", "的", "逢", "魔", "密", "信", ",", "正", "确", "回", "答", "问", "题", "之", "后", "就", "有", "机", "会", "获", "得", "包", "括", "金", "币", "、", "体", "力", "、", "勾", "玉", "和", "结", "界", "卡", "在", "内", "的", "多", "种", "游", "戏", "内", "道", "具", "物", "资", "奖", "励", "。", "阴", "阳", "师", "武", "士", "之", "灵", "生", "前", "被", "谁", "所", "杀", "_", "游", "侠", "网"], "sample_type": "ori", "rel_ids": [1844]} -{"id": 88, "title": "中医肾主什么-有来医生", "context": "根据中医基础理论,肾主水、主纳气、主二便、主藏精。肾主水,是指全身的水液代谢都是在肾阳的气化温煦作用下,从而分布到全身,然后再通过呼吸、二便将代谢废物排除体外。肾主纳气,是指肾能够使人体维持正常的呼吸深度。肾主二便,人的大小便需要在肾的作用下,才能够正常的排泄,否则就会出现异常的改变,比如大小便失禁、大便稀薄等情况。肾主藏精,是指五脏六腑化生的精气,最后都是储存在肾脏,反过来肾脏所藏的精气,又能够推动各脏腑的功能。", "question": "肾主什么", "sent_token": ["根", "据", "中", "医", "基", "础", "理", "论", ",", "肾", "主", "水", "、", "主", "纳", "气", "、", "主", "二", "便", "、", "主", "藏", "精", "。", "肾", "主", "水", ",", "是", "指", "全", "身", "的", "水", "液", "代", "谢", "都", "是", "在", "肾", "阳", "的", "气", "化", "温", "煦", "作", "用", "下", ",", "从", "而", "分", "布", "到", "全", "身", ",", "然", "后", "再", "通", "过", "呼", "吸", "、", "二", "便", "将", "代", "谢", "废", "物", "排", "除", "体", "外", "。", "肾", "主", "纳", "气", ",", "是", "指", "肾", "能", "够", "使", "人", "体", "维", "持", "正", "常", "的", "呼", "吸", "深", "度", "。", "肾", "主", "二", "便", ",", "人", "的", "大", "小", "便", "需", "要", "在", "肾", "的", "作", "用", "下", ",", "才", "能", "够", "正", "常", "的", "排", "泄", ",", "否", "则", "就", "会", "出", "现", "异", "常", "的", "改", "变", ",", "比", "如", "大", "小", "便", "失", "禁", "、", "大", "便", "稀", "薄", "等", "情", "况", "。", "肾", "主", "藏", "精", ",", "是", "指", "五", "脏", "六", "腑", "化", "生", "的", "精", "气", ",", "最", "后", "都", "是", "储", "存", "在", "肾", "脏", ",", "反", "过", "来", "肾", "脏", "所", "藏", "的", "精", "气", ",", "又", "能", "够", "推", "动", "各", "脏", "腑", "的", "功", "能", "。", "中", "医", "肾", "主", "什", "么", "-", "有", "来", "医", "生"], "sample_type": "ori", "rel_ids": [1850]} -{"id": 91, "title": "1963年属什么生肖年_十二生肖_卜易居", "context": "1963年属什么生肖年,葵卯兔年,属兔之人举止文雅,谈吐随和,为人恭良谦逊,与人交往如慕春风,学习能力超群,敏捷果断,安贫乐道。虽性子柔弱,但韧性极强,绝境之中能力惊人,缺点则是难以坚持原则,随波逐流。", "question": "1963年属什么生肖", "sent_token": ["1963", "年", "属", "什", "么", "生", "肖", "年", ",", "葵", "卯", "兔", "年", ",", "属", "兔", "之", "人", "举", "止", "文", "雅", ",", "谈", "吐", "随", "和", ",", "为", "人", "恭", "良", "谦", "逊", ",", "与", "人", "交", "往", "如", "慕", "春", "风", ",", "学", "习", "能", "力", "超", "群", ",", "敏", "捷", "果", "断", ",", "安", "贫", "乐", "道", "。", "虽", "性", "子", "柔", "弱", ",", "但", "韧", "性", "极", "强", ",", "绝", "境", "之", "中", "能", "力", "惊", "人", ",", "缺", "点", "则", "是", "难", "以", "坚", "持", "原", "则", ",", "随", "波", "逐", "流", "。", "1963", "年", "属", "什", "么", "生", "肖", "年", "_", "十", "二", "生", "肖", "_", "卜", "易", "居"], "sample_type": "ori", "rel_ids": [1853]} -{"id": 92, "title": "食管和食道一样吗-有来医生", "context": "食管和食道是没有区别的,食管是医学上的称谓,而食道是民间的一种说法。两者都指从咽喉部到胃贲门之间的管道。食管可以分为颈段和胸段,而胸段又分为胸上段、胸中段和胸下段。食管本身有3个生理性的狭窄,这也是某些食管疾病发生的基础。常见的食管疾病包括食管炎、食管息肉、食管癌、食管狭窄、胃食管反流症、巴雷特食管等。可以通过消化道造影以及胃镜来进一步明确。", "question": "食管跟食道一样吗", "sent_token": ["食", "管", "和", "食", "道", "是", "没", "有", "区", "别", "的", ",", "食", "管", "是", "医", "学", "上", "的", "称", "谓", ",", "而", "食", "道", "是", "民", "间", "的", "一", "种", "说", "法", "。", "两", "者", "都", "指", "从", "咽", "喉", "部", "到", "胃", "贲", "门", "之", "间", "的", "管", "道", "。", "食", "管", "可", "以", "分", "为", "颈", "段", "和", "胸", "段", ",", "而", "胸", "段", "又", "分", "为", "胸", "上", "段", "、", "胸", "中", "段", "和", "胸", "下", "段", "。", "食", "管", "本", "身", "有", "3", "个", "生", "理", "性", "的", "狭", "窄", ",", "这", "也", "是", "某", "些", "食", "管", "疾", "病", "发", "生", "的", "基", "础", "。", "常", "见", "的", "食", "管", "疾", "病", "包", "括", "食", "管", "炎", "、", "食", "管", "息", "肉", "、", "食", "管", "癌", "、", "食", "管", "狭", "窄", "、", "胃", "食", "管", "反", "流", "症", "、", "巴", "雷", "特", "食", "管", "等", "。", "可", "以", "通", "过", "消", "化", "道", "造", "影", "以", "及", "胃", "镜", "来", "进", "一", "步", "明", "确", "。", "食", "管", "和", "食", "道", "一", "样", "吗", "-", "有", "来", "医", "生"], "sample_type": "ori", "rel_ids": [1854]} -{"id": 101, "title": "农历六月二十四是什么星座-星座乐", "context": "农历六月二十四是狮子座。狮子座,火象星座,位于黄道十二宫之第五宫,出生日期为阳历7月23日-8月22日。狮子座是英雄主义者,他们乐观,乐于助人,喜欢帮助弱势群体。他们天生自带光环,特立独行,做事豪爽大气,讲话淡定从容,从不扭扭捏捏畏畏缩缩。而且心思细腻,做事完整准确,善于将自己的优点发挥到极致。", "question": "农历六月二十四是什么星座", "sent_token": ["农", "历", "六", "月", "二", "十", "四", "是", "狮", "子", "座", "。", "狮", "子", "座", ",", "火", "象", "星", "座", ",", "位", "于", "黄", "道", "十", "二", "宫", "之", "第", "五", "宫", ",", "出", "生", "日", "期", "为", "阳", "历", "7", "月", "23", "日", "-", "8", "月", "22", "日", "。", "狮", "子", "座", "是", "英", "雄", "主", "义", "者", ",", "他", "们", "乐", "观", ",", "乐", "于", "助", "人", ",", "喜", "欢", "帮", "助", "弱", "势", "群", "体", "。", "他", "们", "天", "生", "自", "带", "光", "环", ",", "特", "立", "独", "行", ",", "做", "事", "豪", "爽", "大", "气", ",", "讲", "话", "淡", "定", "从", "容", ",", "从", "不", "扭", "扭", "捏", "捏", "畏", "畏", "缩", "缩", "。", "而", "且", "心", "思", "细", "腻", ",", "做", "事", "完", "整", "准", "确", ",", "善", "于", "将", "自", "己", "的", "优", "点", "发", "挥", "到", "极", "致", "。", "农", "历", "六", "月", "二", "十", "四", "是", "什", "么", "星", "座", "-", "星", "座", "乐"], "sample_type": "ori", "rel_ids": [1863]} -{"id": 105, "title": "", "context": "非法持有海洛因10克以上就构成非法持有毒品罪非法持有毒品罪,是指明知是鸦片、海洛因、甲基苯丙胺或者其他毒品,而非法持有且数量较大的行为。非法持有毒品达到一定数量才构成犯罪。", "question": "海洛因几克属于犯罪", "sent_token": ["非", "法", "持", "有", "海", "洛", "因", "10", "克", "以", "上", "就", "构", "成", "非", "法", "持", "有", "毒", "品", "罪", "非", "法", "持", "有", "毒", "品", "罪", ",", "是", "指", "明", "知", "是", "鸦", "片", "、", "海", "洛", "因", "、", "甲", "基", "苯", "丙", "胺", "或", "者", "其", "他", "毒", "品", ",", "而", "非", "法", "持", "有", "且", "数", "量", "较", "大", "的", "行", "为", "。", "非", "法", "持", "有", "毒", "品", "达", "到", "一", "定", "数", "量", "才", "构", "成", "犯", "罪", "。"], "sample_type": "ori", "rel_ids": [1867]} -{"id": 115, "title": "地方志书每几年左右编修一次_高三网", "context": "地方志书每20年左右编修一次。每一轮地方志书编修工作完成后,负责地方志工作的机构在编纂地方综合年鉴、搜集资料以及向社会提供咨询服务的同时,启动新一轮地方志书的续修工作。", "question": "地方质数没几年编修一次", "sent_token": ["地", "方", "志", "书", "每", "20", "年", "左", "右", "编", "修", "一", "次", "。", "每", "一", "轮", "地", "方", "志", "书", "编", "修", "工", "作", "完", "成", "后", ",", "负", "责", "地", "方", "志", "工", "作", "的", "机", "构", "在", "编", "纂", "地", "方", "综", "合", "年", "鉴", "、", "搜", "集", "资", "料", "以", "及", "向", "社", "会", "提", "供", "咨", "询", "服", "务", "的", "同", "时", ",", "启", "动", "新", "一", "轮", "地", "方", "志", "书", "的", "续", "修", "工", "作", "。", "地", "方", "志", "书", "每", "几", "年", "左", "右", "编", "修", "一", "次", "_", "高", "三", "网"], "sample_type": "ori", "rel_ids": [1877]} -{"id": 117, "title": "", "context": "《正气歌》是南宋诗人文天祥在狱中写的一首五言古诗。诗的开头即点出浩然正气存乎天地之间,至时穷之际,必然会显示出来。随后连用十二个典故,都是历史上有名的人物,他们的所作所为凛然显示出浩然正气的力量。接下来八句说明浩然正气贯日月,立天地,为三纲之命,道义之根。最后联系到自己的命运,自己虽然兵败被俘,处在极其恶劣的牢狱之中,但是由于自己一身正气,各种邪气和疾病都不能侵犯自己,因此自己能够坦然面对自己的命运。全诗感情深沉、气壮山河、直抒胸臆、毫无雕饰,充分体现了作者崇高的民族气节和强烈的爱国主义精神。", "question": "正气歌》的作者是", "sent_token": ["《", "正", "气", "歌", "》", "是", "南", "宋", "诗", "人", "文", "天", "祥", "在", "狱", "中", "写", "的", "一", "首", "五", "言", "古", "诗", "。", "诗", "的", "开", "头", "即", "点", "出", "浩", "然", "正", "气", "存", "乎", "天", "地", "之", "间", ",", "至", "时", "穷", "之", "际", ",", "必", "然", "会", "显", "示", "出", "来", "。", "随", "后", "连", "用", "十", "二", "个", "典", "故", ",", "都", "是", "历", "史", "上", "有", "名", "的", "人", "物", ",", "他", "们", "的", "所", "作", "所", "为", "凛", "然", "显", "示", "出", "浩", "然", "正", "气", "的", "力", "量", "。", "接", "下", "来", "八", "句", "说", "明", "浩", "然", "正", "气", "贯", "日", "月", ",", "立", "天", "地", ",", "为", "三", "纲", "之", "命", ",", "道", "义", "之", "根", "。", "最", "后", "联", "系", "到", "自", "己", "的", "命", "运", ",", "自", "己", "虽", "然", "兵", "败", "被", "俘", ",", "处", "在", "极", "其", "恶", "劣", "的", "牢", "狱", "之", "中", ",", "但", "是", "由", "于", "自", "己", "一", "身", "正", "气", ",", "各", "种", "邪", "气", "和", "疾", "病", "都", "不", "能", "侵", "犯", "自", "己", ",", "因", "此", "自", "己", "能", "够", "坦", "然", "面", "对", "自", "己", "的", "命", "运", "。", "全", "诗", "感", "情", "深", "沉", "、", "气", "壮", "山", "河", "、", "直", "抒", "胸", "臆", "、", "毫", "无", "雕", "饰", ",", "充", "分", "体", "现", "了", "作", "者", "崇", "高", "的", "民", "族", "气", "节", "和", "强", "烈", "的", "爱", "国", "主", "义", "精", "神", "。"], "sample_type": "ori", "rel_ids": [1879]} -{"id": 121, "title": "狗狗皮肤上长小脓包怎么回事", "context": "狗狗身上长脓包,是因为真菌感染或是寄生虫感染所致。如不及时处理脓包,会导致扩散全身,甚至溃烂。建议方法:戴上手套,把狗狗身上长脓包的地方挤一挤;然后用碘伏直接喷在患处;如有脓血可用医用纱布给它包在患处,等药效吸收后,取掉纱布;碘伏具有抗菌、消炎的作用,一天可以喷两三次;处理完狗狗伤口后用肥皂洗手。狗狗洗澡要用狗狗专门的沐浴露;洗后立即做吹干处理;定时用狗狗专用梳子,清理身上多余的杂毛;尽量带狗狗去干净的地方玩,回家后把狗狗的脚用抹布抹一次;多注意狗舍卫生,定时做消毒处理。", "question": "狗狗身上长小脓包是怎么回事", "sent_token": ["狗", "狗", "身", "上", "长", "脓", "包", ",", "是", "因", "为", "真", "菌", "感", "染", "或", "是", "寄", "生", "虫", "感", "染", "所", "致", "。", "如", "不", "及", "时", "处", "理", "脓", "包", ",", "会", "导", "致", "扩", "散", "全", "身", ",", "甚", "至", "溃", "烂", "。", "建", "议", "方", "法", ":", "戴", "上", "手", "套", ",", "把", "狗", "狗", "身", "上", "长", "脓", "包", "的", "地", "方", "挤", "一", "挤", ";", "然", "后", "用", "碘", "伏", "直", "接", "喷", "在", "患", "处", ";", "如", "有", "脓", "血", "可", "用", "医", "用", "纱", "布", "给", "它", "包", "在", "患", "处", ",", "等", "药", "效", "吸", "收", "后", ",", "取", "掉", "纱", "布", ";", "碘", "伏", "具", "有", "抗", "菌", "、", "消", "炎", "的", "作", "用", ",", "一", "天", "可", "以", "喷", "两", "三", "次", ";", "处", "理", "完", "狗", "狗", "伤", "口", "后", "用", "肥", "皂", "洗", "手", "。", "狗", "狗", "洗", "澡", "要", "用", "狗", "狗", "专", "门", "的", "沐", "浴", "露", ";", "洗", "后", "立", "即", "做", "吹", "干", "处", "理", ";", "定", "时", "用", "狗", "狗", "专", "用", "梳", "子", ",", "清", "理", "身", "上", "多", "余", "的", "杂", "毛", ";", "尽", "量", "带", "狗", "狗", "去", "干", "净", "的", "地", "方", "玩", ",", "回", "家", "后", "把", "狗", "狗", "的", "脚", "用", "抹", "布", "抹", "一", "次", ";", "多", "注", "意", "狗", "舍", "卫", "生", ",", "定", "时", "做", "消", "毒", "处", "理", "。", "狗", "狗", "皮", "肤", "上", "长", "小", "脓", "包", "怎", "么", "回", "事"], "sample_type": "ori", "rel_ids": [1883]} -{"id": 123, "title": "", "context": "新梓学校成立于2007年9月,是一所公办九年一贯制学校,座落在龙岗街道新生社区,紧邻水岸新都花园,交通十分便利。校园占地27500平方米,建筑面积16285平方米。", "question": "新梓学校地址", "sent_token": ["新", "梓", "学", "校", "成", "立", "于", "2007", "年", "9", "月", ",", "是", "一", "所", "公", "办", "九", "年", "一", "贯", "制", "学", "校", ",", "座", "落", "在", "龙", "岗", "街", "道", "新", "生", "社", "区", ",", "紧", "邻", "水", "岸", "新", "都", "花", "园", ",", "交", "通", "十", "分", "便", "利", "。", "校", "园", "占", "地", "27500", "平", "方", "米", ",", "建", "筑", "面", "积", "16285", "平", "方", "米", "。"], "sample_type": "ori", "rel_ids": [1885]} -{"id": 124, "title": "敷面膜脸痒是缺水吗?教你正确的认识_皮肤", "context": "当我们在洗完澡的时候,或者是敷面膜发现皮肤有一种痒痒的感觉,如果你确定面膜的质量是没有问题的,并且也确定你对这款面膜的物质没有过敏的情况下,皮肤出现痒的感觉,那可能的原因就是由于皮肤缺水。因为你的皮肤太缺水了,在给皮肤补水的时候就会出现一种痒的情况严重的时候,甚至会有刺痛的感觉。会让人觉得很不舒服,水分充足后会缓解。", "question": "脸痒是缺水吗", "sent_token": ["当", "我", "们", "在", "洗", "完", "澡", "的", "时", "候", ",", "或", "者", "是", "敷", "面", "膜", "发", "现", "皮", "肤", "有", "一", "种", "痒", "痒", "的", "感", "觉", ",", "如", "果", "你", "确", "定", "面", "膜", "的", "质", "量", "是", "没", "有", "问", "题", "的", ",", "并", "且", "也", "确", "定", "你", "对", "这", "款", "面", "膜", "的", "物", "质", "没", "有", "过", "敏", "的", "情", "况", "下", ",", "皮", "肤", "出", "现", "痒", "的", "感", "觉", ",", "那", "可", "能", "的", "原", "因", "就", "是", "由", "于", "皮", "肤", "缺", "水", "。", "因", "为", "你", "的", "皮", "肤", "太", "缺", "水", "了", ",", "在", "给", "皮", "肤", "补", "水", "的", "时", "候", "就", "会", "出", "现", "一", "种", "痒", "的", "情", "况", "严", "重", "的", "时", "候", ",", "甚", "至", "会", "有", "刺", "痛", "的", "感", "觉", "。", "会", "让", "人", "觉", "得", "很", "不", "舒", "服", ",", "水", "分", "充", "足", "后", "会", "缓", "解", "。", "敷", "面", "膜", "脸", "痒", "是", "缺", "水", "吗", "?", "教", "你", "正", "确", "的", "认", "识", "_", "皮", "肤"], "sample_type": "ori", "rel_ids": [1886]} -{"id": 126, "title": "无痛人流和药流哪个伤害比较小-有来医生", "context": "无痛人工流产手术和药物流产手术,相对比来说,还是药物流产伤害比较大。因为药物流产,阴道流血时间会比人工流产的阴道流血时间要长,一般人工流产,阴道流血时间不超过7天,而药物流产阴道流血的时间往往在15-20天左右才会干净。一直在有流血的状况下,宫口就是开放的,阴道又跟外界相通,跟宫颈又相通,这样造成细菌侵入感染的机会就会增加,所以容易导致生殖道的感染。另外,药物流产造成不全流产的可能性会大一些,需要做清宫手术。这样就可以想象出药物流产会比无痛人流伤害更大一些。", "question": "无痛人流和药流哪个伤害比较小", "sent_token": ["无", "痛", "人", "工", "流", "产", "手", "术", "和", "药", "物", "流", "产", "手", "术", ",", "相", "对", "比", "来", "说", ",", "还", "是", "药", "物", "流", "产", "伤", "害", "比", "较", "大", "。", "因", "为", "药", "物", "流", "产", ",", "阴", "道", "流", "血", "时", "间", "会", "比", "人", "工", "流", "产", "的", "阴", "道", "流", "血", "时", "间", "要", "长", ",", "一", "般", "人", "工", "流", "产", ",", "阴", "道", "流", "血", "时", "间", "不", "超", "过", "7", "天", ",", "而", "药", "物", "流", "产", "阴", "道", "流", "血", "的", "时", "间", "往", "往", "在", "15", "-", "20", "天", "左", "右", "才", "会", "干", "净", "。", "一", "直", "在", "有", "流", "血", "的", "状", "况", "下", ",", "宫", "口", "就", "是", "开", "放", "的", ",", "阴", "道", "又", "跟", "外", "界", "相", "通", ",", "跟", "宫", "颈", "又", "相", "通", ",", "这", "样", "造", "成", "细", "菌", "侵", "入", "感", "染", "的", "机", "会", "就", "会", "增", "加", ",", "所", "以", "容", "易", "导", "致", "生", "殖", "道", "的", "感", "染", "。", "另", "外", ",", "药", "物", "流", "产", "造", "成", "不", "全", "流", "产", "的", "可", "能", "性", "会", "大", "一", "些", ",", "需", "要", "做", "清", "宫", "手", "术", "。", "这", "样", "就", "可", "以", "想", "象", "出", "药", "物", "流", "产", "会", "比", "无", "痛", "人", "流", "伤", "害", "更", "大", "一", "些", "。", "无", "痛", "人", "流", "和", "药", "流", "哪", "个", "伤", "害", "比", "较", "小", "-", "有", "来", "医", "生"], "sample_type": "ori", "rel_ids": [1888]} -{"id": 128, "title": "长期吃葡萄籽的副作用?_39健康问答_39健康网", "context": "长期吃葡萄籽不会有副作用,不用担心,葡萄籽中含有丰富的花青素,有美容养颜的功效。葡萄籽含有丰富的多种氨基酸、维生素及矿物质等,原花青素含量最高,有促进血液循环、保护视力、抗氧化去除自由基、降低血、保护心血管的作用,可以用于保健、美容。", "question": "葡萄籽能长期吃吗?有什么副作用?", "sent_token": ["长", "期", "吃", "葡", "萄", "籽", "不", "会", "有", "副", "作", "用", ",", "不", "用", "担", "心", ",", "葡", "萄", "籽", "中", "含", "有", "丰", "富", "的", "花", "青", "素", ",", "有", "美", "容", "养", "颜", "的", "功", "效", "。", "葡", "萄", "籽", "含", "有", "丰", "富", "的", "多", "种", "氨", "基", "酸", "、", "维", "生", "素", "及", "矿", "物", "质", "等", ",", "原", "花", "青", "素", "含", "量", "最", "高", ",", "有", "促", "进", "血", "液", "循", "环", "、", "保", "护", "视", "力", "、", "抗", "氧", "化", "去", "除", "自", "由", "基", "、", "降", "低", "血", "、", "保", "护", "心", "血", "管", "的", "作", "用", ",", "可", "以", "用", "于", "保", "健", "、", "美", "容", "。", "长", "期", "吃", "葡", "萄", "籽", "的", "副", "作", "用", "?", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "ori", "rel_ids": [1890]} -{"id": 132, "title": "红花哪里产的最好?_39健康问答_39健康网", "context": "红花在中国很多地方都是有种植的,比如河南,江苏,四川,河北等等。但是在众多产地中河南的商丘生产的红花应该是最好的了。红花有一种特殊的气味,特别香,味道稍微有点苦。红花是一种很好的植物,对人体有很好的保健作用。高血压患者可以服用一些,红花是有一定的降压作用的,另外还可以促进人体血液的循环,降低血脂。", "question": "世界上哪里的红花最好", "sent_token": ["红", "花", "在", "中", "国", "很", "多", "地", "方", "都", "是", "有", "种", "植", "的", ",", "比", "如", "河", "南", ",", "江", "苏", ",", "四", "川", ",", "河", "北", "等", "等", "。", "但", "是", "在", "众", "多", "产", "地", "中", "河", "南", "的", "商", "丘", "生", "产", "的", "红", "花", "应", "该", "是", "最", "好", "的", "了", "。", "红", "花", "有", "一", "种", "特", "殊", "的", "气", "味", ",", "特", "别", "香", ",", "味", "道", "稍", "微", "有", "点", "苦", "。", "红", "花", "是", "一", "种", "很", "好", "的", "植", "物", ",", "对", "人", "体", "有", "很", "好", "的", "保", "健", "作", "用", "。", "高", "血", "压", "患", "者", "可", "以", "服", "用", "一", "些", ",", "红", "花", "是", "有", "一", "定", "的", "降", "压", "作", "用", "的", ",", "另", "外", "还", "可", "以", "促", "进", "人", "体", "血", "液", "的", "循", "环", ",", "降", "低", "血", "脂", "。", "红", "花", "哪", "里", "产", "的", "最", "好", "?", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "ori", "rel_ids": [1894]} -{"id": 135, "title": "", "context": "梳妆台指用来化妆的家具装饰。梳妆台一词,在现代家居中,已经被业主、客户、家居设计师广泛用到,现在泛指家具梳妆台。梳妆台尺寸标准的是总高度为1500mm左右,宽为700mm到1200mm,这样的梳妆台尺寸是大小正合适的,在家庭装修之前的前期准备时,就应该确定好梳妆台尺寸大小,同时梳妆台尺寸也要和房间的格调和风格统一起来。", "question": "梳妆台整体高度一般是多少", "sent_token": ["梳", "妆", "台", "指", "用", "来", "化", "妆", "的", "家", "具", "装", "饰", "。", "梳", "妆", "台", "一", "词", ",", "在", "现", "代", "家", "居", "中", ",", "已", "经", "被", "业", "主", "、", "客", "户", "、", "家", "居", "设", "计", "师", "广", "泛", "用", "到", ",", "现", "在", "泛", "指", "家", "具", "梳", "妆", "台", "。", "梳", "妆", "台", "尺", "寸", "标", "准", "的", "是", "总", "高", "度", "为", "1500mm", "左", "右", ",", "宽", "为", "700mm", "到", "1200mm", ",", "这", "样", "的", "梳", "妆", "台", "尺", "寸", "是", "大", "小", "正", "合", "适", "的", ",", "在", "家", "庭", "装", "修", "之", "前", "的", "前", "期", "准", "备", "时", ",", "就", "应", "该", "确", "定", "好", "梳", "妆", "台", "尺", "寸", "大", "小", ",", "同", "时", "梳", "妆", "台", "尺", "寸", "也", "要", "和", "房", "间", "的", "格", "调", "和", "风", "格", "统", "一", "起", "来", "。"], "sample_type": "ori", "rel_ids": [1897]} -{"id": 137, "title": "感冒能不能吃燕窝_妈妈网小百科", "context": "在感冒的时候尽量不要吃燕窝,虽然燕窝比较滋补,但是在感冒期间吃燕窝的话,并不利于感冒的恢复。在感冒期间应该吃得清淡一些,补充身体需要的水分,如果没有食欲的话可以多喝一些粥。在感冒期间可能吃药物的话,也不能够起到很好的效果,但是也要坚持吃药。", "question": "感冒可以吃燕窝吗?有效果吗?", "sent_token": ["在", "感", "冒", "的", "时", "候", "尽", "量", "不", "要", "吃", "燕", "窝", ",", "虽", "然", "燕", "窝", "比", "较", "滋", "补", ",", "但", "是", "在", "感", "冒", "期", "间", "吃", "燕", "窝", "的", "话", ",", "并", "不", "利", "于", "感", "冒", "的", "恢", "复", "。", "在", "感", "冒", "期", "间", "应", "该", "吃", "得", "清", "淡", "一", "些", ",", "补", "充", "身", "体", "需", "要", "的", "水", "分", ",", "如", "果", "没", "有", "食", "欲", "的", "话", "可", "以", "多", "喝", "一", "些", "粥", "。", "在", "感", "冒", "期", "间", "可", "能", "吃", "药", "物", "的", "话", ",", "也", "不", "能", "够", "起", "到", "很", "好", "的", "效", "果", ",", "但", "是", "也", "要", "坚", "持", "吃", "药", "。", "感", "冒", "能", "不", "能", "吃", "燕", "窝", "_", "妈", "妈", "网", "小", "百", "科"], "sample_type": "ori", "rel_ids": [1899]} -{"id": 138, "title": "房颤会引起脑梗吗-有来医生", "context": "房颤会引起脑血管疾病,在医学上不叫脑梗叫脑栓塞,脑梗是脑血管本身病变引起的脑供血不足的情况,而脑栓塞是由于房颤心脏上形成了附壁血栓,当血栓的栓子脱落之后,就有可能堵塞在脑血管形成了脑拴塞,也是一种脑缺血的表现。治疗方法可以应用改善循环和营养神经的药物治疗,必须应用阿司匹林和氯吡格雷口服抗血小板聚集治疗,对于心房纤颤的患者,要控制心室率,应用阿司匹林和氯吡格雷等口服抗血小板聚集治疗,预防心脏附壁血栓的形成。", "question": "房颤会引起脑梗吗", "sent_token": ["房", "颤", "会", "引", "起", "脑", "血", "管", "疾", "病", ",", "在", "医", "学", "上", "不", "叫", "脑", "梗", "叫", "脑", "栓", "塞", ",", "脑", "梗", "是", "脑", "血", "管", "本", "身", "病", "变", "引", "起", "的", "脑", "供", "血", "不", "足", "的", "情", "况", ",", "而", "脑", "栓", "塞", "是", "由", "于", "房", "颤", "心", "脏", "上", "形", "成", "了", "附", "壁", "血", "栓", ",", "当", "血", "栓", "的", "栓", "子", "脱", "落", "之", "后", ",", "就", "有", "可", "能", "堵", "塞", "在", "脑", "血", "管", "形", "成", "了", "脑", "拴", "塞", ",", "也", "是", "一", "种", "脑", "缺", "血", "的", "表", "现", "。", "治", "疗", "方", "法", "可", "以", "应", "用", "改", "善", "循", "环", "和", "营", "养", "神", "经", "的", "药", "物", "治", "疗", ",", "必", "须", "应", "用", "阿", "司", "匹", "林", "和", "氯", "吡", "格", "雷", "口", "服", "抗", "血", "小", "板", "聚", "集", "治", "疗", ",", "对", "于", "心", "房", "纤", "颤", "的", "患", "者", ",", "要", "控", "制", "心", "室", "率", ",", "应", "用", "阿", "司", "匹", "林", "和", "氯", "吡", "格", "雷", "等", "口", "服", "抗", "血", "小", "板", "聚", "集", "治", "疗", ",", "预", "防", "心", "脏", "附", "壁", "血", "栓", "的", "形", "成", "。", "房", "颤", "会", "引", "起", "脑", "梗", "吗", "-", "有", "来", "医", "生"], "sample_type": "ori", "rel_ids": [1900]} -{"id": 144, "title": "二十天的婴儿能看多远_妈妈网小百科", "context": "20天的宝宝能够看到的距离大概是15厘米-20厘米左右,一般能够看到18厘米左右的事物。宝宝刚出生的时候视力极其差,有的甚至没有睁开眼,可以说基本什么都看不清楚,视力比较好的新生儿,也只能感受到光和影或大致的轮廓。", "question": "二十天的宝宝能看多远?", "sent_token": ["20", "天", "的", "宝", "宝", "能", "够", "看", "到", "的", "距", "离", "大", "概", "是", "15", "厘", "米", "-", "20", "厘", "米", "左", "右", ",", "一", "般", "能", "够", "看", "到", "18", "厘", "米", "左", "右", "的", "事", "物", "。", "宝", "宝", "刚", "出", "生", "的", "时", "候", "视", "力", "极", "其", "差", ",", "有", "的", "甚", "至", "没", "有", "睁", "开", "眼", ",", "可", "以", "说", "基", "本", "什", "么", "都", "看", "不", "清", "楚", ",", "视", "力", "比", "较", "好", "的", "新", "生", "儿", ",", "也", "只", "能", "感", "受", "到", "光", "和", "影", "或", "大", "致", "的", "轮", "廓", "。", "二", "十", "天", "的", "婴", "儿", "能", "看", "多", "远", "_", "妈", "妈", "网", "小", "百", "科"], "sample_type": "ori", "rel_ids": [1906]} -{"id": 156, "title": "4价宫颈疫苗多少钱-有来医生", "context": "4价宫颈癌疫苗有国产疫苗和进口疫苗,国产疫苗价格比较便宜,预防宫颈癌的疫苗只有4价疫苗,具体价格不同地区以及不同生产厂家生产的疫苗,所定价格也不一样。在北京4价宫颈癌疫苗,价格大概是800元左右,总共需要接种三针,需要在半年内接种完,分别在第一个月,第2个月和第6个月各接种一针次,接种年龄是20-45周岁,建议咨询当地疾病预防控制机构,所进疫苗的具体价格比较准确。比如江苏省从2019年开始,所有有价疫苗都是零差价出售,每接种一针次,收取20元材料费和注射费,目前接种宫颈癌疫苗,应该先预约才可以接种。", "question": "国产宫颈疫苗有几价", "sent_token": ["4", "价", "宫", "颈", "癌", "疫", "苗", "有", "国", "产", "疫", "苗", "和", "进", "口", "疫", "苗", ",", "国", "产", "疫", "苗", "价", "格", "比", "较", "便", "宜", ",", "预", "防", "宫", "颈", "癌", "的", "疫", "苗", "只", "有", "4", "价", "疫", "苗", ",", "具", "体", "价", "格", "不", "同", "地", "区", "以", "及", "不", "同", "生", "产", "厂", "家", "生", "产", "的", "疫", "苗", ",", "所", "定", "价", "格", "也", "不", "一", "样", "。", "在", "北", "京", "4", "价", "宫", "颈", "癌", "疫", "苗", ",", "价", "格", "大", "概", "是", "800", "元", "左", "右", ",", "总", "共", "需", "要", "接", "种", "三", "针", ",", "需", "要", "在", "半", "年", "内", "接", "种", "完", ",", "分", "别", "在", "第", "一", "个", "月", ",", "第", "2", "个", "月", "和", "第", "6", "个", "月", "各", "接", "种", "一", "针", "次", ",", "接", "种", "年", "龄", "是", "20", "-", "45", "周", "岁", ",", "建", "议", "咨", "询", "当", "地", "疾", "病", "预", "防", "控", "制", "机", "构", ",", "所", "进", "疫", "苗", "的", "具", "体", "价", "格", "比", "较", "准", "确", "。", "比", "如", "江", "苏", "省", "从", "2019", "年", "开", "始", ",", "所", "有", "有", "价", "疫", "苗", "都", "是", "零", "差", "价", "出", "售", ",", "每", "接", "种", "一", "针", "次", ",", "收", "取", "20", "元", "材", "料", "费", "和", "注", "射", "费", ",", "目", "前", "接", "种", "宫", "颈", "癌", "疫", "苗", ",", "应", "该", "先", "预", "约", "才", "可", "以", "接", "种", "。", "4", "价", "宫", "颈", "疫", "苗", "多", "少", "钱", "-", "有", "来", "医", "生"], "sample_type": "ori", "rel_ids": [1918]} -{"id": 183, "title": "hiit是什么", "context": "hiit是高强度间歇训练,主要是通过进行多组高强度的间隙,和低强度的动作组合训练,这种训练方式能够在短时间内高速燃烧脂肪,非常适合锻炼时间较少或无法长时间坚持锻炼的人。", "question": "什么是HIIT", "sent_token": ["hiit", "是", "高", "强", "度", "间", "歇", "训", "练", ",", "主", "要", "是", "通", "过", "进", "行", "多", "组", "高", "强", "度", "的", "间", "隙", ",", "和", "低", "强", "度", "的", "动", "作", "组", "合", "训", "练", ",", "这", "种", "训", "练", "方", "式", "能", "够", "在", "短", "时", "间", "内", "高", "速", "燃", "烧", "脂", "肪", ",", "非", "常", "适", "合", "锻", "炼", "时", "间", "较", "少", "或", "无", "法", "长", "时", "间", "坚", "持", "锻", "炼", "的", "人", "。", "hiit", "是", "什", "么"], "sample_type": "ori", "rel_ids": [1945]} -{"id": 187, "title": "民生信用卡的客服电话多少?-其他问题知识问答-我爱卡", "context": "民生银行的信用卡的24小时客服电话为400-669-5568,持卡人在办卡或用卡的过程中,有任何疑问,都可以拨打民生银行信用卡客服电话,通过人工客服,来进行咨询。同时,持卡人也可以通过客服电话,办理信用卡激活、修改密码、更改账单日等业务。", "question": "民生信用卡客服", "sent_token": ["民", "生", "银", "行", "的", "信", "用", "卡", "的", "24", "小", "时", "客", "服", "电", "话", "为", "400", "-", "669", "-", "5568", ",", "持", "卡", "人", "在", "办", "卡", "或", "用", "卡", "的", "过", "程", "中", ",", "有", "任", "何", "疑", "问", ",", "都", "可", "以", "拨", "打", "民", "生", "银", "行", "信", "用", "卡", "客", "服", "电", "话", ",", "通", "过", "人", "工", "客", "服", ",", "来", "进", "行", "咨", "询", "。", "同", "时", ",", "持", "卡", "人", "也", "可", "以", "通", "过", "客", "服", "电", "话", ",", "办", "理", "信", "用", "卡", "激", "活", "、", "修", "改", "密", "码", "、", "更", "改", "账", "单", "日", "等", "业", "务", "。", "民", "生", "信", "用", "卡", "的", "客", "服", "电", "话", "多", "少", "?", "-", "其", "他", "问", "题", "知", "识", "问", "答", "-", "我", "爱", "卡"], "sample_type": "ori", "rel_ids": [1949]} -{"id": 194, "title": "", "context": "法令纹位於鼻翼两侧往下延伸至嘴的附近,也称寿带,法令若垂长,亦为长寿之象徵。不过女性多半不喜欢脸上出现法令纹,因为这意味脸部皮肤松弛,是老化的迹象。", "question": "哪里是法令纹?", "sent_token": ["法", "令", "纹", "位", "於", "鼻", "翼", "两", "侧", "往", "下", "延", "伸", "至", "嘴", "的", "附", "近", ",", "也", "称", "寿", "带", ",", "法", "令", "若", "垂", "长", ",", "亦", "为", "长", "寿", "之", "象", "徵", "。", "不", "过", "女", "性", "多", "半", "不", "喜", "欢", "脸", "上", "出", "现", "法", "令", "纹", ",", "因", "为", "这", "意", "味", "脸", "部", "皮", "肤", "松", "弛", ",", "是", "老", "化", "的", "迹", "象", "。"], "sample_type": "ori", "rel_ids": [1956]} -{"id": 204, "title": "婴儿轻微肠炎能自愈吗_妈妈网小百科", "context": "婴儿轻微肠炎不能自愈。肠炎是一种炎症,其发病的原因与胃肠道失调有关联。婴儿胃肠道菌群出现了失调的异常,就会引发肠炎的出现。尽管是比较轻微的肠炎,但还是有炎症的存在。婴儿轻微肠炎需要就医进行治疗,需要吃药促使炎症的消除。", "question": "婴儿轻度肠炎能自愈吗", "sent_token": ["婴", "儿", "轻", "微", "肠", "炎", "不", "能", "自", "愈", "。", "肠", "炎", "是", "一", "种", "炎", "症", ",", "其", "发", "病", "的", "原", "因", "与", "胃", "肠", "道", "失", "调", "有", "关", "联", "。", "婴", "儿", "胃", "肠", "道", "菌", "群", "出", "现", "了", "失", "调", "的", "异", "常", ",", "就", "会", "引", "发", "肠", "炎", "的", "出", "现", "。", "尽", "管", "是", "比", "较", "轻", "微", "的", "肠", "炎", ",", "但", "还", "是", "有", "炎", "症", "的", "存", "在", "。", "婴", "儿", "轻", "微", "肠", "炎", "需", "要", "就", "医", "进", "行", "治", "疗", ",", "需", "要", "吃", "药", "促", "使", "炎", "症", "的", "消", "除", "。", "婴", "儿", "轻", "微", "肠", "炎", "能", "自", "愈", "吗", "_", "妈", "妈", "网", "小", "百", "科"], "sample_type": "ori", "rel_ids": [1966]} -{"id": 215, "title": "", "context": "珍珠鸟作者简介冯骥才,当代作家,1942年生于天津,原籍浙江慈溪市人。从小喜爱美术、文学和球类活动。曾当过专业篮球运动员,从事过绘画。", "question": "冯骥才什么时候出生", "sent_token": ["珍", "珠", "鸟", "作", "者", "简", "介", "冯", "骥", "才", ",", "当", "代", "作", "家", ",", "1942", "年", "生", "于", "天", "津", ",", "原", "籍", "浙", "江", "慈", "溪", "市", "人", "。", "从", "小", "喜", "爱", "美", "术", "、", "文", "学", "和", "球", "类", "活", "动", "。", "曾", "当", "过", "专", "业", "篮", "球", "运", "动", "员", ",", "从", "事", "过", "绘", "画", "。"], "sample_type": "ori", "rel_ids": [1977]} -{"id": 221, "title": "哺乳期可以吃维生素b2吗_有问必答_快速问医生", "context": "你好,口腔溃疡一般都是由于维生素缺乏导致的,与口腔炎症和上火也有关,可以服用维生素b2和维生素c治疗。用西瓜皮煮水喝,可以清热去火。局部用口腔溃疡散或者用维生素c研磨成粉末涂抹,都可以有效缓解疼痛。孕妇正常也要补充维生素的,服用维生素b2没有问题的。平时一定要多吃新鲜蔬菜水果,补充维生素,注意口腔卫生,早晚刷牙,饭后用温水漱口,每天早上起床用淡盐水漱口。", "question": "哺乳期能吃维生素b2片吗", "sent_token": ["你", "好", ",", "口", "腔", "溃", "疡", "一", "般", "都", "是", "由", "于", "维", "生", "素", "缺", "乏", "导", "致", "的", ",", "与", "口", "腔", "炎", "症", "和", "上", "火", "也", "有", "关", ",", "可", "以", "服", "用", "维", "生", "素", "b2", "和", "维", "生", "素", "c", "治", "疗", "。", "用", "西", "瓜", "皮", "煮", "水", "喝", ",", "可", "以", "清", "热", "去", "火", "。", "局", "部", "用", "口", "腔", "溃", "疡", "散", "或", "者", "用", "维", "生", "素", "c", "研", "磨", "成", "粉", "末", "涂", "抹", ",", "都", "可", "以", "有", "效", "缓", "解", "疼", "痛", "。", "孕", "妇", "正", "常", "也", "要", "补", "充", "维", "生", "素", "的", ",", "服", "用", "维", "生", "素", "b2", "没", "有", "问", "题", "的", "。", "平", "时", "一", "定", "要", "多", "吃", "新", "鲜", "蔬", "菜", "水", "果", ",", "补", "充", "维", "生", "素", ",", "注", "意", "口", "腔", "卫", "生", ",", "早", "晚", "刷", "牙", ",", "饭", "后", "用", "温", "水", "漱", "口", ",", "每", "天", "早", "上", "起", "床", "用", "淡", "盐", "水", "漱", "口", "。", "哺", "乳", "期", "可", "以", "吃", "维", "生", "素", "b2", "吗", "_", "有", "问", "必", "答", "_", "快", "速", "问", "医", "生"], "sample_type": "ori", "rel_ids": [1983]} -{"id": 231, "title": "6岁儿童吃几颗肠虫清,吃肠虫清需要忌口吗_孕育常识_亲子宝典库_", "context": "肠虫清是六岁儿童就可以服用的一次吃两片,是吃饱饭后吃,肠虫清的主要是驱虫的药物,一般在晚上睡前服用的是比较好的,服药期间要多喝开水,多吃清淡易消化的食物,忌辛辣刺激性食物和油腻煎炸的食物,注意保暖避免着凉。", "question": "6岁儿童吃几颗肠虫清", "sent_token": ["肠", "虫", "清", "是", "六", "岁", "儿", "童", "就", "可", "以", "服", "用", "的", "一", "次", "吃", "两", "片", ",", "是", "吃", "饱", "饭", "后", "吃", ",", "肠", "虫", "清", "的", "主", "要", "是", "驱", "虫", "的", "药", "物", ",", "一", "般", "在", "晚", "上", "睡", "前", "服", "用", "的", "是", "比", "较", "好", "的", ",", "服", "药", "期", "间", "要", "多", "喝", "开", "水", ",", "多", "吃", "清", "淡", "易", "消", "化", "的", "食", "物", ",", "忌", "辛", "辣", "刺", "激", "性", "食", "物", "和", "油", "腻", "煎", "炸", "的", "食", "物", ",", "注", "意", "保", "暖", "避", "免", "着", "凉", "。", "6", "岁", "儿", "童", "吃", "几", "颗", "肠", "虫", "清", ",", "吃", "肠", "虫", "清", "需", "要", "忌", "口", "吗", "_", "孕", "育", "常", "识", "_", "亲", "子", "宝", "典", "库", "_"], "sample_type": "ori", "rel_ids": [1993]} -{"id": 241, "title": "隔阂意味着是什么意思", "context": "隔阂意味着很多意思,通常隔阂就意味着可能双方之间沟通有问题,比如有些夫妻或者是男女朋友之间吵架,两个人一起冷战,两个人由于没有沟通,双方之间的误会和矛盾就会越来越多了,也有可能是两个人总是以争吵的方式来解决问题,像这样的话就达不到有效的沟通,两个人两个人越不沟通,双方之间的矛盾和争吵就会越来越多,这个时候就会产生深深的隔阂。也有可能是双峰之间的价值观完全不同,比如对待某些问题的时候,有些人比较理性,但是有些人会比较感性,这个时候价值观不同的话就非常容易产生隔阂。", "question": "隔阂什么意思", "sent_token": ["隔", "阂", "意", "味", "着", "很", "多", "意", "思", ",", "通", "常", "隔", "阂", "就", "意", "味", "着", "可", "能", "双", "方", "之", "间", "沟", "通", "有", "问", "题", ",", "比", "如", "有", "些", "夫", "妻", "或", "者", "是", "男", "女", "朋", "友", "之", "间", "吵", "架", ",", "两", "个", "人", "一", "起", "冷", "战", ",", "两", "个", "人", "由", "于", "没", "有", "沟", "通", ",", "双", "方", "之", "间", "的", "误", "会", "和", "矛", "盾", "就", "会", "越", "来", "越", "多", "了", ",", "也", "有", "可", "能", "是", "两", "个", "人", "总", "是", "以", "争", "吵", "的", "方", "式", "来", "解", "决", "问", "题", ",", "像", "这", "样", "的", "话", "就", "达", "不", "到", "有", "效", "的", "沟", "通", ",", "两", "个", "人", "两", "个", "人", "越", "不", "沟", "通", ",", "双", "方", "之", "间", "的", "矛", "盾", "和", "争", "吵", "就", "会", "越", "来", "越", "多", ",", "这", "个", "时", "候", "就", "会", "产", "生", "深", "深", "的", "隔", "阂", "。", "也", "有", "可", "能", "是", "双", "峰", "之", "间", "的", "价", "值", "观", "完", "全", "不", "同", ",", "比", "如", "对", "待", "某", "些", "问", "题", "的", "时", "候", ",", "有", "些", "人", "比", "较", "理", "性", ",", "但", "是", "有", "些", "人", "会", "比", "较", "感", "性", ",", "这", "个", "时", "候", "价", "值", "观", "不", "同", "的", "话", "就", "非", "常", "容", "易", "产", "生", "隔", "阂", "。", "隔", "阂", "意", "味", "着", "是", "什", "么", "意", "思"], "sample_type": "ori", "rel_ids": [2003]} -{"id": 242, "title": "小儿癫痫病能彻底治愈的吗_有问必答_快速问医生", "context": "你好,很高兴为你服务,目前小儿癫痫是可以治愈的,不同的癫痫类型以及患者的实际病情不同,其适合的治疗方法也是不尽相同的。现在常见的小儿癫痫治疗都是采用中医为基础的治疗方法,这样对患儿的伤害较小,而西医则有很大的副作用,好吧", "question": "小儿癫痫能治愈吗", "sent_token": ["你", "好", ",", "很", "高", "兴", "为", "你", "服", "务", ",", "目", "前", "小", "儿", "癫", "痫", "是", "可", "以", "治", "愈", "的", ",", "不", "同", "的", "癫", "痫", "类", "型", "以", "及", "患", "者", "的", "实", "际", "病", "情", "不", "同", ",", "其", "适", "合", "的", "治", "疗", "方", "法", "也", "是", "不", "尽", "相", "同", "的", "。", "现", "在", "常", "见", "的", "小", "儿", "癫", "痫", "治", "疗", "都", "是", "采", "用", "中", "医", "为", "基", "础", "的", "治", "疗", "方", "法", ",", "这", "样", "对", "患", "儿", "的", "伤", "害", "较", "小", ",", "而", "西", "医", "则", "有", "很", "大", "的", "副", "作", "用", ",", "好", "吧", "小", "儿", "癫", "痫", "病", "能", "彻", "底", "治", "愈", "的", "吗", "_", "有", "问", "必", "答", "_", "快", "速", "问", "医", "生"], "sample_type": "ori", "rel_ids": [2004]} -{"id": 250, "title": "脑内多发腔隙性脑梗死严重吗_39健康问答_39健康网", "context": "脑内多发腔隙性脑梗死,部分软化灶形成,一般不严重,是细枝血管梗塞,引起小灶脑组织坏死,脑组织软化灶,其他部位的脑组织会替代坏死部位的脑组织功能,所以一般没有不适的症状。注意控制血压,清淡饮食,控制血脂,血粘度,精神放松,解除思想顾虑,多做室外文娱体育活动,精神愉快,多接受紫外线照射,多喝开水,会有利于康复。可以根据情况使用疏通血管的药物。", "question": "多发腔隙性脑梗死吃什么中药", "sent_token": ["脑", "内", "多", "发", "腔", "隙", "性", "脑", "梗", "死", ",", "部", "分", "软", "化", "灶", "形", "成", ",", "一", "般", "不", "严", "重", ",", "是", "细", "枝", "血", "管", "梗", "塞", ",", "引", "起", "小", "灶", "脑", "组", "织", "坏", "死", ",", "脑", "组", "织", "软", "化", "灶", ",", "其", "他", "部", "位", "的", "脑", "组", "织", "会", "替", "代", "坏", "死", "部", "位", "的", "脑", "组", "织", "功", "能", ",", "所", "以", "一", "般", "没", "有", "不", "适", "的", "症", "状", "。", "注", "意", "控", "制", "血", "压", ",", "清", "淡", "饮", "食", ",", "控", "制", "血", "脂", ",", "血", "粘", "度", ",", "精", "神", "放", "松", ",", "解", "除", "思", "想", "顾", "虑", ",", "多", "做", "室", "外", "文", "娱", "体", "育", "活", "动", ",", "精", "神", "愉", "快", ",", "多", "接", "受", "紫", "外", "线", "照", "射", ",", "多", "喝", "开", "水", ",", "会", "有", "利", "于", "康", "复", "。", "可", "以", "根", "据", "情", "况", "使", "用", "疏", "通", "血", "管", "的", "药", "物", "。", "脑", "内", "多", "发", "腔", "隙", "性", "脑", "梗", "死", "严", "重", "吗", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "ori", "rel_ids": [2012]} -{"id": 1763, "title": "地瓜是红薯吗", "context": "地瓜不是红薯。地瓜一般生吃或者凉拌,外形是纺锤型的,有明显的瓣状结构,内里的肉是白色的,有清淡的药香味,生吃又脆又甜,常食用可以预防肝癌、胃癌,营养价值非常高。红薯是粗粮,也叫番薯山芋。它是一种属管状花目,旋花科一年生的草本植物,富含丰富的矿物质和维生素,而且非常耐饱。", "question": "马铃薯和红苕指的是同一个物种吗", "sent_token": ["地", "瓜", "不", "是", "红", "薯", "。", "地", "瓜", "一", "般", "生", "吃", "或", "者", "凉", "拌", ",", "外", "形", "是", "纺", "锤", "型", "的", ",", "有", "明", "显", "的", "瓣", "状", "结", "构", ",", "内", "里", "的", "肉", "是", "白", "色", "的", ",", "有", "清", "淡", "的", "药", "香", "味", ",", "生", "吃", "又", "脆", "又", "甜", ",", "常", "食", "用", "可", "以", "预", "防", "肝", "癌", "、", "胃", "癌", ",", "营", "养", "价", "值", "非", "常", "高", "。", "红", "薯", "是", "粗", "粮", ",", "也", "叫", "番", "薯", "山", "芋", "。", "它", "是", "一", "种", "属", "管", "状", "花", "目", ",", "旋", "花", "科", "一", "年", "生", "的", "草", "本", "植", "物", ",", "富", "含", "丰", "富", "的", "矿", "物", "质", "和", "维", "生", "素", ",", "而", "且", "非", "常", "耐", "饱", "。", "地", "瓜", "是", "红", "薯", "吗"], "sample_type": "disturb"} -{"id": 1767, "title": "已满多少岁的人犯贩卖毒品罪应负刑事责任", "context": "根据《刑法》第十七条:已满十六周岁的人犯罪,应当负刑事责任。已满十四周岁不满十六周岁的人,犯故意杀人、故意伤害致人重伤或者死亡、强奸、抢劫、贩卖毒品、放火、爆炸、投放危险物质罪的,应当负刑事责任。", "question": "贩卖毒品需要负刑事责任的人要满几周岁", "sent_token": ["根", "据", "《", "刑", "法", "》", "第", "十", "七", "条", ":", "已", "满", "十", "六", "周", "岁", "的", "人", "犯", "罪", ",", "应", "当", "负", "刑", "事", "责", "任", "。", "已", "满", "十", "四", "周", "岁", "不", "满", "十", "六", "周", "岁", "的", "人", ",", "犯", "故", "意", "杀", "人", "、", "故", "意", "伤", "害", "致", "人", "重", "伤", "或", "者", "死", "亡", "、", "强", "奸", "、", "抢", "劫", "、", "贩", "卖", "毒", "品", "、", "放", "火", "、", "爆", "炸", "、", "投", "放", "危", "险", "物", "质", "罪", "的", ",", "应", "当", "负", "刑", "事", "责", "任", "。", "已", "满", "多", "少", "岁", "的", "人", "犯", "贩", "卖", "毒", "品", "罪", "应", "负", "刑", "事", "责", "任"], "sample_type": "disturb"} -{"id": 1772, "title": "读研跟考研有什么区别", "context": "考研和读研的区别在于概念和意义不同。考研是指考生通过考试来得到研究生的入学资格,而考生并不是硕士研究生;而读研是指学生在高校攻读硕士研究生的过程,学生身份已经是硕士研究生。这二者并不等同,而是有先后关系,也就是说考生只有通过考研,才能成为硕士研究生,然后在规定的学习时间内读研。", "question": "考取研究生跟攻读研究生,具体什么区别?", "sent_token": ["考", "研", "和", "读", "研", "的", "区", "别", "在", "于", "概", "念", "和", "意", "义", "不", "同", "。", "考", "研", "是", "指", "考", "生", "通", "过", "考", "试", "来", "得", "到", "研", "究", "生", "的", "入", "学", "资", "格", ",", "而", "考", "生", "并", "不", "是", "硕", "士", "研", "究", "生", ";", "而", "读", "研", "是", "指", "学", "生", "在", "高", "校", "攻", "读", "硕", "士", "研", "究", "生", "的", "过", "程", ",", "学", "生", "身", "份", "已", "经", "是", "硕", "士", "研", "究", "生", "。", "这", "二", "者", "并", "不", "等", "同", ",", "而", "是", "有", "先", "后", "关", "系", ",", "也", "就", "是", "说", "考", "生", "只", "有", "通", "过", "考", "研", ",", "才", "能", "成", "为", "硕", "士", "研", "究", "生", ",", "然", "后", "在", "规", "定", "的", "学", "习", "时", "间", "内", "读", "研", "。", "读", "研", "跟", "考", "研", "有", "什", "么", "区", "别"], "sample_type": "disturb"} -{"id": 1774, "title": "多效唑能和磷酸二氢钾一起用吗", "context": "多效唑能和磷酸二氢钾一起用。多效唑是植物的生长调节剂,主要是控制作物疯长的。而磷酸二氢钾属于叶面肥,施用后可促使作物的叶色更加浓绿,根系发达,药效完全不同,也并不排斥,可以混合使用。不过要注意施用时要严格按照说明施加,不可过量,否则会阻碍生长。", "question": "磷酸一钾能和氯丁唑一起用OK吗", "sent_token": ["多", "效", "唑", "能", "和", "磷", "酸", "二", "氢", "钾", "一", "起", "用", "。", "多", "效", "唑", "是", "植", "物", "的", "生", "长", "调", "节", "剂", ",", "主", "要", "是", "控", "制", "作", "物", "疯", "长", "的", "。", "而", "磷", "酸", "二", "氢", "钾", "属", "于", "叶", "面", "肥", ",", "施", "用", "后", "可", "促", "使", "作", "物", "的", "叶", "色", "更", "加", "浓", "绿", ",", "根", "系", "发", "达", ",", "药", "效", "完", "全", "不", "同", ",", "也", "并", "不", "排", "斥", ",", "可", "以", "混", "合", "使", "用", "。", "不", "过", "要", "注", "意", "施", "用", "时", "要", "严", "格", "按", "照", "说", "明", "施", "加", ",", "不", "可", "过", "量", ",", "否", "则", "会", "阻", "碍", "生", "长", "。", "多", "效", "唑", "能", "和", "磷", "酸", "二", "氢", "钾", "一", "起", "用", "吗"], "sample_type": "disturb"} -{"id": 1776, "title": "猫能吃蛋黄吗", "context": "猫咪是可以吃蛋黄的。这里特定煮熟的白水蛋,猫咪不能吃生鸡蛋,因为生鸡蛋中有细菌,常见的是沙门氏菌,容易引起猫腹泻脱水,而且饲喂猫咪最好的只饲喂蛋黄。虽然可以吃蛋黄,但是需要掌握好量,一般一周最多吃两三次就可了。蛋黄中也含有丰富的胆固醇,易引发猫咪患脂肪肝和高脂血病。", "question": "小猫咪可以吃蛋黄吗,生的", "sent_token": ["猫", "咪", "是", "可", "以", "吃", "蛋", "黄", "的", "。", "这", "里", "特", "定", "煮", "熟", "的", "白", "水", "蛋", ",", "猫", "咪", "不", "能", "吃", "生", "鸡", "蛋", ",", "因", "为", "生", "鸡", "蛋", "中", "有", "细", "菌", ",", "常", "见", "的", "是", "沙", "门", "氏", "菌", ",", "容", "易", "引", "起", "猫", "腹", "泻", "脱", "水", ",", "而", "且", "饲", "喂", "猫", "咪", "最", "好", "的", "只", "饲", "喂", "蛋", "黄", "。", "虽", "然", "可", "以", "吃", "蛋", "黄", ",", "但", "是", "需", "要", "掌", "握", "好", "量", ",", "一", "般", "一", "周", "最", "多", "吃", "两", "三", "次", "就", "可", "了", "。", "蛋", "黄", "中", "也", "含", "有", "丰", "富", "的", "胆", "固", "醇", ",", "易", "引", "发", "猫", "咪", "患", "脂", "肪", "肝", "和", "高", "脂", "血", "病", "。", "猫", "能", "吃", "蛋", "黄", "吗"], "sample_type": "disturb"} -{"id": 1780, "title": "最近深圳限行吗", "context": "现在由于疫情的影响,深圳市不限行的了,但是没有必要尽量还是少出门,出门也要做好一系列的防护措施才可以。因为虽然目前国内疫情形势有所缓和,但是这并不意味着疫情的结束,国外疫情形势还是很严峻的,境外输入案例较多。", "question": "近期深圳没有限行吗", "sent_token": ["现", "在", "由", "于", "疫", "情", "的", "影", "响", ",", "深", "圳", "市", "不", "限", "行", "的", "了", ",", "但", "是", "没", "有", "必", "要", "尽", "量", "还", "是", "少", "出", "门", ",", "出", "门", "也", "要", "做", "好", "一", "系", "列", "的", "防", "护", "措", "施", "才", "可", "以", "。", "因", "为", "虽", "然", "目", "前", "国", "内", "疫", "情", "形", "势", "有", "所", "缓", "和", ",", "但", "是", "这", "并", "不", "意", "味", "着", "疫", "情", "的", "结", "束", ",", "国", "外", "疫", "情", "形", "势", "还", "是", "很", "严", "峻", "的", ",", "境", "外", "输", "入", "案", "例", "较", "多", "。", "最", "近", "深", "圳", "限", "行", "吗"], "sample_type": "disturb"} -{"id": 1781, "title": "合同签字不盖章有效吗", "context": "可能有效可能无效。只有签字没有公章的合同是否有法律效力要根据具体情况分析:如果合同是由单位的委托代理人在其权限范围内、或单位的法定代表人签的字,则合同有效。", "question": "一没有签字,二没有盖章的合同,还有法律效用吗", "sent_token": ["可", "能", "有", "效", "可", "能", "无", "效", "。", "只", "有", "签", "字", "没", "有", "公", "章", "的", "合", "同", "是", "否", "有", "法", "律", "效", "力", "要", "根", "据", "具", "体", "情", "况", "分", "析", ":", "如", "果", "合", "同", "是", "由", "单", "位", "的", "委", "托", "代", "理", "人", "在", "其", "权", "限", "范", "围", "内", "、", "或", "单", "位", "的", "法", "定", "代", "表", "人", "签", "的", "字", ",", "则", "合", "同", "有", "效", "。", "合", "同", "签", "字", "不", "盖", "章", "有", "效", "吗"], "sample_type": "disturb"} -{"id": 1789, "title": "", "context": "吴三桂(1612年-1678年10月2日),字长伯,一字月所,明朝辽东人,明末清初著名政治军事人物,吴周政权建立者吴周太祖。", "question": "平西王吴三贵什么朝代", "sent_token": ["吴", "三", "桂", "(", "1612", "年", "-", "1678", "年", "10", "月", "2", "日", ")", ",", "字", "长", "伯", ",", "一", "字", "月", "所", ",", "明", "朝", "辽", "东", "人", ",", "明", "末", "清", "初", "著", "名", "政", "治", "军", "事", "人", "物", ",", "吴", "周", "政", "权", "建", "立", "者", "吴", "周", "太", "祖", "。"], "sample_type": "disturb"} -{"id": 1796, "title": "狗狗为什么互相闻屁股", "context": "相互闻屁股是狗狗打招呼的一种方式。狗狗的嗅觉很敏感,它们可以用相互闻屁股来了解狗狗的配偶状况、饮食习惯等,因为狗狗的屁股后面有两个肛门腺,在肛门腺里面涵盖了很多的信息素。处在发情期的狗狗也会通过闻屁股来挑选自己的配偶。", "question": "狗狗为何总是闻屁股", "sent_token": ["相", "互", "闻", "屁", "股", "是", "狗", "狗", "打", "招", "呼", "的", "一", "种", "方", "式", "。", "狗", "狗", "的", "嗅", "觉", "很", "敏", "感", ",", "它", "们", "可", "以", "用", "相", "互", "闻", "屁", "股", "来", "了", "解", "狗", "狗", "的", "配", "偶", "状", "况", "、", "饮", "食", "习", "惯", "等", ",", "因", "为", "狗", "狗", "的", "屁", "股", "后", "面", "有", "两", "个", "肛", "门", "腺", ",", "在", "肛", "门", "腺", "里", "面", "涵", "盖", "了", "很", "多", "的", "信", "息", "素", "。", "处", "在", "发", "情", "期", "的", "狗", "狗", "也", "会", "通", "过", "闻", "屁", "股", "来", "挑", "选", "自", "己", "的", "配", "偶", "。", "狗", "狗", "为", "什", "么", "互", "相", "闻", "屁", "股"], "sample_type": "disturb"} -{"id": 1798, "title": "出租房隔音差怎么解决", "context": "可以在窗户上贴一层隔音膜,在粘贴过程中要注意,不要出现气泡,以免影响隔音效果。若想要隔音效果更好点,还可以购买一些密封条安装在窗户缝隙处,这也能起到更好的隔音效果。另外,室内使用的家具可以更换成木质的,这样同样能起到一定的吸音效果。", "question": "出租房隔音不好如何解决", "sent_token": ["可", "以", "在", "窗", "户", "上", "贴", "一", "层", "隔", "音", "膜", ",", "在", "粘", "贴", "过", "程", "中", "要", "注", "意", ",", "不", "要", "出", "现", "气", "泡", ",", "以", "免", "影", "响", "隔", "音", "效", "果", "。", "若", "想", "要", "隔", "音", "效", "果", "更", "好", "点", ",", "还", "可", "以", "购", "买", "一", "些", "密", "封", "条", "安", "装", "在", "窗", "户", "缝", "隙", "处", ",", "这", "也", "能", "起", "到", "更", "好", "的", "隔", "音", "效", "果", "。", "另", "外", ",", "室", "内", "使", "用", "的", "家", "具", "可", "以", "更", "换", "成", "木", "质", "的", ",", "这", "样", "同", "样", "能", "起", "到", "一", "定", "的", "吸", "音", "效", "果", "。", "出", "租", "房", "隔", "音", "差", "怎", "么", "解", "决"], "sample_type": "disturb"} -{"id": 1802, "title": "鬼迷心窍(李宗盛演唱歌曲)_百度百科", "context": "《鬼迷心窍》是1992年黄日华、周海媚主演台湾电视剧《末代皇孙》的主题曲,是由李宗盛作词、作曲、演唱,收录于1992年影视剧音乐合辑《滚石九大天王之十二出好戏》当中。1993年,李宗盛凭借该曲获得第一届新加坡醉心金曲奖最佳作词奖", "question": "谁是鬼迷心窍的原唱", "sent_token": ["《", "鬼", "迷", "心", "窍", "》", "是", "1992", "年", "黄", "日", "华", "、", "周", "海", "媚", "主", "演", "台", "湾", "电", "视", "剧", "《", "末", "代", "皇", "孙", "》", "的", "主", "题", "曲", ",", "是", "由", "李", "宗", "盛", "作", "词", "、", "作", "曲", "、", "演", "唱", ",", "收", "录", "于", "1992", "年", "影", "视", "剧", "音", "乐", "合", "辑", "《", "滚", "石", "九", "大", "天", "王", "之", "十", "二", "出", "好", "戏", "》", "当", "中", "。", "1993", "年", ",", "李", "宗", "盛", "凭", "借", "该", "曲", "获", "得", "第", "一", "届", "新", "加", "坡", "醉", "心", "金", "曲", "奖", "最", "佳", "作", "词", "奖", "鬼", "迷", "心", "窍", "(", "李", "宗", "盛", "演", "唱", "歌", "曲", ")", "_", "百", "度", "百", "科"], "sample_type": "disturb"} -{"id": 1803, "title": "", "context": "白龙马,名著小说《西游记》中的重要角色。本是西海龙王三太子,因纵火烧毁玉帝赏赐的明珠而被西海龙王上天告忤逆,要被斩首。后因南海观世菩萨出面才免于死罪,被贬到蛇盘山鹰愁涧等待唐僧取经。之后又误吃唐僧所骑的白马,被菩萨点化,变身为白龙。", "question": "西游记中的白龙马,它的原始身份是什么", "sent_token": ["白", "龙", "马", ",", "名", "著", "小", "说", "《", "西", "游", "记", "》", "中", "的", "重", "要", "角", "色", "。", "本", "是", "西", "海", "龙", "王", "三", "太", "子", ",", "因", "纵", "火", "烧", "毁", "玉", "帝", "赏", "赐", "的", "明", "珠", "而", "被", "西", "海", "龙", "王", "上", "天", "告", "忤", "逆", ",", "要", "被", "斩", "首", "。", "后", "因", "南", "海", "观", "世", "菩", "萨", "出", "面", "才", "免", "于", "死", "罪", ",", "被", "贬", "到", "蛇", "盘", "山", "鹰", "愁", "涧", "等", "待", "唐", "僧", "取", "经", "。", "之", "后", "又", "误", "吃", "唐", "僧", "所", "骑", "的", "白", "马", ",", "被", "菩", "萨", "点", "化", ",", "变", "身", "为", "白", "龙", "。"], "sample_type": "disturb"} -{"id": 1805, "title": "", "context": "《湮灭》是由派拉蒙影业出品的科幻惊悚片,这部电影集合了科幻、悬疑、惊悚等时下流行的元素,由亚历克斯·加兰执导,娜塔莉·波特曼、詹妮弗·杰森·李、吉娜·罗德里格兹、泰莎·汤普森联合主演。该片于2018年2月23日在美国上映。影片根据杰夫·梵德米尔所著《遗落的南境》三部曲的首部同名小说改编,讲述了生物学家莉娜为了自己的丈夫,她自愿加入了科学考察探险小队,去研究美国领土一块被检疫隔离的生态灾害区域的故事。", "question": "湮灭是什么类型的电影", "sent_token": ["《", "湮", "灭", "》", "是", "由", "派", "拉", "蒙", "影", "业", "出", "品", "的", "科", "幻", "惊", "悚", "片", ",", "这", "部", "电", "影", "集", "合", "了", "科", "幻", "、", "悬", "疑", "、", "惊", "悚", "等", "时", "下", "流", "行", "的", "元", "素", ",", "由", "亚", "历", "克", "斯", "·", "加", "兰", "执", "导", ",", "娜", "塔", "莉", "·", "波", "特", "曼", "、", "詹", "妮", "弗", "·", "杰", "森", "·", "李", "、", "吉", "娜", "·", "罗", "德", "里", "格", "兹", "、", "泰", "莎", "·", "汤", "普", "森", "联", "合", "主", "演", "。", "该", "片", "于", "2018", "年", "2", "月", "23", "日", "在", "美", "国", "上", "映", "。", "影", "片", "根", "据", "杰", "夫", "·", "梵", "德", "米", "尔", "所", "著", "《", "遗", "落", "的", "南", "境", "》", "三", "部", "曲", "的", "首", "部", "同", "名", "小", "说", "改", "编", ",", "讲", "述", "了", "生", "物", "学", "家", "莉", "娜", "为", "了", "自", "己", "的", "丈", "夫", ",", "她", "自", "愿", "加", "入", "了", "科", "学", "考", "察", "探", "险", "小", "队", ",", "去", "研", "究", "美", "国", "领", "土", "一", "块", "被", "检", "疫", "隔", "离", "的", "生", "态", "灾", "害", "区", "域", "的", "故", "事", "。"], "sample_type": "disturb"} -{"id": 1807, "title": "", "context": "网球与高尔夫、保龄球、桌球并成为世界四大绅士运动,他的起源可以追溯到12-13世纪的法国。网球运动的起源及演变可以用四句话来概括:网球孕育在法国,诞生在英国,开始普及和形成高潮在美国,现盛行全世界。", "question": "网球发源于哪国", "sent_token": ["网", "球", "与", "高", "尔", "夫", "、", "保", "龄", "球", "、", "桌", "球", "并", "成", "为", "世", "界", "四", "大", "绅", "士", "运", "动", ",", "他", "的", "起", "源", "可", "以", "追", "溯", "到", "12", "-", "13", "世", "纪", "的", "法", "国", "。", "网", "球", "运", "动", "的", "起", "源", "及", "演", "变", "可", "以", "用", "四", "句", "话", "来", "概", "括", ":", "网", "球", "孕", "育", "在", "法", "国", ",", "诞", "生", "在", "英", "国", ",", "开", "始", "普", "及", "和", "形", "成", "高", "潮", "在", "美", "国", ",", "现", "盛", "行", "全", "世", "界", "。"], "sample_type": "disturb"} -{"id": 1810, "title": "单人挑战巫女大蛇悲鸣需要多少体力_单人挑战巫女大蛇悲鸣需要体力", "context": "玩家挑战巫女大蛇悲鸣的体力消耗是普通御魂副本的2倍。阴阳师巫女大蛇悲鸣单人通关需要12点体力组队通关的话只需要8点体力,挑战巫女大蛇悲鸣的体力消耗是普通御魂副本的2倍。奖励掉落5星与6星御魂,经验强化狗粮4星青吉鬼。在御魂副本1-10层原本掉落的基础上,巫女大蛇·悲鸣新增了蚌精、幽谷响、轮入道、蝠翼、狂骨这5种御魂的掉落,每日掉落御魂种类增加到5。", "question": "阴阳师 组队挑战大蛇悲鸣需要多少体力", "sent_token": ["玩", "家", "挑", "战", "巫", "女", "大", "蛇", "悲", "鸣", "的", "体", "力", "消", "耗", "是", "普", "通", "御", "魂", "副", "本", "的", "2", "倍", "。", "阴", "阳", "师", "巫", "女", "大", "蛇", "悲", "鸣", "单", "人", "通", "关", "需", "要", "12", "点", "体", "力", "组", "队", "通", "关", "的", "话", "只", "需", "要", "8", "点", "体", "力", ",", "挑", "战", "巫", "女", "大", "蛇", "悲", "鸣", "的", "体", "力", "消", "耗", "是", "普", "通", "御", "魂", "副", "本", "的", "2", "倍", "。", "奖", "励", "掉", "落", "5", "星", "与", "6", "星", "御", "魂", ",", "经", "验", "强", "化", "狗", "粮", "4", "星", "青", "吉", "鬼", "。", "在", "御", "魂", "副", "本", "1", "-", "10", "层", "原", "本", "掉", "落", "的", "基", "础", "上", ",", "巫", "女", "大", "蛇", "·", "悲", "鸣", "新", "增", "了", "蚌", "精", "、", "幽", "谷", "响", "、", "轮", "入", "道", "、", "蝠", "翼", "、", "狂", "骨", "这", "5", "种", "御", "魂", "的", "掉", "落", ",", "每", "日", "掉", "落", "御", "魂", "种", "类", "增", "加", "到", "5", "。", "单", "人", "挑", "战", "巫", "女", "大", "蛇", "悲", "鸣", "需", "要", "多", "少", "体", "力", "_", "单", "人", "挑", "战", "巫", "女", "大", "蛇", "悲", "鸣", "需", "要", "体", "力"], "sample_type": "disturb"} -{"id": 1815, "title": "", "context": "心脏是脊椎动物身体中最重要的一个器官,人类的心脏位于胸腔中部偏左,体积约相当于一个拳头大小,重量约350克。女性的心脏通常要比男性的体积小且重量轻。人的心脏外形像桃子,位于横膈之上,两肺间而偏左。", "question": "人类心脏有多重", "sent_token": ["心", "脏", "是", "脊", "椎", "动", "物", "身", "体", "中", "最", "重", "要", "的", "一", "个", "器", "官", ",", "人", "类", "的", "心", "脏", "位", "于", "胸", "腔", "中", "部", "偏", "左", ",", "体", "积", "约", "相", "当", "于", "一", "个", "拳", "头", "大", "小", ",", "重", "量", "约", "350", "克", "。", "女", "性", "的", "心", "脏", "通", "常", "要", "比", "男", "性", "的", "体", "积", "小", "且", "重", "量", "轻", "。", "人", "的", "心", "脏", "外", "形", "像", "桃", "子", ",", "位", "于", "横", "膈", "之", "上", ",", "两", "肺", "间", "而", "偏", "左", "。"], "sample_type": "disturb"} -{"id": 1816, "title": "紫菜变成紫色还能吃吗-有来医生", "context": "如果紫菜变成紫色的情况下,主要考虑还是紫菜受潮引起的,紫菜受潮以后容易滋生细菌,营养物质也会丧失,口感也会变差,一般情况下,建议不要食用,以免导致消化道的不良反应。紫菜中含有的营养物质是很丰富的,含有丰富的锌元素和铁元素,每天适当的吃一点,可以预防缺铁性贫血,可以预防缺锌引起的反复性口腔溃疡,可以增进食欲。", "question": "海苔回潮了还能吃不", "sent_token": ["如", "果", "紫", "菜", "变", "成", "紫", "色", "的", "情", "况", "下", ",", "主", "要", "考", "虑", "还", "是", "紫", "菜", "受", "潮", "引", "起", "的", ",", "紫", "菜", "受", "潮", "以", "后", "容", "易", "滋", "生", "细", "菌", ",", "营", "养", "物", "质", "也", "会", "丧", "失", ",", "口", "感", "也", "会", "变", "差", ",", "一", "般", "情", "况", "下", ",", "建", "议", "不", "要", "食", "用", ",", "以", "免", "导", "致", "消", "化", "道", "的", "不", "良", "反", "应", "。", "紫", "菜", "中", "含", "有", "的", "营", "养", "物", "质", "是", "很", "丰", "富", "的", ",", "含", "有", "丰", "富", "的", "锌", "元", "素", "和", "铁", "元", "素", ",", "每", "天", "适", "当", "的", "吃", "一", "点", ",", "可", "以", "预", "防", "缺", "铁", "性", "贫", "血", ",", "可", "以", "预", "防", "缺", "锌", "引", "起", "的", "反", "复", "性", "口", "腔", "溃", "疡", ",", "可", "以", "增", "进", "食", "欲", "。", "紫", "菜", "变", "成", "紫", "色", "还", "能", "吃", "吗", "-", "有", "来", "医", "生"], "sample_type": "disturb"} -{"id": 1830, "title": "", "context": "钢铁侠是由美国漫威电影工作室出品的一部科幻冒险电影,改编自同名系列漫画。穿上盔甲后,托尼变身成了复仇者联盟中惩恶扬善的钢铁侠。复仇者联盟2:奥创纪元钢铁侠是美国演员小罗伯特·唐尼演的。小罗伯特唐尼的电影钢铁侠扮演者小罗伯特·。", "question": "谁演过钢铁侠", "sent_token": ["钢", "铁", "侠", "是", "由", "美", "国", "漫", "威", "电", "影", "工", "作", "室", "出", "品", "的", "一", "部", "科", "幻", "冒", "险", "电", "影", ",", "改", "编", "自", "同", "名", "系", "列", "漫", "画", "。", "穿", "上", "盔", "甲", "后", ",", "托", "尼", "变", "身", "成", "了", "复", "仇", "者", "联", "盟", "中", "惩", "恶", "扬", "善", "的", "钢", "铁", "侠", "。", "复", "仇", "者", "联", "盟", "2", ":", "奥", "创", "纪", "元", "钢", "铁", "侠", "是", "美", "国", "演", "员", "小", "罗", "伯", "特", "·", "唐", "尼", "演", "的", "。", "小", "罗", "伯", "特", "唐", "尼", "的", "电", "影", "钢", "铁", "侠", "扮", "演", "者", "小", "罗", "伯", "特", "·", "。"], "sample_type": "disturb"} -{"id": 1831, "title": "人间正道是沧桑是什么意思_酷知经验网", "context": "天若有情天亦老,人间正道是沧桑:上句借用李贺《金铜仙人辞汉歌》中诗句,原诗说的是汉武帝时制作的极贵重的宝物金铜仙人像,在三国时被魏明帝由长安迁往洛阳的传说。原句的意思是,对于这样的人间恨事,天若有情,也要因悲伤而衰老。人间正道,社会发展的正常规律。沧桑,沧海(大海)变为桑田,多指巨大的变化,这里比喻的是革命的道路艰难曲折。", "question": "人间正道是沧桑前面是什么", "sent_token": ["天", "若", "有", "情", "天", "亦", "老", ",", "人", "间", "正", "道", "是", "沧", "桑", ":", "上", "句", "借", "用", "李", "贺", "《", "金", "铜", "仙", "人", "辞", "汉", "歌", "》", "中", "诗", "句", ",", "原", "诗", "说", "的", "是", "汉", "武", "帝", "时", "制", "作", "的", "极", "贵", "重", "的", "宝", "物", "金", "铜", "仙", "人", "像", ",", "在", "三", "国", "时", "被", "魏", "明", "帝", "由", "长", "安", "迁", "往", "洛", "阳", "的", "传", "说", "。", "原", "句", "的", "意", "思", "是", ",", "对", "于", "这", "样", "的", "人", "间", "恨", "事", ",", "天", "若", "有", "情", ",", "也", "要", "因", "悲", "伤", "而", "衰", "老", "。", "人", "间", "正", "道", ",", "社", "会", "发", "展", "的", "正", "常", "规", "律", "。", "沧", "桑", ",", "沧", "海", "(", "大", "海", ")", "变", "为", "桑", "田", ",", "多", "指", "巨", "大", "的", "变", "化", ",", "这", "里", "比", "喻", "的", "是", "革", "命", "的", "道", "路", "艰", "难", "曲", "折", "。", "人", "间", "正", "道", "是", "沧", "桑", "是", "什", "么", "意", "思", "_", "酷", "知", "经", "验", "网"], "sample_type": "disturb"} -{"id": 1834, "title": "", "context": "《艺妓回忆录》根据美国作家阿瑟-高顿的同名小说改编。于2005年12月1日上映,由章子怡·巩俐·杨紫琼等共同演绎。是一部时长约140分钟的电影。全篇充满着古典美,时代背景从1929年开始延续到二战结束,女主人公回忆了自己从小拼命挣扎、历尽荣辱的人生经历。该片获得2006年第78届奥斯卡金像奖最佳摄影、最佳艺术指导、最佳服装设计三项奖项。", "question": "艺伎回忆录片长有多久", "sent_token": ["《", "艺", "妓", "回", "忆", "录", "》", "根", "据", "美", "国", "作", "家", "阿", "瑟", "-", "高", "顿", "的", "同", "名", "小", "说", "改", "编", "。", "于", "2005", "年", "12", "月", "1", "日", "上", "映", ",", "由", "章", "子", "怡", "·", "巩", "俐", "·", "杨", "紫", "琼", "等", "共", "同", "演", "绎", "。", "是", "一", "部", "时", "长", "约", "140", "分", "钟", "的", "电", "影", "。", "全", "篇", "充", "满", "着", "古", "典", "美", ",", "时", "代", "背", "景", "从", "1929", "年", "开", "始", "延", "续", "到", "二", "战", "结", "束", ",", "女", "主", "人", "公", "回", "忆", "了", "自", "己", "从", "小", "拼", "命", "挣", "扎", "、", "历", "尽", "荣", "辱", "的", "人", "生", "经", "历", "。", "该", "片", "获", "得", "2006", "年", "第", "78", "届", "奥", "斯", "卡", "金", "像", "奖", "最", "佳", "摄", "影", "、", "最", "佳", "艺", "术", "指", "导", "、", "最", "佳", "服", "装", "设", "计", "三", "项", "奖", "项", "。"], "sample_type": "disturb"} -{"id": 1839, "title": "痛风挂哪个科室比较好?_39健康问答_39健康网", "context": "痛风属于代谢风湿性疾病,目前主要是在风湿免疫科治疗,所以患者需要挂风湿免疫科。风湿免疫科在绝大多数三级甲等医院都有独立的科室。由于这个科是一个新兴学科,在很多县级医院还没有成立,患者可以到内分泌科就诊,挂内分泌科。如果这两个科都没有患者,可以到骨科就诊,因为痛风首发表现是急性痛风性关节炎,骨科大夫对痛风也有一定的了解。", "question": "痛风属于什么类型疾病呢", "sent_token": ["痛", "风", "属", "于", "代", "谢", "风", "湿", "性", "疾", "病", ",", "目", "前", "主", "要", "是", "在", "风", "湿", "免", "疫", "科", "治", "疗", ",", "所", "以", "患", "者", "需", "要", "挂", "风", "湿", "免", "疫", "科", "。", "风", "湿", "免", "疫", "科", "在", "绝", "大", "多", "数", "三", "级", "甲", "等", "医", "院", "都", "有", "独", "立", "的", "科", "室", "。", "由", "于", "这", "个", "科", "是", "一", "个", "新", "兴", "学", "科", ",", "在", "很", "多", "县", "级", "医", "院", "还", "没", "有", "成", "立", ",", "患", "者", "可", "以", "到", "内", "分", "泌", "科", "就", "诊", ",", "挂", "内", "分", "泌", "科", "。", "如", "果", "这", "两", "个", "科", "都", "没", "有", "患", "者", ",", "可", "以", "到", "骨", "科", "就", "诊", ",", "因", "为", "痛", "风", "首", "发", "表", "现", "是", "急", "性", "痛", "风", "性", "关", "节", "炎", ",", "骨", "科", "大", "夫", "对", "痛", "风", "也", "有", "一", "定", "的", "了", "解", "。", "痛", "风", "挂", "哪", "个", "科", "室", "比", "较", "好", "?", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "disturb"} -{"id": 1844, "title": "阴阳师武士之灵生前被谁所杀_游侠网", "context": "由武士死后的灵魂化成。生前一直为主人效忠,最后献出了生命。从武士之灵的传记中可以得知,武士之灵生前是被茨木童子所击杀。该问题来自游戏内的逢魔密信,正确回答问题之后就有机会获得包括金币、体力、勾玉和结界卡在内的多种游戏内道具物资奖励。", "question": "武士之灵生前被谁所杀", "sent_token": ["由", "武", "士", "死", "后", "的", "灵", "魂", "化", "成", "。", "生", "前", "一", "直", "为", "主", "人", "效", "忠", ",", "最", "后", "献", "出", "了", "生", "命", "。", "从", "武", "士", "之", "灵", "的", "传", "记", "中", "可", "以", "得", "知", ",", "武", "士", "之", "灵", "生", "前", "是", "被", "茨", "木", "童", "子", "所", "击", "杀", "。", "该", "问", "题", "来", "自", "游", "戏", "内", "的", "逢", "魔", "密", "信", ",", "正", "确", "回", "答", "问", "题", "之", "后", "就", "有", "机", "会", "获", "得", "包", "括", "金", "币", "、", "体", "力", "、", "勾", "玉", "和", "结", "界", "卡", "在", "内", "的", "多", "种", "游", "戏", "内", "道", "具", "物", "资", "奖", "励", "。", "阴", "阳", "师", "武", "士", "之", "灵", "生", "前", "被", "谁", "所", "杀", "_", "游", "侠", "网"], "sample_type": "disturb"} -{"id": 1850, "title": "中医肾主什么-有来医生", "context": "根据中医基础理论,肾主水、主纳气、主二便、主藏精。人体的生长的生命过程与肾中精气的盛衰有着密切的关系,肾主水,是指全身的水液代谢都是在肾阳的气化温煦作用下,从而分布到全身,然后再通过呼吸、二便将代谢废物排除体外。肾主纳气,是指肾能够使人体维持正常的呼吸深度。肾主二便,人的大小便需要在肾的作用下,才能够正常的排泄,否则就会出现异常的改变,比如大小便失禁、大便稀薄等情况。肾主藏精,是指五脏六腑化生的精气,最后都是储存在肾脏,反过来肾脏所藏的精气,又能够推动各脏腑的功能。", "question": "肾主什么", "sent_token": ["根", "据", "中", "医", "基", "础", "理", "论", ",", "肾", "主", "水", "、", "主", "纳", "气", "、", "主", "二", "便", "、", "主", "藏", "精", "。", "人", "体", "的", "生", "长", "的", "生", "命", "过", "程", "与", "肾", "中", "精", "气", "的", "盛", "衰", "有", "着", "密", "切", "的", "关", "系", ",", "肾", "主", "水", ",", "是", "指", "全", "身", "的", "水", "液", "代", "谢", "都", "是", "在", "肾", "阳", "的", "气", "化", "温", "煦", "作", "用", "下", ",", "从", "而", "分", "布", "到", "全", "身", ",", "然", "后", "再", "通", "过", "呼", "吸", "、", "二", "便", "将", "代", "谢", "废", "物", "排", "除", "体", "外", "。", "肾", "主", "纳", "气", ",", "是", "指", "肾", "能", "够", "使", "人", "体", "维", "持", "正", "常", "的", "呼", "吸", "深", "度", "。", "肾", "主", "二", "便", ",", "人", "的", "大", "小", "便", "需", "要", "在", "肾", "的", "作", "用", "下", ",", "才", "能", "够", "正", "常", "的", "排", "泄", ",", "否", "则", "就", "会", "出", "现", "异", "常", "的", "改", "变", ",", "比", "如", "大", "小", "便", "失", "禁", "、", "大", "便", "稀", "薄", "等", "情", "况", "。", "肾", "主", "藏", "精", ",", "是", "指", "五", "脏", "六", "腑", "化", "生", "的", "精", "气", ",", "最", "后", "都", "是", "储", "存", "在", "肾", "脏", ",", "反", "过", "来", "肾", "脏", "所", "藏", "的", "精", "气", ",", "又", "能", "够", "推", "动", "各", "脏", "腑", "的", "功", "能", "。", "中", "医", "肾", "主", "什", "么", "-", "有", "来", "医", "生"], "sample_type": "disturb"} -{"id": 1853, "title": "1963年属什么生肖年_十二生肖_卜易居", "context": "1963年中苏公开论战、美国黑人民权运动兴起、肯尼迪遇刺等事件震动世界。1963年属什么生肖年,葵卯兔年,属兔之人举止文雅,谈吐随和,为人恭良谦逊,与人交往如慕春风,学习能力超群,敏捷果断,安贫乐道。虽性子柔弱,但韧性极强,绝境之中能力惊人,缺点则是难以坚持原则,随波逐流。", "question": "1963年属什么生肖", "sent_token": ["1963", "年", "中", "苏", "公", "开", "论", "战", "、", "美", "国", "黑", "人", "民", "权", "运", "动", "兴", "起", "、", "肯", "尼", "迪", "遇", "刺", "等", "事", "件", "震", "动", "世", "界", "。", "1963", "年", "属", "什", "么", "生", "肖", "年", ",", "葵", "卯", "兔", "年", ",", "属", "兔", "之", "人", "举", "止", "文", "雅", ",", "谈", "吐", "随", "和", ",", "为", "人", "恭", "良", "谦", "逊", ",", "与", "人", "交", "往", "如", "慕", "春", "风", ",", "学", "习", "能", "力", "超", "群", ",", "敏", "捷", "果", "断", ",", "安", "贫", "乐", "道", "。", "虽", "性", "子", "柔", "弱", ",", "但", "韧", "性", "极", "强", ",", "绝", "境", "之", "中", "能", "力", "惊", "人", ",", "缺", "点", "则", "是", "难", "以", "坚", "持", "原", "则", ",", "随", "波", "逐", "流", "。", "1963", "年", "属", "什", "么", "生", "肖", "年", "_", "十", "二", "生", "肖", "_", "卜", "易", "居"], "sample_type": "disturb"} -{"id": 1854, "title": "食管和食道一样吗-有来医生", "context": "食管和食道是没有区别的,食管是医学上的称谓,而食道是民间的一种说法。两者都指从咽喉部到胃贲门之间的管道。食管是距门齿15cm处为食管的入口处,经过胸腔之后通过贲门口也就是膈肌孔与胃相连。食管可以分为颈段和胸段,而胸段又分为胸上段、胸中段和胸下段。食管本身有3个生理性的狭窄,这也是某些食管疾病发生的基础。常见的食管疾病包括食管炎、食管息肉、食管癌、食管狭窄、胃食管反流症、巴雷特食管等。可以通过消化道造影以及胃镜来进一步明确。", "question": "食管跟食道有什么不同", "sent_token": ["食", "管", "和", "食", "道", "是", "没", "有", "区", "别", "的", ",", "食", "管", "是", "医", "学", "上", "的", "称", "谓", ",", "而", "食", "道", "是", "民", "间", "的", "一", "种", "说", "法", "。", "两", "者", "都", "指", "从", "咽", "喉", "部", "到", "胃", "贲", "门", "之", "间", "的", "管", "道", "。", "食", "管", "是", "距", "门", "齿", "15cm", "处", "为", "食", "管", "的", "入", "口", "处", ",", "经", "过", "胸", "腔", "之", "后", "通", "过", "贲", "门", "口", "也", "就", "是", "膈", "肌", "孔", "与", "胃", "相", "连", "。", "食", "管", "可", "以", "分", "为", "颈", "段", "和", "胸", "段", ",", "而", "胸", "段", "又", "分", "为", "胸", "上", "段", "、", "胸", "中", "段", "和", "胸", "下", "段", "。", "食", "管", "本", "身", "有", "3", "个", "生", "理", "性", "的", "狭", "窄", ",", "这", "也", "是", "某", "些", "食", "管", "疾", "病", "发", "生", "的", "基", "础", "。", "常", "见", "的", "食", "管", "疾", "病", "包", "括", "食", "管", "炎", "、", "食", "管", "息", "肉", "、", "食", "管", "癌", "、", "食", "管", "狭", "窄", "、", "胃", "食", "管", "反", "流", "症", "、", "巴", "雷", "特", "食", "管", "等", "。", "可", "以", "通", "过", "消", "化", "道", "造", "影", "以", "及", "胃", "镜", "来", "进", "一", "步", "明", "确", "。", "食", "管", "和", "食", "道", "一", "样", "吗", "-", "有", "来", "医", "生"], "sample_type": "disturb"} -{"id": 1863, "title": "农历六月二十四是什么星座-星座乐", "context": "农历六月二十四是狮子座。狮子座,火象星座,位于黄道十二宫之第五宫,出生日期为阳历7月23日-8月22日。狮子座是英雄主义者,他们乐观,乐于助人,喜欢帮助弱势群体。他们天生自带光环,特立独行,做事豪爽大气,讲话淡定从容,从不扭扭捏捏畏畏缩缩。而且心思细腻,做事完整准确,善于将自己的优点发挥到极致。", "question": "星座查询:中国阴历六月二十四", "sent_token": ["农", "历", "六", "月", "二", "十", "四", "是", "狮", "子", "座", "。", "狮", "子", "座", ",", "火", "象", "星", "座", ",", "位", "于", "黄", "道", "十", "二", "宫", "之", "第", "五", "宫", ",", "出", "生", "日", "期", "为", "阳", "历", "7", "月", "23", "日", "-", "8", "月", "22", "日", "。", "狮", "子", "座", "是", "英", "雄", "主", "义", "者", ",", "他", "们", "乐", "观", ",", "乐", "于", "助", "人", ",", "喜", "欢", "帮", "助", "弱", "势", "群", "体", "。", "他", "们", "天", "生", "自", "带", "光", "环", ",", "特", "立", "独", "行", ",", "做", "事", "豪", "爽", "大", "气", ",", "讲", "话", "淡", "定", "从", "容", ",", "从", "不", "扭", "扭", "捏", "捏", "畏", "畏", "缩", "缩", "。", "而", "且", "心", "思", "细", "腻", ",", "做", "事", "完", "整", "准", "确", ",", "善", "于", "将", "自", "己", "的", "优", "点", "发", "挥", "到", "极", "致", "。", "农", "历", "六", "月", "二", "十", "四", "是", "什", "么", "星", "座", "-", "星", "座", "乐"], "sample_type": "disturb"} -{"id": 1867, "title": "", "context": "非法持有海洛因10克以上就构成非法持有毒品罪非法持有毒品罪,是指明知是鸦片、海洛因、甲基苯丙胺或者其他毒品,而非法持有且数量较大的行为。非法持有毒品达到一定数量才构成犯罪。", "question": "携带多少克吗啡类毒品,就已经算犯罪了", "sent_token": ["非", "法", "持", "有", "海", "洛", "因", "10", "克", "以", "上", "就", "构", "成", "非", "法", "持", "有", "毒", "品", "罪", "非", "法", "持", "有", "毒", "品", "罪", ",", "是", "指", "明", "知", "是", "鸦", "片", "、", "海", "洛", "因", "、", "甲", "基", "苯", "丙", "胺", "或", "者", "其", "他", "毒", "品", ",", "而", "非", "法", "持", "有", "且", "数", "量", "较", "大", "的", "行", "为", "。", "非", "法", "持", "有", "毒", "品", "达", "到", "一", "定", "数", "量", "才", "构", "成", "犯", "罪", "。"], "sample_type": "disturb"} -{"id": 1877, "title": "地方志书每几年左右编修一次_高三网", "context": "地方志书每20年左右编修一次。每一轮地方志书编修工作完成后,负责地方志工作的机构在编纂地方综合年鉴、搜集资料以及向社会提供咨询服务的同时,启动新一轮地方志书的续修工作。", "question": "那种用来记述地方情况的史志,一般都是多少年修一次", "sent_token": ["地", "方", "志", "书", "每", "20", "年", "左", "右", "编", "修", "一", "次", "。", "每", "一", "轮", "地", "方", "志", "书", "编", "修", "工", "作", "完", "成", "后", ",", "负", "责", "地", "方", "志", "工", "作", "的", "机", "构", "在", "编", "纂", "地", "方", "综", "合", "年", "鉴", "、", "搜", "集", "资", "料", "以", "及", "向", "社", "会", "提", "供", "咨", "询", "服", "务", "的", "同", "时", ",", "启", "动", "新", "一", "轮", "地", "方", "志", "书", "的", "续", "修", "工", "作", "。", "地", "方", "志", "书", "每", "几", "年", "左", "右", "编", "修", "一", "次", "_", "高", "三", "网"], "sample_type": "disturb"} -{"id": 1879, "title": "", "context": "《正气歌》是南宋诗人文天祥在狱中写的一首五言古诗。表达了作者忠君爱国、为国捐躯,忧国之痛和愿意以死明志、为国捐躯的豪情壮志的思想感情。诗的开头即点出浩然正气存乎天地之间,至时穷之际,必然会显示出来。随后连用十二个典故,都是历史上有名的人物,他们的所作所为凛然显示出浩然正气的力量。接下来八句说明浩然正气贯日月,立天地,为三纲之命,道义之根。最后联系到自己的命运,自己虽然兵败被俘,处在极其恶劣的牢狱之中,但是由于自己一身正气,各种邪气和疾病都不能侵犯自己,因此自己能够坦然面对自己的命运。全诗感情深沉、气壮山河、直抒胸臆、毫无雕饰,充分体现了作者崇高的民族气节和强烈的爱国主义精神。", "question": "正气歌》的作者是", "sent_token": ["《", "正", "气", "歌", "》", "是", "南", "宋", "诗", "人", "文", "天", "祥", "在", "狱", "中", "写", "的", "一", "首", "五", "言", "古", "诗", "。", "表", "达", "了", "作", "者", "忠", "君", "爱", "国", "、", "为", "国", "捐", "躯", ",", "忧", "国", "之", "痛", "和", "愿", "意", "以", "死", "明", "志", "、", "为", "国", "捐", "躯", "的", "豪", "情", "壮", "志", "的", "思", "想", "感", "情", "。", "诗", "的", "开", "头", "即", "点", "出", "浩", "然", "正", "气", "存", "乎", "天", "地", "之", "间", ",", "至", "时", "穷", "之", "际", ",", "必", "然", "会", "显", "示", "出", "来", "。", "随", "后", "连", "用", "十", "二", "个", "典", "故", ",", "都", "是", "历", "史", "上", "有", "名", "的", "人", "物", ",", "他", "们", "的", "所", "作", "所", "为", "凛", "然", "显", "示", "出", "浩", "然", "正", "气", "的", "力", "量", "。", "接", "下", "来", "八", "句", "说", "明", "浩", "然", "正", "气", "贯", "日", "月", ",", "立", "天", "地", ",", "为", "三", "纲", "之", "命", ",", "道", "义", "之", "根", "。", "最", "后", "联", "系", "到", "自", "己", "的", "命", "运", ",", "自", "己", "虽", "然", "兵", "败", "被", "俘", ",", "处", "在", "极", "其", "恶", "劣", "的", "牢", "狱", "之", "中", ",", "但", "是", "由", "于", "自", "己", "一", "身", "正", "气", ",", "各", "种", "邪", "气", "和", "疾", "病", "都", "不", "能", "侵", "犯", "自", "己", ",", "因", "此", "自", "己", "能", "够", "坦", "然", "面", "对", "自", "己", "的", "命", "运", "。", "全", "诗", "感", "情", "深", "沉", "、", "气", "壮", "山", "河", "、", "直", "抒", "胸", "臆", "、", "毫", "无", "雕", "饰", ",", "充", "分", "体", "现", "了", "作", "者", "崇", "高", "的", "民", "族", "气", "节", "和", "强", "烈", "的", "爱", "国", "主", "义", "精", "神", "。"], "sample_type": "disturb"} -{"id": 1883, "title": "狗狗皮肤上长小脓包怎么回事", "context": "狗狗身上长脓包,是因为真菌感染或是寄生虫感染所致。如不及时处理脓包,会导致扩散全身,甚至溃烂。建议方法:戴上手套,把狗狗身上长脓包的地方挤一挤;然后用碘伏直接喷在患处;如有脓血可用医用纱布给它包在患处,等药效吸收后,取掉纱布;碘伏具有抗菌、消炎的作用,一天可以喷两三次;处理完狗狗伤口后用肥皂洗手。狗狗洗澡要用狗狗专门的沐浴露;洗后立即做吹干处理;定时用狗狗专用梳子,清理身上多余的杂毛;尽量带狗狗去干净的地方玩,回家后把狗狗的脚用抹布抹一次;多注意狗舍卫生,定时做消毒处理。宠物皮肤疾病也是会有一定传染性的,所以一定要进行定期消毒,选用专门的宠物消毒液,每周消毒1-2次,能有效预防传染", "question": "狗狗身上长小脓包是怎么回事", "sent_token": ["狗", "狗", "身", "上", "长", "脓", "包", ",", "是", "因", "为", "真", "菌", "感", "染", "或", "是", "寄", "生", "虫", "感", "染", "所", "致", "。", "如", "不", "及", "时", "处", "理", "脓", "包", ",", "会", "导", "致", "扩", "散", "全", "身", ",", "甚", "至", "溃", "烂", "。", "建", "议", "方", "法", ":", "戴", "上", "手", "套", ",", "把", "狗", "狗", "身", "上", "长", "脓", "包", "的", "地", "方", "挤", "一", "挤", ";", "然", "后", "用", "碘", "伏", "直", "接", "喷", "在", "患", "处", ";", "如", "有", "脓", "血", "可", "用", "医", "用", "纱", "布", "给", "它", "包", "在", "患", "处", ",", "等", "药", "效", "吸", "收", "后", ",", "取", "掉", "纱", "布", ";", "碘", "伏", "具", "有", "抗", "菌", "、", "消", "炎", "的", "作", "用", ",", "一", "天", "可", "以", "喷", "两", "三", "次", ";", "处", "理", "完", "狗", "狗", "伤", "口", "后", "用", "肥", "皂", "洗", "手", "。", "狗", "狗", "洗", "澡", "要", "用", "狗", "狗", "专", "门", "的", "沐", "浴", "露", ";", "洗", "后", "立", "即", "做", "吹", "干", "处", "理", ";", "定", "时", "用", "狗", "狗", "专", "用", "梳", "子", ",", "清", "理", "身", "上", "多", "余", "的", "杂", "毛", ";", "尽", "量", "带", "狗", "狗", "去", "干", "净", "的", "地", "方", "玩", ",", "回", "家", "后", "把", "狗", "狗", "的", "脚", "用", "抹", "布", "抹", "一", "次", ";", "多", "注", "意", "狗", "舍", "卫", "生", ",", "定", "时", "做", "消", "毒", "处", "理", "。", "宠", "物", "皮", "肤", "疾", "病", "也", "是", "会", "有", "一", "定", "传", "染", "性", "的", ",", "所", "以", "一", "定", "要", "进", "行", "定", "期", "消", "毒", ",", "选", "用", "专", "门", "的", "宠", "物", "消", "毒", "液", ",", "每", "周", "消", "毒", "1", "-", "2", "次", ",", "能", "有", "效", "预", "防", "传", "染", "狗", "狗", "皮", "肤", "上", "长", "小", "脓", "包", "怎", "么", "回", "事"], "sample_type": "disturb"} -{"id": 1885, "title": "", "context": "新梓学校成立于2007年9月,是一所公办九年一贯制学校,座落在龙岗街道新生社区,紧邻水岸新都花园,交通十分便利。校园占地27500平方米,建筑面积16285平方米。学校设计办学规模36班,学生人数1800人", "question": "新梓学校地址", "sent_token": ["新", "梓", "学", "校", "成", "立", "于", "2007", "年", "9", "月", ",", "是", "一", "所", "公", "办", "九", "年", "一", "贯", "制", "学", "校", ",", "座", "落", "在", "龙", "岗", "街", "道", "新", "生", "社", "区", ",", "紧", "邻", "水", "岸", "新", "都", "花", "园", ",", "交", "通", "十", "分", "便", "利", "。", "校", "园", "占", "地", "27500", "平", "方", "米", ",", "建", "筑", "面", "积", "16285", "平", "方", "米", "。", "学", "校", "设", "计", "办", "学", "规", "模", "36", "班", ",", "学", "生", "人", "数", "1800", "人"], "sample_type": "disturb"} -{"id": 1886, "title": "敷面膜脸痒是缺水吗?教你正确的认识_皮肤", "context": "当我们在洗完澡的时候,或者是敷面膜发现皮肤有一种痒痒的感觉,如果你确定面膜的质量是没有问题的,并且也确定你对这款面膜的物质没有过敏的情况下,皮肤出现痒的感觉,那可能的原因就是由于皮肤缺水。因为你的皮肤太缺水了,在给皮肤补水的时候就会出现一种痒的情况严重的时候,甚至会有刺痛的感觉。会让人觉得很不舒服,水分充足后会缓解。", "question": "脸痒是缺水么", "sent_token": ["当", "我", "们", "在", "洗", "完", "澡", "的", "时", "候", ",", "或", "者", "是", "敷", "面", "膜", "发", "现", "皮", "肤", "有", "一", "种", "痒", "痒", "的", "感", "觉", ",", "如", "果", "你", "确", "定", "面", "膜", "的", "质", "量", "是", "没", "有", "问", "题", "的", ",", "并", "且", "也", "确", "定", "你", "对", "这", "款", "面", "膜", "的", "物", "质", "没", "有", "过", "敏", "的", "情", "况", "下", ",", "皮", "肤", "出", "现", "痒", "的", "感", "觉", ",", "那", "可", "能", "的", "原", "因", "就", "是", "由", "于", "皮", "肤", "缺", "水", "。", "因", "为", "你", "的", "皮", "肤", "太", "缺", "水", "了", ",", "在", "给", "皮", "肤", "补", "水", "的", "时", "候", "就", "会", "出", "现", "一", "种", "痒", "的", "情", "况", "严", "重", "的", "时", "候", ",", "甚", "至", "会", "有", "刺", "痛", "的", "感", "觉", "。", "会", "让", "人", "觉", "得", "很", "不", "舒", "服", ",", "水", "分", "充", "足", "后", "会", "缓", "解", "。", "敷", "面", "膜", "脸", "痒", "是", "缺", "水", "吗", "?", "教", "你", "正", "确", "的", "认", "识", "_", "皮", "肤"], "sample_type": "disturb"} -{"id": 1888, "title": "无痛人流和药流哪个伤害比较小-有来医生", "context": "无痛人工流产手术和药物流产手术,相对比来说,还是药物流产伤害比较大。因为药物流产,阴道流血时间会比人工流产的阴道流血时间要长,一般人工流产,阴道流血时间不超过7天,而药物流产阴道流血的时间往往在15-20天左右才会干净。一直在有流血的状况下,宫口就是开放的,阴道又跟外界相通,跟宫颈又相通,这样造成细菌侵入感染的机会就会增加,所以容易导致生殖道的感染。另外,药物流产造成不全流产的可能性会大一些,需要做清宫手术。这样就可以想象出药物流产会比无痛人流伤害更大一些。人流手术都是属于微创无痛性质的,具有无痛、创伤极小,出血少、手术时间短,无需住院,手术后即可回家,不影响工作和生活等优势。", "question": "无痛人流和药流哪个伤害比较小", "sent_token": ["无", "痛", "人", "工", "流", "产", "手", "术", "和", "药", "物", "流", "产", "手", "术", ",", "相", "对", "比", "来", "说", ",", "还", "是", "药", "物", "流", "产", "伤", "害", "比", "较", "大", "。", "因", "为", "药", "物", "流", "产", ",", "阴", "道", "流", "血", "时", "间", "会", "比", "人", "工", "流", "产", "的", "阴", "道", "流", "血", "时", "间", "要", "长", ",", "一", "般", "人", "工", "流", "产", ",", "阴", "道", "流", "血", "时", "间", "不", "超", "过", "7", "天", ",", "而", "药", "物", "流", "产", "阴", "道", "流", "血", "的", "时", "间", "往", "往", "在", "15", "-", "20", "天", "左", "右", "才", "会", "干", "净", "。", "一", "直", "在", "有", "流", "血", "的", "状", "况", "下", ",", "宫", "口", "就", "是", "开", "放", "的", ",", "阴", "道", "又", "跟", "外", "界", "相", "通", ",", "跟", "宫", "颈", "又", "相", "通", ",", "这", "样", "造", "成", "细", "菌", "侵", "入", "感", "染", "的", "机", "会", "就", "会", "增", "加", ",", "所", "以", "容", "易", "导", "致", "生", "殖", "道", "的", "感", "染", "。", "另", "外", ",", "药", "物", "流", "产", "造", "成", "不", "全", "流", "产", "的", "可", "能", "性", "会", "大", "一", "些", ",", "需", "要", "做", "清", "宫", "手", "术", "。", "这", "样", "就", "可", "以", "想", "象", "出", "药", "物", "流", "产", "会", "比", "无", "痛", "人", "流", "伤", "害", "更", "大", "一", "些", "。", "人", "流", "手", "术", "都", "是", "属", "于", "微", "创", "无", "痛", "性", "质", "的", ",", "具", "有", "无", "痛", "、", "创", "伤", "极", "小", ",", "出", "血", "少", "、", "手", "术", "时", "间", "短", ",", "无", "需", "住", "院", ",", "手", "术", "后", "即", "可", "回", "家", ",", "不", "影", "响", "工", "作", "和", "生", "活", "等", "优", "势", "。", "无", "痛", "人", "流", "和", "药", "流", "哪", "个", "伤", "害", "比", "较", "小", "-", "有", "来", "医", "生"], "sample_type": "disturb"} -{"id": 1890, "title": "长期吃葡萄籽的副作用?_39健康问答_39健康网", "context": "长期吃葡萄籽不会有副作用,不用担心,葡萄籽中含有丰富的花青素,有美容养颜的功效。葡萄籽含有丰富的多种氨基酸、维生素及矿物质等,原花青素含量最高,有促进血液循环、保护视力、抗氧化去除自由基、降低血、保护心血管的作用,可以用于保健、美容。", "question": "葡萄籽能长期吃么?有什么副作用呀?", "sent_token": ["长", "期", "吃", "葡", "萄", "籽", "不", "会", "有", "副", "作", "用", ",", "不", "用", "担", "心", ",", "葡", "萄", "籽", "中", "含", "有", "丰", "富", "的", "花", "青", "素", ",", "有", "美", "容", "养", "颜", "的", "功", "效", "。", "葡", "萄", "籽", "含", "有", "丰", "富", "的", "多", "种", "氨", "基", "酸", "、", "维", "生", "素", "及", "矿", "物", "质", "等", ",", "原", "花", "青", "素", "含", "量", "最", "高", ",", "有", "促", "进", "血", "液", "循", "环", "、", "保", "护", "视", "力", "、", "抗", "氧", "化", "去", "除", "自", "由", "基", "、", "降", "低", "血", "、", "保", "护", "心", "血", "管", "的", "作", "用", ",", "可", "以", "用", "于", "保", "健", "、", "美", "容", "。", "长", "期", "吃", "葡", "萄", "籽", "的", "副", "作", "用", "?", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "disturb"} -{"id": 1894, "title": "红花哪里产的最好?_39健康问答_39健康网", "context": "红花在中国很多地方都是有种植的,比如河南,江苏,四川,河北等等。但是在众多产地中河南的商丘生产的红花应该是最好的了。红花有一种特殊的气味,特别香,味道稍微有点苦。红花是一种很好的植物,对人体有很好的保健作用。高血压患者可以服用一些,红花是有一定的降压作用的,另外还可以促进人体血液的循环,降低血脂。", "question": "最好的刺红花生产自哪里", "sent_token": ["红", "花", "在", "中", "国", "很", "多", "地", "方", "都", "是", "有", "种", "植", "的", ",", "比", "如", "河", "南", ",", "江", "苏", ",", "四", "川", ",", "河", "北", "等", "等", "。", "但", "是", "在", "众", "多", "产", "地", "中", "河", "南", "的", "商", "丘", "生", "产", "的", "红", "花", "应", "该", "是", "最", "好", "的", "了", "。", "红", "花", "有", "一", "种", "特", "殊", "的", "气", "味", ",", "特", "别", "香", ",", "味", "道", "稍", "微", "有", "点", "苦", "。", "红", "花", "是", "一", "种", "很", "好", "的", "植", "物", ",", "对", "人", "体", "有", "很", "好", "的", "保", "健", "作", "用", "。", "高", "血", "压", "患", "者", "可", "以", "服", "用", "一", "些", ",", "红", "花", "是", "有", "一", "定", "的", "降", "压", "作", "用", "的", ",", "另", "外", "还", "可", "以", "促", "进", "人", "体", "血", "液", "的", "循", "环", ",", "降", "低", "血", "脂", "。", "红", "花", "哪", "里", "产", "的", "最", "好", "?", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "disturb"} -{"id": 1897, "title": "", "context": "梳妆台指用来化妆的家具装饰。梳妆台一词,在现代家居中,已经被业主、客户、家居设计师广泛用到,现在泛指家具梳妆台。梳妆台尺寸标准的是总高度为1500mm左右,宽为700mm到1200mm,这样的梳妆台尺寸是大小正合适的,在家庭装修之前的前期准备时,就应该确定好梳妆台尺寸大小,同时梳妆台尺寸也要和房间的格调和风格统一起来。每个人都有自己不同的审美眼光,所以在外观选择上只要是个人喜欢就行,但梳妆台的外表最好选择用油漆刷过的,这样容易清理,不至于化妆品渗透到梳妆台内,影响梳妆台的外观", "question": "梳妆台整体高度一般是多少", "sent_token": ["梳", "妆", "台", "指", "用", "来", "化", "妆", "的", "家", "具", "装", "饰", "。", "梳", "妆", "台", "一", "词", ",", "在", "现", "代", "家", "居", "中", ",", "已", "经", "被", "业", "主", "、", "客", "户", "、", "家", "居", "设", "计", "师", "广", "泛", "用", "到", ",", "现", "在", "泛", "指", "家", "具", "梳", "妆", "台", "。", "梳", "妆", "台", "尺", "寸", "标", "准", "的", "是", "总", "高", "度", "为", "1500mm", "左", "右", ",", "宽", "为", "700mm", "到", "1200mm", ",", "这", "样", "的", "梳", "妆", "台", "尺", "寸", "是", "大", "小", "正", "合", "适", "的", ",", "在", "家", "庭", "装", "修", "之", "前", "的", "前", "期", "准", "备", "时", ",", "就", "应", "该", "确", "定", "好", "梳", "妆", "台", "尺", "寸", "大", "小", ",", "同", "时", "梳", "妆", "台", "尺", "寸", "也", "要", "和", "房", "间", "的", "格", "调", "和", "风", "格", "统", "一", "起", "来", "。", "每", "个", "人", "都", "有", "自", "己", "不", "同", "的", "审", "美", "眼", "光", ",", "所", "以", "在", "外", "观", "选", "择", "上", "只", "要", "是", "个", "人", "喜", "欢", "就", "行", ",", "但", "梳", "妆", "台", "的", "外", "表", "最", "好", "选", "择", "用", "油", "漆", "刷", "过", "的", ",", "这", "样", "容", "易", "清", "理", ",", "不", "至", "于", "化", "妆", "品", "渗", "透", "到", "梳", "妆", "台", "内", ",", "影", "响", "梳", "妆", "台", "的", "外", "观"], "sample_type": "disturb"} -{"id": 1899, "title": "感冒能不能吃燕窝_妈妈网小百科", "context": "在感冒的时候尽量不要吃燕窝,燕窝性平味甘,归肺胃肾经,功能养阴润燥,益气补中,填精补髓。虽然燕窝比较滋补,但是在感冒期间吃燕窝的话,并不利于感冒的恢复。在感冒期间应该吃得清淡一些,补充身体需要的水分,如果没有食欲的话可以多喝一些粥。在感冒期间可能吃药物的话,也不能够起到很好的效果,但是也要坚持吃药。", "question": "感冒可以吃燕窝吗?有效果吗?", "sent_token": ["在", "感", "冒", "的", "时", "候", "尽", "量", "不", "要", "吃", "燕", "窝", ",", "燕", "窝", "性", "平", "味", "甘", ",", "归", "肺", "胃", "肾", "经", ",", "功", "能", "养", "阴", "润", "燥", ",", "益", "气", "补", "中", ",", "填", "精", "补", "髓", "。", "虽", "然", "燕", "窝", "比", "较", "滋", "补", ",", "但", "是", "在", "感", "冒", "期", "间", "吃", "燕", "窝", "的", "话", ",", "并", "不", "利", "于", "感", "冒", "的", "恢", "复", "。", "在", "感", "冒", "期", "间", "应", "该", "吃", "得", "清", "淡", "一", "些", ",", "补", "充", "身", "体", "需", "要", "的", "水", "分", ",", "如", "果", "没", "有", "食", "欲", "的", "话", "可", "以", "多", "喝", "一", "些", "粥", "。", "在", "感", "冒", "期", "间", "可", "能", "吃", "药", "物", "的", "话", ",", "也", "不", "能", "够", "起", "到", "很", "好", "的", "效", "果", ",", "但", "是", "也", "要", "坚", "持", "吃", "药", "。", "感", "冒", "能", "不", "能", "吃", "燕", "窝", "_", "妈", "妈", "网", "小", "百", "科"], "sample_type": "disturb"} -{"id": 1900, "title": "房颤会引起脑梗吗-有来医生", "context": "房颤会引起脑血管疾病,在医学上不叫脑梗叫脑栓塞,脑梗是脑血管本身病变引起的脑供血不足的情况,而脑栓塞是由于房颤心脏上形成了附壁血栓,当血栓的栓子脱落之后,就有可能堵塞在脑血管形成了脑拴塞,也是一种脑缺血的表现。治疗方法可以应用改善循环和营养神经的药物治疗,必须应用阿司匹林和氯吡格雷口服抗血小板聚集治疗,对于心房纤颤的患者,要控制心室率,应用阿司匹林和氯吡格雷等口服抗血小板聚集治疗,预防心脏附壁血栓的形成。", "question": "房颤不会引起脑梗吗", "sent_token": ["房", "颤", "会", "引", "起", "脑", "血", "管", "疾", "病", ",", "在", "医", "学", "上", "不", "叫", "脑", "梗", "叫", "脑", "栓", "塞", ",", "脑", "梗", "是", "脑", "血", "管", "本", "身", "病", "变", "引", "起", "的", "脑", "供", "血", "不", "足", "的", "情", "况", ",", "而", "脑", "栓", "塞", "是", "由", "于", "房", "颤", "心", "脏", "上", "形", "成", "了", "附", "壁", "血", "栓", ",", "当", "血", "栓", "的", "栓", "子", "脱", "落", "之", "后", ",", "就", "有", "可", "能", "堵", "塞", "在", "脑", "血", "管", "形", "成", "了", "脑", "拴", "塞", ",", "也", "是", "一", "种", "脑", "缺", "血", "的", "表", "现", "。", "治", "疗", "方", "法", "可", "以", "应", "用", "改", "善", "循", "环", "和", "营", "养", "神", "经", "的", "药", "物", "治", "疗", ",", "必", "须", "应", "用", "阿", "司", "匹", "林", "和", "氯", "吡", "格", "雷", "口", "服", "抗", "血", "小", "板", "聚", "集", "治", "疗", ",", "对", "于", "心", "房", "纤", "颤", "的", "患", "者", ",", "要", "控", "制", "心", "室", "率", ",", "应", "用", "阿", "司", "匹", "林", "和", "氯", "吡", "格", "雷", "等", "口", "服", "抗", "血", "小", "板", "聚", "集", "治", "疗", ",", "预", "防", "心", "脏", "附", "壁", "血", "栓", "的", "形", "成", "。", "房", "颤", "会", "引", "起", "脑", "梗", "吗", "-", "有", "来", "医", "生"], "sample_type": "disturb"} -{"id": 1906, "title": "二十天的婴儿能看多远_妈妈网小百科", "context": "20天的宝宝能够看到的距离大概是15厘米-20厘米左右,一般能够看到18厘米左右的事物。宝宝刚出生的时候视力极其差,有的甚至没有睁开眼,可以说基本什么都看不清楚,视力比较好的新生儿,也只能感受到光和影或大致的轮廓。随着宝宝的眼球、视神经和大脑的不断发育,他们看到的景物会越来越清楚,视野也会不断扩大,在出生6-8个月后,宝宝眼中的世界,就基本和成人一样了。", "question": "二十天的宝宝能看多远?", "sent_token": ["20", "天", "的", "宝", "宝", "能", "够", "看", "到", "的", "距", "离", "大", "概", "是", "15", "厘", "米", "-", "20", "厘", "米", "左", "右", ",", "一", "般", "能", "够", "看", "到", "18", "厘", "米", "左", "右", "的", "事", "物", "。", "宝", "宝", "刚", "出", "生", "的", "时", "候", "视", "力", "极", "其", "差", ",", "有", "的", "甚", "至", "没", "有", "睁", "开", "眼", ",", "可", "以", "说", "基", "本", "什", "么", "都", "看", "不", "清", "楚", ",", "视", "力", "比", "较", "好", "的", "新", "生", "儿", ",", "也", "只", "能", "感", "受", "到", "光", "和", "影", "或", "大", "致", "的", "轮", "廓", "。", "随", "着", "宝", "宝", "的", "眼", "球", "、", "视", "神", "经", "和", "大", "脑", "的", "不", "断", "发", "育", ",", "他", "们", "看", "到", "的", "景", "物", "会", "越", "来", "越", "清", "楚", ",", "视", "野", "也", "会", "不", "断", "扩", "大", ",", "在", "出", "生", "6", "-", "8", "个", "月", "后", ",", "宝", "宝", "眼", "中", "的", "世", "界", ",", "就", "基", "本", "和", "成", "人", "一", "样", "了", "。", "二", "十", "天", "的", "婴", "儿", "能", "看", "多", "远", "_", "妈", "妈", "网", "小", "百", "科"], "sample_type": "disturb"} -{"id": 1918, "title": "4价宫颈疫苗多少钱-有来医生", "context": "4价宫颈癌疫苗有国产疫苗和进口疫苗,国产疫苗价格比较便宜,预防宫颈癌的疫苗只有4价疫苗,具体价格不同地区以及不同生产厂家生产的疫苗,所定价格也不一样。在北京4价宫颈癌疫苗,价格大概是800元左右,总共需要接种三针,需要在半年内接种完,分别在第一个月,第2个月和第6个月各接种一针次,接种年龄是20-45周岁,建议咨询当地疾病预防控制机构,所进疫苗的具体价格比较准确。比如江苏省从2019年开始,所有有价疫苗都是零差价出售,每接种一针次,收取20元材料费和注射费,目前接种宫颈癌疫苗,应该先预约才可以接种。", "question": "中国自己生产的HPV疫苗都有哪些", "sent_token": ["4", "价", "宫", "颈", "癌", "疫", "苗", "有", "国", "产", "疫", "苗", "和", "进", "口", "疫", "苗", ",", "国", "产", "疫", "苗", "价", "格", "比", "较", "便", "宜", ",", "预", "防", "宫", "颈", "癌", "的", "疫", "苗", "只", "有", "4", "价", "疫", "苗", ",", "具", "体", "价", "格", "不", "同", "地", "区", "以", "及", "不", "同", "生", "产", "厂", "家", "生", "产", "的", "疫", "苗", ",", "所", "定", "价", "格", "也", "不", "一", "样", "。", "在", "北", "京", "4", "价", "宫", "颈", "癌", "疫", "苗", ",", "价", "格", "大", "概", "是", "800", "元", "左", "右", ",", "总", "共", "需", "要", "接", "种", "三", "针", ",", "需", "要", "在", "半", "年", "内", "接", "种", "完", ",", "分", "别", "在", "第", "一", "个", "月", ",", "第", "2", "个", "月", "和", "第", "6", "个", "月", "各", "接", "种", "一", "针", "次", ",", "接", "种", "年", "龄", "是", "20", "-", "45", "周", "岁", ",", "建", "议", "咨", "询", "当", "地", "疾", "病", "预", "防", "控", "制", "机", "构", ",", "所", "进", "疫", "苗", "的", "具", "体", "价", "格", "比", "较", "准", "确", "。", "比", "如", "江", "苏", "省", "从", "2019", "年", "开", "始", ",", "所", "有", "有", "价", "疫", "苗", "都", "是", "零", "差", "价", "出", "售", ",", "每", "接", "种", "一", "针", "次", ",", "收", "取", "20", "元", "材", "料", "费", "和", "注", "射", "费", ",", "目", "前", "接", "种", "宫", "颈", "癌", "疫", "苗", ",", "应", "该", "先", "预", "约", "才", "可", "以", "接", "种", "。", "4", "价", "宫", "颈", "疫", "苗", "多", "少", "钱", "-", "有", "来", "医", "生"], "sample_type": "disturb"} -{"id": 1945, "title": "hiit是什么", "context": "hiit是高强度间歇训练,主要是通过进行多组高强度的间隙,和低强度的动作组合训练,这种训练方式能够在短时间内高速燃烧脂肪,简单说就是中间有休息的高强度训练,非常适合锻炼时间较少或无法长时间坚持锻炼的人。", "question": "什么是HIIT", "sent_token": ["hiit", "是", "高", "强", "度", "间", "歇", "训", "练", ",", "主", "要", "是", "通", "过", "进", "行", "多", "组", "高", "强", "度", "的", "间", "隙", ",", "和", "低", "强", "度", "的", "动", "作", "组", "合", "训", "练", ",", "这", "种", "训", "练", "方", "式", "能", "够", "在", "短", "时", "间", "内", "高", "速", "燃", "烧", "脂", "肪", ",", "简", "单", "说", "就", "是", "中", "间", "有", "休", "息", "的", "高", "强", "度", "训", "练", ",", "非", "常", "适", "合", "锻", "炼", "时", "间", "较", "少", "或", "无", "法", "长", "时", "间", "坚", "持", "锻", "炼", "的", "人", "。", "hiit", "是", "什", "么"], "sample_type": "disturb"} -{"id": 1949, "title": "民生信用卡的客服电话多少?-其他问题知识问答-我爱卡", "context": "民生银行是中国大陆第一家由民间资本设立的全国性商业银行,成立于1996年1月12日。民生银行的信用卡的24小时客服电话为400-669-5568,持卡人在办卡或用卡的过程中,有任何疑问,都可以拨打民生银行信用卡客服电话,通过人工客服,来进行咨询。同时,持卡人也可以通过客服电话,办理信用卡激活、修改密码、更改账单日等业务。", "question": "民生信用卡客服", "sent_token": ["民", "生", "银", "行", "是", "中", "国", "大", "陆", "第", "一", "家", "由", "民", "间", "资", "本", "设", "立", "的", "全", "国", "性", "商", "业", "银", "行", ",", "成", "立", "于", "1996", "年", "1", "月", "12", "日", "。", "民", "生", "银", "行", "的", "信", "用", "卡", "的", "24", "小", "时", "客", "服", "电", "话", "为", "400", "-", "669", "-", "5568", ",", "持", "卡", "人", "在", "办", "卡", "或", "用", "卡", "的", "过", "程", "中", ",", "有", "任", "何", "疑", "问", ",", "都", "可", "以", "拨", "打", "民", "生", "银", "行", "信", "用", "卡", "客", "服", "电", "话", ",", "通", "过", "人", "工", "客", "服", ",", "来", "进", "行", "咨", "询", "。", "同", "时", ",", "持", "卡", "人", "也", "可", "以", "通", "过", "客", "服", "电", "话", ",", "办", "理", "信", "用", "卡", "激", "活", "、", "修", "改", "密", "码", "、", "更", "改", "账", "单", "日", "等", "业", "务", "。", "民", "生", "信", "用", "卡", "的", "客", "服", "电", "话", "多", "少", "?", "-", "其", "他", "问", "题", "知", "识", "问", "答", "-", "我", "爱", "卡"], "sample_type": "disturb"} -{"id": 1956, "title": "", "context": "法令纹位於鼻翼两侧往下延伸至嘴的附近,也称寿带,是典型的皮肤组织老化,造成肌肤表面凹陷的现象。法令若垂长,亦为长寿之象徵。不过女性多半不喜欢脸上出现法令纹,因为这意味脸部皮肤松弛,是老化的迹象。", "question": "哪里是法令纹?", "sent_token": ["法", "令", "纹", "位", "於", "鼻", "翼", "两", "侧", "往", "下", "延", "伸", "至", "嘴", "的", "附", "近", ",", "也", "称", "寿", "带", ",", "是", "典", "型", "的", "皮", "肤", "组", "织", "老", "化", ",", "造", "成", "肌", "肤", "表", "面", "凹", "陷", "的", "现", "象", "。", "法", "令", "若", "垂", "长", ",", "亦", "为", "长", "寿", "之", "象", "徵", "。", "不", "过", "女", "性", "多", "半", "不", "喜", "欢", "脸", "上", "出", "现", "法", "令", "纹", ",", "因", "为", "这", "意", "味", "脸", "部", "皮", "肤", "松", "弛", ",", "是", "老", "化", "的", "迹", "象", "。"], "sample_type": "disturb"} -{"id": 1966, "title": "婴儿轻微肠炎能自愈吗_妈妈网小百科", "context": "婴儿轻微肠炎不能自愈。肠炎是一种炎症,其发病的原因与胃肠道失调有关联。临床表现主要有腹痛、腹泻、稀水便或黏液脓血便。婴儿胃肠道菌群出现了失调的异常,就会引发肠炎的出现。尽管是比较轻微的肠炎,但还是有炎症的存在。婴儿轻微肠炎需要就医进行治疗,需要吃药促使炎症的消除。", "question": "婴儿轻度肠炎能自愈吗", "sent_token": ["婴", "儿", "轻", "微", "肠", "炎", "不", "能", "自", "愈", "。", "肠", "炎", "是", "一", "种", "炎", "症", ",", "其", "发", "病", "的", "原", "因", "与", "胃", "肠", "道", "失", "调", "有", "关", "联", "。", "临", "床", "表", "现", "主", "要", "有", "腹", "痛", "、", "腹", "泻", "、", "稀", "水", "便", "或", "黏", "液", "脓", "血", "便", "。", "婴", "儿", "胃", "肠", "道", "菌", "群", "出", "现", "了", "失", "调", "的", "异", "常", ",", "就", "会", "引", "发", "肠", "炎", "的", "出", "现", "。", "尽", "管", "是", "比", "较", "轻", "微", "的", "肠", "炎", ",", "但", "还", "是", "有", "炎", "症", "的", "存", "在", "。", "婴", "儿", "轻", "微", "肠", "炎", "需", "要", "就", "医", "进", "行", "治", "疗", ",", "需", "要", "吃", "药", "促", "使", "炎", "症", "的", "消", "除", "。", "婴", "儿", "轻", "微", "肠", "炎", "能", "自", "愈", "吗", "_", "妈", "妈", "网", "小", "百", "科"], "sample_type": "disturb"} -{"id": 1977, "title": "", "context": "珍珠鸟作者简介冯骥才,当代作家,1942年生于天津,兄妹六人,排行第三,为长子。原籍浙江慈溪市人。从小喜爱美术、文学和球类活动。曾当过专业篮球运动员,从事过绘画。", "question": "冯骥才什么时候出生", "sent_token": ["珍", "珠", "鸟", "作", "者", "简", "介", "冯", "骥", "才", ",", "当", "代", "作", "家", ",", "1942", "年", "生", "于", "天", "津", ",", "兄", "妹", "六", "人", ",", "排", "行", "第", "三", ",", "为", "长", "子", "。", "原", "籍", "浙", "江", "慈", "溪", "市", "人", "。", "从", "小", "喜", "爱", "美", "术", "、", "文", "学", "和", "球", "类", "活", "动", "。", "曾", "当", "过", "专", "业", "篮", "球", "运", "动", "员", ",", "从", "事", "过", "绘", "画", "。"], "sample_type": "disturb"} -{"id": 1983, "title": "哺乳期可以吃维生素b2吗_有问必答_快速问医生", "context": "你好,口腔溃疡一般都是由于维生素缺乏导致的,与口腔炎症和上火也有关,可以服用维生素b2和维生素c治疗。用西瓜皮煮水喝,可以清热去火。局部用口腔溃疡散或者用维生素c研磨成粉末涂抹,都可以有效缓解疼痛。孕妇正常也要补充维生素的,服用维生素b2没有问题的。平时一定要多吃新鲜蔬菜水果,补充维生素,注意口腔卫生,早晚刷牙,饭后用温水漱口,每天早上起床用淡盐水漱口。", "question": "哺乳期间,能吃维生素b2吗", "sent_token": ["你", "好", ",", "口", "腔", "溃", "疡", "一", "般", "都", "是", "由", "于", "维", "生", "素", "缺", "乏", "导", "致", "的", ",", "与", "口", "腔", "炎", "症", "和", "上", "火", "也", "有", "关", ",", "可", "以", "服", "用", "维", "生", "素", "b2", "和", "维", "生", "素", "c", "治", "疗", "。", "用", "西", "瓜", "皮", "煮", "水", "喝", ",", "可", "以", "清", "热", "去", "火", "。", "局", "部", "用", "口", "腔", "溃", "疡", "散", "或", "者", "用", "维", "生", "素", "c", "研", "磨", "成", "粉", "末", "涂", "抹", ",", "都", "可", "以", "有", "效", "缓", "解", "疼", "痛", "。", "孕", "妇", "正", "常", "也", "要", "补", "充", "维", "生", "素", "的", ",", "服", "用", "维", "生", "素", "b2", "没", "有", "问", "题", "的", "。", "平", "时", "一", "定", "要", "多", "吃", "新", "鲜", "蔬", "菜", "水", "果", ",", "补", "充", "维", "生", "素", ",", "注", "意", "口", "腔", "卫", "生", ",", "早", "晚", "刷", "牙", ",", "饭", "后", "用", "温", "水", "漱", "口", ",", "每", "天", "早", "上", "起", "床", "用", "淡", "盐", "水", "漱", "口", "。", "哺", "乳", "期", "可", "以", "吃", "维", "生", "素", "b2", "吗", "_", "有", "问", "必", "答", "_", "快", "速", "问", "医", "生"], "sample_type": "disturb"} -{"id": 1993, "title": "6岁儿童吃几颗肠虫清,吃肠虫清需要忌口吗_孕育常识_亲子宝典库_", "context": "肠虫清一般指阿苯达唑。阿苯达唑是一种咪唑衍生物类广谱驱肠虫药物。是六岁儿童就可以服用的一次吃两片,是吃饱饭后吃,肠虫清的主要是驱虫的药物,一般在晚上睡前服用的是比较好的,服药期间要多喝开水,多吃清淡易消化的食物,忌辛辣刺激性食物和油腻煎炸的食物,注意保暖避免着凉。", "question": "6岁儿童吃几颗肠虫清", "sent_token": ["肠", "虫", "清", "一", "般", "指", "阿", "苯", "达", "唑", "。", "阿", "苯", "达", "唑", "是", "一", "种", "咪", "唑", "衍", "生", "物", "类", "广", "谱", "驱", "肠", "虫", "药", "物", "。", "是", "六", "岁", "儿", "童", "就", "可", "以", "服", "用", "的", "一", "次", "吃", "两", "片", ",", "是", "吃", "饱", "饭", "后", "吃", ",", "肠", "虫", "清", "的", "主", "要", "是", "驱", "虫", "的", "药", "物", ",", "一", "般", "在", "晚", "上", "睡", "前", "服", "用", "的", "是", "比", "较", "好", "的", ",", "服", "药", "期", "间", "要", "多", "喝", "开", "水", ",", "多", "吃", "清", "淡", "易", "消", "化", "的", "食", "物", ",", "忌", "辛", "辣", "刺", "激", "性", "食", "物", "和", "油", "腻", "煎", "炸", "的", "食", "物", ",", "注", "意", "保", "暖", "避", "免", "着", "凉", "。", "6", "岁", "儿", "童", "吃", "几", "颗", "肠", "虫", "清", ",", "吃", "肠", "虫", "清", "需", "要", "忌", "口", "吗", "_", "孕", "育", "常", "识", "_", "亲", "子", "宝", "典", "库", "_"], "sample_type": "disturb"} -{"id": 2003, "title": "隔阂意味着是什么意思", "context": "隔阂是一个汉语词汇,一指彼此情意沟通的障碍或是情意不通,思想有距离,彼此之间有间隔,又指阻隔、隔绝。隔阂意味着很多意思,通常隔阂就意味着可能双方之间沟通有问题,比如有些夫妻或者是男女朋友之间吵架,两个人一起冷战,两个人由于没有沟通,双方之间的误会和矛盾就会越来越多了,也有可能是两个人总是以争吵的方式来解决问题,像这样的话就达不到有效的沟通,两个人两个人越不沟通,双方之间的矛盾和争吵就会越来越多,这个时候就会产生深深的隔阂。也有可能是双峰之间的价值观完全不同,比如对待某些问题的时候,有些人比较理性,但是有些人会比较感性,这个时候价值观不同的话就非常容易产生隔阂。", "question": "隔阂什么意思", "sent_token": ["隔", "阂", "是", "一", "个", "汉", "语", "词", "汇", ",", "一", "指", "彼", "此", "情", "意", "沟", "通", "的", "障", "碍", "或", "是", "情", "意", "不", "通", ",", "思", "想", "有", "距", "离", ",", "彼", "此", "之", "间", "有", "间", "隔", ",", "又", "指", "阻", "隔", "、", "隔", "绝", "。", "隔", "阂", "意", "味", "着", "很", "多", "意", "思", ",", "通", "常", "隔", "阂", "就", "意", "味", "着", "可", "能", "双", "方", "之", "间", "沟", "通", "有", "问", "题", ",", "比", "如", "有", "些", "夫", "妻", "或", "者", "是", "男", "女", "朋", "友", "之", "间", "吵", "架", ",", "两", "个", "人", "一", "起", "冷", "战", ",", "两", "个", "人", "由", "于", "没", "有", "沟", "通", ",", "双", "方", "之", "间", "的", "误", "会", "和", "矛", "盾", "就", "会", "越", "来", "越", "多", "了", ",", "也", "有", "可", "能", "是", "两", "个", "人", "总", "是", "以", "争", "吵", "的", "方", "式", "来", "解", "决", "问", "题", ",", "像", "这", "样", "的", "话", "就", "达", "不", "到", "有", "效", "的", "沟", "通", ",", "两", "个", "人", "两", "个", "人", "越", "不", "沟", "通", ",", "双", "方", "之", "间", "的", "矛", "盾", "和", "争", "吵", "就", "会", "越", "来", "越", "多", ",", "这", "个", "时", "候", "就", "会", "产", "生", "深", "深", "的", "隔", "阂", "。", "也", "有", "可", "能", "是", "双", "峰", "之", "间", "的", "价", "值", "观", "完", "全", "不", "同", ",", "比", "如", "对", "待", "某", "些", "问", "题", "的", "时", "候", ",", "有", "些", "人", "比", "较", "理", "性", ",", "但", "是", "有", "些", "人", "会", "比", "较", "感", "性", ",", "这", "个", "时", "候", "价", "值", "观", "不", "同", "的", "话", "就", "非", "常", "容", "易", "产", "生", "隔", "阂", "。", "隔", "阂", "意", "味", "着", "是", "什", "么", "意", "思"], "sample_type": "disturb"} -{"id": 2004, "title": "小儿癫痫病能彻底治愈的吗_有问必答_快速问医生", "context": "你好,很高兴为你服务,目前小儿癫痫是可以治愈的,不同的癫痫类型以及患者的实际病情不同,其适合的治疗方法也是不尽相同的。现在常见的小儿癫痫治疗都是采用中医为基础的治疗方法,这样对患儿的伤害较小,而西医则有很大的副作用,好吧", "question": "能彻底治愈羊儿风吗", "sent_token": ["你", "好", ",", "很", "高", "兴", "为", "你", "服", "务", ",", "目", "前", "小", "儿", "癫", "痫", "是", "可", "以", "治", "愈", "的", ",", "不", "同", "的", "癫", "痫", "类", "型", "以", "及", "患", "者", "的", "实", "际", "病", "情", "不", "同", ",", "其", "适", "合", "的", "治", "疗", "方", "法", "也", "是", "不", "尽", "相", "同", "的", "。", "现", "在", "常", "见", "的", "小", "儿", "癫", "痫", "治", "疗", "都", "是", "采", "用", "中", "医", "为", "基", "础", "的", "治", "疗", "方", "法", ",", "这", "样", "对", "患", "儿", "的", "伤", "害", "较", "小", ",", "而", "西", "医", "则", "有", "很", "大", "的", "副", "作", "用", ",", "好", "吧", "小", "儿", "癫", "痫", "病", "能", "彻", "底", "治", "愈", "的", "吗", "_", "有", "问", "必", "答", "_", "快", "速", "问", "医", "生"], "sample_type": "disturb"} -{"id": 2012, "title": "脑内多发腔隙性脑梗死严重吗_39健康问答_39健康网", "context": "脑内多发腔隙性脑梗死,部分软化灶形成,一般不严重,是细枝血管梗塞,引起小灶脑组织坏死,脑组织软化灶,其他部位的脑组织会替代坏死部位的脑组织功能,所以一般没有不适的症状。属于脑梗死症型中症状最轻微的,也是唯一一种能够通过可靠用药、饮食调节、康复锻炼、控制血压和血脂等综合性治疗措施达到彻底治愈的脑梗死。注意控制血压,清淡饮食,控制血脂,血粘度,精神放松,解除思想顾虑,多做室外文娱体育活动,精神愉快,多接受紫外线照射,多喝开水,会有利于康复。可以根据情况使用疏通血管的药物。", "question": "多发腔隙性脑梗死吃什么中药", "sent_token": ["脑", "内", "多", "发", "腔", "隙", "性", "脑", "梗", "死", ",", "部", "分", "软", "化", "灶", "形", "成", ",", "一", "般", "不", "严", "重", ",", "是", "细", "枝", "血", "管", "梗", "塞", ",", "引", "起", "小", "灶", "脑", "组", "织", "坏", "死", ",", "脑", "组", "织", "软", "化", "灶", ",", "其", "他", "部", "位", "的", "脑", "组", "织", "会", "替", "代", "坏", "死", "部", "位", "的", "脑", "组", "织", "功", "能", ",", "所", "以", "一", "般", "没", "有", "不", "适", "的", "症", "状", "。", "属", "于", "脑", "梗", "死", "症", "型", "中", "症", "状", "最", "轻", "微", "的", ",", "也", "是", "唯", "一", "一", "种", "能", "够", "通", "过", "可", "靠", "用", "药", "、", "饮", "食", "调", "节", "、", "康", "复", "锻", "炼", "、", "控", "制", "血", "压", "和", "血", "脂", "等", "综", "合", "性", "治", "疗", "措", "施", "达", "到", "彻", "底", "治", "愈", "的", "脑", "梗", "死", "。", "注", "意", "控", "制", "血", "压", ",", "清", "淡", "饮", "食", ",", "控", "制", "血", "脂", ",", "血", "粘", "度", ",", "精", "神", "放", "松", ",", "解", "除", "思", "想", "顾", "虑", ",", "多", "做", "室", "外", "文", "娱", "体", "育", "活", "动", ",", "精", "神", "愉", "快", ",", "多", "接", "受", "紫", "外", "线", "照", "射", ",", "多", "喝", "开", "水", ",", "会", "有", "利", "于", "康", "复", "。", "可", "以", "根", "据", "情", "况", "使", "用", "疏", "通", "血", "管", "的", "药", "物", "。", "脑", "内", "多", "发", "腔", "隙", "性", "脑", "梗", "死", "严", "重", "吗", "_", "39", "健", "康", "问", "答", "_", "39", "健", "康", "网"], "sample_type": "disturb"} diff --git a/examples/model_interpretation/data/mrc_en b/examples/model_interpretation/data/mrc_en deleted file mode 100644 index d95bef1dedbd..000000000000 --- a/examples/model_interpretation/data/mrc_en +++ /dev/null @@ -1,100 +0,0 @@ -{"id": 1, "title": "", "context": "The English name \" Normans \" comes from the French words Normans / Normanz , plural of Normant , modern French normand , which is itself borrowed from Old Low Franconian Nortmann \" Northman \" or directly from Old Norse Norðmaðr , Latinized variously as Nortmannus , Normannus , or Nordmannus ( recorded in Medieval Latin , 9th century ) to mean \" Norseman , Viking \" .", "question": "What is the original meaning of the word Norman ?", "sent_token": ["The", "English", "name", "\"", "Normans", "\"", "comes", "from", "the", "French", "words", "Normans", "/", "Normanz", ",", "plural", "of", "Normant", ",", "modern", "French", "normand", ",", "which", "is", "itself", "borrowed", "from", "Old", "Low", "Franconian", "Nortmann", "\"", "Northman", "\"", "or", "directly", "from", "Old", "Norse", "Norðmaðr", ",", "Latinized", "variously", "as", "Nortmannus", ",", "Normannus", ",", "or", "Nordmannus", "(", "recorded", "in", "Medieval", "Latin", ",", "9th", "century", ")", "to", "mean", "\"", "Norseman", ",", "Viking", "\"", "."], "sample_type": "ori", "rel_ids": [1508]} -{"id": 2, "title": "", "context": "The English name \" Normans \" comes from the French words Normans / Normanz , plural of Normant , modern French normand , which is itself borrowed from Old Low Franconian Nortmann \" Northman \" or directly from Old Norse Norðmaðr , Latinized variously as Nortmannus , Normannus , or Nordmannus ( recorded in Medieval Latin , 9th century ) to mean \" Norseman , Viking \" .", "question": "When was the Latin version of the word Norman first recorded ?", "sent_token": ["The", "English", "name", "\"", "Normans", "\"", "comes", "from", "the", "French", "words", "Normans", "/", "Normanz", ",", "plural", "of", "Normant", ",", "modern", "French", "normand", ",", "which", "is", "itself", "borrowed", "from", "Old", "Low", "Franconian", "Nortmann", "\"", "Northman", "\"", "or", "directly", "from", "Old", "Norse", "Norðmaðr", ",", "Latinized", "variously", "as", "Nortmannus", ",", "Normannus", ",", "or", "Nordmannus", "(", "recorded", "in", "Medieval", "Latin", ",", "9th", "century", ")", "to", "mean", "\"", "Norseman", ",", "Viking", "\"", "."], "sample_type": "ori", "rel_ids": [1509]} -{"id": 3, "title": "", "context": "The descendants of Rollo 's Vikings and their Frankish wives would replace the Norse religion and Old Norse language with Catholicism ( Christianity ) and the Gallo - Romance language of the local people , blending their maternal Frankish heritage with Old Norse traditions and customs to synthesize a unique \" Norman \" culture in the north of France . The Norman language was forged by the adoption of the indigenous langue d'oïl branch of Romance by a Norse - speaking ruling class , and it developed into the regional language that survives today .", "question": "What was the Norman religion ?", "sent_token": ["The", "descendants", "of", "Rollo", "'s", "Vikings", "and", "their", "Frankish", "wives", "would", "replace", "the", "Norse", "religion", "and", "Old", "Norse", "language", "with", "Catholicism", "(", "Christianity", ")", "and", "the", "Gallo", "-", "Romance", "language", "of", "the", "local", "people", ",", "blending", "their", "maternal", "Frankish", "heritage", "with", "Old", "Norse", "traditions", "and", "customs", "to", "synthesize", "a", "unique", "\"", "Norman", "\"", "culture", "in", "the", "north", "of", "France", ".", "The", "Norman", "language", "was", "forged", "by", "the", "adoption", "of", "the", "indigenous", "langue", "d'oïl", "branch", "of", "Romance", "by", "a", "Norse", "-", "speaking", "ruling", "class", ",", "and", "it", "developed", "into", "the", "regional", "language", "that", "survives", "today", "."], "sample_type": "ori", "rel_ids": [1510]} -{"id": 4, "title": "", "context": "The descendants of Rollo 's Vikings and their Frankish wives would replace the Norse religion and Old Norse language with Catholicism ( Christianity ) and the Gallo - Romance language of the local people , blending their maternal Frankish heritage with Old Norse traditions and customs to synthesize a unique \" Norman \" culture in the north of France . The Norman language was forged by the adoption of the indigenous langue d'oïl branch of Romance by a Norse - speaking ruling class , and it developed into the regional language that survives today .", "question": "What part of France were the Normans located ?", "sent_token": ["The", "descendants", "of", "Rollo", "'s", "Vikings", "and", "their", "Frankish", "wives", "would", "replace", "the", "Norse", "religion", "and", "Old", "Norse", "language", "with", "Catholicism", "(", "Christianity", ")", "and", "the", "Gallo", "-", "Romance", "language", "of", "the", "local", "people", ",", "blending", "their", "maternal", "Frankish", "heritage", "with", "Old", "Norse", "traditions", "and", "customs", "to", "synthesize", "a", "unique", "\"", "Norman", "\"", "culture", "in", "the", "north", "of", "France", ".", "The", "Norman", "language", "was", "forged", "by", "the", "adoption", "of", "the", "indigenous", "langue", "d'oïl", "branch", "of", "Romance", "by", "a", "Norse", "-", "speaking", "ruling", "class", ",", "and", "it", "developed", "into", "the", "regional", "language", "that", "survives", "today", "."], "sample_type": "ori", "rel_ids": [1511]} -{"id": 5, "title": "", "context": "One of the first Norman mercenaries to serve as a Byzantine general was Hervé in the 1050s . By then however , there were already Norman mercenaries serving as far away as Trebizond and Georgia . They were based at Malatya and Edessa , under the Byzantine duke of Antioch , Isaac Komnenos . In the 1060s , Robert Crispin led the Normans of Edessa against the Turks . Roussel de Bailleul even tried to carve out an independent state in Asia Minor with support from the local population , but he was stopped by the Byzantine general Alexius Komnenos .", "question": "When did Herve serve as a Byzantine general ?", "sent_token": ["One", "of", "the", "first", "Norman", "mercenaries", "to", "serve", "as", "a", "Byzantine", "general", "was", "Hervé", "in", "the", "1050s", ".", "By", "then", "however", ",", "there", "were", "already", "Norman", "mercenaries", "serving", "as", "far", "away", "as", "Trebizond", "and", "Georgia", ".", "They", "were", "based", "at", "Malatya", "and", "Edessa", ",", "under", "the", "Byzantine", "duke", "of", "Antioch", ",", "Isaac", "Komnenos", ".", "In", "the", "1060s", ",", "Robert", "Crispin", "led", "the", "Normans", "of", "Edessa", "against", "the", "Turks", ".", "Roussel", "de", "Bailleul", "even", "tried", "to", "carve", "out", "an", "independent", "state", "in", "Asia", "Minor", "with", "support", "from", "the", "local", "population", ",", "but", "he", "was", "stopped", "by", "the", "Byzantine", "general", "Alexius", "Komnenos", "."], "sample_type": "ori", "rel_ids": [1512]} -{"id": 6, "title": "", "context": "One of the first Norman mercenaries to serve as a Byzantine general was Hervé in the 1050s . By then however , there were already Norman mercenaries serving as far away as Trebizond and Georgia . They were based at Malatya and Edessa , under the Byzantine duke of Antioch , Isaac Komnenos . In the 1060s , Robert Crispin led the Normans of Edessa against the Turks . Roussel de Bailleul even tried to carve out an independent state in Asia Minor with support from the local population , but he was stopped by the Byzantine general Alexius Komnenos .", "question": "When did Robert Crispin go up against the Turks ?", "sent_token": ["One", "of", "the", "first", "Norman", "mercenaries", "to", "serve", "as", "a", "Byzantine", "general", "was", "Hervé", "in", "the", "1050s", ".", "By", "then", "however", ",", "there", "were", "already", "Norman", "mercenaries", "serving", "as", "far", "away", "as", "Trebizond", "and", "Georgia", ".", "They", "were", "based", "at", "Malatya", "and", "Edessa", ",", "under", "the", "Byzantine", "duke", "of", "Antioch", ",", "Isaac", "Komnenos", ".", "In", "the", "1060s", ",", "Robert", "Crispin", "led", "the", "Normans", "of", "Edessa", "against", "the", "Turks", ".", "Roussel", "de", "Bailleul", "even", "tried", "to", "carve", "out", "an", "independent", "state", "in", "Asia", "Minor", "with", "support", "from", "the", "local", "population", ",", "but", "he", "was", "stopped", "by", "the", "Byzantine", "general", "Alexius", "Komnenos", "."], "sample_type": "ori", "rel_ids": [1513]} -{"id": 7, "title": "", "context": "One of the first Norman mercenaries to serve as a Byzantine general was Hervé in the 1050s . By then however , there were already Norman mercenaries serving as far away as Trebizond and Georgia . They were based at Malatya and Edessa , under the Byzantine duke of Antioch , Isaac Komnenos . In the 1060s , Robert Crispin led the Normans of Edessa against the Turks . Roussel de Bailleul even tried to carve out an independent state in Asia Minor with support from the local population , but he was stopped by the Byzantine general Alexius Komnenos .", "question": "Who ruined Roussel de Bailleul 's plans for an independent state ?", "sent_token": ["One", "of", "the", "first", "Norman", "mercenaries", "to", "serve", "as", "a", "Byzantine", "general", "was", "Hervé", "in", "the", "1050s", ".", "By", "then", "however", ",", "there", "were", "already", "Norman", "mercenaries", "serving", "as", "far", "away", "as", "Trebizond", "and", "Georgia", ".", "They", "were", "based", "at", "Malatya", "and", "Edessa", ",", "under", "the", "Byzantine", "duke", "of", "Antioch", ",", "Isaac", "Komnenos", ".", "In", "the", "1060s", ",", "Robert", "Crispin", "led", "the", "Normans", "of", "Edessa", "against", "the", "Turks", ".", "Roussel", "de", "Bailleul", "even", "tried", "to", "carve", "out", "an", "independent", "state", "in", "Asia", "Minor", "with", "support", "from", "the", "local", "population", ",", "but", "he", "was", "stopped", "by", "the", "Byzantine", "general", "Alexius", "Komnenos", "."], "sample_type": "ori", "rel_ids": [1514]} -{"id": 8, "title": "", "context": "The further decline of Byzantine state - of - affairs paved the road to a third attack in 1185 , when a large Norman army invaded Dyrrachium , owing to the betrayal of high Byzantine officials . Some time later , Dyrrachium — one of the most important naval bases of the Adriatic — fell again to Byzantine hands .", "question": "When did the Normans attack Dyrrachium ?", "sent_token": ["The", "further", "decline", "of", "Byzantine", "state", "-", "of", "-", "affairs", "paved", "the", "road", "to", "a", "third", "attack", "in", "1185", ",", "when", "a", "large", "Norman", "army", "invaded", "Dyrrachium", ",", "owing", "to", "the", "betrayal", "of", "high", "Byzantine", "officials", ".", "Some", "time", "later", ",", "Dyrrachium", "—", "one", "of", "the", "most", "important", "naval", "bases", "of", "the", "Adriatic", "—", "fell", "again", "to", "Byzantine", "hands", "."], "sample_type": "ori", "rel_ids": [1515]} -{"id": 9, "title": "", "context": "The further decline of Byzantine state - of - affairs paved the road to a third attack in 1185 , when a large Norman army invaded Dyrrachium , owing to the betrayal of high Byzantine officials . Some time later , Dyrrachium — one of the most important naval bases of the Adriatic — fell again to Byzantine hands .", "question": "What was the naval base called ?", "sent_token": ["The", "further", "decline", "of", "Byzantine", "state", "-", "of", "-", "affairs", "paved", "the", "road", "to", "a", "third", "attack", "in", "1185", ",", "when", "a", "large", "Norman", "army", "invaded", "Dyrrachium", ",", "owing", "to", "the", "betrayal", "of", "high", "Byzantine", "officials", ".", "Some", "time", "later", ",", "Dyrrachium", "—", "one", "of", "the", "most", "important", "naval", "bases", "of", "the", "Adriatic", "—", "fell", "again", "to", "Byzantine", "hands", "."], "sample_type": "ori", "rel_ids": [1516]} -{"id": 10, "title": "", "context": "The further decline of Byzantine state - of - affairs paved the road to a third attack in 1185 , when a large Norman army invaded Dyrrachium , owing to the betrayal of high Byzantine officials . Some time later , Dyrrachium — one of the most important naval bases of the Adriatic — fell again to Byzantine hands .", "question": "Where was Dyrrachium located ?", "sent_token": ["The", "further", "decline", "of", "Byzantine", "state", "-", "of", "-", "affairs", "paved", "the", "road", "to", "a", "third", "attack", "in", "1185", ",", "when", "a", "large", "Norman", "army", "invaded", "Dyrrachium", ",", "owing", "to", "the", "betrayal", "of", "high", "Byzantine", "officials", ".", "Some", "time", "later", ",", "Dyrrachium", "—", "one", "of", "the", "most", "important", "naval", "bases", "of", "the", "Adriatic", "—", "fell", "again", "to", "Byzantine", "hands", "."], "sample_type": "ori", "rel_ids": [1517]} -{"id": 11, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , eventually fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had already disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he met up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a series of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "Who was Margaret 's brother ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "eventually", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "already", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "met", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "series", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "ori", "rel_ids": [1518]} -{"id": 12, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , eventually fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had already disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he met up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a series of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "Who was Margaret 's husband ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "eventually", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "already", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "met", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "series", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "ori", "rel_ids": [1519]} -{"id": 13, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , eventually fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had already disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he met up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a series of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "When was Scotland invaded by William ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "eventually", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "already", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "met", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "series", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "ori", "rel_ids": [1520]} -{"id": 14, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , eventually fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had already disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he met up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a series of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "Who was the hostage ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "eventually", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "already", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "met", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "series", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "ori", "rel_ids": [1521]} -{"id": 15, "title": "", "context": "Even before the Norman Conquest of England , the Normans had come into contact with Wales . Edward the Confessor had set up the aforementioned Ralph as earl of Hereford and charged him with defending the Marches and warring with the Welsh . In these original ventures , the Normans failed to make any headway into Wales .", "question": "Where was Ralph earl of ?", "sent_token": ["Even", "before", "the", "Norman", "Conquest", "of", "England", ",", "the", "Normans", "had", "come", "into", "contact", "with", "Wales", ".", "Edward", "the", "Confessor", "had", "set", "up", "the", "aforementioned", "Ralph", "as", "earl", "of", "Hereford", "and", "charged", "him", "with", "defending", "the", "Marches", "and", "warring", "with", "the", "Welsh", ".", "In", "these", "original", "ventures", ",", "the", "Normans", "failed", "to", "make", "any", "headway", "into", "Wales", "."], "sample_type": "ori", "rel_ids": [1522]} -{"id": 16, "title": "", "context": "Even before the Norman Conquest of England , the Normans had come into contact with Wales . Edward the Confessor had set up the aforementioned Ralph as earl of Hereford and charged him with defending the Marches and warring with the Welsh . In these original ventures , the Normans failed to make any headway into Wales .", "question": "Who was Ralph in charge of being at war with ?", "sent_token": ["Even", "before", "the", "Norman", "Conquest", "of", "England", ",", "the", "Normans", "had", "come", "into", "contact", "with", "Wales", ".", "Edward", "the", "Confessor", "had", "set", "up", "the", "aforementioned", "Ralph", "as", "earl", "of", "Hereford", "and", "charged", "him", "with", "defending", "the", "Marches", "and", "warring", "with", "the", "Welsh", ".", "In", "these", "original", "ventures", ",", "the", "Normans", "failed", "to", "make", "any", "headway", "into", "Wales", "."], "sample_type": "ori", "rel_ids": [1523]} -{"id": 17, "title": "", "context": "Even before the Norman Conquest of England , the Normans had come into contact with Wales . Edward the Confessor had set up the aforementioned Ralph as earl of Hereford and charged him with defending the Marches and warring with the Welsh . In these original ventures , the Normans failed to make any headway into Wales .", "question": "Who made Ralph earl ?", "sent_token": ["Even", "before", "the", "Norman", "Conquest", "of", "England", ",", "the", "Normans", "had", "come", "into", "contact", "with", "Wales", ".", "Edward", "the", "Confessor", "had", "set", "up", "the", "aforementioned", "Ralph", "as", "earl", "of", "Hereford", "and", "charged", "him", "with", "defending", "the", "Marches", "and", "warring", "with", "the", "Welsh", ".", "In", "these", "original", "ventures", ",", "the", "Normans", "failed", "to", "make", "any", "headway", "into", "Wales", "."], "sample_type": "ori", "rel_ids": [1524]} -{"id": 18, "title": "", "context": "Subsequent to the Conquest , however , the Marches came completely under the dominance of William 's most trusted Norman barons , including Bernard de Neufmarché , Roger of Montgomery in Shropshire and Hugh Lupus in Cheshire . These Normans began a long period of slow conquest during which almost all of Wales was at some point subject to Norman interference . Norman words , such as baron ( barwn ) , first entered Welsh at that time .", "question": "What country was under the control of Norman barons ?", "sent_token": ["Subsequent", "to", "the", "Conquest", ",", "however", ",", "the", "Marches", "came", "completely", "under", "the", "dominance", "of", "William", "'s", "most", "trusted", "Norman", "barons", ",", "including", "Bernard", "de", "Neufmarché", ",", "Roger", "of", "Montgomery", "in", "Shropshire", "and", "Hugh", "Lupus", "in", "Cheshire", ".", "These", "Normans", "began", "a", "long", "period", "of", "slow", "conquest", "during", "which", "almost", "all", "of", "Wales", "was", "at", "some", "point", "subject", "to", "Norman", "interference", ".", "Norman", "words", ",", "such", "as", "baron", "(", "barwn", ")", ",", "first", "entered", "Welsh", "at", "that", "time", "."], "sample_type": "ori", "rel_ids": [1525]} -{"id": 19, "title": "", "context": "The legendary religious zeal of the Normans was exercised in religious wars long before the First Crusade carved out a Norman principality in Antioch . They were major foreign participants in the Reconquista in Iberia . In 1018 , Roger de Tosny travelled to the Iberian Peninsula to carve out a state for himself from Moorish lands , but failed . In 1064 , during the War of Barbastro , William of Montreuil led the papal army and took a huge booty .", "question": "What year did Roger de Tosny fail to accomplish what he set out to do ?", "sent_token": ["The", "legendary", "religious", "zeal", "of", "the", "Normans", "was", "exercised", "in", "religious", "wars", "long", "before", "the", "First", "Crusade", "carved", "out", "a", "Norman", "principality", "in", "Antioch", ".", "They", "were", "major", "foreign", "participants", "in", "the", "Reconquista", "in", "Iberia", ".", "In", "1018", ",", "Roger", "de", "Tosny", "travelled", "to", "the", "Iberian", "Peninsula", "to", "carve", "out", "a", "state", "for", "himself", "from", "Moorish", "lands", ",", "but", "failed", ".", "In", "1064", ",", "during", "the", "War", "of", "Barbastro", ",", "William", "of", "Montreuil", "led", "the", "papal", "army", "and", "took", "a", "huge", "booty", "."], "sample_type": "ori", "rel_ids": [1526]} -{"id": 20, "title": "", "context": "The legendary religious zeal of the Normans was exercised in religious wars long before the First Crusade carved out a Norman principality in Antioch . They were major foreign participants in the Reconquista in Iberia . In 1018 , Roger de Tosny travelled to the Iberian Peninsula to carve out a state for himself from Moorish lands , but failed . In 1064 , during the War of Barbastro , William of Montreuil led the papal army and took a huge booty .", "question": "Who was in charge of the papal army in the War of Barbastro ?", "sent_token": ["The", "legendary", "religious", "zeal", "of", "the", "Normans", "was", "exercised", "in", "religious", "wars", "long", "before", "the", "First", "Crusade", "carved", "out", "a", "Norman", "principality", "in", "Antioch", ".", "They", "were", "major", "foreign", "participants", "in", "the", "Reconquista", "in", "Iberia", ".", "In", "1018", ",", "Roger", "de", "Tosny", "travelled", "to", "the", "Iberian", "Peninsula", "to", "carve", "out", "a", "state", "for", "himself", "from", "Moorish", "lands", ",", "but", "failed", ".", "In", "1064", ",", "during", "the", "War", "of", "Barbastro", ",", "William", "of", "Montreuil", "led", "the", "papal", "army", "and", "took", "a", "huge", "booty", "."], "sample_type": "ori", "rel_ids": [1527]} -{"id": 21, "title": "", "context": "In 1096 , Crusaders passing by the siege of Amalfi were joined by Bohemond of Taranto and his nephew Tancred with an army of Italo - Normans . Bohemond was the de facto leader of the Crusade during its passage through Asia Minor . After the successful Siege of Antioch in 1097 , Bohemond began carving out an independent principality around that city . Tancred was instrumental in the conquest of Jerusalem and he worked for the expansion of the Crusader kingdom in Transjordan and the region of Galilee.[citation needed ]", "question": "When did the Siege of Antioch take place ?", "sent_token": ["In", "1096", ",", "Crusaders", "passing", "by", "the", "siege", "of", "Amalfi", "were", "joined", "by", "Bohemond", "of", "Taranto", "and", "his", "nephew", "Tancred", "with", "an", "army", "of", "Italo", "-", "Normans", ".", "Bohemond", "was", "the", "de", "facto", "leader", "of", "the", "Crusade", "during", "its", "passage", "through", "Asia", "Minor", ".", "After", "the", "successful", "Siege", "of", "Antioch", "in", "1097", ",", "Bohemond", "began", "carving", "out", "an", "independent", "principality", "around", "that", "city", ".", "Tancred", "was", "instrumental", "in", "the", "conquest", "of", "Jerusalem", "and", "he", "worked", "for", "the", "expansion", "of", "the", "Crusader", "kingdom", "in", "Transjordan", "and", "the", "region", "of", "Galilee.[citation", "needed", "]"], "sample_type": "ori", "rel_ids": [1528]} -{"id": 22, "title": "", "context": "In 1096 , Crusaders passing by the siege of Amalfi were joined by Bohemond of Taranto and his nephew Tancred with an army of Italo - Normans . Bohemond was the de facto leader of the Crusade during its passage through Asia Minor . After the successful Siege of Antioch in 1097 , Bohemond began carving out an independent principality around that city . Tancred was instrumental in the conquest of Jerusalem and he worked for the expansion of the Crusader kingdom in Transjordan and the region of Galilee.[citation needed ]", "question": "What was the name of Bohemond 's nephew ?", "sent_token": ["In", "1096", ",", "Crusaders", "passing", "by", "the", "siege", "of", "Amalfi", "were", "joined", "by", "Bohemond", "of", "Taranto", "and", "his", "nephew", "Tancred", "with", "an", "army", "of", "Italo", "-", "Normans", ".", "Bohemond", "was", "the", "de", "facto", "leader", "of", "the", "Crusade", "during", "its", "passage", "through", "Asia", "Minor", ".", "After", "the", "successful", "Siege", "of", "Antioch", "in", "1097", ",", "Bohemond", "began", "carving", "out", "an", "independent", "principality", "around", "that", "city", ".", "Tancred", "was", "instrumental", "in", "the", "conquest", "of", "Jerusalem", "and", "he", "worked", "for", "the", "expansion", "of", "the", "Crusader", "kingdom", "in", "Transjordan", "and", "the", "region", "of", "Galilee.[citation", "needed", "]"], "sample_type": "ori", "rel_ids": [1529]} -{"id": 23, "title": "", "context": "In 1096 , Crusaders passing by the siege of Amalfi were joined by Bohemond of Taranto and his nephew Tancred with an army of Italo - Normans . Bohemond was the de facto leader of the Crusade during its passage through Asia Minor . After the successful Siege of Antioch in 1097 , Bohemond began carving out an independent principality around that city . Tancred was instrumental in the conquest of Jerusalem and he worked for the expansion of the Crusader kingdom in Transjordan and the region of Galilee.[citation needed ]", "question": "What major conquest did Tancred play a roll in ?", "sent_token": ["In", "1096", ",", "Crusaders", "passing", "by", "the", "siege", "of", "Amalfi", "were", "joined", "by", "Bohemond", "of", "Taranto", "and", "his", "nephew", "Tancred", "with", "an", "army", "of", "Italo", "-", "Normans", ".", "Bohemond", "was", "the", "de", "facto", "leader", "of", "the", "Crusade", "during", "its", "passage", "through", "Asia", "Minor", ".", "After", "the", "successful", "Siege", "of", "Antioch", "in", "1097", ",", "Bohemond", "began", "carving", "out", "an", "independent", "principality", "around", "that", "city", ".", "Tancred", "was", "instrumental", "in", "the", "conquest", "of", "Jerusalem", "and", "he", "worked", "for", "the", "expansion", "of", "the", "Crusader", "kingdom", "in", "Transjordan", "and", "the", "region", "of", "Galilee.[citation", "needed", "]"], "sample_type": "ori", "rel_ids": [1530]} -{"id": 24, "title": "", "context": "The conquest of Cyprus by the Anglo - Norman forces of the Third Crusade opened a new chapter in the history of the island , which would be under Western European domination for the following 380 years . Although not part of a planned operation , the conquest had much more permanent results than initially expected .", "question": "How long did Western Europe control Cyprus ?", "sent_token": ["The", "conquest", "of", "Cyprus", "by", "the", "Anglo", "-", "Norman", "forces", "of", "the", "Third", "Crusade", "opened", "a", "new", "chapter", "in", "the", "history", "of", "the", "island", ",", "which", "would", "be", "under", "Western", "European", "domination", "for", "the", "following", "380", "years", ".", "Although", "not", "part", "of", "a", "planned", "operation", ",", "the", "conquest", "had", "much", "more", "permanent", "results", "than", "initially", "expected", "."], "sample_type": "ori", "rel_ids": [1531]} -{"id": 25, "title": "", "context": "Between 1402 and 1405 , the expedition led by the Norman noble Jean de Bethencourt and the Poitevine Gadifer de la Salle conquered the Canarian islands of Lanzarote , Fuerteventura and El Hierro off the Atlantic coast of Africa . Their troops were gathered in Normandy , Gascony and were later reinforced by Castilian colonists .", "question": "What continent are the Canarian Islands off the coast of ?", "sent_token": ["Between", "1402", "and", "1405", ",", "the", "expedition", "led", "by", "the", "Norman", "noble", "Jean", "de", "Bethencourt", "and", "the", "Poitevine", "Gadifer", "de", "la", "Salle", "conquered", "the", "Canarian", "islands", "of", "Lanzarote", ",", "Fuerteventura", "and", "El", "Hierro", "off", "the", "Atlantic", "coast", "of", "Africa", ".", "Their", "troops", "were", "gathered", "in", "Normandy", ",", "Gascony", "and", "were", "later", "reinforced", "by", "Castilian", "colonists", "."], "sample_type": "ori", "rel_ids": [1532]} -{"id": 26, "title": "", "context": "Bethencourt took the title of King of the Canary Islands , as vassal to Henry III of Castile . In 1418 , Jean 's nephew Maciot de Bethencourt sold the rights to the islands to Enrique Pérez de Guzmán , 2nd Count de Niebla .", "question": "Who became the King of the Canary Islands ?", "sent_token": ["Bethencourt", "took", "the", "title", "of", "King", "of", "the", "Canary", "Islands", ",", "as", "vassal", "to", "Henry", "III", "of", "Castile", ".", "In", "1418", ",", "Jean", "'s", "nephew", "Maciot", "de", "Bethencourt", "sold", "the", "rights", "to", "the", "islands", "to", "Enrique", "Pérez", "de", "Guzmán", ",", "2nd", "Count", "de", "Niebla", "."], "sample_type": "ori", "rel_ids": [1533]} -{"id": 27, "title": "", "context": "Bethencourt took the title of King of the Canary Islands , as vassal to Henry III of Castile . In 1418 , Jean 's nephew Maciot de Bethencourt sold the rights to the islands to Enrique Pérez de Guzmán , 2nd Count de Niebla .", "question": "Who bought the rights ?", "sent_token": ["Bethencourt", "took", "the", "title", "of", "King", "of", "the", "Canary", "Islands", ",", "as", "vassal", "to", "Henry", "III", "of", "Castile", ".", "In", "1418", ",", "Jean", "'s", "nephew", "Maciot", "de", "Bethencourt", "sold", "the", "rights", "to", "the", "islands", "to", "Enrique", "Pérez", "de", "Guzmán", ",", "2nd", "Count", "de", "Niebla", "."], "sample_type": "ori", "rel_ids": [1534]} -{"id": 28, "title": "", "context": "Bethencourt took the title of King of the Canary Islands , as vassal to Henry III of Castile . In 1418 , Jean 's nephew Maciot de Bethencourt sold the rights to the islands to Enrique Pérez de Guzmán , 2nd Count de Niebla .", "question": "Who sold the rights ?", "sent_token": ["Bethencourt", "took", "the", "title", "of", "King", "of", "the", "Canary", "Islands", ",", "as", "vassal", "to", "Henry", "III", "of", "Castile", ".", "In", "1418", ",", "Jean", "'s", "nephew", "Maciot", "de", "Bethencourt", "sold", "the", "rights", "to", "the", "islands", "to", "Enrique", "Pérez", "de", "Guzmán", ",", "2nd", "Count", "de", "Niebla", "."], "sample_type": "ori", "rel_ids": [1535]} -{"id": 29, "title": "", "context": "The customary law of Normandy was developed between the 10th and 13th centuries and survives today through the legal systems of Jersey and Guernsey in the Channel Islands . Norman customary law was transcribed in two customaries in Latin by two judges for use by them and their colleagues : These are the Très ancien coutumier ( Very ancient customary ) , authored between 1200 and 1245 ; and the Grand coutumier de Normandie ( Great customary of Normandy , originally Summa de legibus Normanniae in curia laïcali ) , authored between 1235 and 1245 .", "question": "Where are Jersey and Guernsey", "sent_token": ["The", "customary", "law", "of", "Normandy", "was", "developed", "between", "the", "10th", "and", "13th", "centuries", "and", "survives", "today", "through", "the", "legal", "systems", "of", "Jersey", "and", "Guernsey", "in", "the", "Channel", "Islands", ".", "Norman", "customary", "law", "was", "transcribed", "in", "two", "customaries", "in", "Latin", "by", "two", "judges", "for", "use", "by", "them", "and", "their", "colleagues", ":", "These", "are", "the", "Très", "ancien", "coutumier", "(", "Very", "ancient", "customary", ")", ",", "authored", "between", "1200", "and", "1245", ";", "and", "the", "Grand", "coutumier", "de", "Normandie", "(", "Great", "customary", "of", "Normandy", ",", "originally", "Summa", "de", "legibus", "Normanniae", "in", "curia", "laïcali", ")", ",", "authored", "between", "1235", "and", "1245", "."], "sample_type": "ori", "rel_ids": [1536]} -{"id": 30, "title": "", "context": "The customary law of Normandy was developed between the 10th and 13th centuries and survives today through the legal systems of Jersey and Guernsey in the Channel Islands . Norman customary law was transcribed in two customaries in Latin by two judges for use by them and their colleagues : These are the Très ancien coutumier ( Very ancient customary ) , authored between 1200 and 1245 ; and the Grand coutumier de Normandie ( Great customary of Normandy , originally Summa de legibus Normanniae in curia laïcali ) , authored between 1235 and 1245 .", "question": "How many customaries does Norman customary law have ?", "sent_token": ["The", "customary", "law", "of", "Normandy", "was", "developed", "between", "the", "10th", "and", "13th", "centuries", "and", "survives", "today", "through", "the", "legal", "systems", "of", "Jersey", "and", "Guernsey", "in", "the", "Channel", "Islands", ".", "Norman", "customary", "law", "was", "transcribed", "in", "two", "customaries", "in", "Latin", "by", "two", "judges", "for", "use", "by", "them", "and", "their", "colleagues", ":", "These", "are", "the", "Très", "ancien", "coutumier", "(", "Very", "ancient", "customary", ")", ",", "authored", "between", "1200", "and", "1245", ";", "and", "the", "Grand", "coutumier", "de", "Normandie", "(", "Great", "customary", "of", "Normandy", ",", "originally", "Summa", "de", "legibus", "Normanniae", "in", "curia", "laïcali", ")", ",", "authored", "between", "1235", "and", "1245", "."], "sample_type": "ori", "rel_ids": [1537]} -{"id": 31, "title": "", "context": "Norman architecture typically stands out as a new stage in the architectural history of the regions they subdued . They spread a unique Romanesque idiom to England and Italy , and the encastellation of these regions with keeps in their north French style fundamentally altered the military landscape . Their style was characterised by rounded arches , particularly over windows and doorways , and massive proportions .", "question": "What is the Norman architecture idiom ?", "sent_token": ["Norman", "architecture", "typically", "stands", "out", "as", "a", "new", "stage", "in", "the", "architectural", "history", "of", "the", "regions", "they", "subdued", ".", "They", "spread", "a", "unique", "Romanesque", "idiom", "to", "England", "and", "Italy", ",", "and", "the", "encastellation", "of", "these", "regions", "with", "keeps", "in", "their", "north", "French", "style", "fundamentally", "altered", "the", "military", "landscape", ".", "Their", "style", "was", "characterised", "by", "rounded", "arches", ",", "particularly", "over", "windows", "and", "doorways", ",", "and", "massive", "proportions", "."], "sample_type": "ori", "rel_ids": [1538]} -{"id": 32, "title": "", "context": "Norman architecture typically stands out as a new stage in the architectural history of the regions they subdued . They spread a unique Romanesque idiom to England and Italy , and the encastellation of these regions with keeps in their north French style fundamentally altered the military landscape . Their style was characterised by rounded arches , particularly over windows and doorways , and massive proportions .", "question": "What kind of arches does Norman architecture have ?", "sent_token": ["Norman", "architecture", "typically", "stands", "out", "as", "a", "new", "stage", "in", "the", "architectural", "history", "of", "the", "regions", "they", "subdued", ".", "They", "spread", "a", "unique", "Romanesque", "idiom", "to", "England", "and", "Italy", ",", "and", "the", "encastellation", "of", "these", "regions", "with", "keeps", "in", "their", "north", "French", "style", "fundamentally", "altered", "the", "military", "landscape", ".", "Their", "style", "was", "characterised", "by", "rounded", "arches", ",", "particularly", "over", "windows", "and", "doorways", ",", "and", "massive", "proportions", "."], "sample_type": "ori", "rel_ids": [1539]} -{"id": 33, "title": "", "context": "In England , the period of Norman architecture immediately succeeds that of the Anglo - Saxon and precedes the Early Gothic . In southern Italy , the Normans incorporated elements of Islamic , Lombard , and Byzantine building techniques into their own , initiating a unique style known as Norman - Arab architecture within the Kingdom of Sicily .", "question": "What architecture type came after Norman in England ?", "sent_token": ["In", "England", ",", "the", "period", "of", "Norman", "architecture", "immediately", "succeeds", "that", "of", "the", "Anglo", "-", "Saxon", "and", "precedes", "the", "Early", "Gothic", ".", "In", "southern", "Italy", ",", "the", "Normans", "incorporated", "elements", "of", "Islamic", ",", "Lombard", ",", "and", "Byzantine", "building", "techniques", "into", "their", "own", ",", "initiating", "a", "unique", "style", "known", "as", "Norman", "-", "Arab", "architecture", "within", "the", "Kingdom", "of", "Sicily", "."], "sample_type": "ori", "rel_ids": [1540]} -{"id": 34, "title": "", "context": "In England , the period of Norman architecture immediately succeeds that of the Anglo - Saxon and precedes the Early Gothic . In southern Italy , the Normans incorporated elements of Islamic , Lombard , and Byzantine building techniques into their own , initiating a unique style known as Norman - Arab architecture within the Kingdom of Sicily .", "question": "What architecture type came before Norman in England ?", "sent_token": ["In", "England", ",", "the", "period", "of", "Norman", "architecture", "immediately", "succeeds", "that", "of", "the", "Anglo", "-", "Saxon", "and", "precedes", "the", "Early", "Gothic", ".", "In", "southern", "Italy", ",", "the", "Normans", "incorporated", "elements", "of", "Islamic", ",", "Lombard", ",", "and", "Byzantine", "building", "techniques", "into", "their", "own", ",", "initiating", "a", "unique", "style", "known", "as", "Norman", "-", "Arab", "architecture", "within", "the", "Kingdom", "of", "Sicily", "."], "sample_type": "ori", "rel_ids": [1541]} -{"id": 35, "title": "", "context": "In England , the period of Norman architecture immediately succeeds that of the Anglo - Saxon and precedes the Early Gothic . In southern Italy , the Normans incorporated elements of Islamic , Lombard , and Byzantine building techniques into their own , initiating a unique style known as Norman - Arab architecture within the Kingdom of Sicily .", "question": "What place had the Norman Arab architectural style ?", "sent_token": ["In", "England", ",", "the", "period", "of", "Norman", "architecture", "immediately", "succeeds", "that", "of", "the", "Anglo", "-", "Saxon", "and", "precedes", "the", "Early", "Gothic", ".", "In", "southern", "Italy", ",", "the", "Normans", "incorporated", "elements", "of", "Islamic", ",", "Lombard", ",", "and", "Byzantine", "building", "techniques", "into", "their", "own", ",", "initiating", "a", "unique", "style", "known", "as", "Norman", "-", "Arab", "architecture", "within", "the", "Kingdom", "of", "Sicily", "."], "sample_type": "ori", "rel_ids": [1542]} -{"id": 36, "title": "", "context": "The French Wars of Religion in the 16th century and French Revolution in the 18th successively destroyed much of what existed in the way of the architectural and artistic remnant of this Norman creativity . The former , with their violence , caused the wanton destruction of many Norman edifices ; the latter , with its assault on religion , caused the purposeful destruction of religious objects of any type , and its destabilisation of society resulted in rampant pillaging .", "question": "When were the French wars of religion ?", "sent_token": ["The", "French", "Wars", "of", "Religion", "in", "the", "16th", "century", "and", "French", "Revolution", "in", "the", "18th", "successively", "destroyed", "much", "of", "what", "existed", "in", "the", "way", "of", "the", "architectural", "and", "artistic", "remnant", "of", "this", "Norman", "creativity", ".", "The", "former", ",", "with", "their", "violence", ",", "caused", "the", "wanton", "destruction", "of", "many", "Norman", "edifices", ";", "the", "latter", ",", "with", "its", "assault", "on", "religion", ",", "caused", "the", "purposeful", "destruction", "of", "religious", "objects", "of", "any", "type", ",", "and", "its", "destabilisation", "of", "society", "resulted", "in", "rampant", "pillaging", "."], "sample_type": "ori", "rel_ids": [1543]} -{"id": 37, "title": "", "context": "By far the most famous work of Norman art is the Bayeux Tapestry , which is not a tapestry but a work of embroidery . It was commissioned by Odo , the Bishop of Bayeux and first Earl of Kent , employing natives from Kent who were learned in the Nordic traditions imported in the previous half century by the Danish Vikings .", "question": "What kind of needlework was used in the creation of the Bayeux Tapestry ?", "sent_token": ["By", "far", "the", "most", "famous", "work", "of", "Norman", "art", "is", "the", "Bayeux", "Tapestry", ",", "which", "is", "not", "a", "tapestry", "but", "a", "work", "of", "embroidery", ".", "It", "was", "commissioned", "by", "Odo", ",", "the", "Bishop", "of", "Bayeux", "and", "first", "Earl", "of", "Kent", ",", "employing", "natives", "from", "Kent", "who", "were", "learned", "in", "the", "Nordic", "traditions", "imported", "in", "the", "previous", "half", "century", "by", "the", "Danish", "Vikings", "."], "sample_type": "ori", "rel_ids": [1544]} -{"id": 38, "title": "", "context": "By far the most famous work of Norman art is the Bayeux Tapestry , which is not a tapestry but a work of embroidery . It was commissioned by Odo , the Bishop of Bayeux and first Earl of Kent , employing natives from Kent who were learned in the Nordic traditions imported in the previous half century by the Danish Vikings .", "question": "What is Norman art 's most well known piece ?", "sent_token": ["By", "far", "the", "most", "famous", "work", "of", "Norman", "art", "is", "the", "Bayeux", "Tapestry", ",", "which", "is", "not", "a", "tapestry", "but", "a", "work", "of", "embroidery", ".", "It", "was", "commissioned", "by", "Odo", ",", "the", "Bishop", "of", "Bayeux", "and", "first", "Earl", "of", "Kent", ",", "employing", "natives", "from", "Kent", "who", "were", "learned", "in", "the", "Nordic", "traditions", "imported", "in", "the", "previous", "half", "century", "by", "the", "Danish", "Vikings", "."], "sample_type": "ori", "rel_ids": [1545]} -{"id": 39, "title": "", "context": "By far the most famous work of Norman art is the Bayeux Tapestry , which is not a tapestry but a work of embroidery . It was commissioned by Odo , the Bishop of Bayeux and first Earl of Kent , employing natives from Kent who were learned in the Nordic traditions imported in the previous half century by the Danish Vikings .", "question": "Who commissioned the Tapestry ?", "sent_token": ["By", "far", "the", "most", "famous", "work", "of", "Norman", "art", "is", "the", "Bayeux", "Tapestry", ",", "which", "is", "not", "a", "tapestry", "but", "a", "work", "of", "embroidery", ".", "It", "was", "commissioned", "by", "Odo", ",", "the", "Bishop", "of", "Bayeux", "and", "first", "Earl", "of", "Kent", ",", "employing", "natives", "from", "Kent", "who", "were", "learned", "in", "the", "Nordic", "traditions", "imported", "in", "the", "previous", "half", "century", "by", "the", "Danish", "Vikings", "."], "sample_type": "ori", "rel_ids": [1546]} -{"id": 40, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved fame in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were patronised by Robert Guiscard and established a Latin monastery at Sant'Eufemia . There they continued the tradition of singing .", "question": "Where did the monks flee to ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "fame", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "patronised", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "There", "they", "continued", "the", "tradition", "of", "singing", "."], "sample_type": "ori", "rel_ids": [1547]} -{"id": 41, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved fame in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were patronised by Robert Guiscard and established a Latin monastery at Sant'Eufemia . There they continued the tradition of singing .", "question": "What monastery did the Saint - Evroul monks establish in Italy ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "fame", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "patronised", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "There", "they", "continued", "the", "tradition", "of", "singing", "."], "sample_type": "ori", "rel_ids": [1548]} -{"id": 42, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved fame in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were patronised by Robert Guiscard and established a Latin monastery at Sant'Eufemia . There they continued the tradition of singing .", "question": "Who patronized the monks in Italy ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "fame", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "patronised", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "There", "they", "continued", "the", "tradition", "of", "singing", "."], "sample_type": "ori", "rel_ids": [1549]} -{"id": 43, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved fame in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were patronised by Robert Guiscard and established a Latin monastery at Sant'Eufemia . There they continued the tradition of singing .", "question": "What tradition were the Saint - Evroul monks known for ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "fame", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "patronised", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "There", "they", "continued", "the", "tradition", "of", "singing", "."], "sample_type": "ori", "rel_ids": [1550]} -{"id": 44, "title": "", "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty , and relating those classes to each other . A computational problem is understood to be a task that is in principle amenable to being solved by a computer , which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps , such as an algorithm .", "question": "What branch of theoretical computer science deals with broadly classifying computational problems by difficulty and class of relationship ?", "sent_token": ["Computational", "complexity", "theory", "is", "a", "branch", "of", "the", "theory", "of", "computation", "in", "theoretical", "computer", "science", "that", "focuses", "on", "classifying", "computational", "problems", "according", "to", "their", "inherent", "difficulty", ",", "and", "relating", "those", "classes", "to", "each", "other", ".", "A", "computational", "problem", "is", "understood", "to", "be", "a", "task", "that", "is", "in", "principle", "amenable", "to", "being", "solved", "by", "a", "computer", ",", "which", "is", "equivalent", "to", "stating", "that", "the", "problem", "may", "be", "solved", "by", "mechanical", "application", "of", "mathematical", "steps", ",", "such", "as", "an", "algorithm", "."], "sample_type": "ori", "rel_ids": [1551]} -{"id": 45, "title": "", "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty , and relating those classes to each other . A computational problem is understood to be a task that is in principle amenable to being solved by a computer , which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps , such as an algorithm .", "question": "By what main attribute are computational problems classified utilizing computational complexity theory ?", "sent_token": ["Computational", "complexity", "theory", "is", "a", "branch", "of", "the", "theory", "of", "computation", "in", "theoretical", "computer", "science", "that", "focuses", "on", "classifying", "computational", "problems", "according", "to", "their", "inherent", "difficulty", ",", "and", "relating", "those", "classes", "to", "each", "other", ".", "A", "computational", "problem", "is", "understood", "to", "be", "a", "task", "that", "is", "in", "principle", "amenable", "to", "being", "solved", "by", "a", "computer", ",", "which", "is", "equivalent", "to", "stating", "that", "the", "problem", "may", "be", "solved", "by", "mechanical", "application", "of", "mathematical", "steps", ",", "such", "as", "an", "algorithm", "."], "sample_type": "ori", "rel_ids": [1552]} -{"id": 46, "title": "", "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty , and relating those classes to each other . A computational problem is understood to be a task that is in principle amenable to being solved by a computer , which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps , such as an algorithm .", "question": "What is the term for a task that generally lends itself to being solved by a computer ?", "sent_token": ["Computational", "complexity", "theory", "is", "a", "branch", "of", "the", "theory", "of", "computation", "in", "theoretical", "computer", "science", "that", "focuses", "on", "classifying", "computational", "problems", "according", "to", "their", "inherent", "difficulty", ",", "and", "relating", "those", "classes", "to", "each", "other", ".", "A", "computational", "problem", "is", "understood", "to", "be", "a", "task", "that", "is", "in", "principle", "amenable", "to", "being", "solved", "by", "a", "computer", ",", "which", "is", "equivalent", "to", "stating", "that", "the", "problem", "may", "be", "solved", "by", "mechanical", "application", "of", "mathematical", "steps", ",", "such", "as", "an", "algorithm", "."], "sample_type": "ori", "rel_ids": [1553]} -{"id": 47, "title": "", "context": "To further highlight the difference between a problem and an instance , consider the following instance of the decision version of the traveling salesman problem : Is there a route of at most 2000 kilometres passing through all of Germany 's 15 largest cities ? The quantitative answer to this particular problem instance is of little use for solving other instances of the problem , such as asking for a round trip through all sites in Milan whose total length is at most 10 km . For this reason , complexity theory addresses computational problems and not particular problem instances .", "question": "By how many kilometers does the traveling salesman problem seek to classify a route between the 15 largest cities in Germany ?", "sent_token": ["To", "further", "highlight", "the", "difference", "between", "a", "problem", "and", "an", "instance", ",", "consider", "the", "following", "instance", "of", "the", "decision", "version", "of", "the", "traveling", "salesman", "problem", ":", "Is", "there", "a", "route", "of", "at", "most", "2000", "kilometres", "passing", "through", "all", "of", "Germany", "'s", "15", "largest", "cities", "?", "The", "quantitative", "answer", "to", "this", "particular", "problem", "instance", "is", "of", "little", "use", "for", "solving", "other", "instances", "of", "the", "problem", ",", "such", "as", "asking", "for", "a", "round", "trip", "through", "all", "sites", "in", "Milan", "whose", "total", "length", "is", "at", "most", "10", "km", ".", "For", "this", "reason", ",", "complexity", "theory", "addresses", "computational", "problems", "and", "not", "particular", "problem", "instances", "."], "sample_type": "ori", "rel_ids": [1554]} -{"id": 48, "title": "", "context": "To further highlight the difference between a problem and an instance , consider the following instance of the decision version of the traveling salesman problem : Is there a route of at most 2000 kilometres passing through all of Germany 's 15 largest cities ? The quantitative answer to this particular problem instance is of little use for solving other instances of the problem , such as asking for a round trip through all sites in Milan whose total length is at most 10 km . For this reason , complexity theory addresses computational problems and not particular problem instances .", "question": "What is one example of an instance that the quantitative answer to the traveling salesman problem fails to answer ?", "sent_token": ["To", "further", "highlight", "the", "difference", "between", "a", "problem", "and", "an", "instance", ",", "consider", "the", "following", "instance", "of", "the", "decision", "version", "of", "the", "traveling", "salesman", "problem", ":", "Is", "there", "a", "route", "of", "at", "most", "2000", "kilometres", "passing", "through", "all", "of", "Germany", "'s", "15", "largest", "cities", "?", "The", "quantitative", "answer", "to", "this", "particular", "problem", "instance", "is", "of", "little", "use", "for", "solving", "other", "instances", "of", "the", "problem", ",", "such", "as", "asking", "for", "a", "round", "trip", "through", "all", "sites", "in", "Milan", "whose", "total", "length", "is", "at", "most", "10", "km", ".", "For", "this", "reason", ",", "complexity", "theory", "addresses", "computational", "problems", "and", "not", "particular", "problem", "instances", "."], "sample_type": "ori", "rel_ids": [1555]} -{"id": 49, "title": "", "context": "To further highlight the difference between a problem and an instance , consider the following instance of the decision version of the traveling salesman problem : Is there a route of at most 2000 kilometres passing through all of Germany 's 15 largest cities ? The quantitative answer to this particular problem instance is of little use for solving other instances of the problem , such as asking for a round trip through all sites in Milan whose total length is at most 10 km . For this reason , complexity theory addresses computational problems and not particular problem instances .", "question": "What does computational complexity theory most specifically seek to answer ?", "sent_token": ["To", "further", "highlight", "the", "difference", "between", "a", "problem", "and", "an", "instance", ",", "consider", "the", "following", "instance", "of", "the", "decision", "version", "of", "the", "traveling", "salesman", "problem", ":", "Is", "there", "a", "route", "of", "at", "most", "2000", "kilometres", "passing", "through", "all", "of", "Germany", "'s", "15", "largest", "cities", "?", "The", "quantitative", "answer", "to", "this", "particular", "problem", "instance", "is", "of", "little", "use", "for", "solving", "other", "instances", "of", "the", "problem", ",", "such", "as", "asking", "for", "a", "round", "trip", "through", "all", "sites", "in", "Milan", "whose", "total", "length", "is", "at", "most", "10", "km", ".", "For", "this", "reason", ",", "complexity", "theory", "addresses", "computational", "problems", "and", "not", "particular", "problem", "instances", "."], "sample_type": "ori", "rel_ids": [1556]} -{"id": 50, "title": "", "context": "When considering computational problems , a problem instance is a string over an alphabet . Usually , the alphabet is taken to be the binary alphabet ( i.e. , the set { 0,1 } ) , and thus the strings are bitstrings . As in a real - world computer , mathematical objects other than bitstrings must be suitably encoded . For example , integers can be represented in binary notation , and graphs can be encoded directly via their adjacency matrices , or by encoding their adjacency lists in binary .", "question": "In a computational problem , what can be described as a string over an alphabet ?", "sent_token": ["When", "considering", "computational", "problems", ",", "a", "problem", "instance", "is", "a", "string", "over", "an", "alphabet", ".", "Usually", ",", "the", "alphabet", "is", "taken", "to", "be", "the", "binary", "alphabet", "(", "i.e.", ",", "the", "set", "{", "0,1", "}", ")", ",", "and", "thus", "the", "strings", "are", "bitstrings", ".", "As", "in", "a", "real", "-", "world", "computer", ",", "mathematical", "objects", "other", "than", "bitstrings", "must", "be", "suitably", "encoded", ".", "For", "example", ",", "integers", "can", "be", "represented", "in", "binary", "notation", ",", "and", "graphs", "can", "be", "encoded", "directly", "via", "their", "adjacency", "matrices", ",", "or", "by", "encoding", "their", "adjacency", "lists", "in", "binary", "."], "sample_type": "ori", "rel_ids": [1557]} -{"id": 1508, "title": "", "context": "The English name \" Normans \" comes from the French words Normans / Normanz , plural of Normant , modern French normand , which is itself borrowed from Old Low Franconian Nortmann \" Northman \" or directly from Old Norse Norðmaðr , Latinized variously as Nortmannus , Normannus , or Nordmannus ( recorded in Medieval Latin , 9th century ) to mean \" Norseman , Viking \" .", "question": "what is the original denotation of the word Norman ?", "sent_token": ["The", "English", "name", "\"", "Normans", "\"", "comes", "from", "the", "French", "words", "Normans", "/", "Normanz", ",", "plural", "of", "Normant", ",", "modern", "French", "normand", ",", "which", "is", "itself", "borrowed", "from", "Old", "Low", "Franconian", "Nortmann", "\"", "Northman", "\"", "or", "directly", "from", "Old", "Norse", "Norðmaðr", ",", "Latinized", "variously", "as", "Nortmannus", ",", "Normannus", ",", "or", "Nordmannus", "(", "recorded", "in", "Medieval", "Latin", ",", "9th", "century", ")", "to", "mean", "\"", "Norseman", ",", "Viking", "\"", "."], "sample_type": "disturb"} -{"id": 1509, "title": "", "context": "The English name \" Normans \" comes from the French words Normans / Normanz , plural of Normant , modern French normand , which is borrowed from Old Low Franconian Nortmann \" Northman \" or from Old Norse Norðmaðr , Latinized as Nortmannus , Normannus , or Nordmannus ( recorded in Medieval Latin , 9th century ) to mean \" Norseman , Viking \" .", "question": "When was the Latin version of the word Norman first recorded ?", "sent_token": ["The", "English", "name", "\"", "Normans", "\"", "comes", "from", "the", "French", "words", "Normans", "/", "Normanz", ",", "plural", "of", "Normant", ",", "modern", "French", "normand", ",", "which", "is", "borrowed", "from", "Old", "Low", "Franconian", "Nortmann", "\"", "Northman", "\"", "or", "from", "Old", "Norse", "Norðmaðr", ",", "Latinized", "as", "Nortmannus", ",", "Normannus", ",", "or", "Nordmannus", "(", "recorded", "in", "Medieval", "Latin", ",", "9th", "century", ")", "to", "mean", "\"", "Norseman", ",", "Viking", "\"", "."], "sample_type": "disturb"} -{"id": 1510, "title": "", "context": "The descendants of Rollo 's Vikings and their Frankish wives would replace the Norse religion and Old Norse language with Catholicism ( Christianity ) and the Gallo - Romance language of the local people , blending their maternal Frankish heritage with Old Norse traditions and customs to compose a unique \" Norman \" culture in the north of France . The Norman language was forged by the adoption of the indigenous langue d'oïl branch of Romance by a Norse - speaking ruling class , and it developed into the regional language that survives today .", "question": "What was the Norman religion ?", "sent_token": ["The", "descendants", "of", "Rollo", "'s", "Vikings", "and", "their", "Frankish", "wives", "would", "replace", "the", "Norse", "religion", "and", "Old", "Norse", "language", "with", "Catholicism", "(", "Christianity", ")", "and", "the", "Gallo", "-", "Romance", "language", "of", "the", "local", "people", ",", "blending", "their", "maternal", "Frankish", "heritage", "with", "Old", "Norse", "traditions", "and", "customs", "to", "compose", "a", "unique", "\"", "Norman", "\"", "culture", "in", "the", "north", "of", "France", ".", "The", "Norman", "language", "was", "forged", "by", "the", "adoption", "of", "the", "indigenous", "langue", "d'oïl", "branch", "of", "Romance", "by", "a", "Norse", "-", "speaking", "ruling", "class", ",", "and", "it", "developed", "into", "the", "regional", "language", "that", "survives", "today", "."], "sample_type": "disturb"} -{"id": 1511, "title": "", "context": "The descendants of Rollo 's Vikings and their Frankish wives would replace the Norse religion and Old Norse language with Catholicism ( Christianity ) and the Gallo - Romance language of the local people , blending their maternal Frankish heritage with Old Norse traditions and customs to synthesize a unique \" Norman \" culture in the north of France . The Norman language was forged by the adoption of the indigenous langue d'oïl branch of Romance by a Norse - speaking ruling class , and it developed into the regional language that survives today .", "question": "Where in France were the Normans located", "sent_token": ["The", "descendants", "of", "Rollo", "'s", "Vikings", "and", "their", "Frankish", "wives", "would", "replace", "the", "Norse", "religion", "and", "Old", "Norse", "language", "with", "Catholicism", "(", "Christianity", ")", "and", "the", "Gallo", "-", "Romance", "language", "of", "the", "local", "people", ",", "blending", "their", "maternal", "Frankish", "heritage", "with", "Old", "Norse", "traditions", "and", "customs", "to", "synthesize", "a", "unique", "\"", "Norman", "\"", "culture", "in", "the", "north", "of", "France", ".", "The", "Norman", "language", "was", "forged", "by", "the", "adoption", "of", "the", "indigenous", "langue", "d'oïl", "branch", "of", "Romance", "by", "a", "Norse", "-", "speaking", "ruling", "class", ",", "and", "it", "developed", "into", "the", "regional", "language", "that", "survives", "today", "."], "sample_type": "disturb"} -{"id": 1512, "title": "", "context": "One of the first Norman mercenaries to serve as a Byzantine general was Hervé in the 1050s . By then however , there were already Norman mercenaries serving as far away as Trebizond and Georgia . They were based at Malatya and Edessa , under the Byzantine duke of Antioch , Isaac Komnenos . In the 1060s , Robert Crispin led the Normans of Edessa against the Turks . Roussel de Bailleul even tried to carve out an independent state in Asia Minor with support from the local population , but he was stopped by the Byzantine general Alexius Komnenos .", "question": "When did Herve assume the role of Byzantine general ?", "sent_token": ["One", "of", "the", "first", "Norman", "mercenaries", "to", "serve", "as", "a", "Byzantine", "general", "was", "Hervé", "in", "the", "1050s", ".", "By", "then", "however", ",", "there", "were", "already", "Norman", "mercenaries", "serving", "as", "far", "away", "as", "Trebizond", "and", "Georgia", ".", "They", "were", "based", "at", "Malatya", "and", "Edessa", ",", "under", "the", "Byzantine", "duke", "of", "Antioch", ",", "Isaac", "Komnenos", ".", "In", "the", "1060s", ",", "Robert", "Crispin", "led", "the", "Normans", "of", "Edessa", "against", "the", "Turks", ".", "Roussel", "de", "Bailleul", "even", "tried", "to", "carve", "out", "an", "independent", "state", "in", "Asia", "Minor", "with", "support", "from", "the", "local", "population", ",", "but", "he", "was", "stopped", "by", "the", "Byzantine", "general", "Alexius", "Komnenos", "."], "sample_type": "disturb"} -{"id": 1513, "title": "", "context": "One of the first Norman mercenaries to serve as a Byzantine general was Hervé in the 1050s . By then however , there were already Norman mercenaries serving as far away as Trebizond and Georgia . They were based at Malatya and Edessa , under the Byzantine duke of Antioch , Isaac Komnenos . In the 1060s , Robert Crispin led the Normans of Edessa against the Turks . Roussel de Bailleul even tried to carve out an independent state in Asia Minor with support from the local population , but he was stopped by the Byzantine general Alexius Komnenos .", "question": "When did Robert Crispin fought against the Turks ?", "sent_token": ["One", "of", "the", "first", "Norman", "mercenaries", "to", "serve", "as", "a", "Byzantine", "general", "was", "Hervé", "in", "the", "1050s", ".", "By", "then", "however", ",", "there", "were", "already", "Norman", "mercenaries", "serving", "as", "far", "away", "as", "Trebizond", "and", "Georgia", ".", "They", "were", "based", "at", "Malatya", "and", "Edessa", ",", "under", "the", "Byzantine", "duke", "of", "Antioch", ",", "Isaac", "Komnenos", ".", "In", "the", "1060s", ",", "Robert", "Crispin", "led", "the", "Normans", "of", "Edessa", "against", "the", "Turks", ".", "Roussel", "de", "Bailleul", "even", "tried", "to", "carve", "out", "an", "independent", "state", "in", "Asia", "Minor", "with", "support", "from", "the", "local", "population", ",", "but", "he", "was", "stopped", "by", "the", "Byzantine", "general", "Alexius", "Komnenos", "."], "sample_type": "disturb"} -{"id": 1514, "title": "", "context": "One of the first Norman mercenaries to serve as a Byzantine general was Hervé in the 1050s . By then however , there were already Norman mercenaries serving as far away as Trebizond and Georgia . They were based at Malatya and Edessa , under the Byzantine duke of Antioch , Isaac Komnenos . In the 1060s , Robert Crispin led the Normans of Edessa against the Turks . Roussel de Bailleul even tried to carve out an independent state in Asia Minor with support from the local population , but he was stopped by the Byzantine general Alexius Komnenos . Roussel de Bailleul revolted against Isaac Comnene during one expedition and began the conquest of Lycaonia and Galatia for himself .", "question": "Who ruined Roussel de Bailleul 's plans for an independent state ?", "sent_token": ["One", "of", "the", "first", "Norman", "mercenaries", "to", "serve", "as", "a", "Byzantine", "general", "was", "Hervé", "in", "the", "1050s", ".", "By", "then", "however", ",", "there", "were", "already", "Norman", "mercenaries", "serving", "as", "far", "away", "as", "Trebizond", "and", "Georgia", ".", "They", "were", "based", "at", "Malatya", "and", "Edessa", ",", "under", "the", "Byzantine", "duke", "of", "Antioch", ",", "Isaac", "Komnenos", ".", "In", "the", "1060s", ",", "Robert", "Crispin", "led", "the", "Normans", "of", "Edessa", "against", "the", "Turks", ".", "Roussel", "de", "Bailleul", "even", "tried", "to", "carve", "out", "an", "independent", "state", "in", "Asia", "Minor", "with", "support", "from", "the", "local", "population", ",", "but", "he", "was", "stopped", "by", "the", "Byzantine", "general", "Alexius", "Komnenos", ".", "Roussel", "de", "Bailleul", "revolted", "against", "Isaac", "Comnene", "during", "one", "expedition", "and", "began", "the", "conquest", "of", "Lycaonia", "and", "Galatia", "for", "himself", "."], "sample_type": "disturb"} -{"id": 1515, "title": "", "context": "The further decline of Byzantine state - of - affairs paved the road to a third attack in 1185 , when a large Norman army invaded Dyrrachium , owing to the betrayal of high Byzantine officials . Some time later , Dyrrachium — one of the most important naval bases of the Adriatic — fell again to Byzantine hands .", "question": "When did the Normans assault Dyrrachium ?", "sent_token": ["The", "further", "decline", "of", "Byzantine", "state", "-", "of", "-", "affairs", "paved", "the", "road", "to", "a", "third", "attack", "in", "1185", ",", "when", "a", "large", "Norman", "army", "invaded", "Dyrrachium", ",", "owing", "to", "the", "betrayal", "of", "high", "Byzantine", "officials", ".", "Some", "time", "later", ",", "Dyrrachium", "—", "one", "of", "the", "most", "important", "naval", "bases", "of", "the", "Adriatic", "—", "fell", "again", "to", "Byzantine", "hands", "."], "sample_type": "disturb"} -{"id": 1516, "title": "", "context": "The further decline of Byzantine state - of - affairs paved the road to a third attack in 1185 , when a large Norman army invaded Dyrrachium , owing to the betrayal of high Byzantine officials . Some time later , Dyrrachium — one of the most important naval bases of the Adriatic — fell again to Byzantine hands .", "question": "What was the naval base 's name ?", "sent_token": ["The", "further", "decline", "of", "Byzantine", "state", "-", "of", "-", "affairs", "paved", "the", "road", "to", "a", "third", "attack", "in", "1185", ",", "when", "a", "large", "Norman", "army", "invaded", "Dyrrachium", ",", "owing", "to", "the", "betrayal", "of", "high", "Byzantine", "officials", ".", "Some", "time", "later", ",", "Dyrrachium", "—", "one", "of", "the", "most", "important", "naval", "bases", "of", "the", "Adriatic", "—", "fell", "again", "to", "Byzantine", "hands", "."], "sample_type": "disturb"} -{"id": 1517, "title": "", "context": "The further decline of Byzantine state - of - affairs paved the road to a third attack in 1185 , when a large Norman army invaded Dyrrachium , owing to the betrayal of high Byzantine officials . Some time later , Dyrrachium — one of the most important naval bases of the Adriatic — fell again to Byzantine hands .", "question": "Where was Dyrrachium situated ?", "sent_token": ["The", "further", "decline", "of", "Byzantine", "state", "-", "of", "-", "affairs", "paved", "the", "road", "to", "a", "third", "attack", "in", "1185", ",", "when", "a", "large", "Norman", "army", "invaded", "Dyrrachium", ",", "owing", "to", "the", "betrayal", "of", "high", "Byzantine", "officials", ".", "Some", "time", "later", ",", "Dyrrachium", "—", "one", "of", "the", "most", "important", "naval", "bases", "of", "the", "Adriatic", "—", "fell", "again", "to", "Byzantine", "hands", "."], "sample_type": "disturb"} -{"id": 1518, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , eventually fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had already disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he joined up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a series of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "Who was Margaret 's brother ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "eventually", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "already", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "joined", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "series", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "disturb"} -{"id": 1519, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , eventually fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had already disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he met up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a series of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "Who was married to Margaret ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "eventually", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "already", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "met", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "series", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "disturb"} -{"id": 1520, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he met up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a series of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "When was Scotland invaded by William ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "met", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "series", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "disturb"} -{"id": 1521, "title": "", "context": "One of the claimants of the English throne opposing William the Conqueror , Edgar Atheling , eventually fled to Scotland . King Malcolm III of Scotland married Edgar 's sister Margaret , and came into opposition to William who had already disputed Scotland 's southern borders . William invaded Scotland in 1072 , riding as far as Abernethy where he met up with his fleet of ships . Malcolm submitted , paid homage to William and surrendered his son Duncan as a hostage , beginning a string of arguments as to whether the Scottish Crown owed allegiance to the King of England .", "question": "Who was the hostage ?", "sent_token": ["One", "of", "the", "claimants", "of", "the", "English", "throne", "opposing", "William", "the", "Conqueror", ",", "Edgar", "Atheling", ",", "eventually", "fled", "to", "Scotland", ".", "King", "Malcolm", "III", "of", "Scotland", "married", "Edgar", "'s", "sister", "Margaret", ",", "and", "came", "into", "opposition", "to", "William", "who", "had", "already", "disputed", "Scotland", "'s", "southern", "borders", ".", "William", "invaded", "Scotland", "in", "1072", ",", "riding", "as", "far", "as", "Abernethy", "where", "he", "met", "up", "with", "his", "fleet", "of", "ships", ".", "Malcolm", "submitted", ",", "paid", "homage", "to", "William", "and", "surrendered", "his", "son", "Duncan", "as", "a", "hostage", ",", "beginning", "a", "string", "of", "arguments", "as", "to", "whether", "the", "Scottish", "Crown", "owed", "allegiance", "to", "the", "King", "of", "England", "."], "sample_type": "disturb"} -{"id": 1522, "title": "", "context": "Even before the Norman Conquest of England , the Normans had come into contact with Wales . Edward the Confessor had appointed the aforementioned Ralph as earl of Hereford and charged him with defending the Marches and warring with the Welsh . In these original ventures , the Normans failed to make any headway into Wales .", "question": "Where was Ralph earl of ?", "sent_token": ["Even", "before", "the", "Norman", "Conquest", "of", "England", ",", "the", "Normans", "had", "come", "into", "contact", "with", "Wales", ".", "Edward", "the", "Confessor", "had", "appointed", "the", "aforementioned", "Ralph", "as", "earl", "of", "Hereford", "and", "charged", "him", "with", "defending", "the", "Marches", "and", "warring", "with", "the", "Welsh", ".", "In", "these", "original", "ventures", ",", "the", "Normans", "failed", "to", "make", "any", "headway", "into", "Wales", "."], "sample_type": "disturb"} -{"id": 1523, "title": "", "context": "Even before the Norman Conquest of England , the Normans had come into contact with Wales . Edward the Confessor had set up Ralph as earl of Hereford and charged him with defending the Marches and warring with the Welsh . In these original ventures , the Normans failed to make any headway into Wales .", "question": "Who was Ralph in charge of being at war with ?", "sent_token": ["Even", "before", "the", "Norman", "Conquest", "of", "England", ",", "the", "Normans", "had", "come", "into", "contact", "with", "Wales", ".", "Edward", "the", "Confessor", "had", "set", "up", "Ralph", "as", "earl", "of", "Hereford", "and", "charged", "him", "with", "defending", "the", "Marches", "and", "warring", "with", "the", "Welsh", ".", "In", "these", "original", "ventures", ",", "the", "Normans", "failed", "to", "make", "any", "headway", "into", "Wales", "."], "sample_type": "disturb"} -{"id": 1524, "title": "", "context": "Even before the Norman Conquest of England , the Normans had come into contact with Wales . Edward the Confessor had set up the aforementioned Ralph as earl of Hereford and charged him with defending the Marches and warring with the Welsh . In these original ventures , the Normans failed to make any headway into Wales .", "question": "Who made Ralph become earl ?", "sent_token": ["Even", "before", "the", "Norman", "Conquest", "of", "England", ",", "the", "Normans", "had", "come", "into", "contact", "with", "Wales", ".", "Edward", "the", "Confessor", "had", "set", "up", "the", "aforementioned", "Ralph", "as", "earl", "of", "Hereford", "and", "charged", "him", "with", "defending", "the", "Marches", "and", "warring", "with", "the", "Welsh", ".", "In", "these", "original", "ventures", ",", "the", "Normans", "failed", "to", "make", "any", "headway", "into", "Wales", "."], "sample_type": "disturb"} -{"id": 1525, "title": "", "context": "Subsequent to the Conquest , however , the Marches came completely under the dominance of William 's most trusted Norman barons , including Bernard de Neufmarché , Roger of Montgomery in Shropshire and Hugh Lupus in Cheshire . These Normans began a long period of slow conquest during which almost all of Wales was in some degree subject to Norman interference . Norman words , such as baron ( barwn ) , first entered Welsh at that time .", "question": "What country was under the control of Norman barons ?", "sent_token": ["Subsequent", "to", "the", "Conquest", ",", "however", ",", "the", "Marches", "came", "completely", "under", "the", "dominance", "of", "William", "'s", "most", "trusted", "Norman", "barons", ",", "including", "Bernard", "de", "Neufmarché", ",", "Roger", "of", "Montgomery", "in", "Shropshire", "and", "Hugh", "Lupus", "in", "Cheshire", ".", "These", "Normans", "began", "a", "long", "period", "of", "slow", "conquest", "during", "which", "almost", "all", "of", "Wales", "was", "in", "some", "degree", "subject", "to", "Norman", "interference", ".", "Norman", "words", ",", "such", "as", "baron", "(", "barwn", ")", ",", "first", "entered", "Welsh", "at", "that", "time", "."], "sample_type": "disturb"} -{"id": 1526, "title": "", "context": "The legendary religious zeal of the Normans was exercised in religious wars long before the First Crusade carved out a Norman principality in Antioch . They were major foreign participants in the Reconquista in Iberia . In 1018 , Roger de Tosny travelled to the Iberian Peninsula to carve out a state for himself from Moorish lands , but failed . In 1064 , during the War of Barbastro , William of Montreuil led the papal army and took a huge booty .", "question": "What year did Roger de Tosny not succeed accomplishing what he set out to do ?", "sent_token": ["The", "legendary", "religious", "zeal", "of", "the", "Normans", "was", "exercised", "in", "religious", "wars", "long", "before", "the", "First", "Crusade", "carved", "out", "a", "Norman", "principality", "in", "Antioch", ".", "They", "were", "major", "foreign", "participants", "in", "the", "Reconquista", "in", "Iberia", ".", "In", "1018", ",", "Roger", "de", "Tosny", "travelled", "to", "the", "Iberian", "Peninsula", "to", "carve", "out", "a", "state", "for", "himself", "from", "Moorish", "lands", ",", "but", "failed", ".", "In", "1064", ",", "during", "the", "War", "of", "Barbastro", ",", "William", "of", "Montreuil", "led", "the", "papal", "army", "and", "took", "a", "huge", "booty", "."], "sample_type": "disturb"} -{"id": 1527, "title": "", "context": "The legendary religious zeal of the Normans was exercised in religious wars long before the First Crusade carved out a Norman principality in Antioch . They were major foreign participants in the Reconquista in Iberia . In 1018 , Roger de Tosny travelled to the Iberian Peninsula to carve out a state for himself from Moorish lands , but failed . In 1064 , during the War of Barbastro , William of Montreuil led the papal army and took a huge booty .", "question": "Who was the leader of the papal army in the War of Barbastro ?", "sent_token": ["The", "legendary", "religious", "zeal", "of", "the", "Normans", "was", "exercised", "in", "religious", "wars", "long", "before", "the", "First", "Crusade", "carved", "out", "a", "Norman", "principality", "in", "Antioch", ".", "They", "were", "major", "foreign", "participants", "in", "the", "Reconquista", "in", "Iberia", ".", "In", "1018", ",", "Roger", "de", "Tosny", "travelled", "to", "the", "Iberian", "Peninsula", "to", "carve", "out", "a", "state", "for", "himself", "from", "Moorish", "lands", ",", "but", "failed", ".", "In", "1064", ",", "during", "the", "War", "of", "Barbastro", ",", "William", "of", "Montreuil", "led", "the", "papal", "army", "and", "took", "a", "huge", "booty", "."], "sample_type": "disturb"} -{"id": 1528, "title": "", "context": "In 1096 , Crusaders passing by the siege of Amalfi were joined by Bohemond of Taranto and his nephew Tancred with an army of Italo - Normans . Bohemond was the de facto leader of the Crusade during its passage through Asia Minor . Antioch lay on the crusaders ' route to Palestine , and anticipating that it would be attacked the Muslim governor of the city , Yaghi - Siyan , began stockpiling food and sending requests for help . After the successful Siege of Antioch in 1097 , Bohemond began carving out an independent principality around that city . Tancred was instrumental in the conquest of Jerusalem and he worked for the expansion of the Crusader kingdom in Transjordan and the region of Galilee.[citation needed ]", "question": "When did the Siege of Antioch take place ?", "sent_token": ["In", "1096", ",", "Crusaders", "passing", "by", "the", "siege", "of", "Amalfi", "were", "joined", "by", "Bohemond", "of", "Taranto", "and", "his", "nephew", "Tancred", "with", "an", "army", "of", "Italo", "-", "Normans", ".", "Bohemond", "was", "the", "de", "facto", "leader", "of", "the", "Crusade", "during", "its", "passage", "through", "Asia", "Minor", ".", "Antioch", "lay", "on", "the", "crusaders", "'", "route", "to", "Palestine", ",", "and", "anticipating", "that", "it", "would", "be", "attacked", "the", "Muslim", "governor", "of", "the", "city", ",", "Yaghi", "-", "Siyan", ",", "began", "stockpiling", "food", "and", "sending", "requests", "for", "help", ".", "After", "the", "successful", "Siege", "of", "Antioch", "in", "1097", ",", "Bohemond", "began", "carving", "out", "an", "independent", "principality", "around", "that", "city", ".", "Tancred", "was", "instrumental", "in", "the", "conquest", "of", "Jerusalem", "and", "he", "worked", "for", "the", "expansion", "of", "the", "Crusader", "kingdom", "in", "Transjordan", "and", "the", "region", "of", "Galilee.[citation", "needed", "]"], "sample_type": "disturb"} -{"id": 1529, "title": "", "context": "In 1096 , Crusaders passing by the siege of Amalfi were joined by Bohemond of Taranto and his nephew Tancred with an army of Italo - Normans . A politique , Bohemond was resolved to engineer the enthusiasm of the crusaders to his own ends ; and when his nephew Tancred left the main army at Heraclea Cybistra , and attempted to establish a footing in Cilicia , the movement may have been already intended as a preparation for Bohemond ’s eastern principality . Bohemond was the de facto leader of the Crusade during its passage through Asia Minor . After the successful Siege of Antioch in 1097 , Bohemond began carving out an independent principality around that city . Tancred was instrumental in the conquest of Jerusalem and he worked for the expansion of the Crusader kingdom in Transjordan and the region of Galilee.[citation needed ]", "question": "What was the name of Bohemond 's nephew ?", "sent_token": ["In", "1096", ",", "Crusaders", "passing", "by", "the", "siege", "of", "Amalfi", "were", "joined", "by", "Bohemond", "of", "Taranto", "and", "his", "nephew", "Tancred", "with", "an", "army", "of", "Italo", "-", "Normans", ".", "A", "politique", ",", "Bohemond", "was", "resolved", "to", "engineer", "the", "enthusiasm", "of", "the", "crusaders", "to", "his", "own", "ends", ";", "and", "when", "his", "nephew", "Tancred", "left", "the", "main", "army", "at", "Heraclea", "Cybistra", ",", "and", "attempted", "to", "establish", "a", "footing", "in", "Cilicia", ",", "the", "movement", "may", "have", "been", "already", "intended", "as", "a", "preparation", "for", "Bohemond", "’s", "eastern", "principality", ".", "Bohemond", "was", "the", "de", "facto", "leader", "of", "the", "Crusade", "during", "its", "passage", "through", "Asia", "Minor", ".", "After", "the", "successful", "Siege", "of", "Antioch", "in", "1097", ",", "Bohemond", "began", "carving", "out", "an", "independent", "principality", "around", "that", "city", ".", "Tancred", "was", "instrumental", "in", "the", "conquest", "of", "Jerusalem", "and", "he", "worked", "for", "the", "expansion", "of", "the", "Crusader", "kingdom", "in", "Transjordan", "and", "the", "region", "of", "Galilee.[citation", "needed", "]"], "sample_type": "disturb"} -{"id": 1530, "title": "", "context": "In 1096 , Crusaders passing by the siege of Amalfi were joined by Bohemond of Taranto and his nephew Tancred with an army of Italo - Normans . Bohemond was the de facto leader of the Crusade during its passage through Asia Minor . After the successful Siege of Antioch in 1097 , Bohemond began carving out an independent principality around that city . Tancred was instrumental in the conquest of Jerusalem and he worked for the expansion of the Crusader kingdom in Transjordan and the region of Galilee.[citation needed ]", "question": "What major conquest did Tancred play a part in ?", "sent_token": ["In", "1096", ",", "Crusaders", "passing", "by", "the", "siege", "of", "Amalfi", "were", "joined", "by", "Bohemond", "of", "Taranto", "and", "his", "nephew", "Tancred", "with", "an", "army", "of", "Italo", "-", "Normans", ".", "Bohemond", "was", "the", "de", "facto", "leader", "of", "the", "Crusade", "during", "its", "passage", "through", "Asia", "Minor", ".", "After", "the", "successful", "Siege", "of", "Antioch", "in", "1097", ",", "Bohemond", "began", "carving", "out", "an", "independent", "principality", "around", "that", "city", ".", "Tancred", "was", "instrumental", "in", "the", "conquest", "of", "Jerusalem", "and", "he", "worked", "for", "the", "expansion", "of", "the", "Crusader", "kingdom", "in", "Transjordan", "and", "the", "region", "of", "Galilee.[citation", "needed", "]"], "sample_type": "disturb"} -{"id": 1531, "title": "", "context": "The conquest of Cyprus by the Anglo - Norman forces of the Third Crusade opened a new chapter in the history of the island , which would be under Western European domination for 380 years . Although not part of a planned operation , the conquest had more permanent results than expected .", "question": "How long did Western Europe control Cyprus ?", "sent_token": ["The", "conquest", "of", "Cyprus", "by", "the", "Anglo", "-", "Norman", "forces", "of", "the", "Third", "Crusade", "opened", "a", "new", "chapter", "in", "the", "history", "of", "the", "island", ",", "which", "would", "be", "under", "Western", "European", "domination", "for", "380", "years", ".", "Although", "not", "part", "of", "a", "planned", "operation", ",", "the", "conquest", "had", "more", "permanent", "results", "than", "expected", "."], "sample_type": "disturb"} -{"id": 1532, "title": "", "context": "Between 1402 and 1405 , the expedition led by the Norman noble Jean de Bethencourt and the Poitevine Gadifer de la Salle conquered the Canarian islands of Lanzarote , Fuerteventura and El Hierro off the Atlantic coast of Africa . Their troops were assembled in Normandy , Gascony and were later reinforced by Castilian colonists .", "question": "What continent are the Canarian Islands off the coast of ?", "sent_token": ["Between", "1402", "and", "1405", ",", "the", "expedition", "led", "by", "the", "Norman", "noble", "Jean", "de", "Bethencourt", "and", "the", "Poitevine", "Gadifer", "de", "la", "Salle", "conquered", "the", "Canarian", "islands", "of", "Lanzarote", ",", "Fuerteventura", "and", "El", "Hierro", "off", "the", "Atlantic", "coast", "of", "Africa", ".", "Their", "troops", "were", "assembled", "in", "Normandy", ",", "Gascony", "and", "were", "later", "reinforced", "by", "Castilian", "colonists", "."], "sample_type": "disturb"} -{"id": 1533, "title": "", "context": "Jean de Béthencourt was a French explorer who was responsible for the expedition to the Canaries . Bethencourt took the title of King of the Canary Islands , as vassal to Henry III of Castile . In 1418 , Jean 's nephew Maciot de Bethencourt sold the rights to the islands to Enrique Pérez de Guzmán , 2nd Count de Niebla .", "question": "Who became the King of the Canary Islands ?", "sent_token": ["Jean", "de", "Béthencourt", "was", "a", "French", "explorer", "who", "was", "responsible", "for", "the", "expedition", "to", "the", "Canaries", ".", "Bethencourt", "took", "the", "title", "of", "King", "of", "the", "Canary", "Islands", ",", "as", "vassal", "to", "Henry", "III", "of", "Castile", ".", "In", "1418", ",", "Jean", "'s", "nephew", "Maciot", "de", "Bethencourt", "sold", "the", "rights", "to", "the", "islands", "to", "Enrique", "Pérez", "de", "Guzmán", ",", "2nd", "Count", "de", "Niebla", "."], "sample_type": "disturb"} -{"id": 1534, "title": "", "context": "Bethencourt took the title of King of the Canary Islands , as vassal to Henry III of Castile . In 1418 , Jean 's nephew Maciot de Bethencourt sold the rights to the islands to Enrique Pérez de Guzmán , 2nd Count de Niebla .", "question": "Who purchased the rights ?", "sent_token": ["Bethencourt", "took", "the", "title", "of", "King", "of", "the", "Canary", "Islands", ",", "as", "vassal", "to", "Henry", "III", "of", "Castile", ".", "In", "1418", ",", "Jean", "'s", "nephew", "Maciot", "de", "Bethencourt", "sold", "the", "rights", "to", "the", "islands", "to", "Enrique", "Pérez", "de", "Guzmán", ",", "2nd", "Count", "de", "Niebla", "."], "sample_type": "disturb"} -{"id": 1535, "title": "", "context": "Bethencourt took the title of King of the Canary Islands , as vassal to Henry III of Castile . In 1418 , Jean 's nephew Maciot de Bethencourt sold the rights to the islands to Enrique Pérez de Guzmán , 2nd Count de Niebla . Maciot de Bethencourt was born illegitimate circa 1390 at France .", "question": "Who sold the rights ?", "sent_token": ["Bethencourt", "took", "the", "title", "of", "King", "of", "the", "Canary", "Islands", ",", "as", "vassal", "to", "Henry", "III", "of", "Castile", ".", "In", "1418", ",", "Jean", "'s", "nephew", "Maciot", "de", "Bethencourt", "sold", "the", "rights", "to", "the", "islands", "to", "Enrique", "Pérez", "de", "Guzmán", ",", "2nd", "Count", "de", "Niebla", ".", "Maciot", "de", "Bethencourt", "was", "born", "illegitimate", "circa", "1390", "at", "France", "."], "sample_type": "disturb"} -{"id": 1536, "title": "", "context": "The customary law of Normandy was developed between the 10th and 13th centuries and survives today through the legal systems of Jersey and Guernsey in the Channel Islands . Just off the Normandy coast , the Channel Islands comprising of Jersey , Guernsey , Alderney , Sark and Herm are a short hop away from Britain and mainland Europe . Norman customary law was transcribed in two customaries in Latin by two judges for use by them and their colleagues : These are the Très ancien coutumier ( Very ancient customary ) , authored between 1200 and 1245 ; and the Grand coutumier de Normandie ( Great customary of Normandy , originally Summa de legibus Normanniae in curia laïcali ) , authored between 1235 and 1245 .", "question": "Where are Jersey and Guernsey", "sent_token": ["The", "customary", "law", "of", "Normandy", "was", "developed", "between", "the", "10th", "and", "13th", "centuries", "and", "survives", "today", "through", "the", "legal", "systems", "of", "Jersey", "and", "Guernsey", "in", "the", "Channel", "Islands", ".", "Just", "off", "the", "Normandy", "coast", ",", "the", "Channel", "Islands", "comprising", "of", "Jersey", ",", "Guernsey", ",", "Alderney", ",", "Sark", "and", "Herm", "are", "a", "short", "hop", "away", "from", "Britain", "and", "mainland", "Europe", ".", "Norman", "customary", "law", "was", "transcribed", "in", "two", "customaries", "in", "Latin", "by", "two", "judges", "for", "use", "by", "them", "and", "their", "colleagues", ":", "These", "are", "the", "Très", "ancien", "coutumier", "(", "Very", "ancient", "customary", ")", ",", "authored", "between", "1200", "and", "1245", ";", "and", "the", "Grand", "coutumier", "de", "Normandie", "(", "Great", "customary", "of", "Normandy", ",", "originally", "Summa", "de", "legibus", "Normanniae", "in", "curia", "laïcali", ")", ",", "authored", "between", "1235", "and", "1245", "."], "sample_type": "disturb"} -{"id": 1537, "title": "", "context": "The customary law of Normandy was developed between the 10th and 13th centuries and survives today through the legal systems of Jersey and Guernsey in the Channel Islands . Norman customary law was transcribed in two customaries in Latin by two judges for use by them and their colleagues : These are the Très ancien coutumier ( Very ancient customary ) , authored between 1200 and 1245 ; and the Grand coutumier de Normandie ( Great customary of Normandy , originally Summa de legibus Normanniae in curia laïcali ) , authored between 1235 and 1245 .", "question": "How many customaries does Norman customary law possess ?", "sent_token": ["The", "customary", "law", "of", "Normandy", "was", "developed", "between", "the", "10th", "and", "13th", "centuries", "and", "survives", "today", "through", "the", "legal", "systems", "of", "Jersey", "and", "Guernsey", "in", "the", "Channel", "Islands", ".", "Norman", "customary", "law", "was", "transcribed", "in", "two", "customaries", "in", "Latin", "by", "two", "judges", "for", "use", "by", "them", "and", "their", "colleagues", ":", "These", "are", "the", "Très", "ancien", "coutumier", "(", "Very", "ancient", "customary", ")", ",", "authored", "between", "1200", "and", "1245", ";", "and", "the", "Grand", "coutumier", "de", "Normandie", "(", "Great", "customary", "of", "Normandy", ",", "originally", "Summa", "de", "legibus", "Normanniae", "in", "curia", "laïcali", ")", ",", "authored", "between", "1235", "and", "1245", "."], "sample_type": "disturb"} -{"id": 1538, "title": "", "context": "The term Norman architecture is used to categorise styles of Romanesque architecture developed by the Normans in the various lands under their dominion or influence in the 11th and 12th centuries . Norman architecture typically stands out as a new stage in the architectural history of the regions they subdued . They spread a unique Romanesque idiom to England and Italy , and the encastellation of these regions with keeps in their north French style fundamentally altered the military landscape . Their style was characterised by rounded arches , particularly over windows and doorways , and massive proportions .", "question": "What is the Norman architecture idiom ?", "sent_token": ["The", "term", "Norman", "architecture", "is", "used", "to", "categorise", "styles", "of", "Romanesque", "architecture", "developed", "by", "the", "Normans", "in", "the", "various", "lands", "under", "their", "dominion", "or", "influence", "in", "the", "11th", "and", "12th", "centuries", ".", "Norman", "architecture", "typically", "stands", "out", "as", "a", "new", "stage", "in", "the", "architectural", "history", "of", "the", "regions", "they", "subdued", ".", "They", "spread", "a", "unique", "Romanesque", "idiom", "to", "England", "and", "Italy", ",", "and", "the", "encastellation", "of", "these", "regions", "with", "keeps", "in", "their", "north", "French", "style", "fundamentally", "altered", "the", "military", "landscape", ".", "Their", "style", "was", "characterised", "by", "rounded", "arches", ",", "particularly", "over", "windows", "and", "doorways", ",", "and", "massive", "proportions", "."], "sample_type": "disturb"} -{"id": 1539, "title": "", "context": "Norman architecture typically stands out as a new stage in the architectural history of the regions they subdued . They spread a unique Romanesque idiom to England and Italy , and the encastellation of these regions with keeps in their north French style fundamentally altered the military landscape . Their style was characterised by rounded arches , particularly over windows and doorways , and massive proportions .", "question": "What type of arches does Norman architecture have ?", "sent_token": ["Norman", "architecture", "typically", "stands", "out", "as", "a", "new", "stage", "in", "the", "architectural", "history", "of", "the", "regions", "they", "subdued", ".", "They", "spread", "a", "unique", "Romanesque", "idiom", "to", "England", "and", "Italy", ",", "and", "the", "encastellation", "of", "these", "regions", "with", "keeps", "in", "their", "north", "French", "style", "fundamentally", "altered", "the", "military", "landscape", ".", "Their", "style", "was", "characterised", "by", "rounded", "arches", ",", "particularly", "over", "windows", "and", "doorways", ",", "and", "massive", "proportions", "."], "sample_type": "disturb"} -{"id": 1540, "title": "", "context": "In England , the period of Norman architecture immediately succeeds that of the Anglo - Saxon and precedes the Early Gothic . In southern Italy , the Normans integrated elements of Islamic , Lombard , and Byzantine building techniques into their own , initiating a unique style known as Norman - Arab architecture within the Kingdom of Sicily .", "question": "What architecture type came after Norman in England ?", "sent_token": ["In", "England", ",", "the", "period", "of", "Norman", "architecture", "immediately", "succeeds", "that", "of", "the", "Anglo", "-", "Saxon", "and", "precedes", "the", "Early", "Gothic", ".", "In", "southern", "Italy", ",", "the", "Normans", "integrated", "elements", "of", "Islamic", ",", "Lombard", ",", "and", "Byzantine", "building", "techniques", "into", "their", "own", ",", "initiating", "a", "unique", "style", "known", "as", "Norman", "-", "Arab", "architecture", "within", "the", "Kingdom", "of", "Sicily", "."], "sample_type": "disturb"} -{"id": 1541, "title": "", "context": "Norman Castles were typically built on the highest ground in the area , often adjoined Rivers and overlooking towns and harbours . In England , the period of Norman architecture immediately succeeds that of the Anglo - Saxon and precedes the Early Gothic . In southern Italy , the Normans incorporated elements of Islamic , Lombard , and Byzantine building techniques into their own , initiating a unique style known as Norman - Arab architecture within the Kingdom of Sicily .", "question": "What architecture type came before Norman in England ?", "sent_token": ["Norman", "Castles", "were", "typically", "built", "on", "the", "highest", "ground", "in", "the", "area", ",", "often", "adjoined", "Rivers", "and", "overlooking", "towns", "and", "harbours", ".", "In", "England", ",", "the", "period", "of", "Norman", "architecture", "immediately", "succeeds", "that", "of", "the", "Anglo", "-", "Saxon", "and", "precedes", "the", "Early", "Gothic", ".", "In", "southern", "Italy", ",", "the", "Normans", "incorporated", "elements", "of", "Islamic", ",", "Lombard", ",", "and", "Byzantine", "building", "techniques", "into", "their", "own", ",", "initiating", "a", "unique", "style", "known", "as", "Norman", "-", "Arab", "architecture", "within", "the", "Kingdom", "of", "Sicily", "."], "sample_type": "disturb"} -{"id": 1542, "title": "", "context": "In England , the period of Norman architecture succeeds that of the Anglo - Saxon and precedes the Early Gothic . In southern Italy , the Normans incorporated elements of Islamic , Lombard , and Byzantine building techniques into their own , initiating a style known as Norman - Arab architecture within the Kingdom of Sicily .", "question": "What place had the Norman Arab architectural style ?", "sent_token": ["In", "England", ",", "the", "period", "of", "Norman", "architecture", "succeeds", "that", "of", "the", "Anglo", "-", "Saxon", "and", "precedes", "the", "Early", "Gothic", ".", "In", "southern", "Italy", ",", "the", "Normans", "incorporated", "elements", "of", "Islamic", ",", "Lombard", ",", "and", "Byzantine", "building", "techniques", "into", "their", "own", ",", "initiating", "a", "style", "known", "as", "Norman", "-", "Arab", "architecture", "within", "the", "Kingdom", "of", "Sicily", "."], "sample_type": "disturb"} -{"id": 1543, "title": "", "context": "The French Wars of Religion in the 16th century and French Revolution in the 18th successively destroyed much of what existed in the way of the architectural and artistic remnant of this Norman creativity . The former , with their violence , caused the wanton destruction of many Norman edifices ; the latter , with its assault on religion , caused the purposeful destruction of religious objects of any type , and its destabilisation of society led to rampant pillaging .", "question": "When were the French wars of religion ?", "sent_token": ["The", "French", "Wars", "of", "Religion", "in", "the", "16th", "century", "and", "French", "Revolution", "in", "the", "18th", "successively", "destroyed", "much", "of", "what", "existed", "in", "the", "way", "of", "the", "architectural", "and", "artistic", "remnant", "of", "this", "Norman", "creativity", ".", "The", "former", ",", "with", "their", "violence", ",", "caused", "the", "wanton", "destruction", "of", "many", "Norman", "edifices", ";", "the", "latter", ",", "with", "its", "assault", "on", "religion", ",", "caused", "the", "purposeful", "destruction", "of", "religious", "objects", "of", "any", "type", ",", "and", "its", "destabilisation", "of", "society", "led", "to", "rampant", "pillaging", "."], "sample_type": "disturb"} -{"id": 1544, "title": "", "context": "By far the most famous work of Norman art is the Bayeux Tapestry , which is not a tapestry but a work of embroidery . The Bayeux Tapestry is a narrative embroidery of about 70 meters long and 50 centimeters wide . It was commissioned by Odo , the Bishop of Bayeux and first Earl of Kent , employing natives from Kent who were learned in the Nordic traditions imported in the previous half century by the Danish Vikings .", "question": "What kind of needlework was used in the creation of the Bayeux Tapestry ?", "sent_token": ["By", "far", "the", "most", "famous", "work", "of", "Norman", "art", "is", "the", "Bayeux", "Tapestry", ",", "which", "is", "not", "a", "tapestry", "but", "a", "work", "of", "embroidery", ".", "The", "Bayeux", "Tapestry", "is", "a", "narrative", "embroidery", "of", "about", "70", "meters", "long", "and", "50", "centimeters", "wide", ".", "It", "was", "commissioned", "by", "Odo", ",", "the", "Bishop", "of", "Bayeux", "and", "first", "Earl", "of", "Kent", ",", "employing", "natives", "from", "Kent", "who", "were", "learned", "in", "the", "Nordic", "traditions", "imported", "in", "the", "previous", "half", "century", "by", "the", "Danish", "Vikings", "."], "sample_type": "disturb"} -{"id": 1545, "title": "", "context": "By far the most famous work of Norman art is the Bayeux Tapestry , which is not a tapestry but a work of embroidery . It was commissioned by Odo , the Bishop of Bayeux and first Earl of Kent , employing natives from Kent who were learned in the Nordic traditions imported in the previous half century by the Danish Vikings .", "question": "What is Norman art 's world - renowned piece ?", "sent_token": ["By", "far", "the", "most", "famous", "work", "of", "Norman", "art", "is", "the", "Bayeux", "Tapestry", ",", "which", "is", "not", "a", "tapestry", "but", "a", "work", "of", "embroidery", ".", "It", "was", "commissioned", "by", "Odo", ",", "the", "Bishop", "of", "Bayeux", "and", "first", "Earl", "of", "Kent", ",", "employing", "natives", "from", "Kent", "who", "were", "learned", "in", "the", "Nordic", "traditions", "imported", "in", "the", "previous", "half", "century", "by", "the", "Danish", "Vikings", "."], "sample_type": "disturb"} -{"id": 1546, "title": "", "context": "By far the most famous work of Norman art is the Bayeux Tapestry , which is not a tapestry but a work of embroidery . It was commissioned by Odo , the Bishop of Bayeux and first Earl of Kent , hiring natives from Kent who were learned in the Nordic traditions imported in the previous half century by the Danish Vikings .", "question": "Who commissioned the Tapestry ?", "sent_token": ["By", "far", "the", "most", "famous", "work", "of", "Norman", "art", "is", "the", "Bayeux", "Tapestry", ",", "which", "is", "not", "a", "tapestry", "but", "a", "work", "of", "embroidery", ".", "It", "was", "commissioned", "by", "Odo", ",", "the", "Bishop", "of", "Bayeux", "and", "first", "Earl", "of", "Kent", ",", "hiring", "natives", "from", "Kent", "who", "were", "learned", "in", "the", "Nordic", "traditions", "imported", "in", "the", "previous", "half", "century", "by", "the", "Danish", "Vikings", "."], "sample_type": "disturb"} -{"id": 1547, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved reputation in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were patronised by Robert Guiscard and established a Latin monastery at Sant'Eufemia . There they continued the tradition of singing .", "question": "Where did the monks flee to ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "reputation", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "patronised", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "There", "they", "continued", "the", "tradition", "of", "singing", "."], "sample_type": "disturb"} -{"id": 1548, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved fame in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were supported by Robert Guiscard and established a Latin monastery at Sant'Eufemia . There they continued the tradition of singing .", "question": "What monastery did the Saint - Evroul monks establish in Italy ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "fame", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "supported", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "There", "they", "continued", "the", "tradition", "of", "singing", "."], "sample_type": "disturb"} -{"id": 1549, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved fame in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were patronised by Robert Guiscard and established a Latin monastery at Sant'Eufemia . Robert Guiscard was a Norman adventurer remembered for the conquest of southern Italy and Sicily . There they continued the tradition of singing .", "question": "Who patronized the monks in Italy ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "fame", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "patronised", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "Robert", "Guiscard", "was", "a", "Norman", "adventurer", "remembered", "for", "the", "conquest", "of", "southern", "Italy", "and", "Sicily", ".", "There", "they", "continued", "the", "tradition", "of", "singing", "."], "sample_type": "disturb"} -{"id": 1550, "title": "", "context": "At Saint Evroul , a tradition of singing had developed and the choir achieved fame in Normandy . Under the Norman abbot Robert de Grantmesnil , several monks of Saint - Evroul fled to southern Italy , where they were patronised by Robert Guiscard and established a Latin monastery at Sant'Eufemia . There they proceeded with the tradition of singing .", "question": "What tradition were the Saint - Evroul monks known for ?", "sent_token": ["At", "Saint", "Evroul", ",", "a", "tradition", "of", "singing", "had", "developed", "and", "the", "choir", "achieved", "fame", "in", "Normandy", ".", "Under", "the", "Norman", "abbot", "Robert", "de", "Grantmesnil", ",", "several", "monks", "of", "Saint", "-", "Evroul", "fled", "to", "southern", "Italy", ",", "where", "they", "were", "patronised", "by", "Robert", "Guiscard", "and", "established", "a", "Latin", "monastery", "at", "Sant'Eufemia", ".", "There", "they", "proceeded", "with", "the", "tradition", "of", "singing", "."], "sample_type": "disturb"} -{"id": 1551, "title": "", "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty , and relating those classes to each other . A computational problem is understood to be a task that is in principle amenable to being solved by a computer , which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps , such as an algorithm .", "question": "What branch of theoretical computer science handles broadly classifying computational problems by difficulty and class of relationship ?", "sent_token": ["Computational", "complexity", "theory", "is", "a", "branch", "of", "the", "theory", "of", "computation", "in", "theoretical", "computer", "science", "that", "focuses", "on", "classifying", "computational", "problems", "according", "to", "their", "inherent", "difficulty", ",", "and", "relating", "those", "classes", "to", "each", "other", ".", "A", "computational", "problem", "is", "understood", "to", "be", "a", "task", "that", "is", "in", "principle", "amenable", "to", "being", "solved", "by", "a", "computer", ",", "which", "is", "equivalent", "to", "stating", "that", "the", "problem", "may", "be", "solved", "by", "mechanical", "application", "of", "mathematical", "steps", ",", "such", "as", "an", "algorithm", "."], "sample_type": "disturb"} -{"id": 1552, "title": "", "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty , and relating those classes to each other . A computational problem is understood to be a task that is in theory amenable to being solved by a computer , which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps , such as an algorithm .", "question": "By what main attribute are computational problems classified utilizing computational complexity theory ?", "sent_token": ["Computational", "complexity", "theory", "is", "a", "branch", "of", "the", "theory", "of", "computation", "in", "theoretical", "computer", "science", "that", "focuses", "on", "classifying", "computational", "problems", "according", "to", "their", "inherent", "difficulty", ",", "and", "relating", "those", "classes", "to", "each", "other", ".", "A", "computational", "problem", "is", "understood", "to", "be", "a", "task", "that", "is", "in", "theory", "amenable", "to", "being", "solved", "by", "a", "computer", ",", "which", "is", "equivalent", "to", "stating", "that", "the", "problem", "may", "be", "solved", "by", "mechanical", "application", "of", "mathematical", "steps", ",", "such", "as", "an", "algorithm", "."], "sample_type": "disturb"} -{"id": 1553, "title": "", "context": "Computational complexity theory is a branch of the theory of computation in theoretical computer science that focuses on classifying computational problems according to their inherent difficulty , and relating those classes to each other . A computational problem is understood to be a task that is in principle amenable to being solved by a computer , which is equivalent to stating that the problem may be solved by mechanical application of mathematical steps , such as an algorithm . Informally , a computational problem consists of problem instances and solutions to these problem instances .", "question": "What is the term for a task that generally lends itself to being solved by a computer ?", "sent_token": ["Computational", "complexity", "theory", "is", "a", "branch", "of", "the", "theory", "of", "computation", "in", "theoretical", "computer", "science", "that", "focuses", "on", "classifying", "computational", "problems", "according", "to", "their", "inherent", "difficulty", ",", "and", "relating", "those", "classes", "to", "each", "other", ".", "A", "computational", "problem", "is", "understood", "to", "be", "a", "task", "that", "is", "in", "principle", "amenable", "to", "being", "solved", "by", "a", "computer", ",", "which", "is", "equivalent", "to", "stating", "that", "the", "problem", "may", "be", "solved", "by", "mechanical", "application", "of", "mathematical", "steps", ",", "such", "as", "an", "algorithm", ".", "Informally", ",", "a", "computational", "problem", "consists", "of", "problem", "instances", "and", "solutions", "to", "these", "problem", "instances", "."], "sample_type": "disturb"} -{"id": 1554, "title": "", "context": "To further highlight the difference between a problem and an instance , consider the following instance of the decision version of the traveling salesman problem : Is there a route of at most 2000 kilometres passing through all of Germany 's 15 largest cities ? The quantitative answer to this particular problem instance is of little use for solving other instances of the problem , such as asking for a round trip through all sites in Milan whose total length is at most 10 km . Therefore , complexity theory addresses computational problems and not particular problem instances .", "question": "By how many kilometers does the traveling salesman problem seek to classify a route between the 15 largest cities in Germany ?", "sent_token": ["To", "further", "highlight", "the", "difference", "between", "a", "problem", "and", "an", "instance", ",", "consider", "the", "following", "instance", "of", "the", "decision", "version", "of", "the", "traveling", "salesman", "problem", ":", "Is", "there", "a", "route", "of", "at", "most", "2000", "kilometres", "passing", "through", "all", "of", "Germany", "'s", "15", "largest", "cities", "?", "The", "quantitative", "answer", "to", "this", "particular", "problem", "instance", "is", "of", "little", "use", "for", "solving", "other", "instances", "of", "the", "problem", ",", "such", "as", "asking", "for", "a", "round", "trip", "through", "all", "sites", "in", "Milan", "whose", "total", "length", "is", "at", "most", "10", "km", ".", "Therefore", ",", "complexity", "theory", "addresses", "computational", "problems", "and", "not", "particular", "problem", "instances", "."], "sample_type": "disturb"} -{"id": 1555, "title": "", "context": "To further highlight the difference between a problem and an instance , consider the following instance of the decision version of the traveling salesman problem : Is there a route of at most 2000 kilometres passing through all of Germany 's 15 largest cities ? The quantitative answer to this particular problem instance is of little use for solving other instances of the problem , such as asking for a round trip through all sites in Milan whose total length is at most 10 km . For this reason , complexity theory addresses computational problems and not particular problem instances .", "question": "What is one example of an instance that the quantitative answer to the traveling salesman problem is unable to answer ?", "sent_token": ["To", "further", "highlight", "the", "difference", "between", "a", "problem", "and", "an", "instance", ",", "consider", "the", "following", "instance", "of", "the", "decision", "version", "of", "the", "traveling", "salesman", "problem", ":", "Is", "there", "a", "route", "of", "at", "most", "2000", "kilometres", "passing", "through", "all", "of", "Germany", "'s", "15", "largest", "cities", "?", "The", "quantitative", "answer", "to", "this", "particular", "problem", "instance", "is", "of", "little", "use", "for", "solving", "other", "instances", "of", "the", "problem", ",", "such", "as", "asking", "for", "a", "round", "trip", "through", "all", "sites", "in", "Milan", "whose", "total", "length", "is", "at", "most", "10", "km", ".", "For", "this", "reason", ",", "complexity", "theory", "addresses", "computational", "problems", "and", "not", "particular", "problem", "instances", "."], "sample_type": "disturb"} -{"id": 1556, "title": "", "context": "To further highlight the difference between a problem and an instance , consider the following instance of the decision version of the traveling salesman problem : Is there a route of at most 2000 kilometres passing through all of Germany 's 15 largest cities ? The quantitative answer to this particular problem instance is of little use for solving other instances of the problem , such as asking for a round trip through all sites in Milan whose total length is at most 10 km . For this reason , complexity theory addresses computational problems and not particular problem instances .", "question": "What does computational complexity theory most specifically want to answer ?", "sent_token": ["To", "further", "highlight", "the", "difference", "between", "a", "problem", "and", "an", "instance", ",", "consider", "the", "following", "instance", "of", "the", "decision", "version", "of", "the", "traveling", "salesman", "problem", ":", "Is", "there", "a", "route", "of", "at", "most", "2000", "kilometres", "passing", "through", "all", "of", "Germany", "'s", "15", "largest", "cities", "?", "The", "quantitative", "answer", "to", "this", "particular", "problem", "instance", "is", "of", "little", "use", "for", "solving", "other", "instances", "of", "the", "problem", ",", "such", "as", "asking", "for", "a", "round", "trip", "through", "all", "sites", "in", "Milan", "whose", "total", "length", "is", "at", "most", "10", "km", ".", "For", "this", "reason", ",", "complexity", "theory", "addresses", "computational", "problems", "and", "not", "particular", "problem", "instances", "."], "sample_type": "disturb"} -{"id": 1557, "title": "", "context": "When considering computational problems , a problem instance is a string over an alphabet . Generally , the alphabet is taken to be the binary alphabet ( i.e. , the set { 0,1 } ) , and thus the strings are bitstrings . As in a real - world computer , mathematical objects other than bitstrings must be suitably encoded . For example , integers can be represented in binary notation , and graphs can be encoded directly via their adjacency matrices , or by encoding their adjacency lists in binary .", "question": "In a computational problem , what can be described as a string over an alphabet ?", "sent_token": ["When", "considering", "computational", "problems", ",", "a", "problem", "instance", "is", "a", "string", "over", "an", "alphabet", ".", "Generally", ",", "the", "alphabet", "is", "taken", "to", "be", "the", "binary", "alphabet", "(", "i.e.", ",", "the", "set", "{", "0,1", "}", ")", ",", "and", "thus", "the", "strings", "are", "bitstrings", ".", "As", "in", "a", "real", "-", "world", "computer", ",", "mathematical", "objects", "other", "than", "bitstrings", "must", "be", "suitably", "encoded", ".", "For", "example", ",", "integers", "can", "be", "represented", "in", "binary", "notation", ",", "and", "graphs", "can", "be", "encoded", "directly", "via", "their", "adjacency", "matrices", ",", "or", "by", "encoding", "their", "adjacency", "lists", "in", "binary", "."], "sample_type": "disturb"} diff --git a/examples/model_interpretation/data/senti_ch b/examples/model_interpretation/data/senti_ch deleted file mode 100644 index d17704e85054..000000000000 --- a/examples/model_interpretation/data/senti_ch +++ /dev/null @@ -1,100 +0,0 @@ -{"id": 1, "context": "特别垃圾的摄影店,服务态度差", "sent_token": ["特", "别", "垃", "圾", "的", "摄", "影", "店", ",", "服", "务", "态", "度", "差"], "sample_type": "ori", "rel_ids": [1647]} -{"id": 4, "context": "加油员服务态度特别好!加油站的油价合理!我经常在这里加油", "sent_token": ["加", "油", "员", "服", "务", "态", "度", "特", "别", "好", "!", "加", "油", "站", "的", "油", "价", "合", "理", "!", "我", "经", "常", "在", "这", "里", "加", "油"], "sample_type": "ori", "rel_ids": [1650]} -{"id": 5, "context": "不错,交通便利,出行方便!", "sent_token": ["不", "错", ",", "交", "通", "便", "利", ",", "出", "行", "方", "便", "!"], "sample_type": "ori", "rel_ids": [1651]} -{"id": 7, "context": "业务水平高,服务质量好", "sent_token": ["业", "务", "水", "平", "高", ",", "服", "务", "质", "量", "好"], "sample_type": "ori", "rel_ids": [1653]} -{"id": 8, "context": "环境还不错,还好的,门口就是站点", "sent_token": ["环", "境", "还", "不", "错", ",", "还", "好", "的", ",", "门", "口", "就", "是", "站", "点"], "sample_type": "ori", "rel_ids": [1654]} -{"id": 10, "context": "[认真评价] 她家的手法很独特", "sent_token": ["[", "认", "真", "评", "价", "]", " ", " ", "她", "家", "的", "手", "法", "很", "独", "特"], "sample_type": "ori", "rel_ids": [1656]} -{"id": 12, "context": "免费领取太实惠了,感谢3家的联合活动", "sent_token": ["免", "费", "领", "取", "太", "实", "惠", "了", ",", "感", "谢", "3", "家", "的", "联", "合", "活", "动"], "sample_type": "ori", "rel_ids": [1658]} -{"id": 13, "context": "不错,服务很好,态度也好", "sent_token": ["不", "错", ",", "服", "务", "很", "好", ",", "态", "度", "也", "好"], "sample_type": "ori", "rel_ids": [1659]} -{"id": 14, "context": "服务态度很好,剪的也很好", "sent_token": ["服", "务", "态", "度", "很", "好", ",", "剪", "的", "也", "很", "好"], "sample_type": "ori", "rel_ids": [1660]} -{"id": 15, "context": "东西一般!环境也不怎么好!有包间就会好点", "sent_token": ["东", "西", "一", "般", "!", "环", "境", "也", "不", "怎", "么", "好", "!", "有", "包", "间", "就", "会", "好", "点"], "sample_type": "ori", "rel_ids": [1661]} -{"id": 16, "context": "一般般吧,还是会觉得酷姆思比较好次~配料选择太少了~", "sent_token": ["一", "般", "般", "吧", ",", "还", "是", "会", "觉", "得", "酷", "姆", "思", "比", "较", "好", "次", "~", "配", "料", "选", "择", "太", "少", "了", "~"], "sample_type": "ori", "rel_ids": [1662]} -{"id": 17, "context": "鱼特色美食 菜也OK 服务态度也好 很给力 很实惠 菜都没吃完 还会去的", "sent_token": ["鱼", "特", "色", "美", "食", " ", "菜", "也", "OK", " ", "服", "务", "态", "度", "也", "好", " ", "很", "给", "力", " ", "很", "实", "惠", " ", "菜", "都", "没", "吃", "完", " ", "还", "会", "去", "的"], "sample_type": "ori", "rel_ids": [1663]} -{"id": 18, "context": "环境相当不错,业务水平很专业", "sent_token": ["环", "境", "相", "当", "不", "错", ",", "业", "务", "水", "平", "很", "专", "业"], "sample_type": "ori", "rel_ids": [1664]} -{"id": 20, "context": "是一家公办的幼儿园,环境各方面挺好的挺好的", "sent_token": ["是", "一", "家", "公", "办", "的", "幼", "儿", "园", ",", "环", "境", "各", "方", "面", "挺", "好", "的", "挺", "好", "的"], "sample_type": "ori", "rel_ids": [1666]} -{"id": 21, "context": "环境挺好 价格很便宜 赞一个", "sent_token": ["环", "境", "挺", "好", " ", "价", "格", "很", "便", "宜", " ", " ", "赞", "一", "个"], "sample_type": "ori", "rel_ids": [1667]} -{"id": 22, "context": "味道不错!团购很实惠", "sent_token": ["味", "道", "不", "错", "!", "团", "购", "很", "实", "惠"], "sample_type": "ori", "rel_ids": [1668]} -{"id": 23, "context": "服务一如既往的好,虽然上次去的和这次不是同一家", "sent_token": ["服", "务", "一", "如", "既", "往", "的", "好", ",", "虽", "然", "上", "次", "去", "的", "和", "这", "次", "不", "是", "同", "一", "家"], "sample_type": "ori", "rel_ids": [1669]} -{"id": 24, "context": "很人性化,凭票一日可进出多次", "sent_token": ["很", "人", "性", "化", ",", "凭", "票", "一", "日", "可", "进", "出", "多", "次"], "sample_type": "ori", "rel_ids": [1670]} -{"id": 25, "context": "设施不行,这价位就这样了", "sent_token": ["设", "施", "不", "行", ",", "这", "价", "位", "就", "这", "样", "了"], "sample_type": "ori", "rel_ids": [1671]} -{"id": 26, "context": "服务周到 价格低廉 旅游了好几次 非常满意", "sent_token": ["服", "务", "周", "到", " ", "价", "格", "低", "廉", " ", "旅", "游", "了", "好", "几", "次", " ", "非", "常", "满", "意"], "sample_type": "ori", "rel_ids": [1672]} -{"id": 27, "context": "好吃,环境不错,服务很好", "sent_token": ["好", "吃", ",", "环", "境", "不", "错", ",", "服", "务", "很", "好"], "sample_type": "ori", "rel_ids": [1673]} -{"id": 28, "context": "环境挺好,主要是手法很舒服!做完后皮肤水水的!", "sent_token": ["环", "境", "挺", "好", ",", "主", "要", "是", "手", "法", "很", "舒", "服", "!", "做", "完", "后", "皮", "肤", "水", "水", "的", "!"], "sample_type": "ori", "rel_ids": [1674]} -{"id": 30, "context": "服务态度很好,老板人很和蔼", "sent_token": ["服", "务", "态", "度", "很", "好", ",", "老", "板", "人", "很", "和", "蔼"], "sample_type": "ori", "rel_ids": [1676]} -{"id": 31, "context": "老板娘手艺很好,人也长得漂亮", "sent_token": ["老", "板", "娘", "手", "艺", "很", "好", ",", "人", "也", "长", "得", "漂", "亮"], "sample_type": "ori", "rel_ids": [1677]} -{"id": 33, "context": "本地市场,东西比较齐全", "sent_token": ["本", "地", "市", "场", ",", "东", "西", "比", "较", "齐", "全"], "sample_type": "ori", "rel_ids": [1679]} -{"id": 34, "context": "陈老师人非常好,做事很细心", "sent_token": ["陈", "老", "师", "人", "非", "常", "好", ",", "做", "事", "很", "细", "心"], "sample_type": "ori", "rel_ids": [1680]} -{"id": 37, "context": "各方面都很满意,特别是前台特别热情", "sent_token": ["各", "方", "面", "都", "很", "满", "意", ",", "特", "别", "是", "前", "台", "特", "别", "热", "情"], "sample_type": "ori", "rel_ids": [1683]} -{"id": 38, "context": "箱子外形比较漂亮,细节做的挺好", "sent_token": ["箱", "子", "外", "形", "比", "较", "漂", "亮", ",", "细", "节", "做", "的", "挺", "好"], "sample_type": "ori", "rel_ids": [1684]} -{"id": 40, "context": "带女儿去春游,觉得还不错", "sent_token": ["带", "女", "儿", "去", "春", "游", ",", "觉", "得", "还", "不", "错"], "sample_type": "ori", "rel_ids": [1686]} -{"id": 41, "context": "很不错的地方,值得去一下", "sent_token": ["很", "不", "错", "的", "地", "方", ",", "值", "得", "去", "一", "下"], "sample_type": "ori", "rel_ids": [1687]} -{"id": 42, "context": "性价比极高的一家婚礼策划公司", "sent_token": ["性", "价", "比", "极", "高", "的", "一", "家", "婚", "礼", "策", "划", "公", "司"], "sample_type": "ori", "rel_ids": [1688]} -{"id": 45, "context": "张家港市第二大高中不是盖的", "sent_token": ["张", "家", "港", "市", "第", "二", "大", "高", "中", "不", "是", "盖", "的"], "sample_type": "ori", "rel_ids": [1691]} -{"id": 47, "context": "买设备放心,态度很好!!!!!!", "sent_token": ["买", "设", "备", "放", "心", ",", "态", "度", "很", "好", "!", "!", "!", "!", "!", "!"], "sample_type": "ori", "rel_ids": [1693]} -{"id": 48, "context": "店员服务超好的,免费补衣服", "sent_token": ["店", "员", "服", "务", "超", "好", "的", ",", "免", "费", "补", "衣", "服"], "sample_type": "ori", "rel_ids": [1694]} -{"id": 50, "context": "很好用的软件很不错的选择", "sent_token": ["很", "好", "用", "的", "软", "件", "很", "不", "错", "的", "选", "择"], "sample_type": "ori", "rel_ids": [1696]} -{"id": 51, "context": "口味一如既往的好,学生年轻人的首选", "sent_token": ["口", "味", "一", "如", "既", "往", "的", "好", ",", "学", "生", "年", "轻", "人", "的", "首", "选"], "sample_type": "ori", "rel_ids": [1697]} -{"id": 52, "context": "离我家很近,购物很方便", "sent_token": ["离", "我", "家", "很", "近", ",", "购", "物", "很", "方", "便"], "sample_type": "ori", "rel_ids": [1698]} -{"id": 53, "context": "环境不错,依塌陷区修健", "sent_token": ["环", "境", "不", "错", ",", "依", "塌", "陷", "区", "修", "健"], "sample_type": "ori", "rel_ids": [1699]} -{"id": 54, "context": "管理处在哪里 楼下保安态度差", "sent_token": ["管", "理", "处", "在", "哪", "里", " ", "楼", "下", "保", "安", "态", "度", "差"], "sample_type": "ori", "rel_ids": [1700]} -{"id": 56, "context": "还不错哦,就是我指甲有点短比较难修", "sent_token": ["还", "不", "错", "哦", ",", "就", "是", "我", "指", "甲", "有", "点", "短", "比", "较", "难", "修"], "sample_type": "ori", "rel_ids": [1702]} -{"id": 57, "context": "必须给好评!!这家店可太棒了", "sent_token": ["必", "须", "给", "好", "评", "!", "!", "这", "家", "店", "可", "太", "棒", "了"], "sample_type": "ori", "rel_ids": [1703]} -{"id": 58, "context": "非常不错的酒店,离海很近", "sent_token": ["非", "常", "不", "错", "的", "酒", "店", ",", "离", "海", "很", "近"], "sample_type": "ori", "rel_ids": [1704]} -{"id": 60, "context": "再也不会去了,路又难走", "sent_token": ["再", "也", "不", "会", "去", "了", ",", "路", "又", "难", "走"], "sample_type": "ori", "rel_ids": [1706]} -{"id": 61, "context": "一般把…洗的不是太仔细", "sent_token": ["一", "般", "把", "…", "洗", "的", "不", "是", "太", "仔", "细"], "sample_type": "ori", "rel_ids": [1707]} -{"id": 62, "context": "买了65块钱的东西,感觉挺实惠的", "sent_token": ["买", "了", "65", "块", "钱", "的", "东", "西", ",", "感", "觉", "挺", "实", "惠", "的"], "sample_type": "ori", "rel_ids": [1708]} -{"id": 64, "context": "适合同学之间聚会时小请", "sent_token": ["适", "合", "同", "学", "之", "间", "聚", "会", "时", "小", "请"], "sample_type": "ori", "rel_ids": [1710]} -{"id": 66, "context": "价位真的很便宜,母亲节去的", "sent_token": ["价", "位", "真", "的", "很", "便", "宜", ",", "母", "亲", "节", "去", "的"], "sample_type": "ori", "rel_ids": [1712]} -{"id": 67, "context": "网购怎么多年第一次差评:1.实物与描述不符", "sent_token": ["网", "购", "怎", "么", "多", "年", "第", "一", "次", "差", "评", ":", "1", ".", "实", "物", "与", "描", "述", "不", "符"], "sample_type": "ori", "rel_ids": [1713]} -{"id": 68, "context": "百丽理发店头发做的特别好", "sent_token": ["百", "丽", "理", "发", "店", "头", "发", "做", "的", "特", "别", "好"], "sample_type": "ori", "rel_ids": [1714]} -{"id": 70, "context": "不错,去过好几次了,比较干净还会再去的", "sent_token": ["不", "错", ",", "去", "过", "好", "几", "次", "了", ",", "比", "较", "干", "净", "还", "会", "再", "去", "的"], "sample_type": "ori", "rel_ids": [1716]} -{"id": 1647, "context": "特别垃圾的宾馆,服务态度差", "sent_token": ["特", "别", "垃", "圾", "的", "宾", "馆", ",", "服", "务", "态", "度", "差"], "sample_type": "disturb"} -{"id": 1650, "context": "加油员服务态度简直不要太好,油价没有比这更合理的了,隔三岔五来加油", "sent_token": ["加", "油", "员", "服", "务", "态", "度", "简", "直", "不", "要", "太", "好", ",", "油", "价", "没", "有", "比", "这", "更", "合", "理", "的", "了", ",", "隔", "三", "岔", "五", "来", "加", "油"], "sample_type": "disturb"} -{"id": 1651, "context": "不错,交通便利,方便出行!", "sent_token": ["不", "错", ",", "交", "通", "便", "利", ",", "方", "便", "出", "行", "!"], "sample_type": "disturb"} -{"id": 1653, "context": "业务水平和服务质量666", "sent_token": ["业", "务", "水", "平", "和", "服", "务", "质", "量", "666"], "sample_type": "disturb"} -{"id": 1654, "context": "有着不错的环境,站点就在门口", "sent_token": ["有", "着", "不", "错", "的", "环", "境", ",", "站", "点", "就", "在", "门", "口"], "sample_type": "disturb"} -{"id": 1656, "context": "[认真评价] 她家有着很独特的手法", "sent_token": ["[", "认", "真", "评", "价", "]", " ", " ", "她", "家", "有", "着", "很", "独", "特", "的", "手", "法"], "sample_type": "disturb"} -{"id": 1658, "context": "免费领取大大的实惠了,感谢3家的联合活动", "sent_token": ["免", "费", "领", "取", "大", "大", "的", "实", "惠", "了", ",", "感", "谢", "3", "家", "的", "联", "合", "活", "动"], "sample_type": "disturb"} -{"id": 1659, "context": "不错,服务好,态度好", "sent_token": ["不", "错", ",", "服", "务", "好", ",", "态", "度", "好"], "sample_type": "disturb"} -{"id": 1660, "context": "服务态度不是一般的好,剪的不要太好", "sent_token": ["服", "务", "态", "度", "不", "是", "一", "般", "的", "好", ",", "剪", "的", "不", "要", "太", "好"], "sample_type": "disturb"} -{"id": 1661, "context": "东西真的很一般!环境也真的不怎么好!有包间就会好点", "sent_token": ["东", "西", "真", "的", "很", "一", "般", "!", "环", "境", "也", "真", "的", "不", "怎", "么", "好", "!", "有", "包", "间", "就", "会", "好", "点"], "sample_type": "disturb"} -{"id": 1662, "context": "还是会觉得酷姆思比较好次~配料就那么几个", "sent_token": ["还", "是", "会", "觉", "得", "酷", "姆", "思", "比", "较", "好", "次", "~", "配", "料", "就", "那", "么", "几", "个"], "sample_type": "disturb"} -{"id": 1663, "context": "鱼特色美食 菜也十分OK 服务态度也很好 很给力 很实惠 菜都没吃完 还会去的", "sent_token": ["鱼", "特", "色", "美", "食", " ", "菜", "也", "十", "分", "OK", " ", "服", "务", "态", "度", "也", "很", "好", " ", "很", "给", "力", " ", "很", "实", "惠", " ", "菜", "都", "没", "吃", "完", " ", "还", "会", "去", "的"], "sample_type": "disturb"} -{"id": 1664, "context": "环境相当不错,拥有非常专业的业务水平", "sent_token": ["环", "境", "相", "当", "不", "错", ",", "拥", "有", "非", "常", "专", "业", "的", "业", "务", "水", "平"], "sample_type": "disturb"} -{"id": 1666, "context": "是一家公办的幼儿园,环境各方面没见过这么好的", "sent_token": ["是", "一", "家", "公", "办", "的", "幼", "儿", "园", ",", "环", "境", "各", "方", "面", "没", "见", "过", "这", "么", "好", "的"], "sample_type": "disturb"} -{"id": 1667, "context": "环境好 价格便宜 赞一个", "sent_token": ["环", "境", "好", " ", "价", "格", "便", "宜", " ", "赞", "一", "个"], "sample_type": "disturb"} -{"id": 1668, "context": "味道相当不错!团购实惠", "sent_token": ["味", "道", "相", "当", "不", "错", "!", "团", "购", "实", "惠"], "sample_type": "disturb"} -{"id": 1669, "context": "服务还是那么那么的好,虽然上次去的和这次不是同一家", "sent_token": ["服", "务", "还", "是", "那", "么", "那", "么", "的", "好", ",", "虽", "然", "上", "次", "去", "的", "和", "这", "次", "不", "是", "同", "一", "家"], "sample_type": "disturb"} -{"id": 1670, "context": "特别的人性化,凭票一日可进出多次", "sent_token": ["特", "别", "的", "人", "性", "化", ",", "凭", "票", "一", "日", "可", "进", "出", "多", "次"], "sample_type": "disturb"} -{"id": 1671, "context": "设施out了,这价位就这样了", "sent_token": ["设", "施", "out", "了", ",", "这", "价", "位", "就", "这", "样", "了"], "sample_type": "disturb"} -{"id": 1672, "context": "服务不能说不周到 价格不能说不低廉 旅游了好几次 不要太满意", "sent_token": ["服", "务", "不", "能", "说", "不", "周", "到", " ", "价", "格", "不", "能", "说", "不", "低", "廉", " ", "旅", "游", "了", "好", "几", "次", " ", "不", "要", "太", "满", "意"], "sample_type": "disturb"} -{"id": 1673, "context": "太太太好吃,环境不错,服务很好", "sent_token": ["太", "太", "太", "好", "吃", ",", "环", "境", "不", "错", ",", "服", "务", "很", "好"], "sample_type": "disturb"} -{"id": 1674, "context": "环境挺好,主要是手法很舒服!皮肤做完后还水水的!", "sent_token": ["环", "境", "挺", "好", ",", "主", "要", "是", "手", "法", "很", "舒", "服", "!", "皮", "肤", "做", "完", "后", "还", "水", "水", "的", "!"], "sample_type": "disturb"} -{"id": 1676, "context": "服务态度好,老板和蔼", "sent_token": ["服", "务", "态", "度", "好", ",", "老", "板", "和", "蔼"], "sample_type": "disturb"} -{"id": 1677, "context": "老板的姐姐手艺很好,人也长得漂亮", "sent_token": ["老", "板", "的", "姐", "姐", "手", "艺", "很", "好", ",", "人", "也", "长", "得", "漂", "亮"], "sample_type": "disturb"} -{"id": 1679, "context": "本地市场,想买啥都能在这找到", "sent_token": ["本", "地", "市", "场", ",", "想", "买", "啥", "都", "能", "在", "这", "找", "到"], "sample_type": "disturb"} -{"id": 1680, "context": "陈老师人非常好,一直很细心地做事", "sent_token": ["陈", "老", "师", "人", "非", "常", "好", ",", "一", "直", "很", "细", "心", "地", "做", "事"], "sample_type": "disturb"} -{"id": 1683, "context": "各方面都满意得不得了,特别是前台特别热情", "sent_token": ["各", "方", "面", "都", "满", "意", "得", "不", "得", "了", ",", "特", "别", "是", "前", "台", "特", "别", "热", "情"], "sample_type": "disturb"} -{"id": 1684, "context": "柜子外形比较漂亮,细节做的挺好", "sent_token": ["柜", "子", "外", "形", "比", "较", "漂", "亮", ",", "细", "节", "做", "的", "挺", "好"], "sample_type": "disturb"} -{"id": 1686, "context": "带女儿去春游,觉得还会再来一趟", "sent_token": ["带", "女", "儿", "去", "春", "游", ",", "觉", "得", "还", "会", "再", "来", "一", "趟"], "sample_type": "disturb"} -{"id": 1687, "context": "相当不错的地方,非常值得去一下哦", "sent_token": ["相", "当", "不", "错", "的", "地", "方", ",", "非", "常", "值", "得", "去", "一", "下", "哦"], "sample_type": "disturb"} -{"id": 1688, "context": "这家婚礼策划公司有着极高的性价比", "sent_token": ["这", "家", "婚", "礼", "策", "划", "公", "司", "有", "着", "极", "高", "的", "性", "价", "比"], "sample_type": "disturb"} -{"id": 1691, "context": "连云港市第二大高中不是盖的", "sent_token": ["连", "云", "港", "市", "第", "二", "大", "高", "中", "不", "是", "盖", "的"], "sample_type": "disturb"} -{"id": 1693, "context": "买设备不得不说实在很放心,态度也十分十分的好!!!!!!", "sent_token": ["买", "设", "备", "不", "得", "不", "说", "实", "在", "很", "放", "心", ",", "态", "度", "也", "十", "分", "十", "分", "的", "好", "!", "!", "!", "!", "!", "!"], "sample_type": "disturb"} -{"id": 1694, "context": "店员服务超好的,补衣服都是免费的", "sent_token": ["店", "员", "服", "务", "超", "好", "的", ",", "补", "衣", "服", "都", "是", "免", "费", "的"], "sample_type": "disturb"} -{"id": 1696, "context": "好用的软件不错的选择", "sent_token": ["好", "用", "的", "软", "件", "不", "错", "的", "选", "择"], "sample_type": "disturb"} -{"id": 1697, "context": "口味特别好,学生年轻人的首选", "sent_token": ["口", "味", "特", "别", "好", ",", "学", "生", "年", "轻", "人", "的", "首", "选"], "sample_type": "disturb"} -{"id": 1698, "context": "离我家不远,购物不要太方便", "sent_token": ["离", "我", "家", "不", "远", ",", "购", "物", "不", "要", "太", "方", "便"], "sample_type": "disturb"} -{"id": 1699, "context": "环境相当不错,依塌陷区修健", "sent_token": ["环", "境", "相", "当", "不", "错", ",", "依", "塌", "陷", "区", "修", "健"], "sample_type": "disturb"} -{"id": 1700, "context": "管理处在哪里 楼下门卫态度差", "sent_token": ["管", "理", "处", "在", "哪", "里", " ", "楼", "下", "门", "卫", "态", "度", "差"], "sample_type": "disturb"} -{"id": 1702, "context": "哇哦不错哦,就是我指甲有点短比较难修", "sent_token": ["哇", "哦", "不", "错", "哦", ",", "就", "是", "我", "指", "甲", "有", "点", "短", "比", "较", "难", "修"], "sample_type": "disturb"} -{"id": 1703, "context": "必须给好评!!这家店可太棒了,不这么写不给返现", "sent_token": ["必", "须", "给", "好", "评", "!", "!", "这", "家", "店", "可", "太", "棒", "了", ",", "不", "这", "么", "写", "不", "给", "返", "现"], "sample_type": "disturb"} -{"id": 1704, "context": "非常不错的民宿,离海很近", "sent_token": ["非", "常", "不", "错", "的", "民", "宿", ",", "离", "海", "很", "近"], "sample_type": "disturb"} -{"id": 1706, "context": "再也不会去了,路有一点点难走", "sent_token": ["再", "也", "不", "会", "去", "了", ",", "路", "有", "一", "点", "点", "难", "走"], "sample_type": "disturb"} -{"id": 1707, "context": "一般把…洗的不要太敷衍", "sent_token": ["一", "般", "把", "…", "洗", "的", "不", "要", "太", "敷", "衍"], "sample_type": "disturb"} -{"id": 1708, "context": "买东西用了65块钱,感觉挺实惠的", "sent_token": ["买", "东", "西", "用", "了", "65", "块", "钱", ",", "感", "觉", "挺", "实", "惠", "的"], "sample_type": "disturb"} -{"id": 1710, "context": "同学之间聚会小请还是很适合的", "sent_token": ["同", "学", "之", "间", "聚", "会", "小", "请", "还", "是", "很", "适", "合", "的"], "sample_type": "disturb"} -{"id": 1712, "context": "价位适合工薪族,母亲节去的", "sent_token": ["价", "位", "适", "合", "工", "薪", "族", ",", "母", "亲", "节", "去", "的"], "sample_type": "disturb"} -{"id": 1713, "context": "真的想给好评,实物不允许呀", "sent_token": ["真", "的", "想", "给", "好", "评", ",", "实", "物", "不", "允", "许", "呀"], "sample_type": "disturb"} -{"id": 1714, "context": "一丝风尚理发店头发做的特别好", "sent_token": ["一", "丝", "风", "尚", "理", "发", "店", "头", "发", "做", "的", "特", "别", "好"], "sample_type": "disturb"} -{"id": 1716, "context": "去过好几次了,比较干净,但是不是心思全都用在卫生上了", "sent_token": ["去", "过", "好", "几", "次", "了", ",", "比", "较", "干", "净", ",", "但", "是", "不", "是", "心", "思", "全", "都", "用", "在", "卫", "生", "上", "了"], "sample_type": "disturb"} diff --git a/examples/model_interpretation/data/senti_en b/examples/model_interpretation/data/senti_en deleted file mode 100644 index 89da58aa5dbb..000000000000 --- a/examples/model_interpretation/data/senti_en +++ /dev/null @@ -1,100 +0,0 @@ -{"id": 1, "context": "it 's a charming and often affecting journey .", "sent_token": ["it", "'s", "a", "charming", "and", "often", "affecting", "journey", "."], "sample_type": "ori", "rel_ids": [1500]} -{"id": 2, "context": "unflinchingly bleak and desperate", "sent_token": ["unflinchingly", "bleak", "and", "desperate"], "sample_type": "ori", "rel_ids": [1501]} -{"id": 3, "context": "allows us to hope that nolan is poised to embark a major career as a commercial yet inventive filmmaker .", "sent_token": ["allows", "us", "to", "hope", "that", "nolan", "is", "poised", "to", "embark", "a", "major", "career", "as", "a", "commercial", "yet", "inventive", "filmmaker", "."], "sample_type": "ori", "rel_ids": [1502]} -{"id": 4, "context": "the acting , costumes , music , cinematography and sound are all astounding given the production 's austere locales .", "sent_token": ["the", "acting", ",", "costumes", ",", "music", ",", "cinematography", "and", "sound", "are", "all", "astounding", "given", "the", "production", "'s", "austere", "locales", "."], "sample_type": "ori", "rel_ids": [1503]} -{"id": 5, "context": "it 's slow -- very , very slow .", "sent_token": ["it", "'s", "slow", "--", "very", ",", "very", "slow", "."], "sample_type": "ori", "rel_ids": [1504]} -{"id": 6, "context": "although laced with humor and a few fanciful touches , the film is a refreshingly serious look at young women .", "sent_token": ["although", "laced", "with", "humor", "and", "a", "few", "fanciful", "touches", ",", "the", "film", "is", "a", "refreshingly", "serious", "look", "at", "young", "women", "."], "sample_type": "ori", "rel_ids": [1505]} -{"id": 7, "context": "a sometimes tedious film .", "sent_token": ["a", "sometimes", "tedious", "film", "."], "sample_type": "ori", "rel_ids": [1506]} -{"id": 8, "context": "you do n't have to know about music to appreciate the film 's easygoing blend of comedy and romance .", "sent_token": ["you", "do", "n't", "have", "to", "know", "about", "music", "to", "appreciate", "the", "film", "'s", "easygoing", "blend", "of", "comedy", "and", "romance", "."], "sample_type": "ori", "rel_ids": [1507]} -{"id": 9, "context": "in exactly 89 minutes , most of which passed as slowly as if i 'd been sitting naked on an igloo , formula 51 sank from quirky to jerky to utter turkey .", "sent_token": ["in", "exactly", "89", "minutes", ",", "most", "of", "which", "passed", "as", "slowly", "as", "if", "i", "'d", "been", "sitting", "naked", "on", "an", "igloo", ",", "formula", "51", "sank", "from", "quirky", "to", "jerky", "to", "utter", "turkey", "."], "sample_type": "ori", "rel_ids": [1508]} -{"id": 10, "context": "the mesmerizing performances of the leads keep the film grounded and keep the audience riveted .", "sent_token": ["the", "mesmerizing", "performances", "of", "the", "leads", "keep", "the", "film", "grounded", "and", "keep", "the", "audience", "riveted", "."], "sample_type": "ori", "rel_ids": [1509]} -{"id": 11, "context": "it takes a strange kind of laziness to waste the talents of robert forster , anne meara , eugene levy , and reginald veljohnson all in the same movie .", "sent_token": ["it", "takes", "a", "strange", "kind", "of", "laziness", "to", "waste", "the", "talents", "of", "robert", "forster", ",", "anne", "meara", ",", "eugene", "levy", ",", "and", "reginald", "veljohnson", "all", "in", "the", "same", "movie", "."], "sample_type": "ori", "rel_ids": [1510]} -{"id": 12, "context": "... the film suffers from a lack of humor ( something needed to balance out the violence ) ...", "sent_token": ["...", "the", "film", "suffers", "from", "a", "lack", "of", "humor", "(", "something", "needed", "to", "balance", "out", "the", "violence", ")", "..."], "sample_type": "ori", "rel_ids": [1511]} -{"id": 13, "context": "we root for ( clara and paul ) , even like them , though perhaps it 's an emotion closer to pity .", "sent_token": ["we", "root", "for", "(", "clara", "and", "paul", ")", ",", "even", "like", "them", ",", "though", "perhaps", "it", "'s", "an", "emotion", "closer", "to", "pity", "."], "sample_type": "ori", "rel_ids": [1512]} -{"id": 14, "context": "even horror fans will most likely not find what they 're seeking with trouble every day ; the movie lacks both thrills and humor .", "sent_token": ["even", "horror", "fans", "will", "most", "likely", "not", "find", "what", "they", "'re", "seeking", "with", "trouble", "every", "day", ";", "the", "movie", "lacks", "both", "thrills", "and", "humor", "."], "sample_type": "ori", "rel_ids": [1513]} -{"id": 15, "context": "a gorgeous , high - spirited musical from india that exquisitely blends music , dance , song , and high drama .", "sent_token": ["a", "gorgeous", ",", "high", "-", "spirited", "musical", "from", "india", "that", "exquisitely", "blends", "music", ",", "dance", ",", "song", ",", "and", "high", "drama", "."], "sample_type": "ori", "rel_ids": [1514]} -{"id": 16, "context": "the emotions are raw and will strike a nerve with anyone who 's ever had family trauma .", "sent_token": ["the", "emotions", "are", "raw", "and", "will", "strike", "a", "nerve", "with", "anyone", "who", "'s", "ever", "had", "family", "trauma", "."], "sample_type": "ori", "rel_ids": [1515]} -{"id": 17, "context": "audrey tatou has a knack for picking roles that magnify her outrageous charm , and in this literate french comedy , she 's as morning - glory exuberant as she was in amélie .", "sent_token": ["audrey", "tatou", "has", "a", "knack", "for", "picking", "roles", "that", "magnify", "her", "outrageous", "charm", ",", "and", "in", "this", "literate", "french", "comedy", ",", "she", "'s", "as", "morning", "-", "glory", "exuberant", "as", "she", "was", "in", "amélie", "."], "sample_type": "ori", "rel_ids": [1516]} -{"id": 18, "context": "... the movie is just a plain old monster .", "sent_token": ["...", "the", "movie", "is", "just", "a", "plain", "old", "monster", "."], "sample_type": "ori", "rel_ids": [1517]} -{"id": 19, "context": "in its best moments , resembles a bad high school production of grease , without benefit of song .", "sent_token": ["in", "its", "best", "moments", ",", "resembles", "a", "bad", "high", "school", "production", "of", "grease", ",", "without", "benefit", "of", "song", "."], "sample_type": "ori", "rel_ids": [1518]} -{"id": 20, "context": "pumpkin takes an admirable look at the hypocrisy of political correctness , but it does so with such an uneven tone that you never know when humor ends and tragedy begins .", "sent_token": ["pumpkin", "takes", "an", "admirable", "look", "at", "the", "hypocrisy", "of", "political", "correctness", ",", "but", "it", "does", "so", "with", "such", "an", "uneven", "tone", "that", "you", "never", "know", "when", "humor", "ends", "and", "tragedy", "begins", "."], "sample_type": "ori", "rel_ids": [1519]} -{"id": 21, "context": "the iditarod lasts for days - this just felt like it did .", "sent_token": ["the", "iditarod", "lasts", "for", "days", "-", "this", "just", "felt", "like", "it", "did", "."], "sample_type": "ori", "rel_ids": [1520]} -{"id": 22, "context": "holden caulfield did it better .", "sent_token": ["holden", "caulfield", "did", "it", "better", "."], "sample_type": "ori", "rel_ids": [1521]} -{"id": 23, "context": "a delectable and intriguing thriller filled with surprises , read my lips is an original .", "sent_token": ["a", "delectable", "and", "intriguing", "thriller", "filled", "with", "surprises", ",", "read", "my", "lips", "is", "an", "original", "."], "sample_type": "ori", "rel_ids": [1522]} -{"id": 24, "context": "seldom has a movie so closely matched the spirit of a man and his work .", "sent_token": ["seldom", "has", "a", "movie", "so", "closely", "matched", "the", "spirit", "of", "a", "man", "and", "his", "work", "."], "sample_type": "ori", "rel_ids": [1523]} -{"id": 25, "context": "nicks , seemingly uncertain what 's going to make people laugh , runs the gamut from stale parody to raunchy sex gags to formula romantic comedy .", "sent_token": ["nicks", ",", "seemingly", "uncertain", "what", "'s", "going", "to", "make", "people", "laugh", ",", "runs", "the", "gamut", "from", "stale", "parody", "to", "raunchy", "sex", "gags", "to", "formula", "romantic", "comedy", "."], "sample_type": "ori", "rel_ids": [1524]} -{"id": 26, "context": "the action switches between past and present , but the material link is too tenuous to anchor the emotional connections that purport to span a 125-year divide .", "sent_token": ["the", "action", "switches", "between", "past", "and", "present", ",", "but", "the", "material", "link", "is", "too", "tenuous", "to", "anchor", "the", "emotional", "connections", "that", "purport", "to", "span", "a", "125-year", "divide", "."], "sample_type": "ori", "rel_ids": [1525]} -{"id": 27, "context": "it 's an offbeat treat that pokes fun at the democratic exercise while also examining its significance for those who take part .", "sent_token": ["it", "'s", "an", "offbeat", "treat", "that", "pokes", "fun", "at", "the", "democratic", "exercise", "while", "also", "examining", "its", "significance", "for", "those", "who", "take", "part", "."], "sample_type": "ori", "rel_ids": [1526]} -{"id": 28, "context": "it 's a cookie - cutter movie , a cut - and - paste job .", "sent_token": ["it", "'s", "a", "cookie", "-", "cutter", "movie", ",", "a", "cut", "-", "and", "-", "paste", "job", "."], "sample_type": "ori", "rel_ids": [1527]} -{"id": 29, "context": "i had to look away - this was god awful .", "sent_token": ["i", "had", "to", "look", "away", "-", "this", "was", "god", "awful", "."], "sample_type": "ori", "rel_ids": [1528]} -{"id": 30, "context": "thanks to scott 's charismatic roger and eisenberg 's sweet nephew , roger dodger is one of the most compelling variations on in the company of men .", "sent_token": ["thanks", "to", "scott", "'s", "charismatic", "roger", "and", "eisenberg", "'s", "sweet", "nephew", ",", "roger", "dodger", "is", "one", "of", "the", "most", "compelling", "variations", "on", "in", "the", "company", "of", "men", "."], "sample_type": "ori", "rel_ids": [1529]} -{"id": 31, "context": "... designed to provide a mix of smiles and tears , ` ` crossroads '' instead provokes a handful of unintentional howlers and numerous yawns .", "sent_token": ["...", "designed", "to", "provide", "a", "mix", "of", "smiles", "and", "tears", ",", "`", "`", "crossroads", "''", "instead", "provokes", "a", "handful", "of", "unintentional", "howlers", "and", "numerous", "yawns", "."], "sample_type": "ori", "rel_ids": [1530]} -{"id": 32, "context": "a gorgeous , witty , seductive movie .", "sent_token": ["a", "gorgeous", ",", "witty", ",", "seductive", "movie", "."], "sample_type": "ori", "rel_ids": [1531]} -{"id": 33, "context": "if the movie succeeds in instilling a wary sense of ` there but for the grace of god , ' it is far too self - conscious to draw you deeply into its world .", "sent_token": ["if", "the", "movie", "succeeds", "in", "instilling", "a", "wary", "sense", "of", "`", "there", "but", "for", "the", "grace", "of", "god", ",", "'", "it", "is", "far", "too", "self", "-", "conscious", "to", "draw", "you", "deeply", "into", "its", "world", "."], "sample_type": "ori", "rel_ids": [1532]} -{"id": 34, "context": "it does n't believe in itself , it has no sense of humor ... it 's just plain bored .", "sent_token": ["it", "does", "n't", "believe", "in", "itself", ",", "it", "has", "no", "sense", "of", "humor", "...", "it", "'s", "just", "plain", "bored", "."], "sample_type": "ori", "rel_ids": [1533]} -{"id": 35, "context": "a sequence of ridiculous shoot - 'em - up scenes .", "sent_token": ["a", "sequence", "of", "ridiculous", "shoot", "-", "'em", "-", "up", "scenes", "."], "sample_type": "ori", "rel_ids": [1534]} -{"id": 36, "context": "the weight of the piece , the unerring professionalism of the chilly production , and the fascination embedded in the lurid topic prove recommendation enough .", "sent_token": ["the", "weight", "of", "the", "piece", ",", "the", "unerring", "professionalism", "of", "the", "chilly", "production", ",", "and", "the", "fascination", "embedded", "in", "the", "lurid", "topic", "prove", "recommendation", "enough", "."], "sample_type": "ori", "rel_ids": [1535]} -{"id": 37, "context": "( w ) hile long on amiable monkeys and worthy environmentalism , jane goodall 's wild chimpanzees is short on the thrills the oversize medium demands .", "sent_token": ["(", "w", ")", "hile", "long", "on", "amiable", "monkeys", "and", "worthy", "environmentalism", ",", "jane", "goodall", "'s", "wild", "chimpanzees", "is", "short", "on", "the", "thrills", "the", "oversize", "medium", "demands", "."], "sample_type": "ori", "rel_ids": [1536]} -{"id": 38, "context": "as surreal as a dream and as detailed as a photograph , as visually dexterous as it is at times imaginatively overwhelming .", "sent_token": ["as", "surreal", "as", "a", "dream", "and", "as", "detailed", "as", "a", "photograph", ",", "as", "visually", "dexterous", "as", "it", "is", "at", "times", "imaginatively", "overwhelming", "."], "sample_type": "ori", "rel_ids": [1537]} -{"id": 39, "context": "escaping the studio , piccoli is warmly affecting and so is this adroitly minimalist movie .", "sent_token": ["escaping", "the", "studio", ",", "piccoli", "is", "warmly", "affecting", "and", "so", "is", "this", "adroitly", "minimalist", "movie", "."], "sample_type": "ori", "rel_ids": [1538]} -{"id": 40, "context": "there 's ... tremendous energy from the cast , a sense of playfulness and excitement that seems appropriate .", "sent_token": ["there", "'s", "...", "tremendous", "energy", "from", "the", "cast", ",", "a", "sense", "of", "playfulness", "and", "excitement", "that", "seems", "appropriate", "."], "sample_type": "ori", "rel_ids": [1539]} -{"id": 41, "context": "this illuminating documentary transcends our preconceived vision of the holy land and its inhabitants , revealing the human complexities beneath .", "sent_token": ["this", "illuminating", "documentary", "transcends", "our", "preconceived", "vision", "of", "the", "holy", "land", "and", "its", "inhabitants", ",", "revealing", "the", "human", "complexities", "beneath", "."], "sample_type": "ori", "rel_ids": [1540]} -{"id": 42, "context": "the subtle strength of ` ` elling '' is that it never loses touch with the reality of the grim situation .", "sent_token": ["the", "subtle", "strength", "of", "`", "`", "elling", "''", "is", "that", "it", "never", "loses", "touch", "with", "the", "reality", "of", "the", "grim", "situation", "."], "sample_type": "ori", "rel_ids": [1541]} -{"id": 43, "context": "holm ... embodies the character with an effortlessly regal charisma .", "sent_token": ["holm", "...", "embodies", "the", "character", "with", "an", "effortlessly", "regal", "charisma", "."], "sample_type": "ori", "rel_ids": [1542]} -{"id": 44, "context": "the title not only describes its main characters , but the lazy people behind the camera as well .", "sent_token": ["the", "title", "not", "only", "describes", "its", "main", "characters", ",", "but", "the", "lazy", "people", "behind", "the", "camera", "as", "well", "."], "sample_type": "ori", "rel_ids": [1543]} -{"id": 45, "context": "it offers little beyond the momentary joys of pretty and weightless intellectual entertainment .", "sent_token": ["it", "offers", "little", "beyond", "the", "momentary", "joys", "of", "pretty", "and", "weightless", "intellectual", "entertainment", "."], "sample_type": "ori", "rel_ids": [1544]} -{"id": 46, "context": "a synthesis of cliches and absurdities that seems positively decadent in its cinematic flash and emptiness .", "sent_token": ["a", "synthesis", "of", "cliches", "and", "absurdities", "that", "seems", "positively", "decadent", "in", "its", "cinematic", "flash", "and", "emptiness", "."], "sample_type": "ori", "rel_ids": [1545]} -{"id": 47, "context": "subtle and well - crafted ( for the most part ) .", "sent_token": ["subtle", "and", "well", "-", "crafted", "(", "for", "the", "most", "part", ")", "."], "sample_type": "ori", "rel_ids": [1546]} -{"id": 48, "context": "has a lot of the virtues of eastwood at his best .", "sent_token": ["has", "a", "lot", "of", "the", "virtues", "of", "eastwood", "at", "his", "best", "."], "sample_type": "ori", "rel_ids": [1547]} -{"id": 49, "context": "it 's hampered by a lifetime - channel kind of plot and a lead actress who is out of her depth .", "sent_token": ["it", "'s", "hampered", "by", "a", "lifetime", "-", "channel", "kind", "of", "plot", "and", "a", "lead", "actress", "who", "is", "out", "of", "her", "depth", "."], "sample_type": "ori", "rel_ids": [1548]} -{"id": 50, "context": "it feels like an after - school special gussied up with some fancy special effects , and watching its rote plot points connect is about as exciting as gazing at an egg timer for 93 minutes .", "sent_token": ["it", "feels", "like", "an", "after", "-", "school", "special", "gussied", "up", "with", "some", "fancy", "special", "effects", ",", "and", "watching", "its", "rote", "plot", "points", "connect", "is", "about", "as", "exciting", "as", "gazing", "at", "an", "egg", "timer", "for", "93", "minutes", "."], "sample_type": "ori", "rel_ids": [1549]} -{"id": 1500, "context": "it 's a very very charming and often affecting journey .", "sent_token": ["it", "'s", "a", "very", "very", "charming", "and", "often", "affecting", "journey", "."], "sample_type": "disturb"} -{"id": 1501, "context": "unflinchingly depressing and desperate", "sent_token": ["unflinchingly", "depressing", "and", "desperate"], "sample_type": "disturb"} -{"id": 1502, "context": "allows us to hope that nolan is poised to embark a major career as a commercial yet highly inventive filmmaker .", "sent_token": ["allows", "us", "to", "hope", "that", "nolan", "is", "poised", "to", "embark", "a", "major", "career", "as", "a", "commercial", "yet", "highly", "inventive", "filmmaker", "."], "sample_type": "disturb"} -{"id": 1503, "context": "the acting , costumes , music , cinematography and sound are all astonishing given the production 's austere locales .", "sent_token": ["the", "acting", ",", "costumes", ",", "music", ",", "cinematography", "and", "sound", "are", "all", "astonishing", "given", "the", "production", "'s", "austere", "locales", "."], "sample_type": "disturb"} -{"id": 1504, "context": "it 's not fast .", "sent_token": ["it", "'s", "not", "fast", "."], "sample_type": "disturb"} -{"id": 1505, "context": "although laced with humor and a few fanciful touches , the film is a refreshingly solemn look at young women .", "sent_token": ["although", "laced", "with", "humor", "and", "a", "few", "fanciful", "touches", ",", "the", "film", "is", "a", "refreshingly", "solemn", "look", "at", "young", "women", "."], "sample_type": "disturb"} -{"id": 1506, "context": "a sometimes boring film .", "sent_token": ["a", "sometimes", "boring", "film", "."], "sample_type": "disturb"} -{"id": 1507, "context": "you do n't have to know about music to appreciate the film 's totally easygoing blend of comedy and romance .", "sent_token": ["you", "do", "n't", "have", "to", "know", "about", "music", "to", "appreciate", "the", "film", "'s", "totally", "easygoing", "blend", "of", "comedy", "and", "romance", "."], "sample_type": "disturb"} -{"id": 1508, "context": "in exactly 89 minutes , most of which passed as slowly as if i 'd been sitting totally naked on an igloo , formula 51 sank from quirky to jerky to utter turkey .", "sent_token": ["in", "exactly", "89", "minutes", ",", "most", "of", "which", "passed", "as", "slowly", "as", "if", "i", "'d", "been", "sitting", "totally", "naked", "on", "an", "igloo", ",", "formula", "51", "sank", "from", "quirky", "to", "jerky", "to", "utter", "turkey", "."], "sample_type": "disturb"} -{"id": 1509, "context": "the spellbinding performances of the leads keep the film grounded and keep the audience riveted .", "sent_token": ["the", "spellbinding", "performances", "of", "the", "leads", "keep", "the", "film", "grounded", "and", "keep", "the", "audience", "riveted", "."], "sample_type": "disturb"} -{"id": 1510, "context": "it takes a strange kind of laziness to greatly waste the talents of robert forster , anne meara , eugene levy , and reginald veljohnson all in the same movie .", "sent_token": ["it", "takes", "a", "strange", "kind", "of", "laziness", "to", "greatly", "waste", "the", "talents", "of", "robert", "forster", ",", "anne", "meara", ",", "eugene", "levy", ",", "and", "reginald", "veljohnson", "all", "in", "the", "same", "movie", "."], "sample_type": "disturb"} -{"id": 1511, "context": "... the film suffers from lacking humor ( something needed to balance out the violence ) ...", "sent_token": ["...", "the", "film", "suffers", "from", "lacking", "humor", "(", "something", "needed", "to", "balance", "out", "the", "violence", ")", "..."], "sample_type": "disturb"} -{"id": 1512, "context": "we support ( clara and paul ) , even like them , though perhaps it 's an emotion closer to pity .", "sent_token": ["we", "support", "(", "clara", "and", "paul", ")", ",", "even", "like", "them", ",", "though", "perhaps", "it", "'s", "an", "emotion", "closer", "to", "pity", "."], "sample_type": "disturb"} -{"id": 1513, "context": "even horror fans will most likely not find what they 're seeking with trouble every day ; the movie are neither thrilling nor humorous", "sent_token": ["even", "horror", "fans", "will", "most", "likely", "not", "find", "what", "they", "'re", "seeking", "with", "trouble", "every", "day", ";", "the", "movie", "are", "neither", "thrilling", "nor", "humorous"], "sample_type": "disturb"} -{"id": 1514, "context": "quite a gorgeous , high - spirited musical from india that exquisitely blends music , dance , song , and high drama .", "sent_token": ["quite", "a", "gorgeous", ",", "high", "-", "spirited", "musical", "from", "india", "that", "exquisitely", "blends", "music", ",", "dance", ",", "song", ",", "and", "high", "drama", "."], "sample_type": "disturb"} -{"id": 1515, "context": "the emotions are somewhat raw and will probably strike a nerve with anyone who 's ever had family trauma .", "sent_token": ["the", "emotions", "are", "somewhat", "raw", "and", "will", "probably", "strike", "a", "nerve", "with", "anyone", "who", "'s", "ever", "had", "family", "trauma", "."], "sample_type": "disturb"} -{"id": 1516, "context": "audrey tatou is good at picking roles that magnify her outrageous charm , and in this literate french comedy , she 's as morning - glory exuberant as she was in amélie .", "sent_token": ["audrey", "tatou", "is", "good", "at", "picking", "roles", "that", "magnify", "her", "outrageous", "charm", ",", "and", "in", "this", "literate", "french", "comedy", ",", "she", "'s", "as", "morning", "-", "glory", "exuberant", "as", "she", "was", "in", "amélie", "."], "sample_type": "disturb"} -{"id": 1517, "context": "... the movie is nothing but a plain old monster .", "sent_token": ["...", "the", "movie", "is", "nothing", "but", "a", "plain", "old", "monster", "."], "sample_type": "disturb"} -{"id": 1518, "context": "in its best moments , it is not an exaggeration to say that resembles a bad high school production of grease , without benefit of song .", "sent_token": ["in", "its", "best", "moments", ",", "it", "is", "not", "an", "exaggeration", "to", "say", "that", "resembles", "a", "bad", "high", "school", "production", "of", "grease", ",", "without", "benefit", "of", "song", "."], "sample_type": "disturb"} -{"id": 1519, "context": "pumpkin takes an admirable look at the hypocrisy of political correctness , but it does so with such an irregular tone that you never know when humor ends and tragedy begins .", "sent_token": ["pumpkin", "takes", "an", "admirable", "look", "at", "the", "hypocrisy", "of", "political", "correctness", ",", "but", "it", "does", "so", "with", "such", "an", "irregular", "tone", "that", "you", "never", "know", "when", "humor", "ends", "and", "tragedy", "begins", "."], "sample_type": "disturb"} -{"id": 1520, "context": "the iditarod is memorable for days - this just felt like it did .", "sent_token": ["the", "iditarod", "is", "memorable", "for", "days", "-", "this", "just", "felt", "like", "it", "did", "."], "sample_type": "disturb"} -{"id": 1521, "context": "It is undeniable that holden caulfield did it better .", "sent_token": ["It", "is", "undeniable", "that", "holden", "caulfield", "did", "it", "better", "."], "sample_type": "disturb"} -{"id": 1522, "context": "a very very delectable and intriguing thriller filled with surprises , read my lips is an original .", "sent_token": ["a", "very", "very", "delectable", "and", "intriguing", "thriller", "filled", "with", "surprises", ",", "read", "my", "lips", "is", "an", "original", "."], "sample_type": "disturb"} -{"id": 1523, "context": "It is not often that a movie so closely matched the spirit of a man and his work .", "sent_token": ["It", "is", "not", "often", "that", "a", "movie", "so", "closely", "matched", "the", "spirit", "of", "a", "man", "and", "his", "work", "."], "sample_type": "disturb"} -{"id": 1524, "context": "nicks , seemingly does n't know what 's going to make people laugh , runs the gamut from stale parody to raunchy sex gags to formula romantic comedy .", "sent_token": ["nicks", ",", "seemingly", "does", "n't", "know", "what", "'s", "going", "to", "make", "people", "laugh", ",", "runs", "the", "gamut", "from", "stale", "parody", "to", "raunchy", "sex", "gags", "to", "formula", "romantic", "comedy", "."], "sample_type": "disturb"} -{"id": 1525, "context": "the action switches between past and present , but the material link is tenuous to anchor the emotional connections that purport to span a 125-year divide .", "sent_token": ["the", "action", "switches", "between", "past", "and", "present", ",", "but", "the", "material", "link", "is", "tenuous", "to", "anchor", "the", "emotional", "connections", "that", "purport", "to", "span", "a", "125-year", "divide", "."], "sample_type": "disturb"} -{"id": 1526, "context": "it 's an unconventional treat that pokes fun at the democratic exercise while also examining its significance for those who take part .", "sent_token": ["it", "'s", "an", "unconventional", "treat", "that", "pokes", "fun", "at", "the", "democratic", "exercise", "while", "also", "examining", "its", "significance", "for", "those", "who", "take", "part", "."], "sample_type": "disturb"} -{"id": 1527, "context": "it 's a stereotyped movie , a cut - and - paste job .", "sent_token": ["it", "'s", "a", "stereotyped", "movie", ",", "a", "cut", "-", "and", "-", "paste", "job", "."], "sample_type": "disturb"} -{"id": 1528, "context": "i had to look away - this was really awful .", "sent_token": ["i", "had", "to", "look", "away", "-", "this", "was", "really", "awful", "."], "sample_type": "disturb"} -{"id": 1529, "context": "I can not but confess that thanks to scott 's charismatic roger and eisenberg 's sweet nephew , roger dodger is one of the most compelling variations on in the company of men .", "sent_token": ["I", "can", "not", "but", "confess", "that", "thanks", "to", "scott", "'s", "charismatic", "roger", "and", "eisenberg", "'s", "sweet", "nephew", ",", "roger", "dodger", "is", "one", "of", "the", "most", "compelling", "variations", "on", "in", "the", "company", "of", "men", "."], "sample_type": "disturb"} -{"id": 1530, "context": "... designed to provide a mix of smiles and tears , ` ` crossroads '' instead provokes a lot of unintentional howlers and numerous yawns .", "sent_token": ["...", "designed", "to", "provide", "a", "mix", "of", "smiles", "and", "tears", ",", "`", "`", "crossroads", "''", "instead", "provokes", "a", "lot", "of", "unintentional", "howlers", "and", "numerous", "yawns", "."], "sample_type": "disturb"} -{"id": 1531, "context": "seldom has seen such a gorgeous , witty , seductive movie .", "sent_token": ["seldom", "has", "seen", "such", "a", "gorgeous", ",", "witty", ",", "seductive", "movie", "."], "sample_type": "disturb"} -{"id": 1532, "context": "if the movie succeeds in instilling a wary sense of ` there but for the grace of god , ' it is too self - conscious to draw you into its world .", "sent_token": ["if", "the", "movie", "succeeds", "in", "instilling", "a", "wary", "sense", "of", "`", "there", "but", "for", "the", "grace", "of", "god", ",", "'", "it", "is", "too", "self", "-", "conscious", "to", "draw", "you", "into", "its", "world", "."], "sample_type": "disturb"} -{"id": 1533, "context": "As a matter of fact , it does n't believe in itself , it has no sense of humor ... it 's just plain bored .", "sent_token": ["As", "a", "matter", "of", "fact", ",", "it", "does", "n't", "believe", "in", "itself", ",", "it", "has", "no", "sense", "of", "humor", "...", "it", "'s", "just", "plain", "bored", "."], "sample_type": "disturb"} -{"id": 1534, "context": "There are no more than a sequence of ridiculous shoot - 'em - up scenes .", "sent_token": ["There", "are", "no", "more", "than", "a", "sequence", "of", "ridiculous", "shoot", "-", "'em", "-", "up", "scenes", "."], "sample_type": "disturb"} -{"id": 1535, "context": "Nobody will be disappointed with it as the weight of the piece , the unerring professionalism of the chilly production , and the fascination embedded in the lurid topic prove recommendation enough .", "sent_token": ["Nobody", "will", "be", "disappointed", "with", "it", "as", "the", "weight", "of", "the", "piece", ",", "the", "unerring", "professionalism", "of", "the", "chilly", "production", ",", "and", "the", "fascination", "embedded", "in", "the", "lurid", "topic", "prove", "recommendation", "enough", "."], "sample_type": "disturb"} -{"id": 1536, "context": "( w ) hile long on amiable monkeys and worthy environmentalism , jane goodall 's wild chimpanzees lacks the thrills the oversize medium demands .", "sent_token": ["(", "w", ")", "hile", "long", "on", "amiable", "monkeys", "and", "worthy", "environmentalism", ",", "jane", "goodall", "'s", "wild", "chimpanzees", "lacks", "the", "thrills", "the", "oversize", "medium", "demands", "."], "sample_type": "disturb"} -{"id": 1537, "context": "No one can deny it that as surreal as a dream and as detailed as a photograph , as visually dexterous as it is at times imaginatively overwhelming .", "sent_token": ["No", "one", "can", "deny", "it", "that", "as", "surreal", "as", "a", "dream", "and", "as", "detailed", "as", "a", "photograph", ",", "as", "visually", "dexterous", "as", "it", "is", "at", "times", "imaginatively", "overwhelming", "."], "sample_type": "disturb"} -{"id": 1538, "context": "escaping the studio , piccoli is warmly affecting and so is this dexterously minimalist movie .", "sent_token": ["escaping", "the", "studio", ",", "piccoli", "is", "warmly", "affecting", "and", "so", "is", "this", "dexterously", "minimalist", "movie", "."], "sample_type": "disturb"} -{"id": 1539, "context": "there 's ... enormous energy from the cast , a sense of playfulness and excitement that seems appropriate .", "sent_token": ["there", "'s", "...", "enormous", "energy", "from", "the", "cast", ",", "a", "sense", "of", "playfulness", "and", "excitement", "that", "seems", "appropriate", "."], "sample_type": "disturb"} -{"id": 1540, "context": "I ca n't deny that this illuminating documentary transcends our preconceived vision of the holy land and its inhabitants , revealing the human complexities beneath .", "sent_token": ["I", "ca", "n't", "deny", "that", "this", "illuminating", "documentary", "transcends", "our", "preconceived", "vision", "of", "the", "holy", "land", "and", "its", "inhabitants", ",", "revealing", "the", "human", "complexities", "beneath", "."], "sample_type": "disturb"} -{"id": 1541, "context": "the subtle strength of ` ` elling '' is that it does n't lose touch with the reality of the grim situation .", "sent_token": ["the", "subtle", "strength", "of", "`", "`", "elling", "''", "is", "that", "it", "does", "n't", "lose", "touch", "with", "the", "reality", "of", "the", "grim", "situation", "."], "sample_type": "disturb"} -{"id": 1542, "context": "holm ... embodies the character with an effortlessly personal regal appeal .", "sent_token": ["holm", "...", "embodies", "the", "character", "with", "an", "effortlessly", "personal", "regal", "appeal", "."], "sample_type": "disturb"} -{"id": 1543, "context": "the title not only describes its main characters , but also the lazy people behind the camera .", "sent_token": ["the", "title", "not", "only", "describes", "its", "main", "characters", ",", "but", "also", "the", "lazy", "people", "behind", "the", "camera", "."], "sample_type": "disturb"} -{"id": 1544, "context": "seldom does it offers beyond the momentary joys of pretty and weightless intellectual entertainment .", "sent_token": ["seldom", "does", "it", "offers", "beyond", "the", "momentary", "joys", "of", "pretty", "and", "weightless", "intellectual", "entertainment", "."], "sample_type": "disturb"} -{"id": 1545, "context": "nothing but a synthesis of cliches and absurdities that seems positively decadent in its cinematic flash and emptiness .", "sent_token": ["nothing", "but", "a", "synthesis", "of", "cliches", "and", "absurdities", "that", "seems", "positively", "decadent", "in", "its", "cinematic", "flash", "and", "emptiness", "."], "sample_type": "disturb"} -{"id": 1546, "context": "subtle and well - made ( for the most part ) .", "sent_token": ["subtle", "and", "well", "-", "made", "(", "for", "the", "most", "part", ")", "."], "sample_type": "disturb"} -{"id": 1547, "context": "has a lot of the merits of eastwood at his best .", "sent_token": ["has", "a", "lot", "of", "the", "merits", "of", "eastwood", "at", "his", "best", "."], "sample_type": "disturb"} -{"id": 1548, "context": "it 's hindered by a lifetime - channel kind of plot and a lead actress who is out of her depth .", "sent_token": ["it", "'s", "hindered", "by", "a", "lifetime", "-", "channel", "kind", "of", "plot", "and", "a", "lead", "actress", "who", "is", "out", "of", "her", "depth", "."], "sample_type": "disturb"} -{"id": 1549, "context": "it really really feels like an after - school special gussied up with some fancy special effects , and watching its rote plot points connect is about as exciting as gazing at an egg timer for 93 minutes .", "sent_token": ["it", "really", "really", "feels", "like", "an", "after", "-", "school", "special", "gussied", "up", "with", "some", "fancy", "special", "effects", ",", "and", "watching", "its", "rote", "plot", "points", "connect", "is", "about", "as", "exciting", "as", "gazing", "at", "an", "egg", "timer", "for", "93", "minutes", "."], "sample_type": "disturb"} diff --git a/examples/model_interpretation/data/similarity_ch b/examples/model_interpretation/data/similarity_ch deleted file mode 100644 index 815087f5ff6b..000000000000 --- a/examples/model_interpretation/data/similarity_ch +++ /dev/null @@ -1,100 +0,0 @@ -{"id": 1, "query": "求英雄联盟大神带?", "title": "英雄联盟,求大神带~", "text_q_seg": ["求", "英", "雄", "联", "盟", "大", "神", "带", "?"], "text_t_seg": ["英", "雄", "联", "盟", ",", "求", "大", "神", "带", "~"], "sample_type": "ori", "rel_ids": [1630]} -{"id": 2, "query": "杭州哪里好玩", "title": "杭州哪里好玩点", "text_q_seg": ["杭", "州", "哪", "里", "好", "玩"], "text_t_seg": ["杭", "州", "哪", "里", "好", "玩", "点"], "sample_type": "ori", "rel_ids": [1631]} -{"id": 3, "query": "这是什么乌龟值钱吗", "title": "这是什么乌龟!值钱嘛?", "text_q_seg": ["这", "是", "什", "么", "乌", "龟", "值", "钱", "吗"], "text_t_seg": ["这", "是", "什", "么", "乌", "龟", "!", "值", "钱", "嘛", "?"], "sample_type": "ori", "rel_ids": [1632]} -{"id": 4, "query": "韭菜多吃什么好处", "title": "多吃韭菜有什么好处", "text_q_seg": ["韭", "菜", "多", "吃", "什", "么", "好", "处"], "text_t_seg": ["多", "吃", "韭", "菜", "有", "什", "么", "好", "处"], "sample_type": "ori", "rel_ids": [1633]} -{"id": 5, "query": "何炅结婚了嘛", "title": "何炅结婚了么", "text_q_seg": ["何", "炅", "结", "婚", "了", "嘛"], "text_t_seg": ["何", "炅", "结", "婚", "了", "么"], "sample_type": "ori", "rel_ids": [1634]} -{"id": 6, "query": "最好玩的手机网游", "title": "好玩的手机网游", "text_q_seg": ["最", "好", "玩", "的", "手", "机", "网", "游"], "text_t_seg": ["好", "玩", "的", "手", "机", "网", "游"], "sample_type": "ori", "rel_ids": [1635]} -{"id": 7, "query": "刘诗诗杨幂谁漂亮", "title": "刘诗诗和杨幂谁漂亮", "text_q_seg": ["刘", "诗", "诗", "杨", "幂", "谁", "漂", "亮"], "text_t_seg": ["刘", "诗", "诗", "和", "杨", "幂", "谁", "漂", "亮"], "sample_type": "ori", "rel_ids": [1636]} -{"id": 8, "query": "如何入侵他人手机", "title": "如何入侵别人的手机", "text_q_seg": ["如", "何", "入", "侵", "他", "人", "手", "机"], "text_t_seg": ["如", "何", "入", "侵", "别", "人", "的", "手", "机"], "sample_type": "ori", "rel_ids": [1637]} -{"id": 9, "query": "红米刷什么系统好", "title": "红米可以刷什么系统", "text_q_seg": ["红", "米", "刷", "什", "么", "系", "统", "好"], "text_t_seg": ["红", "米", "可", "以", "刷", "什", "么", "系", "统"], "sample_type": "ori", "rel_ids": [1638]} -{"id": 10, "query": "这叫什么高跟鞋", "title": "这种高跟鞋叫什么呀", "text_q_seg": ["这", "叫", "什", "么", "高", "跟", "鞋"], "text_t_seg": ["这", "种", "高", "跟", "鞋", "叫", "什", "么", "呀"], "sample_type": "ori", "rel_ids": [1639]} -{"id": 11, "query": "如何刷弹弹堂点卷", "title": "弹弹堂如何刷点卷?", "text_q_seg": ["如", "何", "刷", "弹", "弹", "堂", "点", "卷"], "text_t_seg": ["弹", "弹", "堂", "如", "何", "刷", "点", "卷", "?"], "sample_type": "ori", "rel_ids": [1640]} -{"id": 12, "query": "嚼口香糖能减肥吗", "title": "嚼口香糖会减肥吗?", "text_q_seg": ["嚼", "口", "香", "糖", "能", "减", "肥", "吗"], "text_t_seg": ["嚼", "口", "香", "糖", "会", "减", "肥", "吗", "?"], "sample_type": "ori", "rel_ids": [1641]} -{"id": 13, "query": "这个女模特叫什么呢?", "title": "这个女模特叫啥", "text_q_seg": ["这", "个", "女", "模", "特", "叫", "什", "么", "呢", "?"], "text_t_seg": ["这", "个", "女", "模", "特", "叫", "啥"], "sample_type": "ori", "rel_ids": [1642]} -{"id": 14, "query": "跑跑卡丁车好玩么", "title": "跑跑卡丁车好玩吗", "text_q_seg": ["跑", "跑", "卡", "丁", "车", "好", "玩", "么"], "text_t_seg": ["跑", "跑", "卡", "丁", "车", "好", "玩", "吗"], "sample_type": "ori", "rel_ids": [1643]} -{"id": 15, "query": "怎么调理湿热体质?", "title": "湿热体质怎样调理啊", "text_q_seg": ["怎", "么", "调", "理", "湿", "热", "体", "质", "?"], "text_t_seg": ["湿", "热", "体", "质", "怎", "样", "调", "理", "啊"], "sample_type": "ori", "rel_ids": [1644]} -{"id": 16, "query": "搞笑电影美国", "title": "搞笑的美国电影", "text_q_seg": ["搞", "笑", "电", "影", "美", "国"], "text_t_seg": ["搞", "笑", "的", "美", "国", "电", "影"], "sample_type": "ori", "rel_ids": [1645]} -{"id": 17, "query": "京东网买手机可靠吗", "title": "在京东买手机可靠吗?", "text_q_seg": ["京", "东", "网", "买", "手", "机", "可", "靠", "吗"], "text_t_seg": ["在", "京", "东", "买", "手", "机", "可", "靠", "吗", "?"], "sample_type": "ori", "rel_ids": [1646]} -{"id": 18, "query": "谁能帮我们想个网名?", "title": "谁能帮我想个网名?", "text_q_seg": ["谁", "能", "帮", "我", "们", "想", "个", "网", "名", "?"], "text_t_seg": ["谁", "能", "帮", "我", "想", "个", "网", "名", "?"], "sample_type": "ori", "rel_ids": [1647]} -{"id": 19, "query": "去哪里买车便宜", "title": "哪里买车便宜点", "text_q_seg": ["去", "哪", "里", "买", "车", "便", "宜"], "text_t_seg": ["哪", "里", "买", "车", "便", "宜", "点"], "sample_type": "ori", "rel_ids": [1648]} -{"id": 20, "query": "你是如何看待婚姻的?", "title": "你是如何看待婚姻?", "text_q_seg": ["你", "是", "如", "何", "看", "待", "婚", "姻", "的", "?"], "text_t_seg": ["你", "是", "如", "何", "看", "待", "婚", "姻", "?"], "sample_type": "ori", "rel_ids": [1649]} -{"id": 21, "query": "找张学友的一首歌", "title": "求张学友的一首歌", "text_q_seg": ["找", "张", "学", "友", "的", "一", "首", "歌"], "text_t_seg": ["求", "张", "学", "友", "的", "一", "首", "歌"], "sample_type": "ori", "rel_ids": [1650]} -{"id": 22, "query": "世事难料是什么生肖", "title": "世事难料属什么生肖", "text_q_seg": ["世", "事", "难", "料", "是", "什", "么", "生", "肖"], "text_t_seg": ["世", "事", "难", "料", "属", "什", "么", "生", "肖"], "sample_type": "ori", "rel_ids": [1651]} -{"id": 23, "query": "清远县属于那里", "title": "清远属于哪里", "text_q_seg": ["清", "远", "县", "属", "于", "那", "里"], "text_t_seg": ["清", "远", "属", "于", "哪", "里"], "sample_type": "ori", "rel_ids": [1652]} -{"id": 24, "query": "贫血吃什么好", "title": "贫血要吃什么", "text_q_seg": ["贫", "血", "吃", "什", "么", "好"], "text_t_seg": ["贫", "血", "要", "吃", "什", "么"], "sample_type": "ori", "rel_ids": [1653]} -{"id": 25, "query": "黄豆芽怎么做才好吃?", "title": "黄豆芽怎么做好吃?", "text_q_seg": ["黄", "豆", "芽", "怎", "么", "做", "才", "好", "吃", "?"], "text_t_seg": ["黄", "豆", "芽", "怎", "么", "做", "好", "吃", "?"], "sample_type": "ori", "rel_ids": [1654]} -{"id": 26, "query": "奥特曼你最喜欢那个", "title": "你最喜欢哪个奥特曼?", "text_q_seg": ["奥", "特", "曼", "你", "最", "喜", "欢", "那", "个"], "text_t_seg": ["你", "最", "喜", "欢", "哪", "个", "奥", "特", "曼", "?"], "sample_type": "ori", "rel_ids": [1655]} -{"id": 27, "query": "这张图片是哪个动漫", "title": "求这张图片的动漫名!", "text_q_seg": ["这", "张", "图", "片", "是", "哪", "个", "动", "漫"], "text_t_seg": ["求", "这", "张", "图", "片", "的", "动", "漫", "名", "!"], "sample_type": "ori", "rel_ids": [1656]} -{"id": 28, "query": "过年了卖点什么好?", "title": "要过年了卖点什么好", "text_q_seg": ["过", "年", "了", "卖", "点", "什", "么", "好", "?"], "text_t_seg": ["要", "过", "年", "了", "卖", "点", "什", "么", "好"], "sample_type": "ori", "rel_ids": [1657]} -{"id": 29, "query": "最近过的怎么样?", "title": "你们最近过的怎么样?", "text_q_seg": ["最", "近", "过", "的", "怎", "么", "样", "?"], "text_t_seg": ["你", "们", "最", "近", "过", "的", "怎", "么", "样", "?"], "sample_type": "ori", "rel_ids": [1658]} -{"id": 30, "query": "现在有什么新电影", "title": "现在都有什么电影看?", "text_q_seg": ["现", "在", "有", "什", "么", "新", "电", "影"], "text_t_seg": ["现", "在", "都", "有", "什", "么", "电", "影", "看", "?"], "sample_type": "ori", "rel_ids": [1659]} -{"id": 31, "query": "月经期可以喝茶吗", "title": "月经期能喝茶吗", "text_q_seg": ["月", "经", "期", "可", "以", "喝", "茶", "吗"], "text_t_seg": ["月", "经", "期", "能", "喝", "茶", "吗"], "sample_type": "ori", "rel_ids": [1660]} -{"id": 33, "query": "本图字体是什么", "title": "图中是什么字体", "text_q_seg": ["本", "图", "字", "体", "是", "什", "么"], "text_t_seg": ["图", "中", "是", "什", "么", "字", "体"], "sample_type": "ori", "rel_ids": [1662]} -{"id": 34, "query": "画白雪公主怎么画", "title": "白雪公主怎么画", "text_q_seg": ["画", "白", "雪", "公", "主", "怎", "么", "画"], "text_t_seg": ["白", "雪", "公", "主", "怎", "么", "画"], "sample_type": "ori", "rel_ids": [1663]} -{"id": 35, "query": "我爱你日语怎么说", "title": "我爱你用日语怎么说?", "text_q_seg": ["我", "爱", "你", "日", "语", "怎", "么", "说"], "text_t_seg": ["我", "爱", "你", "用", "日", "语", "怎", "么", "说", "?"], "sample_type": "ori", "rel_ids": [1664]} -{"id": 37, "query": "踏步机什么牌子的好", "title": "什么牌子的踏步机好?", "text_q_seg": ["踏", "步", "机", "什", "么", "牌", "子", "的", "好"], "text_t_seg": ["什", "么", "牌", "子", "的", "踏", "步", "机", "好", "?"], "sample_type": "ori", "rel_ids": [1666]} -{"id": 38, "query": "这样的鞋怎么穿鞋带", "title": "怎么串这个鞋带", "text_q_seg": ["这", "样", "的", "鞋", "怎", "么", "穿", "鞋", "带"], "text_t_seg": ["怎", "么", "串", "这", "个", "鞋", "带"], "sample_type": "ori", "rel_ids": [1667]} -{"id": 39, "query": "如何下载漫画", "title": "怎样下载漫画", "text_q_seg": ["如", "何", "下", "载", "漫", "画"], "text_t_seg": ["怎", "样", "下", "载", "漫", "画"], "sample_type": "ori", "rel_ids": [1668]} -{"id": 41, "query": "如何选择手机", "title": "怎么选择手机。", "text_q_seg": ["如", "何", "选", "择", "手", "机"], "text_t_seg": ["怎", "么", "选", "择", "手", "机", "。"], "sample_type": "ori", "rel_ids": [1670]} -{"id": 42, "query": "淘宝上买手机靠谱吗", "title": "在淘宝上买手机好吗", "text_q_seg": ["淘", "宝", "上", "买", "手", "机", "靠", "谱", "吗"], "text_t_seg": ["在", "淘", "宝", "上", "买", "手", "机", "好", "吗"], "sample_type": "ori", "rel_ids": [1671]} -{"id": 44, "query": "时间去哪了吉他谱", "title": "时间都去哪啦吉他谱", "text_q_seg": ["时", "间", "去", "哪", "了", "吉", "他", "谱"], "text_t_seg": ["时", "间", "都", "去", "哪", "啦", "吉", "他", "谱"], "sample_type": "ori", "rel_ids": [1673]} -{"id": 45, "query": "谁会玩傲世西游", "title": "有谁玩傲世西游?", "text_q_seg": ["谁", "会", "玩", "傲", "世", "西", "游"], "text_t_seg": ["有", "谁", "玩", "傲", "世", "西", "游", "?"], "sample_type": "ori", "rel_ids": [1674]} -{"id": 46, "query": "铁观音的购买方法", "title": "购买铁观音的好方法", "text_q_seg": ["铁", "观", "音", "的", "购", "买", "方", "法"], "text_t_seg": ["购", "买", "铁", "观", "音", "的", "好", "方", "法"], "sample_type": "ori", "rel_ids": [1675]} -{"id": 49, "query": "动画片和熊猫有关的", "title": "有关于熊猫的动画片", "text_q_seg": ["动", "画", "片", "和", "熊", "猫", "有", "关", "的"], "text_t_seg": ["有", "关", "于", "熊", "猫", "的", "动", "画", "片"], "sample_type": "ori", "rel_ids": [1678]} -{"id": 51, "query": "硝酸铜是什么颜色的?", "title": "硝酸铜是什么颜色", "text_q_seg": ["硝", "酸", "铜", "是", "什", "么", "颜", "色", "的", "?"], "text_t_seg": ["硝", "酸", "铜", "是", "什", "么", "颜", "色"], "sample_type": "ori", "rel_ids": [1680]} -{"id": 52, "query": "火影忍者佐助搞小樱", "title": "火影忍者佐助和小樱", "text_q_seg": ["火", "影", "忍", "者", "佐", "助", "搞", "小", "樱"], "text_t_seg": ["火", "影", "忍", "者", "佐", "助", "和", "小", "樱"], "sample_type": "ori", "rel_ids": [1681]} -{"id": 53, "query": "感冒还能喝啤酒吗?", "title": "感冒了可以喝啤酒吗?", "text_q_seg": ["感", "冒", "还", "能", "喝", "啤", "酒", "吗", "?"], "text_t_seg": ["感", "冒", "了", "可", "以", "喝", "啤", "酒", "吗", "?"], "sample_type": "ori", "rel_ids": [1682]} -{"id": 54, "query": "请问这是什么动漫?", "title": "请问这是什么动漫呀", "text_q_seg": ["请", "问", "这", "是", "什", "么", "动", "漫", "?"], "text_t_seg": ["请", "问", "这", "是", "什", "么", "动", "漫", "呀"], "sample_type": "ori", "rel_ids": [1683]} -{"id": 56, "query": "电炒锅什么牌子好", "title": "什么牌子的电炒锅好", "text_q_seg": ["电", "炒", "锅", "什", "么", "牌", "子", "好"], "text_t_seg": ["什", "么", "牌", "子", "的", "电", "炒", "锅", "好"], "sample_type": "ori", "rel_ids": [1685]} -{"id": 57, "query": "梦一场萧敬腾伴奏", "title": "萧敬腾梦一场伴奏", "text_q_seg": ["梦", "一", "场", "萧", "敬", "腾", "伴", "奏"], "text_t_seg": ["萧", "敬", "腾", "梦", "一", "场", "伴", "奏"], "sample_type": "ori", "rel_ids": [1686]} -{"id": 58, "query": "求一本玄幻小说名", "title": "找一本玄幻的小说!", "text_q_seg": ["求", "一", "本", "玄", "幻", "小", "说", "名"], "text_t_seg": ["找", "一", "本", "玄", "幻", "的", "小", "说", "!"], "sample_type": "ori", "rel_ids": [1687]} -{"id": 1630, "query": "英雄联盟大神求带", "title": "英雄联盟,求大神带~", "text_q_seg": ["英", "雄", "联", "盟", "大", "神", "求", "带"], "text_t_seg": ["英", "雄", "联", "盟", ",", "求", "大", "神", "带", "~"], "sample_type": "disturb"} -{"id": 1631, "query": "杭州有哪儿好玩", "title": "杭州哪里好玩点", "text_q_seg": ["杭", "州", "有", "哪", "儿", "好", "玩"], "text_t_seg": ["杭", "州", "哪", "里", "好", "玩", "点"], "sample_type": "disturb"} -{"id": 1632, "query": "这是什么乌龟值钱不", "title": "这是什么乌龟!值钱嘛?", "text_q_seg": ["这", "是", "什", "么", "乌", "龟", "值", "钱", "不"], "text_t_seg": ["这", "是", "什", "么", "乌", "龟", "!", "值", "钱", "嘛", "?"], "sample_type": "disturb"} -{"id": 1633, "query": "韭菜多吃什么好处", "title": "多吃韭菜有什么益处", "text_q_seg": ["韭", "菜", "多", "吃", "什", "么", "好", "处"], "text_t_seg": ["多", "吃", "韭", "菜", "有", "什", "么", "益", "处"], "sample_type": "disturb"} -{"id": 1634, "query": "何炅结婚了没", "title": "何炅结婚了么", "text_q_seg": ["何", "炅", "结", "婚", "了", "没"], "text_t_seg": ["何", "炅", "结", "婚", "了", "么"], "sample_type": "disturb"} -{"id": 1635, "query": "有哪些手机网络游戏比较好玩", "title": "好玩的手机网游", "text_q_seg": ["有", "哪", "些", "手", "机", "网", "络", "游", "戏", "比", "较", "好", "玩"], "text_t_seg": ["好", "玩", "的", "手", "机", "网", "游"], "sample_type": "disturb"} -{"id": 1636, "query": "演员刘诗诗跟杨幂比,谁更漂亮", "title": "刘诗诗和杨幂谁漂亮", "text_q_seg": ["演", "员", "刘", "诗", "诗", "跟", "杨", "幂", "比", ",", "谁", "更", "漂", "亮"], "text_t_seg": ["刘", "诗", "诗", "和", "杨", "幂", "谁", "漂", "亮"], "sample_type": "disturb"} -{"id": 1637, "query": "如何入侵他人手机", "title": "怎么入侵别人的手机", "text_q_seg": ["如", "何", "入", "侵", "他", "人", "手", "机"], "text_t_seg": ["怎", "么", "入", "侵", "别", "人", "的", "手", "机"], "sample_type": "disturb"} -{"id": 1638, "query": "红米刷什么系统好", "title": "红米能刷什么系统", "text_q_seg": ["红", "米", "刷", "什", "么", "系", "统", "好"], "text_t_seg": ["红", "米", "能", "刷", "什", "么", "系", "统"], "sample_type": "disturb"} -{"id": 1639, "query": "这叫什么高跟鞋", "title": "大家都把这种高跟鞋叫什么呢", "text_q_seg": ["这", "叫", "什", "么", "高", "跟", "鞋"], "text_t_seg": ["大", "家", "都", "把", "这", "种", "高", "跟", "鞋", "叫", "什", "么", "呢"], "sample_type": "disturb"} -{"id": 1640, "query": "怎么刷弹弹堂点券", "title": "弹弹堂如何刷点卷?", "text_q_seg": ["怎", "么", "刷", "弹", "弹", "堂", "点", "券"], "text_t_seg": ["弹", "弹", "堂", "如", "何", "刷", "点", "卷", "?"], "sample_type": "disturb"} -{"id": 1641, "query": "嚼口香糖可以减肥吗", "title": "嚼口香糖会减肥吗?", "text_q_seg": ["嚼", "口", "香", "糖", "可", "以", "减", "肥", "吗"], "text_t_seg": ["嚼", "口", "香", "糖", "会", "减", "肥", "吗", "?"], "sample_type": "disturb"} -{"id": 1642, "query": "这个女模特叫什么啊?", "title": "这个女模特叫啥", "text_q_seg": ["这", "个", "女", "模", "特", "叫", "什", "么", "啊", "?"], "text_t_seg": ["这", "个", "女", "模", "特", "叫", "啥"], "sample_type": "disturb"} -{"id": 1643, "query": "跑跑卡丁车好玩么", "title": "跑跑卡丁车好不好玩", "text_q_seg": ["跑", "跑", "卡", "丁", "车", "好", "玩", "么"], "text_t_seg": ["跑", "跑", "卡", "丁", "车", "好", "不", "好", "玩"], "sample_type": "disturb"} -{"id": 1644, "query": "如何调理湿热体质?", "title": "湿热体质怎样调理啊", "text_q_seg": ["如", "何", "调", "理", "湿", "热", "体", "质", "?"], "text_t_seg": ["湿", "热", "体", "质", "怎", "样", "调", "理", "啊"], "sample_type": "disturb"} -{"id": 1645, "query": "搞笑电影美国", "title": "好笑的美国电影", "text_q_seg": ["搞", "笑", "电", "影", "美", "国"], "text_t_seg": ["好", "笑", "的", "美", "国", "电", "影"], "sample_type": "disturb"} -{"id": 1646, "query": "京东网买手机可靠吗", "title": "在京东买手机靠谱吗?", "text_q_seg": ["京", "东", "网", "买", "手", "机", "可", "靠", "吗"], "text_t_seg": ["在", "京", "东", "买", "手", "机", "靠", "谱", "吗", "?"], "sample_type": "disturb"} -{"id": 1647, "query": "谁可以帮我们想个网名?", "title": "谁能帮我想个网名?", "text_q_seg": ["谁", "可", "以", "帮", "我", "们", "想", "个", "网", "名", "?"], "text_t_seg": ["谁", "能", "帮", "我", "想", "个", "网", "名", "?"], "sample_type": "disturb"} -{"id": 1648, "query": "一般买车都去哪里会比较便宜呀", "title": "哪里买车便宜点", "text_q_seg": ["一", "般", "买", "车", "都", "去", "哪", "里", "会", "比", "较", "便", "宜", "呀"], "text_t_seg": ["哪", "里", "买", "车", "便", "宜", "点"], "sample_type": "disturb"} -{"id": 1649, "query": "你是如何看待婚姻的呢?", "title": "你如何看待婚姻", "text_q_seg": ["你", "是", "如", "何", "看", "待", "婚", "姻", "的", "呢", "?"], "text_t_seg": ["你", "如", "何", "看", "待", "婚", "姻"], "sample_type": "disturb"} -{"id": 1650, "query": "请帮我找一首歌,张学友的,谢谢", "title": "求张学友的一首歌", "text_q_seg": ["请", "帮", "我", "找", "一", "首", "歌", ",", "张", "学", "友", "的", ",", "谢", "谢"], "text_t_seg": ["求", "张", "学", "友", "的", "一", "首", "歌"], "sample_type": "disturb"} -{"id": 1651, "query": "世事难料猜一生肖", "title": "世事难料属什么生肖", "text_q_seg": ["世", "事", "难", "料", "猜", "一", "生", "肖"], "text_t_seg": ["世", "事", "难", "料", "属", "什", "么", "生", "肖"], "sample_type": "disturb"} -{"id": 1652, "query": "清远县是属于哪里的", "title": "清远属于哪里", "text_q_seg": ["清", "远", "县", "是", "属", "于", "哪", "里", "的"], "text_t_seg": ["清", "远", "属", "于", "哪", "里"], "sample_type": "disturb"} -{"id": 1653, "query": "贫血的话,补血需要吃什么呢", "title": "贫血要吃什么", "text_q_seg": ["贫", "血", "的", "话", ",", "补", "血", "需", "要", "吃", "什", "么", "呢"], "text_t_seg": ["贫", "血", "要", "吃", "什", "么"], "sample_type": "disturb"} -{"id": 1654, "query": "黄豆芽怎么做才好吃呢?", "title": "黄豆芽怎么做好吃?", "text_q_seg": ["黄", "豆", "芽", "怎", "么", "做", "才", "好", "吃", "呢", "?"], "text_t_seg": ["黄", "豆", "芽", "怎", "么", "做", "好", "吃", "?"], "sample_type": "disturb"} -{"id": 1655, "query": "奥特曼你最喜欢那个", "title": "你最爱哪个奥特曼?", "text_q_seg": ["奥", "特", "曼", "你", "最", "喜", "欢", "那", "个"], "text_t_seg": ["你", "最", "爱", "哪", "个", "奥", "特", "曼", "?"], "sample_type": "disturb"} -{"id": 1656, "query": "这张图片是什么动漫", "title": "求这张图片的动漫名!", "text_q_seg": ["这", "张", "图", "片", "是", "什", "么", "动", "漫"], "text_t_seg": ["求", "这", "张", "图", "片", "的", "动", "漫", "名", "!"], "sample_type": "disturb"} -{"id": 1657, "query": "在过年的时候,什么好卖点呢", "title": "要过年了卖点什么好", "text_q_seg": ["在", "过", "年", "的", "时", "候", ",", "什", "么", "好", "卖", "点", "呢"], "text_t_seg": ["要", "过", "年", "了", "卖", "点", "什", "么", "好"], "sample_type": "disturb"} -{"id": 1658, "query": "最近过的怎么样呀,好不好啊", "title": "你们最近过的怎么样?", "text_q_seg": ["最", "近", "过", "的", "怎", "么", "样", "呀", ",", "好", "不", "好", "啊"], "text_t_seg": ["你", "们", "最", "近", "过", "的", "怎", "么", "样", "?"], "sample_type": "disturb"} -{"id": 1659, "query": "现在有什么新电影", "title": "现在可以看的电影都有什么呀?", "text_q_seg": ["现", "在", "有", "什", "么", "新", "电", "影"], "text_t_seg": ["现", "在", "可", "以", "看", "的", "电", "影", "都", "有", "什", "么", "呀", "?"], "sample_type": "disturb"} -{"id": 1660, "query": "生理期可以喝茶吗", "title": "来大姨妈的时候能喝茶吗", "text_q_seg": ["生", "理", "期", "可", "以", "喝", "茶", "吗"], "text_t_seg": ["来", "大", "姨", "妈", "的", "时", "候", "能", "喝", "茶", "吗"], "sample_type": "disturb"} -{"id": 1662, "query": "本图字体是什么", "title": "图中为什么字体", "text_q_seg": ["本", "图", "字", "体", "是", "什", "么"], "text_t_seg": ["图", "中", "为", "什", "么", "字", "体"], "sample_type": "disturb"} -{"id": 1663, "query": "画白雪公主怎么画", "title": "白雪公主如何画", "text_q_seg": ["画", "白", "雪", "公", "主", "怎", "么", "画"], "text_t_seg": ["白", "雪", "公", "主", "如", "何", "画"], "sample_type": "disturb"} -{"id": 1664, "query": "我爱你 日语", "title": "我爱你用日语如何说?", "text_q_seg": ["我", "爱", "你", " ", "日", "语"], "text_t_seg": ["我", "爱", "你", "用", "日", "语", "如", "何", "说", "?"], "sample_type": "disturb"} -{"id": 1666, "query": "踏步机什么牌子的好", "title": "踏步机比较好的牌子都有哪些?", "text_q_seg": ["踏", "步", "机", "什", "么", "牌", "子", "的", "好"], "text_t_seg": ["踏", "步", "机", "比", "较", "好", "的", "牌", "子", "都", "有", "哪", "些", "?"], "sample_type": "disturb"} -{"id": 1667, "query": "这样的鞋怎么穿鞋带", "title": "这个鞋带要怎么串起来呢", "text_q_seg": ["这", "样", "的", "鞋", "怎", "么", "穿", "鞋", "带"], "text_t_seg": ["这", "个", "鞋", "带", "要", "怎", "么", "串", "起", "来", "呢"], "sample_type": "disturb"} -{"id": 1668, "query": "漫画下载的好方法", "title": "怎么下载漫画", "text_q_seg": ["漫", "画", "下", "载", "的", "好", "方", "法"], "text_t_seg": ["怎", "么", "下", "载", "漫", "画"], "sample_type": "disturb"} -{"id": 1670, "query": "如何选择手机", "title": "怎样选择手机", "text_q_seg": ["如", "何", "选", "择", "手", "机"], "text_t_seg": ["怎", "样", "选", "择", "手", "机"], "sample_type": "disturb"} -{"id": 1671, "query": "在淘宝上买电子产品如手机,体验怎么样,手机可靠吗?", "title": "在淘宝上买手机好吗", "text_q_seg": ["在", "淘", "宝", "上", "买", "电", "子", "产", "品", "如", "手", "机", ",", "体", "验", "怎", "么", "样", ",", "手", "机", "可", "靠", "吗", "?"], "text_t_seg": ["在", "淘", "宝", "上", "买", "手", "机", "好", "吗"], "sample_type": "disturb"} -{"id": 1673, "query": "歌曲时间去哪了吉他谱", "title": "时间都去哪啦吉他谱", "text_q_seg": ["歌", "曲", "时", "间", "去", "哪", "了", "吉", "他", "谱"], "text_t_seg": ["时", "间", "都", "去", "哪", "啦", "吉", "他", "谱"], "sample_type": "disturb"} -{"id": 1674, "query": "谁会玩傲世西游", "title": "有谁玩傲世西游吗?", "text_q_seg": ["谁", "会", "玩", "傲", "世", "西", "游"], "text_t_seg": ["有", "谁", "玩", "傲", "世", "西", "游", "吗", "?"], "sample_type": "disturb"} -{"id": 1675, "query": "铁观音的购买方法", "title": "有没有购买铁观音的好的渠道", "text_q_seg": ["铁", "观", "音", "的", "购", "买", "方", "法"], "text_t_seg": ["有", "没", "有", "购", "买", "铁", "观", "音", "的", "好", "的", "渠", "道"], "sample_type": "disturb"} -{"id": 1678, "query": "哪些动画片是跟国宝大熊猫相关的", "title": "有关于熊猫的动画片", "text_q_seg": ["哪", "些", "动", "画", "片", "是", "跟", "国", "宝", "大", "熊", "猫", "相", "关", "的"], "text_t_seg": ["有", "关", "于", "熊", "猫", "的", "动", "画", "片"], "sample_type": "disturb"} -{"id": 1680, "query": "硝酸铜是什么颜色的?", "title": "硝酸铜颜色是什么", "text_q_seg": ["硝", "酸", "铜", "是", "什", "么", "颜", "色", "的", "?"], "text_t_seg": ["硝", "酸", "铜", "颜", "色", "是", "什", "么"], "sample_type": "disturb"} -{"id": 1681, "query": "火影忍者佐助搞小樱", "title": "请帮忙搜索火影忍者佐助跟小樱", "text_q_seg": ["火", "影", "忍", "者", "佐", "助", "搞", "小", "樱"], "text_t_seg": ["请", "帮", "忙", "搜", "索", "火", "影", "忍", "者", "佐", "助", "跟", "小", "樱"], "sample_type": "disturb"} -{"id": 1682, "query": "感冒还能喝啤酒吗?", "title": "感冒了能够喝啤酒吗?", "text_q_seg": ["感", "冒", "还", "能", "喝", "啤", "酒", "吗", "?"], "text_t_seg": ["感", "冒", "了", "能", "够", "喝", "啤", "酒", "吗", "?"], "sample_type": "disturb"} -{"id": 1683, "query": "请问这是什么动漫呢?", "title": "请问这个动漫是哪个呀", "text_q_seg": ["请", "问", "这", "是", "什", "么", "动", "漫", "呢", "?"], "text_t_seg": ["请", "问", "这", "个", "动", "漫", "是", "哪", "个", "呀"], "sample_type": "disturb"} -{"id": 1685, "query": "电炒锅什么牌子好", "title": "什么牌子的电炒锅最好", "text_q_seg": ["电", "炒", "锅", "什", "么", "牌", "子", "好"], "text_t_seg": ["什", "么", "牌", "子", "的", "电", "炒", "锅", "最", "好"], "sample_type": "disturb"} -{"id": 1686, "query": "梦一场萧敬腾伴奏", "title": "求萧敬腾的梦一场的伴奏部分", "text_q_seg": ["梦", "一", "场", "萧", "敬", "腾", "伴", "奏"], "text_t_seg": ["求", "萧", "敬", "腾", "的", "梦", "一", "场", "的", "伴", "奏", "部", "分"], "sample_type": "disturb"} -{"id": 1687, "query": "求一本玄幻小说名", "title": "寻一本玄幻的小说!", "text_q_seg": ["求", "一", "本", "玄", "幻", "小", "说", "名"], "text_t_seg": ["寻", "一", "本", "玄", "幻", "的", "小", "说", "!"], "sample_type": "disturb"} diff --git a/examples/model_interpretation/data/similarity_en b/examples/model_interpretation/data/similarity_en deleted file mode 100644 index 82cf67742d7a..000000000000 --- a/examples/model_interpretation/data/similarity_en +++ /dev/null @@ -1,100 +0,0 @@ -{"id": 1, "sentence1": "Is there a reason why we should travel alone ?", "sentence2": "What are some reasons to travel alone ?", "text_q_seg": ["Is", "there", "a", "reason", "why", "we", "should", "travel", "alone", "?"], "text_t_seg": ["What", "are", "some", "reasons", "to", "travel", "alone", "?"], "sample_type": "ori", "rel_ids": [1660]} -{"id": 2, "sentence1": "I am 25 year old guy and never had a girlfriend . Is this weird ?", "sentence2": "I am 25 years old . I have never had a girlfriend . Is something wrong with me ?", "text_q_seg": ["I", "am", "25", "year", "old", "guy", "and", "never", "had", "a", "girlfriend", ".", "Is", "this", "weird", "?"], "text_t_seg": ["I", "am", "25", "years", "old", ".", "I", "have", "never", "had", "a", "girlfriend", ".", "Is", "something", "wrong", "with", "me", "?"], "sample_type": "ori", "rel_ids": [1661]} -{"id": 3, "sentence1": "What does a good answer on Quora look like ? What does it mean to \" be helpful \" ?", "sentence2": "How do you write a good answer on Quora ?", "text_q_seg": ["What", "does", "a", "good", "answer", "on", "Quora", "look", "like", "?", "What", "does", "it", "mean", "to", "\"", "be", "helpful", "\"", "?"], "text_t_seg": ["How", "do", "you", "write", "a", "good", "answer", "on", "Quora", "?"], "sample_type": "ori", "rel_ids": [1662]} -{"id": 4, "sentence1": "What was the deadliest battle in history ?", "sentence2": "What was the bloodiest battle in history ?", "text_q_seg": ["What", "was", "the", "deadliest", "battle", "in", "history", "?"], "text_t_seg": ["What", "was", "the", "bloodiest", "battle", "in", "history", "?"], "sample_type": "ori", "rel_ids": [1663]} -{"id": 5, "sentence1": "What are your views about demonetisation in India ?", "sentence2": "What do you think about the ban on 500 and 1000 denomination notes in India ?", "text_q_seg": ["What", "are", "your", "views", "about", "demonetisation", "in", "India", "?"], "text_t_seg": ["What", "do", "you", "think", "about", "the", "ban", "on", "500", "and", "1000", "denomination", "notes", "in", "India", "?"], "sample_type": "ori", "rel_ids": [1664]} -{"id": 6, "sentence1": "Is it a bad time to buy a condo or a house in the Bay Area in 2017 ?", "sentence2": "Would 2017 be a good time to buy a house in Bay Area ?", "text_q_seg": ["Is", "it", "a", "bad", "time", "to", "buy", "a", "condo", "or", "a", "house", "in", "the", "Bay", "Area", "in", "2017", "?"], "text_t_seg": ["Would", "2017", "be", "a", "good", "time", "to", "buy", "a", "house", "in", "Bay", "Area", "?"], "sample_type": "ori", "rel_ids": [1665]} -{"id": 7, "sentence1": "What books should I read as an aspiring entrepreneur ?", "sentence2": "What are the top books an aspiring teen entrepreneur should read ?", "text_q_seg": ["What", "books", "should", "I", "read", "as", "an", "aspiring", "entrepreneur", "?"], "text_t_seg": ["What", "are", "the", "top", "books", "an", "aspiring", "teen", "entrepreneur", "should", "read", "?"], "sample_type": "ori", "rel_ids": [1666]} -{"id": 8, "sentence1": "If universe is expanding without a limit and dark and vacuum energy are created as it expands … ?", "sentence2": "If universe can expand without limit and it creates dark / vacuum / gravitational energy with it , then is the potential energy infinite ?", "text_q_seg": ["If", "universe", "is", "expanding", "without", "a", "limit", "and", "dark", "and", "vacuum", "energy", "are", "created", "as", "it", "expands", "…", "?"], "text_t_seg": ["If", "universe", "can", "expand", "without", "limit", "and", "it", "creates", "dark", "/", "vacuum", "/", "gravitational", "energy", "with", "it", ",", "then", "is", "the", "potential", "energy", "infinite", "?"], "sample_type": "ori", "rel_ids": [1667]} -{"id": 9, "sentence1": "What people who you 've never met have influenced your life the most ?", "sentence2": "Who are people you have never met who have had the greatest influence on your life ?", "text_q_seg": ["What", "people", "who", "you", "'ve", "never", "met", "have", "influenced", "your", "life", "the", "most", "?"], "text_t_seg": ["Who", "are", "people", "you", "have", "never", "met", "who", "have", "had", "the", "greatest", "influence", "on", "your", "life", "?"], "sample_type": "ori", "rel_ids": [1668]} -{"id": 10, "sentence1": "I 'm going to be US President one day . What should I start doing now to achieve this ?", "sentence2": "I 'm 16 and I want to become the US president someday . What should I start doing ?", "text_q_seg": ["I", "'m", "going", "to", "be", "US", "President", "one", "day", ".", "What", "should", "I", "start", "doing", "now", "to", "achieve", "this", "?"], "text_t_seg": ["I", "'m", "16", "and", "I", "want", "to", "become", "the", "US", "president", "someday", ".", "What", "should", "I", "start", "doing", "?"], "sample_type": "ori", "rel_ids": [1669]} -{"id": 11, "sentence1": "Why MS Dhoni leave captaincy of ODI & T-20 ?", "sentence2": "Why does M.S Dhoni left captaincy for ODI and T20 ?", "text_q_seg": ["Why", "MS", "Dhoni", "leave", "captaincy", "of", "ODI", "&", "T-20", "?"], "text_t_seg": ["Why", "does", "M.S", "Dhoni", "left", "captaincy", "for", "ODI", "and", "T20", "?"], "sample_type": "ori", "rel_ids": [1670]} -{"id": 12, "sentence1": "What are the procedures for becoming an actuary ?", "sentence2": "What is the procedure of becoming an actuary ?", "text_q_seg": ["What", "are", "the", "procedures", "for", "becoming", "an", "actuary", "?"], "text_t_seg": ["What", "is", "the", "procedure", "of", "becoming", "an", "actuary", "?"], "sample_type": "ori", "rel_ids": [1671]} -{"id": 13, "sentence1": "How do smart and successful people control their emotions ?", "sentence2": "How can I control my emotions ?", "text_q_seg": ["How", "do", "smart", "and", "successful", "people", "control", "their", "emotions", "?"], "text_t_seg": ["How", "can", "I", "control", "my", "emotions", "?"], "sample_type": "ori", "rel_ids": [1672]} -{"id": 14, "sentence1": "What are the best tips for outlining / planning a novel ?", "sentence2": "How do I best outline my novel ?", "text_q_seg": ["What", "are", "the", "best", "tips", "for", "outlining", "/", "planning", "a", "novel", "?"], "text_t_seg": ["How", "do", "I", "best", "outline", "my", "novel", "?"], "sample_type": "ori", "rel_ids": [1673]} -{"id": 15, "sentence1": "What will happen if Donald Trump became the president of America ?", "sentence2": "What will happen now that President - elect Donald Trump has won the election ?", "text_q_seg": ["What", "will", "happen", "if", "Donald", "Trump", "became", "the", "president", "of", "America", "?"], "text_t_seg": ["What", "will", "happen", "now", "that", "President", "-", "elect", "Donald", "Trump", "has", "won", "the", "election", "?"], "sample_type": "ori", "rel_ids": [1674]} -{"id": 16, "sentence1": "Why did n't Ned Stark bring more men to the Tower of Joy ?", "sentence2": "Why did Ned Stark go to the Tower of Joy with so few men ? Why not bring a small guard ( say 20 more men ) of loyal and discreet northerners ?", "text_q_seg": ["Why", "did", "n't", "Ned", "Stark", "bring", "more", "men", "to", "the", "Tower", "of", "Joy", "?"], "text_t_seg": ["Why", "did", "Ned", "Stark", "go", "to", "the", "Tower", "of", "Joy", "with", "so", "few", "men", "?", "Why", "not", "bring", "a", "small", "guard", "(", "say", "20", "more", "men", ")", "of", "loyal", "and", "discreet", "northerners", "?"], "sample_type": "ori", "rel_ids": [1675]} -{"id": 17, "sentence1": "How do you get better grades ?", "sentence2": "How can I dramatically improve my grades ?", "text_q_seg": ["How", "do", "you", "get", "better", "grades", "?"], "text_t_seg": ["How", "can", "I", "dramatically", "improve", "my", "grades", "?"], "sample_type": "ori", "rel_ids": [1676]} -{"id": 18, "sentence1": "What is your new year resolution , short term and long term goal for 2017 ?", "sentence2": "What will be your New Year 's resolution for 2017 ?", "text_q_seg": ["What", "is", "your", "new", "year", "resolution", ",", "short", "term", "and", "long", "term", "goal", "for", "2017", "?"], "text_t_seg": ["What", "will", "be", "your", "New", "Year", "'s", "resolution", "for", "2017", "?"], "sample_type": "ori", "rel_ids": [1677]} -{"id": 19, "sentence1": "What will happen to the next Star Wars movies after Carrie Fisher 's death ?", "sentence2": "What will Carrie Fisher 's death mean for the next Star Wars movies ?", "text_q_seg": ["What", "will", "happen", "to", "the", "next", "Star", "Wars", "movies", "after", "Carrie", "Fisher", "'s", "death", "?"], "text_t_seg": ["What", "will", "Carrie", "Fisher", "'s", "death", "mean", "for", "the", "next", "Star", "Wars", "movies", "?"], "sample_type": "ori", "rel_ids": [1678]} -{"id": 20, "sentence1": "What is an analogy for a smooth ER ?", "sentence2": "What is an analogy for smooth ER ?", "text_q_seg": ["What", "is", "an", "analogy", "for", "a", "smooth", "ER", "?"], "text_t_seg": ["What", "is", "an", "analogy", "for", "smooth", "ER", "?"], "sample_type": "ori", "rel_ids": [1679]} -{"id": 21, "sentence1": "What is the best business to start in Bangalore ?", "sentence2": "What is the best business in Bangalore to start up with ?", "text_q_seg": ["What", "is", "the", "best", "business", "to", "start", "in", "Bangalore", "?"], "text_t_seg": ["What", "is", "the", "best", "business", "in", "Bangalore", "to", "start", "up", "with", "?"], "sample_type": "ori", "rel_ids": [1680]} -{"id": 22, "sentence1": "Why does gst bill so important ?", "sentence2": "What is the effect of GST bill on a common man ?", "text_q_seg": ["Why", "does", "gst", "bill", "so", "important", "?"], "text_t_seg": ["What", "is", "the", "effect", "of", "GST", "bill", "on", "a", "common", "man", "?"], "sample_type": "ori", "rel_ids": [1681]} -{"id": 23, "sentence1": "Which aircraft was superior - the Douglas DC8 or the Boeing 707 ?", "sentence2": "Was the Douglas DC8 a superior aircraft to the Boeing 707 ?", "text_q_seg": ["Which", "aircraft", "was", "superior", "-", "the", "Douglas", "DC8", "or", "the", "Boeing", "707", "?"], "text_t_seg": ["Was", "the", "Douglas", "DC8", "a", "superior", "aircraft", "to", "the", "Boeing", "707", "?"], "sample_type": "ori", "rel_ids": [1682]} -{"id": 24, "sentence1": "How can I expand my IQ ?", "sentence2": "What can I do to increase my IQ ?", "text_q_seg": ["How", "can", "I", "expand", "my", "IQ", "?"], "text_t_seg": ["What", "can", "I", "do", "to", "increase", "my", "IQ", "?"], "sample_type": "ori", "rel_ids": [1683]} -{"id": 25, "sentence1": "What does it mean when a girl take a day to reply to your text ?", "sentence2": "What does it mean when girls reply to a text a day after ?", "text_q_seg": ["What", "does", "it", "mean", "when", "a", "girl", "take", "a", "day", "to", "reply", "to", "your", "text", "?"], "text_t_seg": ["What", "does", "it", "mean", "when", "girls", "reply", "to", "a", "text", "a", "day", "after", "?"], "sample_type": "ori", "rel_ids": [1684]} -{"id": 26, "sentence1": "How can I stop myself from watching too much of porn ?", "sentence2": "How shall I stop watching porn ?", "text_q_seg": ["How", "can", "I", "stop", "myself", "from", "watching", "too", "much", "of", "porn", "?"], "text_t_seg": ["How", "shall", "I", "stop", "watching", "porn", "?"], "sample_type": "ori", "rel_ids": [1685]} -{"id": 27, "sentence1": "What will be the effect of banning 500 and 1000 Rs notes on real estate sector in India ? Can we expect sharp fall in prices in short / long term ?", "sentence2": "What will the real estate look like now after the 500 and 1000 scraping ?", "text_q_seg": ["What", "will", "be", "the", "effect", "of", "banning", "500", "and", "1000", "Rs", "notes", "on", "real", "estate", "sector", "in", "India", "?", "Can", "we", "expect", "sharp", "fall", "in", "prices", "in", "short", "/", "long", "term", "?"], "text_t_seg": ["What", "will", "the", "real", "estate", "look", "like", "now", "after", "the", "500", "and", "1000", "scraping", "?"], "sample_type": "ori", "rel_ids": [1686]} -{"id": 28, "sentence1": "Is it worth it to pay for PhD from my pocket ?", "sentence2": "Is it foolish to pay for your PhD out of your own pocket ?", "text_q_seg": ["Is", "it", "worth", "it", "to", "pay", "for", "PhD", "from", "my", "pocket", "?"], "text_t_seg": ["Is", "it", "foolish", "to", "pay", "for", "your", "PhD", "out", "of", "your", "own", "pocket", "?"], "sample_type": "ori", "rel_ids": [1687]} -{"id": 29, "sentence1": "What is the maximum file size that can be uploaded in Whatsapp ?", "sentence2": "What is the maximum file size on WhatsApp ?", "text_q_seg": ["What", "is", "the", "maximum", "file", "size", "that", "can", "be", "uploaded", "in", "Whatsapp", "?"], "text_t_seg": ["What", "is", "the", "maximum", "file", "size", "on", "WhatsApp", "?"], "sample_type": "ori", "rel_ids": [1688]} -{"id": 30, "sentence1": "What are the best ways to learn to cook ?", "sentence2": "How do I learn to cook ?", "text_q_seg": ["What", "are", "the", "best", "ways", "to", "learn", "to", "cook", "?"], "text_t_seg": ["How", "do", "I", "learn", "to", "cook", "?"], "sample_type": "ori", "rel_ids": [1689]} -{"id": 31, "sentence1": "What was first word spoken by human ?", "sentence2": "What is the first word ever spoken ?", "text_q_seg": ["What", "was", "first", "word", "spoken", "by", "human", "?"], "text_t_seg": ["What", "is", "the", "first", "word", "ever", "spoken", "?"], "sample_type": "ori", "rel_ids": [1690]} -{"id": 32, "sentence1": "Should I give my JEE Main exam offline or online ?", "sentence2": "Which mode is best for JEE MAIN 2017 online exam or offline ?", "text_q_seg": ["Should", "I", "give", "my", "JEE", "Main", "exam", "offline", "or", "online", "?"], "text_t_seg": ["Which", "mode", "is", "best", "for", "JEE", "MAIN", "2017", "online", "exam", "or", "offline", "?"], "sample_type": "ori", "rel_ids": [1691]} -{"id": 33, "sentence1": "Is literally infinite number of unique human DNAs possible ?", "sentence2": "What is the maximum number of genetically unique individuals that human genome allows ?", "text_q_seg": ["Is", "literally", "infinite", "number", "of", "unique", "human", "DNAs", "possible", "?"], "text_t_seg": ["What", "is", "the", "maximum", "number", "of", "genetically", "unique", "individuals", "that", "human", "genome", "allows", "?"], "sample_type": "ori", "rel_ids": [1692]} -{"id": 34, "sentence1": "What is motive of Mulayam Singh Yadav behind expelling Akhilesh Yadav from Samajwadi party ?", "sentence2": "Why did Mulayam Singh Yadav expel Akhilesh Yadav from the Samajwadi Party for 6 years ?", "text_q_seg": ["What", "is", "motive", "of", "Mulayam", "Singh", "Yadav", "behind", "expelling", "Akhilesh", "Yadav", "from", "Samajwadi", "party", "?"], "text_t_seg": ["Why", "did", "Mulayam", "Singh", "Yadav", "expel", "Akhilesh", "Yadav", "from", "the", "Samajwadi", "Party", "for", "6", "years", "?"], "sample_type": "ori", "rel_ids": [1693]} -{"id": 35, "sentence1": "Why do we need to philosophize ?", "sentence2": "Why do we need to philosophize with others ?", "text_q_seg": ["Why", "do", "we", "need", "to", "philosophize", "?"], "text_t_seg": ["Why", "do", "we", "need", "to", "philosophize", "with", "others", "?"], "sample_type": "ori", "rel_ids": [1694]} -{"id": 36, "sentence1": "Is there any way to recover e - mails that were deleted from a Gmail account ?", "sentence2": "Is there any way to retrieve my deleted emails from my Gmail account ?", "text_q_seg": ["Is", "there", "any", "way", "to", "recover", "e", "-", "mails", "that", "were", "deleted", "from", "a", "Gmail", "account", "?"], "text_t_seg": ["Is", "there", "any", "way", "to", "retrieve", "my", "deleted", "emails", "from", "my", "Gmail", "account", "?"], "sample_type": "ori", "rel_ids": [1695]} -{"id": 37, "sentence1": "How do I find my own gmail accounts list ?", "sentence2": "How can you find all of your Gmail accounts ?", "text_q_seg": ["How", "do", "I", "find", "my", "own", "gmail", "accounts", "list", "?"], "text_t_seg": ["How", "can", "you", "find", "all", "of", "your", "Gmail", "accounts", "?"], "sample_type": "ori", "rel_ids": [1696]} -{"id": 38, "sentence1": "Where can I get sparkling and well maintained cleaning service in Sydney ?", "sentence2": "Where can I get cleaning services in Sydney ?", "text_q_seg": ["Where", "can", "I", "get", "sparkling", "and", "well", "maintained", "cleaning", "service", "in", "Sydney", "?"], "text_t_seg": ["Where", "can", "I", "get", "cleaning", "services", "in", "Sydney", "?"], "sample_type": "ori", "rel_ids": [1697]} -{"id": 39, "sentence1": "Can Fast and Furious 7 gross $ 1 billion worldwide ?", "sentence2": "Will Furious 7 be the first movie in the franchise to gross a billion dollars ?", "text_q_seg": ["Can", "Fast", "and", "Furious", "7", "gross", "$", "1", "billion", "worldwide", "?"], "text_t_seg": ["Will", "Furious", "7", "be", "the", "first", "movie", "in", "the", "franchise", "to", "gross", "a", "billion", "dollars", "?"], "sample_type": "ori", "rel_ids": [1698]} -{"id": 40, "sentence1": "Which is the best book for learning language c++ ?", "sentence2": "What is a good book for learning the basics of C++ programming ?", "text_q_seg": ["Which", "is", "the", "best", "book", "for", "learning", "language", "c++", "?"], "text_t_seg": ["What", "is", "a", "good", "book", "for", "learning", "the", "basics", "of", "C++", "programming", "?"], "sample_type": "ori", "rel_ids": [1699]} -{"id": 41, "sentence1": "What will be Barack Obama 's legacy ?", "sentence2": "Based on what we know now , what will Barack Obama 's historical legacy be ?", "text_q_seg": ["What", "will", "be", "Barack", "Obama", "'s", "legacy", "?"], "text_t_seg": ["Based", "on", "what", "we", "know", "now", ",", "what", "will", "Barack", "Obama", "'s", "historical", "legacy", "be", "?"], "sample_type": "ori", "rel_ids": [1700]} -{"id": 42, "sentence1": "Why do so many people hate Hilary Clinton ?", "sentence2": "What are the reasons that people dislike Hillary Clinton ?", "text_q_seg": ["Why", "do", "so", "many", "people", "hate", "Hilary", "Clinton", "?"], "text_t_seg": ["What", "are", "the", "reasons", "that", "people", "dislike", "Hillary", "Clinton", "?"], "sample_type": "ori", "rel_ids": [1701]} -{"id": 43, "sentence1": "How do l see who viewed my videos on Instagram ?", "sentence2": "How can I see who viewed my video on Instagram but did n't like my video ?", "text_q_seg": ["How", "do", "l", "see", "who", "viewed", "my", "videos", "on", "Instagram", "?"], "text_t_seg": ["How", "can", "I", "see", "who", "viewed", "my", "video", "on", "Instagram", "but", "did", "n't", "like", "my", "video", "?"], "sample_type": "ori", "rel_ids": [1702]} -{"id": 44, "sentence1": "Why is that the sky is so blue ?", "sentence2": "Why is the sky is blue ?", "text_q_seg": ["Why", "is", "that", "the", "sky", "is", "so", "blue", "?"], "text_t_seg": ["Why", "is", "the", "sky", "is", "blue", "?"], "sample_type": "ori", "rel_ids": [1703]} -{"id": 45, "sentence1": "How can I learn English well in a short time ?", "sentence2": "How can I learn English in a short time ?", "text_q_seg": ["How", "can", "I", "learn", "English", "well", "in", "a", "short", "time", "?"], "text_t_seg": ["How", "can", "I", "learn", "English", "in", "a", "short", "time", "?"], "sample_type": "ori", "rel_ids": [1704]} -{"id": 46, "sentence1": "How can I stop eating junk and processed food addiction and stay healthy ?", "sentence2": "How do I stop my cravings for junk food ?", "text_q_seg": ["How", "can", "I", "stop", "eating", "junk", "and", "processed", "food", "addiction", "and", "stay", "healthy", "?"], "text_t_seg": ["How", "do", "I", "stop", "my", "cravings", "for", "junk", "food", "?"], "sample_type": "ori", "rel_ids": [1705]} -{"id": 47, "sentence1": "What are the movies one should see ?", "sentence2": "What are the greatest movies I have to see ?", "text_q_seg": ["What", "are", "the", "movies", "one", "should", "see", "?"], "text_t_seg": ["What", "are", "the", "greatest", "movies", "I", "have", "to", "see", "?"], "sample_type": "ori", "rel_ids": [1706]} -{"id": 48, "sentence1": "What is an accurate way to calculate your IQ ?", "sentence2": "What 's the most accurate way to test my IQ ?", "text_q_seg": ["What", "is", "an", "accurate", "way", "to", "calculate", "your", "IQ", "?"], "text_t_seg": ["What", "'s", "the", "most", "accurate", "way", "to", "test", "my", "IQ", "?"], "sample_type": "ori", "rel_ids": [1707]} -{"id": 49, "sentence1": "Is our PM Modi doing the correct thing with 500 and 1000 Rs notes ?", "sentence2": "What do you think about ban on Rs . 500 and Rs . 1000 currency notes ?", "text_q_seg": ["Is", "our", "PM", "Modi", "doing", "the", "correct", "thing", "with", "500", "and", "1000", "Rs", "notes", "?"], "text_t_seg": ["What", "do", "you", "think", "about", "ban", "on", "Rs", ".", "500", "and", "Rs", ".", "1000", "currency", "notes", "?"], "sample_type": "ori", "rel_ids": [1708]} -{"id": 50, "sentence1": "Why is the firm 's marginal cost curve equal supply curve ?", "sentence2": "How can supply curve tell about marginal cost ?", "text_q_seg": ["Why", "is", "the", "firm", "'s", "marginal", "cost", "curve", "equal", "supply", "curve", "?"], "text_t_seg": ["How", "can", "supply", "curve", "tell", "about", "marginal", "cost", "?"], "sample_type": "ori", "rel_ids": [1709]} -{"id": 1660, "sentence1": "Is there any reason that we should travel alone ?", "sentence2": "What are some reasons to travel alone ?", "text_q_seg": ["Is", "there", "any", "reason", "that", "we", "should", "travel", "alone", "?"], "text_t_seg": ["What", "are", "some", "reasons", "to", "travel", "alone", "?"], "sample_type": "disturb"} -{"id": 1661, "sentence1": "I am 25 year old guy and never had a girlfriend . Is this odd ?", "sentence2": "I am 25 years old . I have never had a girlfriend . Is something wrong with me ?", "text_q_seg": ["I", "am", "25", "year", "old", "guy", "and", "never", "had", "a", "girlfriend", ".", "Is", "this", "odd", "?"], "text_t_seg": ["I", "am", "25", "years", "old", ".", "I", "have", "never", "had", "a", "girlfriend", ".", "Is", "something", "wrong", "with", "me", "?"], "sample_type": "disturb"} -{"id": 1662, "sentence1": "what is a good answer on Quora that is helpful ?", "sentence2": "How do you write a good answer on Quora ?", "text_q_seg": ["what", "is", "a", "good", "answer", "on", "Quora", "that", "is", "helpful", "?"], "text_t_seg": ["How", "do", "you", "write", "a", "good", "answer", "on", "Quora", "?"], "sample_type": "disturb"} -{"id": 1663, "sentence1": "What was the most fatal battle in history ?", "sentence2": "What was the bloodiest battle in history ?", "text_q_seg": ["What", "was", "the", "most", "fatal", "battle", "in", "history", "?"], "text_t_seg": ["What", "was", "the", "bloodiest", "battle", "in", "history", "?"], "sample_type": "disturb"} -{"id": 1664, "sentence1": "What are your opions on demonetisation in India ?", "sentence2": "What do you think about the ban on 500 and 1000 denomination notes in India ?", "text_q_seg": ["What", "are", "your", "opions", "on", "demonetisation", "in", "India", "?"], "text_t_seg": ["What", "do", "you", "think", "about", "the", "ban", "on", "500", "and", "1000", "denomination", "notes", "in", "India", "?"], "sample_type": "disturb"} -{"id": 1665, "sentence1": "Is it a bad time to buy a condo or a house in the Bay Area in 2017 ?", "sentence2": "Is 2017 a good time to buy a house in Bay Area ?", "text_q_seg": ["Is", "it", "a", "bad", "time", "to", "buy", "a", "condo", "or", "a", "house", "in", "the", "Bay", "Area", "in", "2017", "?"], "text_t_seg": ["Is", "2017", "a", "good", "time", "to", "buy", "a", "house", "in", "Bay", "Area", "?"], "sample_type": "disturb"} -{"id": 1666, "sentence1": "What books should an aspiring entrepreneur read ?", "sentence2": "What are the top books an aspiring teen entrepreneur should read ?", "text_q_seg": ["What", "books", "should", "an", "aspiring", "entrepreneur", "read", "?"], "text_t_seg": ["What", "are", "the", "top", "books", "an", "aspiring", "teen", "entrepreneur", "should", "read", "?"], "sample_type": "disturb"} -{"id": 1667, "sentence1": "If universe is expanding infinitely and dark and vacuum energy are created as it expands … ?", "sentence2": "If universe can expand without limit and it creates dark / vacuum / gravitational energy with it , then is the potential energy infinite ?", "text_q_seg": ["If", "universe", "is", "expanding", "infinitely", "and", "dark", "and", "vacuum", "energy", "are", "created", "as", "it", "expands", "…", "?"], "text_t_seg": ["If", "universe", "can", "expand", "without", "limit", "and", "it", "creates", "dark", "/", "vacuum", "/", "gravitational", "energy", "with", "it", ",", "then", "is", "the", "potential", "energy", "infinite", "?"], "sample_type": "disturb"} -{"id": 1668, "sentence1": "Who 's the greatest influencer on your life that you have never met ?", "sentence2": "Who are people you have never met who have had the greatest influence on your life ?", "text_q_seg": ["Who", "'s", "the", "greatest", "influencer", "on", "your", "life", "that", "you", "have", "never", "met", "?"], "text_t_seg": ["Who", "are", "people", "you", "have", "never", "met", "who", "have", "had", "the", "greatest", "influence", "on", "your", "life", "?"], "sample_type": "disturb"} -{"id": 1669, "sentence1": "I 'm going to be US President in the future . What should I start doing now to achieve this ?", "sentence2": "I 'm 16 and I want to become the US president someday . What should I start doing ?", "text_q_seg": ["I", "'m", "going", "to", "be", "US", "President", "in", "the", "future", ".", "What", "should", "I", "start", "doing", "now", "to", "achieve", "this", "?"], "text_t_seg": ["I", "'m", "16", "and", "I", "want", "to", "become", "the", "US", "president", "someday", ".", "What", "should", "I", "start", "doing", "?"], "sample_type": "disturb"} -{"id": 1670, "sentence1": "For what reason did MS Dhoni leave captaincy of ODI & T-20 ?", "sentence2": "Why does M.S Dhoni left captaincy for ODI and T20 ?", "text_q_seg": ["For", "what", "reason", "did", "MS", "Dhoni", "leave", "captaincy", "of", "ODI", "&", "T-20", "?"], "text_t_seg": ["Why", "does", "M.S", "Dhoni", "left", "captaincy", "for", "ODI", "and", "T20", "?"], "sample_type": "disturb"} -{"id": 1671, "sentence1": "How to become an actuary ?", "sentence2": "What is the procedure of becoming an actuary ?", "text_q_seg": ["How", "to", "become", "an", "actuary", "?"], "text_t_seg": ["What", "is", "the", "procedure", "of", "becoming", "an", "actuary", "?"], "sample_type": "disturb"} -{"id": 1672, "sentence1": "Are there any smart ways to control emotions ?", "sentence2": "How can I control my emotions ?", "text_q_seg": ["Are", "there", "any", "smart", "ways", "to", "control", "emotions", "?"], "text_t_seg": ["How", "can", "I", "control", "my", "emotions", "?"], "sample_type": "disturb"} -{"id": 1673, "sentence1": "What are the best methods for outlining / planning a novel ?", "sentence2": "How do I best outline my novel ?", "text_q_seg": ["What", "are", "the", "best", "methods", "for", "outlining", "/", "planning", "a", "novel", "?"], "text_t_seg": ["How", "do", "I", "best", "outline", "my", "novel", "?"], "sample_type": "disturb"} -{"id": 1674, "sentence1": "What will happen if Donald Trump was elected the president of US ?", "sentence2": "What will happen now that President - elect Donald Trump has won the election ?", "text_q_seg": ["What", "will", "happen", "if", "Donald", "Trump", "was", "elected", "the", "president", "of", "US", "?"], "text_t_seg": ["What", "will", "happen", "now", "that", "President", "-", "elect", "Donald", "Trump", "has", "won", "the", "election", "?"], "sample_type": "disturb"} -{"id": 1675, "sentence1": "Why did Ned Stark bring very few men to the Tower of Joy ?", "sentence2": "Why did Ned Stark go to the Tower of Joy with so few men ? Why not bring a small guard ( say 20 more men ) of loyal and discreet northerners ?", "text_q_seg": ["Why", "did", "Ned", "Stark", "bring", "very", "few", "men", "to", "the", "Tower", "of", "Joy", "?"], "text_t_seg": ["Why", "did", "Ned", "Stark", "go", "to", "the", "Tower", "of", "Joy", "with", "so", "few", "men", "?", "Why", "not", "bring", "a", "small", "guard", "(", "say", "20", "more", "men", ")", "of", "loyal", "and", "discreet", "northerners", "?"], "sample_type": "disturb"} -{"id": 1676, "sentence1": "How do you get better grades ?", "sentence2": "How can I improve my grades ?", "text_q_seg": ["How", "do", "you", "get", "better", "grades", "?"], "text_t_seg": ["How", "can", "I", "improve", "my", "grades", "?"], "sample_type": "disturb"} -{"id": 1677, "sentence1": "What is your new year resolution , short term and long term goal for 2017 ?", "sentence2": "what will be your goals to reach in 2017", "text_q_seg": ["What", "is", "your", "new", "year", "resolution", ",", "short", "term", "and", "long", "term", "goal", "for", "2017", "?"], "text_t_seg": ["what", "will", "be", "your", "goals", "to", "reach", "in", "2017"], "sample_type": "disturb"} -{"id": 1678, "sentence1": "What will happen to the next Star Wars movies after Carrie Fisher 's death ?", "sentence2": "What will Carrie Fisher 's death mean for later Star Wars movies ?", "text_q_seg": ["What", "will", "happen", "to", "the", "next", "Star", "Wars", "movies", "after", "Carrie", "Fisher", "'s", "death", "?"], "text_t_seg": ["What", "will", "Carrie", "Fisher", "'s", "death", "mean", "for", "later", "Star", "Wars", "movies", "?"], "sample_type": "disturb"} -{"id": 1679, "sentence1": "Can you give me an analogy for a smooth ER ?", "sentence2": "What is an analogy for smooth ER ?", "text_q_seg": ["Can", "you", "give", "me", "an", "analogy", "for", "a", "smooth", "ER", "?"], "text_t_seg": ["What", "is", "an", "analogy", "for", "smooth", "ER", "?"], "sample_type": "disturb"} -{"id": 1680, "sentence1": "What is the best business to launch in Bangalore ?", "sentence2": "What is the best business in Bangalore to start up with ?", "text_q_seg": ["What", "is", "the", "best", "business", "to", "launch", "in", "Bangalore", "?"], "text_t_seg": ["What", "is", "the", "best", "business", "in", "Bangalore", "to", "start", "up", "with", "?"], "sample_type": "disturb"} -{"id": 1681, "sentence1": "Why does gst bill so important ?", "sentence2": "What is the impact of GST bill on a common man ?", "text_q_seg": ["Why", "does", "gst", "bill", "so", "important", "?"], "text_t_seg": ["What", "is", "the", "impact", "of", "GST", "bill", "on", "a", "common", "man", "?"], "sample_type": "disturb"} -{"id": 1682, "sentence1": "Which aircraft was better - the Douglas DC8 or the Boeing 707 ?", "sentence2": "Was the Douglas DC8 a superior aircraft to the Boeing 707 ?", "text_q_seg": ["Which", "aircraft", "was", "better", "-", "the", "Douglas", "DC8", "or", "the", "Boeing", "707", "?"], "text_t_seg": ["Was", "the", "Douglas", "DC8", "a", "superior", "aircraft", "to", "the", "Boeing", "707", "?"], "sample_type": "disturb"} -{"id": 1683, "sentence1": "How can I expand my IQ ?", "sentence2": "Are there any ways to increase my IQ ?", "text_q_seg": ["How", "can", "I", "expand", "my", "IQ", "?"], "text_t_seg": ["Are", "there", "any", "ways", "to", "increase", "my", "IQ", "?"], "sample_type": "disturb"} -{"id": 1684, "sentence1": "What does it mean when a girl take a day to reply to your text ?", "sentence2": "What does it imply when girls reply to a text a day after ?", "text_q_seg": ["What", "does", "it", "mean", "when", "a", "girl", "take", "a", "day", "to", "reply", "to", "your", "text", "?"], "text_t_seg": ["What", "does", "it", "imply", "when", "girls", "reply", "to", "a", "text", "a", "day", "after", "?"], "sample_type": "disturb"} -{"id": 1685, "sentence1": "How can I stop myself from watching too much of porn ?", "sentence2": "How shall I quit watching porn ?", "text_q_seg": ["How", "can", "I", "stop", "myself", "from", "watching", "too", "much", "of", "porn", "?"], "text_t_seg": ["How", "shall", "I", "quit", "watching", "porn", "?"], "sample_type": "disturb"} -{"id": 1686, "sentence1": "What will be the consequence of banning 500 and 1000 Rs notes on real estate sector in India ? Can we expect sharp fall in prices in short / long term ?", "sentence2": "What will the real estate look like now after the 500 and 1000 scraping ?", "text_q_seg": ["What", "will", "be", "the", "consequence", "of", "banning", "500", "and", "1000", "Rs", "notes", "on", "real", "estate", "sector", "in", "India", "?", "Can", "we", "expect", "sharp", "fall", "in", "prices", "in", "short", "/", "long", "term", "?"], "text_t_seg": ["What", "will", "the", "real", "estate", "look", "like", "now", "after", "the", "500", "and", "1000", "scraping", "?"], "sample_type": "disturb"} -{"id": 1687, "sentence1": "Is it worthwhile to pay for PhD from my pocket ?", "sentence2": "Is it foolish to pay for your PhD out of your own pocket ?", "text_q_seg": ["Is", "it", "worthwhile", "to", "pay", "for", "PhD", "from", "my", "pocket", "?"], "text_t_seg": ["Is", "it", "foolish", "to", "pay", "for", "your", "PhD", "out", "of", "your", "own", "pocket", "?"], "sample_type": "disturb"} -{"id": 1688, "sentence1": "What is the maximum file size that is allowed to be uploaded in Whatsapp ?", "sentence2": "What is the maximum file size on WhatsApp ?", "text_q_seg": ["What", "is", "the", "maximum", "file", "size", "that", "is", "allowed", "to", "be", "uploaded", "in", "Whatsapp", "?"], "text_t_seg": ["What", "is", "the", "maximum", "file", "size", "on", "WhatsApp", "?"], "sample_type": "disturb"} -{"id": 1689, "sentence1": "What are the best ways to learn to cook ?", "sentence2": "How can I learn to cook", "text_q_seg": ["What", "are", "the", "best", "ways", "to", "learn", "to", "cook", "?"], "text_t_seg": ["How", "can", "I", "learn", "to", "cook"], "sample_type": "disturb"} -{"id": 1690, "sentence1": "What was the first word uttered by human ?", "sentence2": "What is the first word ever spoken ?", "text_q_seg": ["What", "was", "the", "first", "word", "uttered", "by", "human", "?"], "text_t_seg": ["What", "is", "the", "first", "word", "ever", "spoken", "?"], "sample_type": "disturb"} -{"id": 1691, "sentence1": "Should I attend JEE Main exam offline or online ?", "sentence2": "Which mode is best for JEE MAIN 2017 online exam or offline ?", "text_q_seg": ["Should", "I", "attend", "JEE", "Main", "exam", "offline", "or", "online", "?"], "text_t_seg": ["Which", "mode", "is", "best", "for", "JEE", "MAIN", "2017", "online", "exam", "or", "offline", "?"], "sample_type": "disturb"} -{"id": 1692, "sentence1": "Is literally infinite number of unique human DNAs possible ?", "sentence2": "What is the maximum number of genetically unique human individuals ?", "text_q_seg": ["Is", "literally", "infinite", "number", "of", "unique", "human", "DNAs", "possible", "?"], "text_t_seg": ["What", "is", "the", "maximum", "number", "of", "genetically", "unique", "human", "individuals", "?"], "sample_type": "disturb"} -{"id": 1693, "sentence1": "What is motive of Mulayam Singh Yadav behind expelling Akhilesh Yadav from Samajwadi party ?", "sentence2": "What 's the reason for Mulayam Singh Yadav expelling Akhilesh Yadav from the Samajwadi Party for 6 years ?", "text_q_seg": ["What", "is", "motive", "of", "Mulayam", "Singh", "Yadav", "behind", "expelling", "Akhilesh", "Yadav", "from", "Samajwadi", "party", "?"], "text_t_seg": ["What", "'s", "the", "reason", "for", "Mulayam", "Singh", "Yadav", "expelling", "Akhilesh", "Yadav", "from", "the", "Samajwadi", "Party", "for", "6", "years", "?"], "sample_type": "disturb"} -{"id": 1694, "sentence1": "Why do we need to talk with eloquence ?", "sentence2": "Why do we need to philosophize with others ?", "text_q_seg": ["Why", "do", "we", "need", "to", "talk", "with", "eloquence", "?"], "text_t_seg": ["Why", "do", "we", "need", "to", "philosophize", "with", "others", "?"], "sample_type": "disturb"} -{"id": 1695, "sentence1": "How to recover e - mails that were deleted from a Gmail account ?", "sentence2": "Is there any way to retrieve my deleted emails from my Gmail account ?", "text_q_seg": ["How", "to", "recover", "e", "-", "mails", "that", "were", "deleted", "from", "a", "Gmail", "account", "?"], "text_t_seg": ["Is", "there", "any", "way", "to", "retrieve", "my", "deleted", "emails", "from", "my", "Gmail", "account", "?"], "sample_type": "disturb"} -{"id": 1696, "sentence1": "How to find my own gmail accounts list ?", "sentence2": "How can you find all of your Gmail accounts ?", "text_q_seg": ["How", "to", "find", "my", "own", "gmail", "accounts", "list", "?"], "text_t_seg": ["How", "can", "you", "find", "all", "of", "your", "Gmail", "accounts", "?"], "sample_type": "disturb"} -{"id": 1697, "sentence1": "Where can I get sparkling and well maintained cleaning service in Sydney ?", "sentence2": "Where are cleaning services provided in Sydney ?", "text_q_seg": ["Where", "can", "I", "get", "sparkling", "and", "well", "maintained", "cleaning", "service", "in", "Sydney", "?"], "text_t_seg": ["Where", "are", "cleaning", "services", "provided", "in", "Sydney", "?"], "sample_type": "disturb"} -{"id": 1698, "sentence1": "Can Fast and Furious 7 take $ 1 billion at the box office worldwide ?", "sentence2": "Will Furious 7 be the first movie in the franchise to gross a billion dollars ?", "text_q_seg": ["Can", "Fast", "and", "Furious", "7", "take", "$", "1", "billion", "at", "the", "box", "office", "worldwide", "?"], "text_t_seg": ["Will", "Furious", "7", "be", "the", "first", "movie", "in", "the", "franchise", "to", "gross", "a", "billion", "dollars", "?"], "sample_type": "disturb"} -{"id": 1699, "sentence1": "Is there a book suitable to learn language c++ ?", "sentence2": "What is a good book for learning the basics of C++ programming ?", "text_q_seg": ["Is", "there", "a", "book", "suitable", "to", "learn", "language", "c++", "?"], "text_t_seg": ["What", "is", "a", "good", "book", "for", "learning", "the", "basics", "of", "C++", "programming", "?"], "sample_type": "disturb"} -{"id": 1700, "sentence1": "What will be Barack Obama 's legacy when he leaves office ?", "sentence2": "Based on what we know now , what will Barack Obama 's historical legacy be ?", "text_q_seg": ["What", "will", "be", "Barack", "Obama", "'s", "legacy", "when", "he", "leaves", "office", "?"], "text_t_seg": ["Based", "on", "what", "we", "know", "now", ",", "what", "will", "Barack", "Obama", "'s", "historical", "legacy", "be", "?"], "sample_type": "disturb"} -{"id": 1701, "sentence1": "Why do n't people like Hilary Clinton ?", "sentence2": "What are the reasons that people dislike Hillary Clinton ?", "text_q_seg": ["Why", "do", "n't", "people", "like", "Hilary", "Clinton", "?"], "text_t_seg": ["What", "are", "the", "reasons", "that", "people", "dislike", "Hillary", "Clinton", "?"], "sample_type": "disturb"} -{"id": 1702, "sentence1": "How to see who viewed my videos on Instagram ?", "sentence2": "How can I see who viewed my video on Instagram but did n't like my video ?", "text_q_seg": ["How", "to", "see", "who", "viewed", "my", "videos", "on", "Instagram", "?"], "text_t_seg": ["How", "can", "I", "see", "who", "viewed", "my", "video", "on", "Instagram", "but", "did", "n't", "like", "my", "video", "?"], "sample_type": "disturb"} -{"id": 1703, "sentence1": "why is the sky so blue ?", "sentence2": "Why is the sky is blue ?", "text_q_seg": ["why", "is", "the", "sky", "so", "blue", "?"], "text_t_seg": ["Why", "is", "the", "sky", "is", "blue", "?"], "sample_type": "disturb"} -{"id": 1704, "sentence1": "How can I learn English well in a short time ?", "sentence2": "How can I learn English efficiently ?", "text_q_seg": ["How", "can", "I", "learn", "English", "well", "in", "a", "short", "time", "?"], "text_t_seg": ["How", "can", "I", "learn", "English", "efficiently", "?"], "sample_type": "disturb"} -{"id": 1705, "sentence1": "How can I stop eating junk and processed food addiction and stay healthy ?", "sentence2": "How to quit junk food ?", "text_q_seg": ["How", "can", "I", "stop", "eating", "junk", "and", "processed", "food", "addiction", "and", "stay", "healthy", "?"], "text_t_seg": ["How", "to", "quit", "junk", "food", "?"], "sample_type": "disturb"} -{"id": 1706, "sentence1": "What are the movies one should see ?", "sentence2": "What are the greatest movies I must see ?", "text_q_seg": ["What", "are", "the", "movies", "one", "should", "see", "?"], "text_t_seg": ["What", "are", "the", "greatest", "movies", "I", "must", "see", "?"], "sample_type": "disturb"} -{"id": 1707, "sentence1": "What is an accurate way to calculate your IQ ?", "sentence2": "How to test my IQ accurately ?", "text_q_seg": ["What", "is", "an", "accurate", "way", "to", "calculate", "your", "IQ", "?"], "text_t_seg": ["How", "to", "test", "my", "IQ", "accurately", "?"], "sample_type": "disturb"} -{"id": 1708, "sentence1": "Is our PM Modi doing the correct thing with 500 and 1000 Rs notes ?", "sentence2": "What is your view on the ban on Rs . 500 and Rs . 1000 currency notes ?", "text_q_seg": ["Is", "our", "PM", "Modi", "doing", "the", "correct", "thing", "with", "500", "and", "1000", "Rs", "notes", "?"], "text_t_seg": ["What", "is", "your", "view", "on", "the", "ban", "on", "Rs", ".", "500", "and", "Rs", ".", "1000", "currency", "notes", "?"], "sample_type": "disturb"} -{"id": 1709, "sentence1": "Why is the firm 's marginal cost curve equal supply curve ?", "sentence2": "How can supply curve reflect marginal cost ?", "text_q_seg": ["Why", "is", "the", "firm", "'s", "marginal", "cost", "curve", "equal", "supply", "curve", "?"], "text_t_seg": ["How", "can", "supply", "curve", "reflect", "marginal", "cost", "?"], "sample_type": "disturb"} diff --git a/examples/model_interpretation/download.sh b/examples/model_interpretation/download.sh deleted file mode 100755 index 7d98bfaceecc..000000000000 --- a/examples/model_interpretation/download.sh +++ /dev/null @@ -1,10 +0,0 @@ -wget https://paddlenlp.bj.bcebos.com/data/model_interpretation.tar -wait -tar -xvf model_interpretation.tar -wait -mv ./model_interpretation/vocab.char ./task/similarity/simnet/ -mv ./model_interpretation/vocab_QQP ./task/similarity/simnet/ -mv ./model_interpretation/simnet_vocab.txt ./task/similarity/simnet/ - -mv ./model_interpretation/vocab.sst2_train ./task/senti/rnn/ -mv ./model_interpretation/vocab.txt ./task/senti/rnn \ No newline at end of file diff --git a/examples/model_interpretation/evaluation/accuracy/cal_acc.py b/examples/model_interpretation/evaluation/accuracy/cal_acc.py deleted file mode 100644 index 93c32b46568d..000000000000 --- a/examples/model_interpretation/evaluation/accuracy/cal_acc.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script includes code to calculating accuracy for results form textual similarity task -""" -import argparse -import json - - -def get_args(): - """ - get args - """ - parser = argparse.ArgumentParser("Acc eval") - parser.add_argument("--golden_path", required=True) - parser.add_argument("--pred_path", required=True) - parser.add_argument("--language", required=True, choices=["ch", "en"]) - - args = parser.parse_args() - return args - - -def load_from_file(args): - """ - load golden and pred data form file - :return: golden_raw: {sent_id, rationales_lists}, pred_raw: {sent_id, rationales_list}, - golden_label: {sent_id, label}, pred_label: {sent_id, label} - """ - golden_f = open(args.golden_path, "r") - pred_f = open(args.pred_path, "r") - - golden_labels, pred_labels = {}, {} - - for golden_line in golden_f.readlines(): - golden_dict = json.loads(golden_line) - id = golden_dict["sent_id"] - golden_labels[id] = int(golden_dict["sent_label"]) - - for pred_line in pred_f.readlines(): - pred_dict = json.loads(pred_line) - id = pred_dict["id"] - pred_labels[id] = int(pred_dict["pred_label"]) - - result = {} - result["golden_labels"] = golden_labels - result["pred_labels"] = pred_labels - - return result - - -def cal_acc(golden_label, pred_label): - """ - The function actually calculate the accuracy. - """ - acc = 0.0 - for ids in pred_label: - if ids not in golden_label: - continue - if pred_label[ids] == golden_label[ids]: - acc += 1 - if len(golden_label): - acc /= len(golden_label) - return acc - - -def main(args): - """ - main function - """ - result = load_from_file(args) - golden_label = result["golden_labels"] - pred_label = result["pred_labels"] - - acc = cal_acc(golden_label, pred_label) - return acc, len(pred_label) - - -if __name__ == "__main__": - args = get_args() - acc, num = main(args) - print("total\tnum: %d\tacc: %.1f" % (num, acc * 100)) diff --git a/examples/model_interpretation/evaluation/accuracy/mrc_f1_evaluate.py b/examples/model_interpretation/evaluation/accuracy/mrc_f1_evaluate.py deleted file mode 100644 index 21ae6808c94a..000000000000 --- a/examples/model_interpretation/evaluation/accuracy/mrc_f1_evaluate.py +++ /dev/null @@ -1,265 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script is used to evaluate the performance of the mrc model (F1) -""" -from __future__ import print_function - -import argparse -import json -from collections import OrderedDict - -from paddlenlp.metrics.squad import squad_evaluate - - -def _tokenize_chinese_chars(text): - """ - :param text: input text, unicode string - :return: - tokenized text, list - """ - - def _is_chinese_char(cp): - """Checks whether CP is the codepoint of a CJK character.""" - # This defines a "chinese character" as anything in the CJK Unicode block: - # https://en.wikipedia.org/wiki/CJK_Unified_Ideographs_(Unicode_block) - # - # Note that the CJK Unicode block is NOT all Japanese and Korean characters, - # despite its name. The modern Korean Hangul alphabet is a different block, - # as is Japanese Hiragana and Katakana. Those alphabets are used to write - # space-separated words, so they are not treated specially and handled - # like the all of the other languages. - if ( - (cp >= 0x4E00 and cp <= 0x9FFF) - or (cp >= 0x3400 and cp <= 0x4DBF) # - or (cp >= 0x20000 and cp <= 0x2A6DF) # - or (cp >= 0x2A700 and cp <= 0x2B73F) # - or (cp >= 0x2B740 and cp <= 0x2B81F) # - or (cp >= 0x2B820 and cp <= 0x2CEAF) # - or (cp >= 0xF900 and cp <= 0xFAFF) - or (cp >= 0x2F800 and cp <= 0x2FA1F) # - ): # - return True - - return False - - output = [] - buff = "" - for char in text: - cp = ord(char) - if _is_chinese_char(cp) or char == "=": - if buff != "": - output.append(buff) - buff = "" - output.append(char) - else: - buff += char - - if buff != "": - output.append(buff) - - return output - - -def _normalize(in_str): - """ - normalize the input unicode string - """ - in_str = in_str.lower() - sp_char = [ - ":", - "_", - "`", - ",", - "。", - ":", - "?", - "!", - "(", - ")", - "“", - "”", - ";", - "’", - "《", - "》", - "……", - "·", - "、", - ",", - "「", - "」", - "(", - ")", - "-", - "~", - "『", - "』", - "|", - ] - out_segs = [] - for char in in_str: - if char in sp_char: - continue - else: - out_segs.append(char) - return "".join(out_segs) - - -def find_lcs(s1, s2): - """find the longest common subsequence between s1 ans s2""" - m = [[0 for i in range(len(s2) + 1)] for j in range(len(s1) + 1)] - max_len = 0 - p = 0 - for i in range(len(s1)): - for j in range(len(s2)): - if s1[i] == s2[j]: - m[i + 1][j + 1] = m[i][j] + 1 - if m[i + 1][j + 1] > max_len: - max_len = m[i + 1][j + 1] - p = i + 1 - return s1[p - max_len : p], max_len - - -def evaluate_ch(ref_ans, pred_ans): - """ - ref_ans: reference answers, dict - pred_ans: predicted answer, dict - return: - f1_score: averaged F1 score - em_score: averaged EM score - total_count: number of samples in the reference dataset - skip_count: number of samples skipped in the calculation due to unknown errors - """ - f1 = 0 - em = 0 - total_count = 0 - skip_count = 0 - for query_id in ref_ans: - sample = ref_ans[query_id] - total_count += 1 - answers = sample["sent_label"] - try: - prediction = pred_ans[query_id]["pred_label"] - except: - skip_count += 1 - continue - if prediction == "": - _f1 = 1.0 - _em = 1.0 - else: - _f1 = calc_f1_score([answers], prediction) - _em = calc_em_score([answers], prediction) - f1 += _f1 - em += _em - - f1_score = 100.0 * f1 / total_count - em_score = 100.0 * em / total_count - return f1_score, em_score, total_count, skip_count - - -def calc_f1_score(answers, prediction): - f1_scores = [] - for ans in answers: - ans_segs = _tokenize_chinese_chars(_normalize(ans)) - prediction_segs = _tokenize_chinese_chars(_normalize(prediction)) - if args.debug: - print(json.dumps(ans_segs, ensure_ascii=False)) - print(json.dumps(prediction_segs, ensure_ascii=False)) - lcs, lcs_len = find_lcs(ans_segs, prediction_segs) - if lcs_len == 0: - f1_scores.append(0) - continue - prec = 1.0 * lcs_len / len(prediction_segs) - rec = 1.0 * lcs_len / len(ans_segs) - f1 = (2 * prec * rec) / (prec + rec) - f1_scores.append(f1) - return max(f1_scores) - - -def calc_em_score(answers, prediction): - em = 0 - for ans in answers: - ans_ = _normalize(ans) - prediction_ = _normalize(prediction) - if ans_ == prediction_: - em = 1 - break - return em - - -def read_dataset(file_path): - f = open(file_path, "r") - golden = {} - for l in f.readlines(): - ins = json.loads(l) - golden[ins["sent_id"]] = ins - f.close() - return golden - - -def read_model_prediction(file_path): - f = open(file_path, "r") - predict = {} - for l in f.readlines(): - ins = json.loads(l) - predict[ins["id"]] = ins - f.close() - return predict - - -def read_temp(file_path): - with open(file_path) as f1: - result = json.loads(f1.read()) - return result - - -def get_args(): - parser = argparse.ArgumentParser("mrc baseline performance eval") - parser.add_argument("--golden_path", help="dataset file") - parser.add_argument("--pred_file", help="model prediction file") - parser.add_argument("--language", help="the language of the model") - parser.add_argument("--debug", action="store_true", help="debug mode") - args = parser.parse_args() - return args - - -if __name__ == "__main__": - args = get_args() - - if args.language == "ch": - ref_ans = read_dataset(args.golden_path) - pred_ans = read_model_prediction(args.pred_file) - F1, EM, TOTAL, SKIP = evaluate_ch(ref_ans, pred_ans) - - output_result = OrderedDict() - output_result["F1"] = "%.3f" % F1 - output_result["EM"] = "%.3f" % EM - output_result["TOTAL"] = TOTAL - output_result["SKIP"] = SKIP - print(json.dumps(output_result)) - else: - ref_ans = read_dataset(args.golden_path) - pred_ans = read_temp(args.pred_file) - res = [] - for i in ref_ans: - ins = ref_ans[i] - ins["id"] = str(ins["sent_id"]) - ins["answers"] = [ins["sent_label"]] - if ins["answers"] == [""]: - ins["is_impossible"] = True - else: - ins["is_impossible"] = False - res.append(ins) - squad_evaluate(examples=res, preds=pred_ans) diff --git a/examples/model_interpretation/evaluation/accuracy/run_acc.sh b/examples/model_interpretation/evaluation/accuracy/run_acc.sh deleted file mode 100755 index cfa26fa204f0..000000000000 --- a/examples/model_interpretation/evaluation/accuracy/run_acc.sh +++ /dev/null @@ -1,31 +0,0 @@ -### - # This script evaluates plausibility of the results generated by our models -### - -TASK=senti -if [[ $TASK == "mrc" ]]; then - MODELS=("roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient") -else - MODELS=("lstm" "roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient" "lime") -fi - -for BASE_MODEL in ${MODELS[*]}; -do - for INTER_MODE in ${MODES[*]}; - do - for LANGUAGE in "ch" "en"; - do - GOLDEN_PATH=../golden/${TASK}_${LANGUAGE}.tsv - PRED_PATH=../../rationale_extraction/evaluation_data/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - - echo $BASE_MODEL$'_'$INTER_MODE$'_'$LANGUAGE - - python3 ./cal_acc.py \ - --language $LANGUAGE \ - --golden_path $GOLDEN_PATH \ - --pred_path $PRED_PATH - done - done -done \ No newline at end of file diff --git a/examples/model_interpretation/evaluation/accuracy/run_mrc_f1.sh b/examples/model_interpretation/evaluation/accuracy/run_mrc_f1.sh deleted file mode 100755 index 204bc6b4c207..000000000000 --- a/examples/model_interpretation/evaluation/accuracy/run_mrc_f1.sh +++ /dev/null @@ -1,29 +0,0 @@ -### - # This script is used to evaluate the performance of the mrc model (F1) -### -MODELS=("roberta_base" "roberta_large") -MODES=("attention" "integrated_gradient") - -for BASE_MODEL in ${MODELS[*]}; -do - for INTER_MODE in ${MODES[*]}; - do - for LANGUAGE in "en" "ch"; - do - echo ${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - - GOLDEN_PATH=../golden/mrc_${LANGUAGE}.tsv - if [[ $LANGUAGE == "ch" ]]; then - PRED_FILE=../../rationale_extraction/evaluation_data/mrc/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - else - PRED_FILE=../../task/mrc/output/mrc_en.${BASE_MODEL}/predict_ans - fi - - python3 mrc_f1_evaluate.py \ - --golden_path $GOLDEN_PATH \ - --pred_file $PRED_FILE \ - --language $LANGUAGE - done - done -done - diff --git a/examples/model_interpretation/evaluation/consistency/cal_map.py b/examples/model_interpretation/evaluation/consistency/cal_map.py deleted file mode 100644 index a6ed80d8058a..000000000000 --- a/examples/model_interpretation/evaluation/consistency/cal_map.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -This script includes code to calculating MAP score for results form -sentiment analysis, textual similarity, and mrc task -""" -import argparse -import json -import math -import os - - -def get_args(): - parser = argparse.ArgumentParser("map eval") - parser.add_argument("--pred_path", required=True) - parser.add_argument("--golden_path", required=True) - parser.add_argument("--language", type=str, required=True, help="language that the model is built for") - args = parser.parse_args() - return args - - -def evids_load(args, path): - golden_f = open(args.golden_path, "r") - golden = {} - ins_num = 0 - for golden_line in golden_f.readlines(): - line = json.loads(golden_line) - if line["sample_type"] == "disturb": - ins_num += 1 - golden[line["sent_id"]] = line - - evids = {} - with open(path, "r") as f: - for line in f.readlines(): - dic = json.loads(line) - dic["sample_type"] = golden[dic["id"]]["sample_type"] - if "rel_ids" in golden[dic["id"]]: - dic["rel_ids"] = golden[dic["id"]]["rel_ids"] - evids[dic["id"]] = dic - return evids, ins_num - - -def _calc_MAP_by_bin(top_p, length_adv, adv_attriRank_list, ori_attriRank_list): - """ - This is our old way to calculate MAP, - which follows equation two in consistency section of README - """ - hits = 0 - sum_precs = 0.0 - length_t = math.ceil(length_adv * top_p) - adv_t = adv_attriRank_list[:length_t] - for char_idx, char in enumerate(adv_t): - if char in ori_attriRank_list[: char_idx + 1]: - hits += 1 - sum_precs += hits / (char_idx + 1) - if length_t > 0: - sum_precs /= length_t - return sum_precs - - -def _calc_MAP_by_bin_paper(top_p, length_adv, adv_attriRank_list, ori_attriRank_list): - """ - This function calculates MAP using the equation in our paper, - which follows equation one in consistency section of README - """ - total_precs = 0.0 - for i in range(length_adv): - hits = 0.0 - i += 1 - adv_t = adv_attriRank_list[:i] - for char_idx, char in enumerate(adv_t): - if char in ori_attriRank_list[:i]: - hits += 1 - hits = hits / i - total_precs += hits - if length_adv == 0: - return 0 - return total_precs / length_adv - - -def _calc_map(evids, key, ins_num): - t_map = 0.0 - - adv_num = 0 - ori_num = 0 - for ori_idx in evids: - if evids[ori_idx]["sample_type"] == "ori": - ori = evids[ori_idx] - ori_num += 1 - # One original instance can be related to several disturbed instance - for adv_idx in evids[ori_idx]["rel_ids"]: - if adv_idx in evids: - adv_num += 1 - adv = evids[adv_idx] - ori_attriRank_list = list(ori["rationale_token"][key]) - adv_attriRank_list = list(adv["rationale_token"][key]) - length_adv = len(adv_attriRank_list) - - sum_precs = _calc_MAP_by_bin_paper(1, length_adv, adv_attriRank_list, ori_attriRank_list) - t_map += sum_precs - - return t_map / ins_num, ori_num + adv_num - - -def cal_MAP(args, pred_path, la): - evids, ins_num = evids_load(args, pred_path) - if not evids: - print(pred_path + " file empty!") - return 0 - first_key = list(evids.keys())[0] - t_map = 0 - num = 0 - for i in range(len(evids[first_key]["rationale"])): - t_map_tmp, num_tmp = _calc_map(evids, i, ins_num) - t_map += t_map_tmp - num += num_tmp - t_map /= len(evids[first_key]["rationale"]) - num /= len(evids[first_key]["rationale"]) - print("total\t%d\t%.1f" % (num, 100 * t_map)) - return 0 - - -if __name__ == "__main__": - args = get_args() - la = args.language - pred_path = args.pred_path - if os.path.exists(pred_path): - cal_MAP(args, pred_path, la) - else: - print("Prediction file does not exists!") diff --git a/examples/model_interpretation/evaluation/consistency/run_map.sh b/examples/model_interpretation/evaluation/consistency/run_map.sh deleted file mode 100755 index 8ed9f114c5a2..000000000000 --- a/examples/model_interpretation/evaluation/consistency/run_map.sh +++ /dev/null @@ -1,31 +0,0 @@ -### - # This script evaluates consistency of the results generated by our models -### - -TASK=senti -if [[ $TASK == "mrc" ]]; then - MODELS=("roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient") -else - MODELS=("lstm" "roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient" "lime") -fi - -for BASE_MODEL in ${MODELS[*]}; -do - for INTER_MODE in ${MODES[*]}; - do - for LANGUAGE in "ch" "en"; - do - echo ${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - GOLDEN_PATH=../golden/${TASK}_${LANGUAGE}.tsv - PRED_PATH=../../rationale_extraction/evaluation_data/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - - python3 ./cal_map.py \ - --golden_path $GOLDEN_PATH \ - --pred_path $PRED_PATH \ - --language $LANGUAGE - - done - done -done \ No newline at end of file diff --git a/examples/model_interpretation/evaluation/faithfulness/newp_analysis.py b/examples/model_interpretation/evaluation/faithfulness/newp_analysis.py deleted file mode 100644 index f4ad0e56f236..000000000000 --- a/examples/model_interpretation/evaluation/faithfulness/newp_analysis.py +++ /dev/null @@ -1,78 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script includes code to calculating NewP score for results form - sentiment analysis, textual similarity, and mrc task -""" -import argparse -import json - -import numpy as np - - -def get_args(): - """ - get args - """ - parser = argparse.ArgumentParser("NewP eval") - - parser.add_argument("--pred_path", required=True) - parser.add_argument("--golden_path", required=True) - - args = parser.parse_args() - return args - - -def data_load(args): - """ - load result data from file - """ - pred_path = args.pred_path - golden_path = args.golden_path - - with open(pred_path, "r") as f_text: - pred_list = [] - for line in f_text.readlines(): - line_dict = json.loads(line) - pred_list.append(line_dict) - - with open(golden_path, "r") as f_text: - gold_list = {} - for line in f_text.readlines(): - line_dict = json.loads(line) - gold_list[line_dict["sent_id"]] = line_dict - return pred_list, gold_list - - -def analysis(args, instance, gold_list): - """ - Analysis result according to result data - """ - New_P_list = [] - for ins in instance: - golden_label = ins["pred_label"] - text_correct = 1 if ins["rationale_pred"] == golden_label else 0 - text_exclusive_correct = 1 if ins["no_rationale_pred"] == golden_label else 0 - New_P_correct = 1 if (text_correct == 1 and text_exclusive_correct == 0) else 0 - New_P_list.append(New_P_correct) - - total_New_P = np.sum(New_P_list) / len(gold_list) if len(gold_list) else 0 - - print("total\t%d\t%.1f" % (len(New_P_list), 100 * total_New_P)) - - -if __name__ == "__main__": - args = get_args() - pred_list, gold_list = data_load(args) - analysis(args, pred_list, gold_list) diff --git a/examples/model_interpretation/evaluation/faithfulness/run_newp.sh b/examples/model_interpretation/evaluation/faithfulness/run_newp.sh deleted file mode 100755 index 5110ea61ff71..000000000000 --- a/examples/model_interpretation/evaluation/faithfulness/run_newp.sh +++ /dev/null @@ -1,30 +0,0 @@ -### - # This script evaluates faithfulness of the results generated by our models -### - -TASK=senti -if [[ $TASK == "mrc" ]]; then - MODELS=("roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient") -else - MODELS=("lstm" "roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient" "lime") -fi - -for BASE_MODEL in ${MODELS[*]}; -do - for INTER_MODE in ${MODES[*]}; - do - for LANGUAGE in "ch" "en"; - do - GOLDEN_PATH=../golden/${TASK}_${LANGUAGE}.tsv - PRED_PATH=../../rationale_extraction/evaluation_data/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - - echo ${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - - python3 ./newp_analysis.py \ - --pred_path $PRED_PATH \ - --golden_path $GOLDEN_PATH - done - done -done \ No newline at end of file diff --git a/examples/model_interpretation/evaluation/plausibility/eval_mrc.py b/examples/model_interpretation/evaluation/plausibility/eval_mrc.py deleted file mode 100644 index b3bc04a5ba5b..000000000000 --- a/examples/model_interpretation/evaluation/plausibility/eval_mrc.py +++ /dev/null @@ -1,112 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script includes code to calculating F1 score for results form mrc task -""" -import argparse -import json - - -def get_args(): - parser = argparse.ArgumentParser("F1 eval") - - parser.add_argument("--golden_path", required=True) - parser.add_argument("--pred_path", required=True) - parser.add_argument("--language", required=True, choices=["ch", "en"]) - - args = parser.parse_args() - return args - - -def load_from_file(args): - """ - Load golden and pred data form file - :return: golden_raw: {sent_id, rationales_lists}, pred_raw: {sent_id, rationales_list}, - golden_label: {sent_id, label}, pred_label: {sent_id, label} - """ - golden_f = open(args.golden_path, "r") - pred_f = open(args.pred_path, "r") - - golden_raw_rationale, pred_rationale = {}, {} - - for golden_line in golden_f.readlines(): - golden_dict = json.loads(golden_line) - sent_id = golden_dict["sent_id"] - golden_raw_rationale[sent_id] = [int(x) for x in golden_dict["rationales"]] - - for pred_line in pred_f.readlines(): - pred_dict = json.loads(pred_line) - senti_id = pred_dict["id"] - pred_rationale[senti_id] = pred_dict["rationale"][0] - - return golden_raw_rationale, pred_rationale - - -def _f1(_p, _r): - if _p == 0 or _r == 0: - return 0 - return 2 * _p * _r / (_p + _r) - - -def calc_f1(golden_evid, pred_evid): - tp = set(pred_evid) & set(golden_evid) - prec = len(tp) / len(pred_evid) if len(pred_evid) else 0 - rec = len(tp) / len(golden_evid) if len(golden_evid) else 0 - f1 = _f1(prec, rec) - return f1 - - -def calc_model_f1(golden_dict, pred_dict): - """ - :param golden_dict: dict - :param pred_dict: dict - :return: macro-f1, micro-f1 - """ - - scores = {} - - for s_id in pred_dict.keys(): - if s_id not in golden_dict: - continue - golden_evid = golden_dict[s_id] - pred_evid = pred_dict[s_id] - - tp = set(golden_evid) & set(pred_evid) - prec = len(tp) / len(pred_evid) if len(pred_evid) else 0 - rec = len(tp) / len(golden_evid) if len(golden_evid) else 0 - f1 = _f1(prec, rec) - scores[s_id] = { - "tp_count": len(tp), - "pred_count": len(pred_evid), - "golden_count": len(golden_evid), - "prec": prec, - "rec": rec, - "f1": f1, - } - - macro_f1 = sum(score["f1"] for score in scores.values()) / len(golden_dict) if len(golden_dict) else 0 - - return macro_f1, scores - - -def main(args): - golden_raw, pred_raw = load_from_file(args) - macro_f1, scores = calc_model_f1(golden_raw, pred_raw) - return macro_f1, len(golden_raw), scores - - -if __name__ == "__main__": - args = get_args() - macro_f1, num, scores = main(args) - print("total\tnum: %d\tmacor_f1: %.1f" % (num, macro_f1 * 100)) diff --git a/examples/model_interpretation/evaluation/plausibility/eval_senti.py b/examples/model_interpretation/evaluation/plausibility/eval_senti.py deleted file mode 100644 index 449755cf972c..000000000000 --- a/examples/model_interpretation/evaluation/plausibility/eval_senti.py +++ /dev/null @@ -1,178 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script includes code to calculating F1 score for results form sentiment analysis task -""" -import argparse -import json - - -def get_args(): - parser = argparse.ArgumentParser("F1 eval") - - parser.add_argument("--language", required=True, choices=["en", "ch"]) - parser.add_argument("--golden_path", required=True) - parser.add_argument("--pred_path", required=True) - - args = parser.parse_args() - return args - - -def load_from_file(args): - """ - Load golden and pred data form file - :return: golden_raw: {sent_id, rationales_lists}, pred_raw: {sent_id, rationales_list}, - golden_label: {sent_id, label}, pred_label: {sent_id, label} - """ - golden_f = open(args.golden_path, "r") - pred_f = open(args.pred_path, "r") - - golden_raw_rationale, golden_label, pred_rationale, pred_label = {}, {}, {}, {} - - for golden_line in golden_f.readlines(): - golden_dict = json.loads(golden_line) - sent_id = golden_dict["sent_id"] - golden_raw_rationale[sent_id] = [] - for x in golden_dict["rationales"]: - temp = [int(y) for y in x] - golden_raw_rationale[sent_id].append(temp) - golden_label[sent_id] = int(golden_dict["sent_label"]) - - for pred_line in pred_f.readlines(): - pred_dict = json.loads(pred_line) - senti_id = pred_dict["id"] - pred_rationale[senti_id] = pred_dict["rationale"][0] - pred_label[senti_id] = int(pred_dict["pred_label"]) - - golden_f.close() - pred_f.close() - return golden_raw_rationale, pred_rationale, golden_label, pred_label - - -def _f1(_p, _r): - if _p == 0 or _r == 0: - return 0 - return 2 * _p * _r / (_p + _r) - - -def calc_f1(golden_evid, pred_evid): - tp = set(pred_evid) & set(golden_evid) - prec = len(tp) / len(pred_evid) if len(pred_evid) else 0 - rec = len(tp) / len(golden_evid) if len(golden_evid) else 0 - f1 = _f1(prec, rec) - return f1 - - -def combine(cur_max_f1, union_set, golden_evid, pred_evid): - """ - Args: - cur_max_f1 float: 当前最大f1 - union_set set(): 已合并集合 - golden_evid list(): 标注证据 - pred_evid list(): 预测证据 - """ - if len(union_set & set(golden_evid)) < len(golden_evid) and calc_f1(golden_evid, pred_evid) > 0: - new_union_set = union_set | set(golden_evid) - new_f1 = calc_f1(new_union_set, pred_evid) - if new_f1 > cur_max_f1: # 若union_set合并golden_evid后f1未超过cur_max_f1,则不更新union_set - cur_max_f1 = new_f1 - union_set = new_union_set - - return cur_max_f1, union_set - - -def pick_max_golden_evid(golden_raw, pred_raw): - """ - 从golden_evids中找出与pred_evid f1最大的golden_evid - """ - golden_dict = {} - err_rationale = [] - - for s_id in pred_raw.keys(): - if s_id not in golden_raw: - continue - golden_evids = golden_raw[s_id] - pred_evid = pred_raw[s_id] - max_f1 = 0 - - # 找f1最大的单条golden_evid - for golden_evid in golden_evids: - f1 = calc_f1(golden_evid, pred_evid) - if f1 > max_f1: - max_f1 = f1 - golden_dict[s_id] = golden_evid - - # 找f1最大的组合golden_evid - for start_id in range(len(golden_evids) - 1): - union_set = set() - cur_max_f1 = 0 - for id in range(start_id, len(golden_evids)): - golden_evid = golden_evids[id] - cur_max_f1, union_set = combine(cur_max_f1, union_set, golden_evid, pred_evid) - - if cur_max_f1 > max_f1: - max_f1 = cur_max_f1 - golden_dict[s_id] = list(union_set) - - if max_f1 == 0: - golden_dict[s_id] = [] - err_rationale.append(s_id) - - return golden_dict - - -def calc_model_f1(golden_dict, pred_dict, golden_len): - """ - :param golden_dict: dict - :param pred_dict: dict - :return: macro-f1, micro-f1 - """ - - scores = {} - - for s_id in pred_dict.keys(): - if s_id not in golden_dict: - continue - golden_evid = golden_dict[s_id] - pred_evid = pred_dict[s_id] - - tp = set(golden_evid) & set(pred_evid) - prec = len(tp) / len(pred_evid) if len(pred_evid) else 0 - rec = len(tp) / len(golden_evid) if len(golden_evid) else 0 - f1 = _f1(prec, rec) - scores[s_id] = { - "tp_count": len(tp), - "pred_count": len(pred_evid), - "golden_count": len(golden_evid), - "prec": prec, - "rec": rec, - "f1": f1, - } - - macro_f1 = (sum(score["f1"] for score in scores.values()) / golden_len) if golden_len else 0 - - return macro_f1, scores - - -def main(args): - golden_raw, pred_raw, golden_label, pred_label = load_from_file(args) - golden_dict = pick_max_golden_evid(golden_raw, pred_raw) - macro_f1, scores = calc_model_f1(golden_dict, pred_raw, len(golden_raw)) - return macro_f1, len(golden_raw) - - -if __name__ == "__main__": - args = get_args() - macro_f1, num = main(args) - print("num\t%.2f\tmacor_f1: %.1f" % (num, macro_f1 * 100)) diff --git a/examples/model_interpretation/evaluation/plausibility/eval_similarity.py b/examples/model_interpretation/evaluation/plausibility/eval_similarity.py deleted file mode 100644 index 0307248514bd..000000000000 --- a/examples/model_interpretation/evaluation/plausibility/eval_similarity.py +++ /dev/null @@ -1,133 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script includes code to calculating F1 score for results form textual similarity task -""" -import argparse -import json - - -def get_args(): - """ - get args - """ - parser = argparse.ArgumentParser("F1 eval") - parser.add_argument("--golden_path", required=True) - parser.add_argument("--pred_path", required=True) - parser.add_argument("--language", required=True, choices=["ch", "en"]) - - args = parser.parse_args() - return args - - -def load_from_file(args): - """ - Load golden and pred data form file - :return: golden_raw: {sent_id, rationales_lists}, pred_raw: {sent_id, rationales_list}, - golden_label: {sent_id, label}, pred_label: {sent_id, label} - """ - golden_f = open(args.golden_path, "r") - pred_f = open(args.pred_path, "r") - - golden_q_rationales, golden_t_rationales = {}, {} - pred_q_rationales, pred_t_rationales = {}, {} - golden_labels, pred_labels = {}, {} - - for golden_line in golden_f.readlines(): - golden_dict = json.loads(golden_line) - id = golden_dict["sent_id"] - # golden_rationale id - golden_q_rationales[id] = [int(x) for x in golden_dict["rationale_q_idx"]] - golden_t_rationales[id] = [int(x) for x in golden_dict["rationale_t_idx"]] - golden_labels[id] = int(golden_dict["sent_label"]) - - for pred_line in pred_f.readlines(): - pred_dict = json.loads(pred_line) - id = pred_dict["id"] - pred_q_rationales[id] = pred_dict["rationale"][0] - pred_t_rationales[id] = pred_dict["rationale"][1] - pred_labels[id] = int(pred_dict["pred_label"]) - - result = {} - result["golden_q_rationales"] = golden_q_rationales - result["golden_t_rationales"] = golden_t_rationales - result["pred_q_rationales"] = pred_q_rationales - result["pred_t_rationales"] = pred_t_rationales - result["golden_labels"] = golden_labels - result["pred_labels"] = pred_labels - - return result - - -def _f1(_p, _r): - if _p == 0 or _r == 0: - return 0 - return 2 * _p * _r / (_p + _r) - - -def calc_model_f1(golden_a_rationales, golden_b_rationales, pred_a_rationales, pred_b_rationales): - """ - :param golden_dict: dict - :param pred_dict: dict - :return: macro-f1, micro-f1 - """ - - scores = {} - - for id in pred_a_rationales.keys(): - golden_a_ratioanl = golden_a_rationales[id] - pred_a_rationale = pred_a_rationales[id] - tp_a = set(golden_a_ratioanl) & set(pred_a_rationale) - prec_a = len(tp_a) / len(pred_a_rationale) if len(pred_a_rationale) else 0 - rec_a = len(tp_a) / len(golden_a_ratioanl) if len(golden_a_ratioanl) else 0 - f1_a = _f1(prec_a, rec_a) - - golden_b_rationale = golden_b_rationales[id] - pred_b_rationale = pred_b_rationales[id] - tp_b = set(golden_b_rationale) & set(pred_b_rationale) - prec_b = len(tp_b) / len(pred_b_rationale) if len(pred_b_rationale) else 0 - rec_b = len(tp_b) / len(golden_b_rationale) if len(golden_b_rationale) else 0 - f1_b = _f1(prec_b, rec_b) - - scores[id] = { - "tp_count": (len(tp_a) + len(tp_b)) / 2, - "pred_count": (len(pred_a_rationale) + len(pred_b_rationale)) / 2, - "golden_count": (len(golden_a_ratioanl) + len(golden_b_rationale)) / 2, - "prec": (prec_a + prec_b) / 2, - "rec": (rec_a + rec_b) / 2, - "f1": (f1_a + f1_b) / 2, - } - - macro_f1 = ( - sum(score["f1"] for score in scores.values()) / len(golden_a_rationales) if len(golden_a_rationales) else 0 - ) - - return macro_f1, scores - - -def main(args): - result = load_from_file(args) - golden_a_rationales = result["golden_q_rationales"] - golden_b_rationales = result["golden_t_rationales"] - pred_a_rationales = result["pred_q_rationales"] - pred_b_rationales = result["pred_t_rationales"] - - macro_f1, scores = calc_model_f1(golden_a_rationales, golden_b_rationales, pred_a_rationales, pred_b_rationales) - return macro_f1, len(scores) - - -if __name__ == "__main__": - args = get_args() - macro_f1, num = main(args) - print("total\tnum: %d\tmacor_f1: %.1f" % (num, macro_f1 * 100)) diff --git a/examples/model_interpretation/evaluation/plausibility/run_f1.sh b/examples/model_interpretation/evaluation/plausibility/run_f1.sh deleted file mode 100755 index 8d5bd2e7a9f2..000000000000 --- a/examples/model_interpretation/evaluation/plausibility/run_f1.sh +++ /dev/null @@ -1,34 +0,0 @@ -### - # This script evaluates plausibility of the results generated by our models -### - -TASK=senti -if [[ $TASK == "mrc" ]]; then - MODELS=("roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient") -else - MODELS=("lstm" "roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient" "lime") -fi - -for BASE_MODEL in ${MODELS[*]}; -do - for INTER_MODE in ${MODES[*]}; - do - for LANGUAGE in "ch" "en"; - do - GOLDEN_PATH=../golden/${TASK}_${LANGUAGE}.tsv - PRED_PATH=../../rationale_extraction/evaluation_data/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - - SAVE_PATH=res/ - [ -d $SAVE_PATH ] || mkdir -p $SAVE_PATH - - echo $BASE_MODEL$'_'$INTER_MODE$'_'$LANGUAGE - - python3 ./eval_${TASK}.py \ - --language $LANGUAGE \ - --golden_path $GOLDEN_PATH \ - --pred_path $PRED_PATH - done - done -done \ No newline at end of file diff --git a/examples/model_interpretation/imgs/equation1.png b/examples/model_interpretation/imgs/equation1.png deleted file mode 100644 index e1db9780248dd0a955a1a67bef66b262af988c18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44124 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�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 BMn?bu diff --git a/examples/model_interpretation/imgs/equation3.png b/examples/model_interpretation/imgs/equation3.png deleted file mode 100644 index bf4f28f7c48a9a64b403bfc5db1f64249bc602bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20633 zcmZ^~1y~%-vM{_ra0|iR5*!wHC%C)2yR*1UaCZ+DT!K3Ug1fsd?(XpM-gEAE&wroq zpM7S!rn;)DYr3bWx~eu@K~5YQ0S^HH03b_Bd{+VhApAdI5jdESYx3wc+DGxpTu4?3 z0H}>cd@+RnxF<1|P?7}zJShMG|6l;%=>z3|006i$0suz_004Iy0D$d~)vCz*QQ>Z? zA!#Nn3!wRc;Q-JOUjR@a5X8q10D%Yir?n3VAO(T{e_`|&C&iF1j>VhJDujautM)xvYF zzY+#UhkB6?ox82Ns7;=P`0#Wx8N$z5UG8bGjoruG^Pwym=EQXKJ&z63mfQ(}wsV#t z>MrMmp|9y*Sy&87dPD>IKFMm2#>6X7Xr-1Z%g}Eb_y#svyf{RC8u``F`9(>0$5ZdE zNtYrvQ{1Y=lP9Dh-T-keD;-OXuF7n;M6Zt!!iX{TsIQbW=T|+&B$)%s3R;x4xav$U zcM(_<30JtN3Qm)ndMUC@z%@INtC#d#1YIFjC*3Y?PFj;WaV%DHKL#TIugzZ4Pa%r$ zQtLI>c+zg+u;`*+3)`rghTtasof3_6t-m$o7B7!JItl%JHE|U}VkU*OOYr|3mim>c zRnEeY~0oIPiC1kT0wXG-oG`Lm@c*|!- z$dPh@cTWY46(+Vw;a7&R?$@AiYMOoJF^1*%n?>`hyiD}pQcj|AeMF^j^9;9OWgzO# za&2%7wQEN!;Y?CpI>}XSYwZnOL43NzJUW-a(-v}*&N5tG){u2LnM1vu=0 z;A3jqtZ!n=uRkFwe+0WgChn0M&V31~00hjPYEfS*KUpq}9)v&9rVb{{eseZ;!st5Y z{-#HfSt(QQRI69EsqC6r79a7KB)Rzzr1t9oBx&^Lgmq+r?;?qt5UBuVz_xKQd1gUO zSFeL!hkc?gN%Dv^!ypyzVg@5goq6_p*`_1XhK)nl1tGF*S%m-CLQda8wW+T4v`-3l zl0j!*jo?rIrb=JrPqru${hj(RkS0OCo0L=@R&>(;3ORF~hvWNN<}hhXFR(U_F(yOkmN9KR}LR{rq*IZcPl z>9ZTO9rwdiyLq+8Iaba2FYD<+KdUOZp_sX^T66sDR3W3O!cR7hPz4k9l>+ILQ~S$l zM6ar<)6wAQR39AG92|nIlnJ{@v*a&G95C%o)llt``iVQ|dE1-YXlUu&ksbI)fdY0|P>Z^Jo1v zf82?oP?W{H@u(iYS^hESd)e)gxxX5L64!B_B*ibb-<{ros-EhZ{WbYp-+qxzj?s<1^_V1=V<=iFukapNoCzFU)qn_+7PS!Qm6lnURv_!I%62yw^S=;W+am}QPhsP4@+r04C_)X zW#BN9o&9mkRG=6okEyzs>hFXtS+<9XvAY`gpSe$#FYxG;axU@$uSw7Q0&iP6?%VK1 zMQtXOQJdmj%4s*tM?EL6hstL@Cf6-i;uiaRpW9M>{7$kuG$oI>4Vzv(3+?K_zan=z z_jf3BMevT<(*8ts$nWed#RRNQJXNF;FQAZADfzHuV6_#AeUC@(s0D_q2@G2pUDUB1#Aa2@N^>_epOlWs7jg_qhC%o=oW&y~I4pFqW)F zbmd{0w;yKvfk2K{pvXx*fWu?qXTs1vRUyTQl93hf-oT|{W4jII`*Sx6%Stctku=%l zM5zYbd?9@rm$O-&w@pG9MDtkc`khe-fkO~#af&ii4&e&v za!Y8u4zbvY5y27`x-RLc$x3a%%#ldYrh@+WJfQ{`+AlwTTCONc9B1T>QZh>m9`GG$~yrn2;fCx?aB5!Yq7gu z139;y)J5_F@C3D=vsSS}!Q;QtP& z6~jSh08o{wx{Yf&iB^cd5G&HhBBaS)#nL*guPPjIK1`xajU&G`{7^i%?Vw%x(Qx4T zQn>vo(TBX!%&53uoYA^0x>FQVv7SPX%aM?U&-?kb=~x#q$Dr-YW-D*;$6nzQjCPgX zZ|#uh2OB5)-X&h2=s7~))I8yPc5Szy3vwoYJs4O`kY*@FZn|2jn^VXuBjY_IppeY~ z6M3C5ao8@i-cL*O`m71mrys_uSpc}D{l)JN-f269zX^(nt$}0R-x(w1{Ak&tmrSq( zD)I&1Ul3QDx~>W7Iod8O9=X!>_2C$gzwix-o?9WUj=nN>o)D6@K`L*qm*YB>)jS=w;ljSZ5uTnIVU037a`CC zUvXmP^U8I0!Q zP{*u@_MP5-Xml3CeMEakkgoOgYT4yH(RCqAhu7Z${5+gcT~lC!$0jZvRZq}SpDmJj zH>*TxP?jfY`T&QJ?!8<^txrLfk&};kC`e%hUvAjxo9l-xhNs}BagPi1yQJXmFRF+l5!Rc(TTgvc*6e2X4IifzZ~c2B&=o%5TS2?y(n zhS2A~9GzQ4J~xW}7NcI^L|#1dC)~taTpt75adnAGelYFfR>`&YsEynu_*LgOpwdLOB8{PtvVv~6!(v!Y;O$aF`JX5 z!KXe*M#Ij>y_uchzv4Sme3%t44?Lj(IN;>go-x%8Wzm?tyoc3jLi8f_wGwsbr*B8b|gd+K!0%Hy$W0X>3%!TlEAr0|M!c ziXK1==H0|QZSvGlM(ephR}oXDBX~8_ku5Aksx8+FNrn?pJYc0=1bu-J%8Z$WYYSehzn@8H7dsv+#}`JV5&mW0y_wDD5RRd^>= z5&3$oDJ;<~lmB^is9YjC{$Wdz*CGBD5+?)OH1E&T8sGiuX$;RDP74(0)EL)(7Ps_g ztf0tIXlv2$BOSlIuz*N|LN*t~ooI8I(o0imqOHPa=!hjhg|QB#_&(z#=kuc}Y7@2n zdKBta-qAm|9+Su>kpf&VP-0w3QnWX@CJD2r!AS)uE#L|>$+iLT`(+uiK5I$cq0qNq z^e*S~0%!PvyzlK8sx%>L4t(E@48p}1UE^tT7TC&$GZP3A-4mFoW3b7Vpca#+B7vQG zGn!g@A$6(_Ja_P^e|>m)Uu5UsLq;xeiIXY`GW zy<8HY}4+dpT2m>%zk<6Qd$9Pie9ptjS-Ol_;f zqWURgu;1;Rx;1&*<6h=*f96A+=$QoFa3D-FbH{1p%4!fQ@1|Z-TR*0nh8`%NzIijy zw~%^woa%iq(|+Ey=ypM0o;xfcliRh-ONmHL$Mev1RSe%AjHT~=xml2#YZkw7Se4xM zc3bU){gk9_vL#C3k#Bfa%`^0XpG|4|QiQVMc}#!SRFbuwqTvnS6f_zD?0UH}#PB|C zSg^vab&hFZ8E$OI>ZVi~$M@7+8zipQcu~7S*TZa=6?G_tDLG2meo4&z(0oSMeGB^R zpdfahHJTN4*PtM{*l<<9dYkJyuc_qL)N0$b^w+lTu$a^jmG=S&np0J8lVxA(qp$7z z5}@~o05LzKsCkuKZx(_z*`+^HqNR6;QkB0k2ODuV{zA6Rn20knJ<*P8sJ2=lkWe2G zHBx53ia0N_gdyg+BE_5i4ZeIbR^YAq`7+jTd%flee>LbTZdF|1#n2W5OWTIYR>7AN zxo@HCk^VlmYa@@)f7Xh6n@VJ^-R-uqyX6k(H-%z$=COBIpfq*Q@)fcInnr-&+oUGb zPkonK(Y3uyTfLQOX^|i#o^Idk%#CJ_PDk|nuJ`Azvv5jcQ0_w?rRrOJ7?ES{>xubV zS$WkFdvau|bB1kR`;cCjRx$d%L({rjInTp2Y+JIL){txt^O7t^?uGgF7<)XSC9x|a zU2~i9S**wc5l)t-q)oCOoo?p~& z=o@xhK@9J7Wy2l!nJaDAxUTap8~5$++j;FaXsk4SM@Jp`=-oVtMUO7=`N0^zJB_A~ zH@(FeJcxcp{QfY|5Tzl)xwp8pT2}3s9TQ{87#7;6L0YL=)SOrf2?m!l8%rdH(Z0JB zc^&rSGIy|0SJ-!a&Av98F4c27G(EGi9K844Z!@WJNF0>hrv@ooS9YX$tsU!?5FQdt zOKRoCd|s53Bh2LWs9SmOhFUvh-YvdzVt9Yq7Z_>0=3Cu(e*9jOD~qX3sn~L6U+@A+|Gw+|wJy%9b;bAj)Rq5f?cBHN zgq3GB+vjfSOwiKefQ~{gYv%Rz>3A(ajEJ-yINbiuo&hWNmNk&=wmjqmCMS+>Qx-@t zW#C2uC;RjA=-+)7Xk4|DzMrf1RUJO{$VT`XMHClvfKB(oXkmu}BO!oN=&cM(on|(Gzb`@x@gr( zHlDn)si!(QLjpZNHQ}&DmU}eG#R`2clu3-6)5~T&Z)?hUB)mrLv!#;rcl>#@ zpV4`5B*qn)VH}p&d-8R`?=_WYt8K$E>J1)M;H8FVCyHeamj4367S19s{mn2VfCUN$ zn_K+N6FQl=IooZ0$@YG}$!&f=aNB4uR1!(;l>dJ9+Kvzx*S@9)<_RJ0+~?ejyV58V z;;i+Up=t4FB-aX|SWa{EP&~Vq3FHQ=zONjS65s6g@rZHW_2uZ$Z~DYin1e`QW3!7E z{z%ef5JW`#=QK6Ww}+kE08xUiGXsc2hkM_Jw$;bF>~!jHcxGedjYD?vmb55CLO3k=Bx-ePzSElfCCm=4x&cY1?KX;wq)Uqa?@2 z^rxi&!3GzlYKp}!i+ZYycsz$zTIKt8I90_6oN?Z_O!(<7P)YFtq+dBrca`{>JQJia zZ^zz~zRzgdEt#&F^Izkd&iK}lM+tUt?P(7j0Jgh>P+XibBfEx^h`kgry6ABzP@{Z~ z5_6};URNlyHXB!+qz~!T)M~Ny-1T6XQ=4rYeSYf+$edqtD30?z)_SwNis|jNA^t{> zaWt$)=i?X*`$5a&4`8I*Mx4sBO(-<;yC)UTlz&WlccP7U+bm^@md*^j8 zbuNq6m$o2;>c0&`%coEKzsVIloW=cp=MSF|tghLPIE$_Gd58o0PFa6%%<(v~YSM?6~&#ZW2jAD)n$y8y?CThb9(@%7Tch3O*l>- z3&SlMNtwPqVmq9By+51s?dhBXIOW}ooD39P669}H-T6z1m>3X?zREyT*R*@TNb5Gp z2^6z{1bm)YL4B#6;BzZuvmail^p?AghsBweKCdeqZ+miFw<`A|`ft-6V)JQmNO_A9 z&-ti68VeXyza{&#)AkxK*5tgh^f#!J_6ggkgP39Xj4Y<#`=EEIO=0ueTLlZVzjFzB zCRAK~r|hS}NGI3m`2-j-AyFagiPm8JOxv5Fl5%;f5qCV@%ZQ6mX-?(B7q|sxs_z{Z z-S1-B90{zuj8<^zMG7s*T^xss5oWWQll|hsiYW5S}}r$Ph7`b!cGgdWf|89TS0@K=Xvt54=NL4+I|?bjiSdZ5}4~!=pdP`)SlN2AvgmutD?>f&+$}p<`Tmdi-SA;Ez4!(cRiPAUW(Ej4t0= zUfufF_CDnlGP>pb+VoSDtXq%+DT~#HMM3mh5_MvvGmQ*s4IQDX=>!i5vv?CDD; zXG!~&&XxUw`CLpktqV?8D zD|xM;qb$=uMY`^{@oI1XUQ0?i&Os=Kb^Zt^lb z(>HdJVW)UetSQUJE(u+81lTqiG)qc~hm+3j@q^oHzYaGkG6S0oHk3}1k z5;a0ODO|Wu=&x%EISkD%B8HVnF=Sf{&ge?7dk!fMLX4Y=%4TG?yIjn5j1_-N*6fq& z!vPhz3bxh!QgD_EVslrND*6R({T&FMdob$}+&eIP$?YD>94G}-lx|XVADDIRb=I+B zTX#ueIGzz1@VHNJQk$Gj1zL9uV{nhZ7eVEj_1Wp_%x`MVv~5fum3|+q?3iEH!lEnY zdz?*Nc2`h83ADM|K5IL3QwF9TVd)y7Rf5>KsDrr*uTADH6IdM#ob#uCfzJqP#PftY zj>-f^Zsz#4?DLs!FR?XU)uT0CU$wcY;yS)pfhg`O;@(iQODMSI z`zqMLz^qPSvB@d9|9&aF^rf+4J;BLoF}?egsG3hhAxlTujk<>Kgss{mI%m^HG;;H} zQCf;R6#D!JrbpZtVQTDOUnIXN<0|dop9n)GN0?%!)vqCx@OMl41Wza7Ph=u@ZQnRg z@SkHPtWmqIjK;uVK?snw1rFZ7zCWd|_=XV{p?S-Q%WIF!qPgT0>WDScX{E9IWIXr0 zzjPCN5B6|B6-7DS{;^m&ujv>!Ux6&!3N|hhY#1#vytD>z+4!xOj)2w=OKL1QE!-!% zHoZAcV=V24lc*6UFtDRhuJ@yk)Dk%QnStXB1X#i%u;d=@Qeqbyacl`b_Zt(Ht;1!@ zlSe4Ao4;ZmDjA=mpbD&puYQoDfCk?0;kPmj6-4t23UfBi8`_(B@)St~u7`E!S2j9J z+^i~?77BQC%DGQTMo+~0SZJi-M%GWKGpj!%CkLO#!B-=|1x}FLqOS~h zcuxb?*DkzMXEmTH9?(=33UYrOy_k{$v9b;iEK>1)SyJV$1iM>;Ayo%XgnF zuj4y=SH!{kxGGA_{oN>*@k#pMNn9&#>DuP^Sf?XRowxM#*g48Ay56Q3T{qLx3&WDp zL$M7Dt3!1wBPTQ6feiyhZEc{TWrS}NN!fEEH}MV5{6gO4dM$%a49$_opAB~1j_I3P z>B!8orxK=XF^HK%0KnQAqLg5wU zp?&%BdZl!y-9i$j!-pVoPQv%Hx&C}cm<3w*2qFZn8rJM(SfhaFZ5?K0Igm{zE;pC0 zt8oX<0(#2II}IJcsj&nS#(C_8PIrxLv>0G4MHqP?YT*pt;7~~+4D)_TabfSAtlQ0s zi+#s!N`Or^zV}h$d)4Bm-&ULmj8ZKO$Eriec9+)h&zvQ0XnlJ7t51gp(R1qfgKqr+ zbgU@gM%S9nUc_UMCgxQb7fTJn0ttQKTMjUv1>c!&yz7VpWF0@LM8Bi_(M!IC|v$@@nMWQlkil) zFu$^LzAf$~H})w>qx#+y5F?wg{xaouJ(}%d*S0Tc&wT+?LRq?C=yNmoC&PF;j4}-% zne0z)4i?1VwSPEhVXy4U0_f~e*WUwBkqV*IJ;v?l)VZ{WcXWK-oOAKpPi^gItlxss zkViKdgZYL)!eUfh)P^Z#-2n(}x@qD3mJ=PM7`I)?6=}umU()o=2rxzV*;LJfDVx z>%I+E{qAvFvE_(^2rWK^?Lv|-MutraT9w3U+o-h}(4)hMty+WFbZihWM=8gRr)wLn zYrVL+`Tdrnk+qPcG0RrbvZu9-__osZnyGEy;kr8BcB19hMlpMwb}REa<3M(E+8T>{ zUYVR4dK)uB8y7WcZ|%vnnR=av{PT z;*`DOb>7i&*(+pe=rSD0_sTJZ*Q0H!j(U~U5o1#KhV6lwo-@v@aMr+V-j-oA=G_sc@Va`}1+LoTYB}`_qWdDB%P+fU zUve-Q)A6{v=gc9N%%gZi!+JJc*uO3jX345dXvGy2L%z?be&9cLM8z?m zR*G4ufM<(t8$KXV1h2Yqi(Ep#?ExL@Ka&kq0b~Mp9-3vAtrurL6g*D+@Df-u;sUNH zeZy&_@NQ(qdzXMJHyw3}W1VjuiI{4tPbJ$sHha@axt+L(`$GXrILX){0F(7?)@3 z@??fmCvQN>Lx6>0fAP|3ugeWi&xk&9t`6@+DlwvWT1MR-0E971K15YLBnNi zkJMUW>*0~XD=P&A64feqSPk1ZZTIefs%aKaGq=+>bV0`QzG#MIy>_yIqahX0YJ8FK zhPM2ini@GqQ&jrbG>!{*4%I@P4td&cDEVeE7GDIwc|zblkmvH5vUPyi zYt`pTfWNY71GMT`!fGVm428leXy4=$#2v<4!=`&LwIa*}V127VWDM#3i9HiMO1z@- zohtL|pCacZ)5GFTN#Pk9`I0kiL^grsTr2i5c`T>&jJ(=4>*|hrv`%n>w2Q#gp7!Lg zi2~)%tkW{C9UmL_L|AX%Qe_wytgeTCpbMYB*i(+z*?dD>2$s&`#|l&1YVMmKf;B$x zb=6D2i_GhGsFA-kORCK?Qi`VkHVVHFiHdz`-V+gf^|j`Ac-T@!{BM|e%0Q9NiuAe& zDiAM_Om#_9sWA@;EAELLtv)81K%tMYS-SV5w78WxTr{((UDokiD89Xe{n}Y2o_TGi zE5wPS+)0&TK4^EL^2BY~k#MTlK4jh@S`Qi4cDW*oE2M&vuscRl0xb6DW zkBqeJXVXrMyo_dFY`j-a=r9uYu`m1V8uG8${zcz(v7*dz|Jlj>rq4_mOyJRemtnm- zR=_h{ZlV{L4f1nA<-N&!p21W<0z{Y#j>`3id@U_ue(An?j0zc4!-$iEqA9~Vyt<;J z!C2{rqaA7|wxIjT2k}0BhDRWkh0p&ieem^5pt#jL^q`Gc zLLB#|qaiwx`vnB(3MlUelqwk#9q8Q@H^CSvhhKj^>qv~Bhh%ozBh!-FGl19eZ_O0h zX8qjm6u?ni_d|>kKLaPFi;PD|hWx649K+D8F5<_K^4o)a95n*v3^nu9^@iPMl~}RC z&Fxy|&`j6KqT$UyF8J1D3VF8~(|}B|TrPW}IHQ;}Q8UO1%*lf>>H=-O3BjFQuyhf) zjNqG&*$y}5wk8K?+-I%1)c_)CY=-B*hSf z!)cA@kdJQNhb6Ci)4t*vG82ak>_@4U;nP!74;v(rORJ|@ch4KrC6`^x3_fShxiijp z(^09bNei9xw#@+*MZ<*aNz}?@1wHvc)WjMrRDyHcPrj#5@RF$nek6iSW8*-J$oG%K zF&Nq1w!D75)?xhg+IfbJ;;3!gl6>Ov8h2GGNZqz6_v4q=gQN*$1E0}@5KW@J-Pp-p zy686==IXzu-_uZ8#L6N-aRLx#$ z1exh&{LyY(WEfk&VvB@$6`G;*A%Q#4+mDZa zzDkd{udeHpykhW*>{5p6H8|{<-=^(=mB4HoS+#ci>)c2i--HX8gnw>f)b@=KGQf6_ z*R}KVuRW5od>Q5Lh~se55ch$}UO>OeIO4vBDd5MI*ca_j56Y(EsTKHxkM9~&g67MC zzX(K!8XF6b-~sTdNrV#oF!Zt&00nC;bdXI-LQ=)<{tP$Ne&3$c z+j~fJPT20|x~F{AVoo!JelK)vKJWB0_1ve)?%d24sN*cd8%zW0t>+4i1nFe<-jnlZ z>a|?_L|mHyH|8#|^V0Aby4MUbo}@XNrzB`aN~RfVeccJ!O?E}ut7>VqoK)9zO$K{w zYBE)di_859tzZun6@kX$Ee<}gxKC-b%OTdV8v16E>F`3vqkne5%x#u5+Nga)Ei$~! zjqLYxv1kYXxb3WU=5^oitwctW=oj)=LRR+CE-S2P6n16r!gQ-0i38{HiY(+rxkT(v z*$<0sLAX1bN9H1)P1~)|7VJt?fr)kzu+M0+wKh=?=O^OfnQi&?WxS!NZ1L?np=L?x zt|1h~e?y^9tM;;Ya!jb5Bu!Ubsl9vgL0E^Obv8agYrLllR_ivx0zM zjW>)ERP>oKch_Z3|Pc%IrYIa+SUlb=MKJ5cF3tjiKDS#r-hv@yExl1RExD z*k$=|xru$sx7q>yx%=f`wHE-*Kp>P0{Ta~Yz{bzyDQLy5G3sx$yk-LQCMU5Orf*gJ zmL@FqkHV9<0;Gq6%aYoK<`bVLQR(3)xAgnBDS2NyIT-h3Ss1OO!r{!3hq2&v25m^TO2eJO(-|bfDRxxQ5SLkVF5=8qHrLKb4Xr5bxAGXW;sIc z;GS7vfGjD70t{Xxa4oa$w;V{~q3a(4#|p--$LVgxgjRPa=T61T%*0?CNGipoP+s-E zQ0zM;bz8)T>fhpz_+fy3xp~>7tnILgTsdba@Kl_a95Sd8@B|=lhZ(II$v3N*cd$6YJTPswMh?qXl>Dvm<~L zhQ2BnkzZo2Q(OS5jn4;VYDS zB1VW51`qXitkmiA&cyXe+f$@=sA5st!f8z!iJQg+dHv3=5uC4$jJeOV@s@fN0 zB{G_-f+Jsj1LPU;PbAGs5N8Z0c(3a};_4Cn2E8$%i*n)2D7B&Ji-LDB4K_+ELY-Q0 z0i;)sysD^=UN^Pkw@`R4<4NVanH{?V@%__@;N*TAY*P?&@yV*%W=3Kwd0u~fS@DlX z$)?LP1zF2-0ofP44x{>niXTnRw7m@``lp(t@{dUL1-&(Tzn!9I7?5VB%CrVG`N}c7 z;esEQ&kCzL7o-^!`V<{mh%*jCT)e}QVGqQjftiI+7Ru&@WU&(?zuZFE!Gl+poO@8V zIbCHFgE~a^3$Z`1g~`>b;oa(tJT_Wt%FTbC{oIV?iiXCdRx(@VbI4q5go4AQLCb~# z(YC|BEnM9efrgLmHfk4go&@E7aYAx~b-ojk92Xr{q+y#^-wfh#ToVZQtiMi-Wce!J9rEOFJ{jmKW8!b3O{kkTY2Fh>3RHDd!iv z8VFJ$)B7_X6Ekh?bL;F>>M|9-x%fz}NtDVv{!3|g?zBu-+Lk%3B+M|Fr6OJucjaSe zZndzNwYcQ4hiiVM{U!bVBL}B)mv4b`Bry>6kiD|sq^n%keiF{fvDPm+^fB`4<3Bo{ zL^YdRs9u7D=HKZ;x!}%8kpo|db3dC)Y(I#Ei7pB@GIeU+IbQ?dw9(RICh1KtO$@|= zgTTk)+V>vRw*gx!Wf}X_M``}ALY&*u;)5f9)Ij*Q&GBcEawR=Rlx;W|k2>dRA(wr0 z89!8G?!#M)Too;((AwBJDi)(K=1^~5-GpW>kz`_6Aw00i>A@yZ3y&JK zt$}eZ2i`DcgFd^`uM{(-!G(o%R&_;_I7U7S^tnDRQVUX*WNKfe@)eExJ&s@&WXoJc zz(prsAzAK0OE6AFw+8yn5Ir3yM*1T@BEwZl zlsBEU`a0V^wETzSu-(uHK$%(%reR3DJ1^)Fz9A?8_I@xZj?;`a_esw)bKmu}8|XQk>!OuP-?a zL?2NZx>LKFkyI&*ah0KE(W!~Qyb81De+!RDFvQo`wKxG729v0N8PIF7LXh{C>7mI~yt^n>C$KlyYI4|8u4y_N@f--R5}KmRr%Ea6$ga3e1O=vhN%&7%Ot*Ic~6*w)8?R2D{#F+TQ8C}?&GsFnpBro%}Wc2q9K!-=Ww^C`DqJ1M(W z$Yz`p)iWxhnPRNh=IgRWYTq3{((>;tXIvGtD+5mG$S-UIMu1(ydX4u#|XNr8BR7BFfDg_q!jMzT|v96x6veT2jrwc^VCl zY{I`9;^`!5_=CdJ+;-lfy2Bp60LomPfe4TKs+qcNNV>lJ`|C=oX=`kgQ=MH(SO0A2`YN7fbF*ae0ENC%sa#pP( z8O%qZo>`PHZeo`j^fxLskp2;;&%oCM)X6(n!h6X0#bkBDOeow{uB}~YzmT^w#)A9J z!rL+`nI!sQ^CKgYXs}-P!51=0;O#ONYUz|UuG*rM;9My+HV(0Z z?`mgrB(b+AAaI!!ddj((k>ind-0e3h^LyA5x6snND)xLC42yzUv1_w+-*~QUS}S8V z&+!Nyc3?R5hAEQzs{T{2aJcqMu=XxyUaf?X6@Oo^W4op?FQ=w7Jd>n}Y@;-*L-MFR zR9B74zNb{FX6i34O@svvS7F%p)&!+?GuT%Yvh}{tLLX_!7kvK1g#PF3!y8r{32yv4 zT&9BaBVL~Qw6Kms?{RbSX*8JL(SK?NabmKWqC&tPFoBkCo#0nZ@y z5)NaF{pD0qH3eEFxZIb%<_3ZbdFe&_l<+naDY2T06lWKf>TDA^jILs^_+P~hh;n&y zwe4C&XQD_-6JiTdRdehCI-DGD8uO?&!fzB_nM7k z6Ytq|^QyDDLZFAz=a9cQ6QFl#st%tO~(g$--DPTH%J8~`0Y7REm`$Q0#1{FP^ z!5PCr<6^d{2u?oIEbe5RmBA za}4E)@H?+fA_+8=Urpxs;JId)&7Kv%Ob5QTT=$AF#4^Gv*rvX-VwGgdHLwpyUlzt= z1%p@yp{3sqpJcmD)ZbG1L63|Ak5OiO(~8&z3AL=^t*`oYM^{AmK_=_#>*jhlGSdnp z+QQ#7I^8EDo5Yt&Jf-dha_704K)@b~1-T}&4&bYs`-7XK?$GM!yPGg9f@}V$TCjCulcvzJW3~DWsXZ};YFT^ zO{o-9&n=YjU-_6wzrRQ<`Q_o$Ja59!UpSg~52)N2WA%F_s2HsJNxhFOT8Q0X;@;?d zaYsH+_v0M%xwY0`NX-)3u}uR%Gdvpb1SmGk+#am3c?9Q{SYP@W&RXra^Q^PUbyEReY+WUcOXN z{NMk0020q1j$rk`A{X8kzPUd4j#rWruZ&}mS9e+_Cs|uw{H)0~F?RI~$-F5{eCI-= zrO!#j^N)Y1{@kvdHf^e7N}_AYHZrZa6ScmADxOqtF8`KqtIrg5Fsmh7N~z0-u0yc) zuuf%m&s6nUHyM6!r^*nme$K|c{*IRN%w>0&VVKE9-wi=zaGvnq@HYf)ua22e*kCGA zYy%Ht`y)v*j$NH&}#8ocLAsk!Iep?vEAeDV&E0MfK+#vep^XOuEQ^eR{;xR;=H_-O@gklQ=1%Kb1=vVK($wkQ3)@RIZZ|I`sgfetrRG zuRrfy$?x4>$C)v`)ZWo)YcYhR@hdiexlh-w%{8ef48R{gA#Ip4;s$=qM%XmgfIq)0 za4kM(nkLs{*T6l$BkMgmPYxm>MNp$7=)dGkd^e&U!I;SL>iAP@8sF{fELPr*wL`ab z)*Lx1y<#1B$mki8CGCo>MWS3SJx9QZ?L*xI(!kD;=N~2g8E2b1lU{cnx=)2O#e!!Z zh8h6-K535fMi;LssCOc2ka-X@t$CrV35opVdKGQZ>t??s#}kJR9c#{ZfCSerJ`9=0 zx>~nbwL!6I^82@WtGBJyM*v`I0Vb19d|h9(`FOnTM*DXipxT#7wr>qbziL^S|J@?n zDcxAr`t6V|P54Ifm^@QsD0lpOAyfPeJpt|#F_T%Vo6HF!leB!W1cs98W7Y)Q+F7t& zXVRNXD)9H@Sf-WOO1-BCn*UQZM3fmN&Px~iVXk5^x4Zo#rNE_Q(?Cw!i1{h|q&nfG zf9;xM*Xx}#&w2fCtbk~fkBy%zkNX$0KlM*nnE{pP8jeMnYpJnsby3suaiPxeWBaqE z*exH4^H5jRZ8JBS)f%Rm6agsmZqP0IBPEam6vW6{IyngY=vm69?*ilw&n9FKb&@@m zw1_PgsQ)Jx4(aindG=ZEo$q?5-YM~bAzL)RFCPYB3+;jnF617TZM5gemQUHLqfb<0 zi>V?WGW?Ky++Dwv1hEKoR)hr?SWxa#cGN{@e6u&&{`R-O)sGh0wnN{KOOOIl<;e#;a=hUkaiN=>8TMgaehaKj= zE_=#(D2SacwkSD@-`1$JJLaN`rn-}5w+x@XW5>yhFTCgu`rtvjFlusLZ0JcH<;->g z?>eV}DV!qD3rwFrP45UOJEm`Vo9jID`fpC~ zf%YH&_$NBTUu&&3z>@s7XXYRDDj@ z3U=ISN4NTFs~2}Wv!kGAhfOWo@Ph}0+0c%9!z2IB{<0g{^>I;5^Pi@w1`=-g9zdl7 zNQ9~g9nxdfk4-dSHIQS?VR7pKc=}iNm+LE`hj#$o3|r&Qk@w-SyM@M#t&)sRI|s}W zX6IEIW!c`5L<3L0n1knThX?y)$u_jJcE@o4{r3rPUY!=AEci!*%o+i^cdD;qU@d`; zfN2?c*dZ`Y#tR4^mQP6H!vZprXS7a020p$pEyT2rPEFCl+t6R+?3|#3eb#5tW6_$s z4EO}|T@!tNqH^k^Hp^sZi$Al)Xr>5T{AgjNKo!ACGL`L;8Y@6vKTmD*CuoEYpqK&@ zhAuXAZEXM|ROPE_WP(u=9l{V_ViT1MJqMl@DO`#h267W6ok+fGZVDn{} zV<%76cv|@_v&^!veIqTp#Oq{xnsd>yrP!mt>^#*WH?R)-Xfe>ixY7?f~t{w_%bZ>HSEG}@h%`1 zXKgX_si*ua9J&-}_w=RBRkJ)z}$d z46i0zBba134wooIV?m1-bu55ML|KK4q4a?&dqgxLYNUa(mMrJrTY1m)^9L?eyyXf_nq5@5#h$VLM>l4y^%xi8o` zc%CSwQDNjbdGch%zyA8am39JVh?KmJF&Z2?7#bKm=2h{q;$?=E*X=^BV0Te5nN0S{ z7kT1O8yjpM6g&m zHp&Kxu|*p38yRD>Hq zShy?=VR0>Sh&UawW{p@kU%E-n^JrH4(}Lf^N={5yxkRZc(Fd%XY&WT@ zKci_0N>~Gk?%$g(9E|Wcej!CnQ{GCGFR2f8sqTI<&A`0>^71|4lVrEf^y$;xk@CbT zPo6Sjry*hCvVTCQ?pch}9ksh;jNdIj9@y>q?B+*LsgX>Q*Ia%98xA;JB8P4H%JFhE zlOOF^A`&Z8-O&2VS5d8mayU6!RexC8@H28c{gk0sNeVF@zJSr>PY%CHHg&KrmBUJP zn*A`j;TTZ|U`oFFl&ZK^cdwKtR!XPzd@4muQ#p<9=)?Ss(V2(#*=MWf#TQR?mtJzI zY%ko{opsh(`h+V}2H^&&P#x~ea37i^z)tazOet{=h_`dA(s8=Ui&$nX_$kiVQ^UGr z^3#;3HlFvaZ#ky&W;dmJWCjw|ax{4_k^8Od#8MtJrC4fK=hf`wj=6m0XsK?l)KZDI zR6Bl(-7f3TQmRq6+=fx`S|D0j6;mE-n0%F=rrUh==CTih4Ogr9suv!n`)gK_a_K6n zWwJ`o={D0+f4AInD|eAR*u+z-Kl|xVbt;IrS<(T-bIW71+3XFRJa(RHNbOvc8vQt{ z@wzIRbdWRgT3Jz_`Ex|~pyUkJ6zwlXWw$PzL;WD1L(KRbT=~Yd~$niKZkfvXx{-I;;U? z?*J?(nxSm2>h?^hVyHD4;}^x_<%7*464DV|V+Kp%G8XBDXv*cC_qJ_QzZ4bZS|TY# zDH!M>Qu2yelHVG)LSUU8m{_%e9EPy1RLY2fI8zLpI%ymQ??`YNe2tVgii@3R)Q&ZGN zMr3nHv<4CT6PO_qp?O*?9+)}tz^q0J;q*`ys7ueQ8K{&dMgBwn20 zE?OPyLJUHzlmW9!@vaa@qigOgl$KF0={VRy6rHo`|$JDIr05bN+Lh5}Eh8i1MTtg9N zkH9PI_waJ}{?z1NSvP0TsTgW?ybB@5i{nEbc?ASU_or5OTD(oHB#9QKR}rgEUdQHk zrf@Q(ZXH0P7$@R*cXx*u!f=VwTIxd|%@U(2mSSh6I*640e&Jp06Xl zB;-yGMjBQ8CViuOc}qn=4gMq&&4~c$BUP`O6{{StAK+rP-0fxQu}p{$k%X;NbsaoS zpo&D$4+b-l7`u#@v5ZP@5{{G(cE|26+3Hehx)4hV!AeSQh3v-c3fM(1cqyjic$+6( zaNG2&ma29IKQoowtpkX$SWyTejtAl^94URs6=9C%9W3=)9c~8b0n=hDb5hKoy6F}i zl(OtB(M)tWHt9!n>BORx#}q$h`blg*N9GRw{qD=vu) z0Fh`d3$YusJRUhR4z_ydrDncH@LoY~V70lO_>&~Mf;Gz}aBWTmUZlar5+#F36dA&f zBz-iIPZFhQ)Bzw7OI6c_Qgi-AU36lI(oO|CVfaL&UL-q2Cg)m0YxOU(6QZJ>00f3a zhBy<867MOFd@$WtH?fWKXaI>;lBhs7bYj8(nm-A_Cj>vpS8Zj)^P~bKqhG_$$c$7@ zg~_}>8EVdMaL&soN#t`n1}(fcwuucrCLoCiscIr;2|K2uNgXy8q7CAWbkps8tQsi| zmN^qznW!U|DkU$_LZswLtPL&^B%u(I2GJ;)lP}q^{WzX#mGWRGsUR3_1FZ^F(?O>> z(qP0ZZFP}JHPTe8f2rv3R8MDmiYJw!uWsV}=*o#^k`M#cbYinD(V!TU z<9HKPs5r4eq1dKxJUhnfqhu zCe!Iy1*)b2$!OgJ4T~BfK;QoUrFUgNyXUX z+9r?UjOfJvj0Q1w1hd-*3E4jKW@Aa^`V9xtE8gC zQ+X4?gFHa0RP(2%l*-rGwbF{^<9J=ON*V4;sbRAHER_1SLaG3TB$1Ga^eaU3r<914 zqG-u)fQ<#Bc#7Wu7|9Qh_P|I)d5RTm zP?7)us$+0&P07_G02dAbVAliy5KILCNE|boRD}@& zH?WSJg_07089`$L(2$-0ep^IBd;mz~fZx^-6hIz{;%{0FiSaKTWB?%48i4wjjvk`_ zeI+B>Z_J-Pat`v}8Y4L<7-_gBBm$58%Xlm~877TQQIQ~Wfgxv%YBm@jIrFMhZ*+T{0L}>re5Jb?w+3d8`f2hE0MQC-D zRH$D$ID@JAfE+*$T2X9jYHDF;a|=N=DVe|Eh&vHlD;UgCke%Jt)fMQ<4Rmm}Wak8d zK|9)I2n{x|B0_ zCCbUmA^eAn|A+fefPW(X0chG=!$i6Mg8Ya5UzE;2@_+gHH}}5?WoK(J;!*w?*W-#nU{TJ$Apc_hSNjh? zy8rm$`CrU`1%CmB*?$lBzlQ(M+WLcwC@xWKVfMcZRTLYlPlI^>o?*yINocqs4P{{6 zCaYhxE2m%Jf*A@_UI%?tE7l0&_<>u4canYWB}EfibB_TYOeGtLt!AfFkgBtgNtR1) zGt`rc_(FSdem`<4JmS6t7d<)!wk0}=-DPcwUS=IEc@DR1WqB^!Z17;oWjE^4-mt$w zQZq;}O!GI=_{^7T8>rrS)u!gRp8xZCWd8(P?PDeoF`ow7=aZ{z11XSCch_h|0gTL< z>K(PsbfqDn)nX`ZMW{&N%Q?ILja~F?0n*rDx!JYQ(_#Ztv`*|PtPO0(GQv-l_adDy z0Ty$qYLnQar(ZkXvb$h)G(~>(FNy1BgYM(@o=DR@Uh`p# z$(&4nnIJCpp-GdEU8XGAuD3uh16PhKT(V#K8d>Yc^a?Flnh}g6e^Qlf0dCMk+f*kL zO{}*VbssEHNafUfdY3WCtJaP=4N5@W+n^G?)8(!QtUs_PiJ-o>(+t1W7Wyd;yJ8Vmne z`dvHcr)oH+`D#i)MVtxEFXiu@q(4hP-bRqHCtGHFYZ+w=YPP0|8OuadG70T}3S6l~ zI$iQS8rU9l?X6$-VZnIrmUDa4X`Fr>q^8|(`K6TgjZ7Qy1S6110V<;XgRMlMe@4jD zyKhDGN^hbbe`NdI220RpGt~_ou0wB!T{x$#6RXBkc98Pq33=b`%*IC!%6|S?^QWMT z88h%Mg+uSv@mhg$w&-}1i*1Q^RaUuCiymHKN`+_?1%GlN{2437PGHu`*|lkw`8rXSnGZM30^0Qz#92OI4myb%7bgNG$=*}7#PjGd*5 z<|*OJ1?XnoH+TelYbKXADw;JZtH#j~ zgUgU6wWF`6(FdH#rO52Yb;3k<%=F)La;aVRek7se?WV)OSdF>X)K^jpeQ~JbJ|eG( z!Nn3VsJ%YjR47^$>f0p8Z8)6UTmL-qhWipyR#6u}BKBZVH(5`iY;;{Cn8UFiho)M} zitS%y8v!SfmJNw_&TkHy(qH}NdGKZ0JRMROS5dztNH)!?7ZSjT1ZQnfnQM1LE`Jp8 z6$b;O=((RKUouD>(5Q&ro8-@2=^WClNbrGbdTYZg+!X#QU2tFTw(cT?6Z4%F7IVv36+-v@nqrL=X;6ZrCjQ3xJ| zg(^4pVy|Og>%+aLIx}IuWmQ%P${`j*26e5)P&`E6-d6Y-15H|-96t+6elcd({bsrY zYiW;>LRYM2nO6FDlt=?9lv!6^tI-_Hwj64@cJc!PE%0_WY`hA*(9kpJ_LWVH^;&`$ zsKa=^`=jLD{}x z6&-}AodW5IP3NoC&~)VM_Rww9=P&eH?LK%NZ=`TtZ}d4&WZ$#$FME__c8XAcYDUp@B`lzVsaDR#T0;HrVTdjG!{F6jw`A@>_BaLAD1CNC(nl;wTTsZQVvuZd>LP2SI)|quQ2P$XmV^!cW4C_ zl_exKD_&INQ`u01?qNv-UmTW!mjf-A!%Eqri~YpDZ334a1Pab)9me-3BzvK4cLxrQ zL@e4GZ2ssX&Vd*N!y;Vv8LMvd*E!KgV|hnBb7!YB)n+&=#ajf|7xNBn3k|Y8C5mF} zT02OjetMTCH75Y>e^Ql6PhsEi5q2=ANzP|ym8?LxDfVz3!vW>B{h^qc`q_R_ z{$g$~<-LN5-`<@>I(Oj#p)n+{f^pgVGINNw*SPH-y#}^ZBV{x@~I)^Mg~-R%-x1Zhn|PW4*!0qn=u zSHPAtwVkoN(5Qm7!4Id6u$}QP(Y?uVd|B6{Nx3HLUnaeyG`ZbL4V=-nmCK)rv|--@ z95xWe!ULL3;Xsc{=c#kDnk@c!yQ|$6UqmlVhgePO&UU8;ZgLk$-JgwhlvF9lE#Dow z2ItyRxxdbWmJ1!-hT>9j8f1CwGR^uv+=17k`1zKoX^a;IUBHM8lLBv^CpNShr39Hd zJ6XN!i!b1U%rTs_qY%s>&6ZWQ+6+Dp-#D947E6i|yVt2~-DPgnTns?l72?t{Mb_GK zdP*B!Y#xe(_r~el7W)xUW-@%&Y=aRj5VuSC`Ylxhw_O00$2JXUJ@(ZX?}^WN6Z>~p zYccaks|WSV_6bOV*vl``bXjVT`a{xJ7=Vr%KiAznMG4B-A})C{H9o|pz`BUEXQBYR zd9eK%)i;9IFQc-C_&Mgz5i94;y;UU-WR6F&LdkPFRRK0RCabHP z&KH;7v4rGdn_Z))^BRvN95Im!%|7or6TiM8O90BxrhK>kQE+SlNacN|D!H`d^=lR59kAP|XF!sgjYV8oI~gw%Mft(gX*?piXhA*olFK)x44V4IXG@xq_S=cVxcYgK-Ey^QyV)8rXmMg4cEQKL-p^7sxDztBl96Q}3r#U_ zmb2d+{D8KBRqc}akt){pI((xsA}O2M%)UR72~F5=r0`9q&G|FI{rCwMX>_wIGQ8-1 z=#L-%MH%s)_t#r^OV-D$*S_~qwZm?)MXPgV;roVTQm1Roj)GCR6iHZTSCp=dk3BHO zb$%g@aHKpjY%q#{$%=bM#C7?_s}NkyfiiU=z0DLhW1#%tC}k)CYew$~p&{4S@Q0#W zIT4(c!zO)M>+uG;Z>$^+hr$uSsVS=g=1kMMz5R~J;(+;+78S5bQd!a1BTd-+RZSc? z_-(CrtXei-MGv@Fc6@kB$(Zowe4A*aLE5)}A+xf!u zD1NhIc&PdLacjF0gP`o$`}K{B)fm4zlBqLD&0hHBxwi4Zyh97yGeOv=>fq>0ibD!B zUZkxguP8Wx0U#Gf4WR*AbkZ{GhJG3BZuV6SU%0UubO zF^kqrag|L7WZa7Uz|ATSFwr}T7g1i9k^Y$oyQ>UC;8qMC@mfae${r1;Hhl()R| zJAlvDe@3v^A)R**j}1iBFTG3udV4akOX5piwc|68D?Wv5lA|a}o%1pAR&^87jKbjsQ6lRyqdcy_RBeiOEp#8WeSzN`k#C%%S2sg=JKT*YtKD3-W_}@ zgZwBttpiay%=MW#W+BGpyh+=}66NuC^9?f00OEu5cD2P^bM>^Y7o8XcS&L0B3HtVp zU0NUaDx2TjU-gLT6@xS)A602AT_pNfX#X@0AD&C5u!Y2&W`dx}ao^QVee02{#Ct+= zraX^YSRi$_EJt7AmHXw-u>?p-;8QYD;K9#lWZuVs7PTtda7fN7Tm?#X_C!fYFKL(L71t?{yf}d%2gHAW+06A{u z;-kKLmKg)EcZh}RvLa8Oi7qfulB$$qaH)l0@*DGk;LGwg-0%Tbt*Me0el}`nL{vES z1RS{{E*l_y215KthSs<|DD1S4l_MiLb%Rkx79K&=0~F|Yri%qULV`NH3@Bm>8pk;s zQH208y82W#-?`xlH_sl~U}Dg?sRjgKbqMmy$+o7Bdan=B_=D_=wqv(>Z*gdA;j zK2?sK#}EG6b5@ykz%%A!iX&cHacC+yl**}IH{*rFElFi-pOg)~c<9~GHn6{oJRVHt z>@c`_9de7kdG>aV$zlcY^|(cs>|*>wo5D13+-6>@MsJaWBA7IGIdqgJdpHZi&|J>S z5zNJnZYpb#g7uWXm#GL>@fMQYsmY?tr~I`kdw14(qR6miZTj1>2*p zHt{fWwv64r8GH>9d>lxCo3X=?qK-mqQw|yWv@Pn!;Z#f2>1O10ERC~aR^FG77o~x{ zP^Y2v>;0pkH&v}SHjU7;Ob>D)gIxy|F?$`tE|eCve5y86aFD%U=is;{(nJdwR0o=|vL=(@RKNEwuQ&P5jIkT1q@ z`#?h)bIJu@^7XWmyIJZ>f56z%S0v<(Lz^ofwd;SnmhY>`PP@@ttLV-B9XsrV`tq6U z0u5yDGpD216%2XdfaymwDr$f42r~|z*mSX+{*$-;mPv2Kk4kO31e`-z%Lwv*bV9-z z(1F>a`TV$!X1Yx69dr!tdvSdaq@IV@2Q!tK--5h)CyKVQ;lx^n91Do24jRn|t?73fYlvN3O}5R7d!ud2lo(x9sDvcreebI<6e0W?NBtR`V65rLy*(6V z(b)?g(=|zf5!uhvq>Fs>_0^{@3>YmYI&P@w*Rm)T znQ4opNFafibP2j&-SH?A3Aj0#_zZIP%zWF&X$n}ZvdlysDpp|FPU6XuAt%!-Pq)S7 zRsqzGSq6%!@gJv`HcwR=dgi@%a`G)!UKXvZ-qM(NBz4okf{aTM20s!I>#phU;d*S{ z3_olJkGV#y|GE!NcZT-t{m^&dY`sl$g2cO4y3%48_9neC$_6U?qJ%DZ!_U4D#eZYm z)~-$Kb$eo9>j{Gb?kVhN21{wPfTqZX8UFq!zmMM5-!o)!qy$Wjzew)F45kzP^$Tjx z$O>mzFpZxg;>nMd`9T8XpM^cOo@z=8cHfDR#}Zwz5+@MNB7PQqSTg`DoeWMf%)}RN zmv~RHJrsK%dRea`c-IbbgvA2@W&sSp&Vq_Iastoj{VrnGBqP2K^z2H(Im634m7<5? zuw-o`Z|S-2GNG$qm`|7e>D{Np?{42EFO_#mT3Soxw;Dk&BLWb!1B0lL>Y1Nhw8-I1 z(DUz3!Ef8KQ1)*+ZUX+b!sHa4R|PV|KE=htYF9z)k07M%b?kxGH3~zv zH$vw;jhC&SkmZ9cln@lklaZ{u65&D_m$6R~w4eY64maM@bB3+o8)7hGso}qj@-9;@ zT*BB!`4&#EL_z045-Wf8_`O0ThO`X-j=ALcw4ray{=AE^;rHlq%y}p0!xd;nWi=Ni z?1I{Tx3B0)S_3j>n8M`>3c=hiG-xU4pwd#nWvW=9il#=gbGuWEr`Q}cJO8dv(E2&F^2$SUqf}tQ4FWm9;tcRn46L0bMKqt4I zf)qQk0E)UPE&X|;Q=6#Kx=Bt;$u7o~7|O~)(i`e1*4!%+f@Ue1W%p3Bwt*eTD&-HQ z{8`GieWTK@dZbt9r6Ub4z5OC}atZXhQm%+2s5fqcw@4!RDrp((6p2y0TbvaI186XsX{XBbI%4bU|c+olHB?V8s z_?&UM{E?JzH&MTNzdG9B^`1bt3O?bSTZpxqE4OxbEoE*hX=RR3$F9?GR~#hDUe3$# zncJyL<33Kk#XL;Y3ut8FgTJ)L&43Pr>f|FyIVGcoPhOANvYbq%7?;3B)QEQkmU3MQ z8~gl6V&0OxbSwGlbLcvp1I^!SHGGjGcOJ;O84A0-2vc%vgf<+xTx^X}uDzoy4U1tdG}yH({&ESRI4~h(XrJwU7GsV?W`LYBS`$7$7j8+0AQy>`d$F+Vw3z> z$G9t8Lc~`!+(2^MdS`+H6$wjlSONt00w(xsMwRh?9J?Z zU|~G7+_`3H-7oH^e6^#$%3GWsoXj$l){vvjIa6PH-Fji4oY}U1r%lXAaf-eA8S(I$ zJU~QBVOH#M|Au&a(A(AVDdAbG6j_|$aGFy=)i6DK%2WZYH!Dqx75)iJE%4OGaH$UY z{#6n5c;0Tu{-65MMQ<6k7W}9w%Gl}JD z*+d1DO5_Fnx{1@joJXPDa={8z$@mo530>X3wH@7_)a=LY3IUf`2ox@!hc zTjMDG`7maSfgTp*%E;m)N#Z=Dd$ZUaSe#r*n8X0tQ6y}cb)X!Lc|n!mYr4_2$>~%( zYgAXIYh5lHUwbE9D$xbnta5=3^lT!V5c2OlF2>(sosVVbK+#99uGolK@a^$kyG6$* zZl1dE{w&A1K~t@bjomEi(cCJ;?AtIEzADq_=Q?EV;te7f`&`8uMnv|AWsB2e4V1af zzKiJ-i+!DPc(kigjoW&{>>#{>iy_A{g`ys76Jjzd9M5+pi!{b8YSUeh9q{;dRA1ra z_z*g8x%MC^E}?r@cv2~Dbl#_90^&R$0>>|YwND5!3N{I}lgjQ#tCif#*N4)0tFr|j z-K}roztl=dqYofkcy)_7hFYI}udEMCq>?#oSi`TYD*cSCxmk1&o&LsC(sghiGpcUB z{!0#KnZ@G~ukEVTOjlbcCAD1J;)vM9;17&*#L4Cx9ZvnF531n3q^p?t{UQmYkpqI> zJU>*!)QW4l+J_!$UI;^fv-n~`%DG*17z=ug!fUArKUA7?TIour1S&i#o?F=oX6jg} z`BLsI{h3e!W@`ww&YvY=hEy+_i$_@`I_BJKCfQDzqDPWP!3?tO* z_8#0c6gl6efjH~P?tk}TP-d2G%0CVYqU92{)k)icqQ4Zj&CH^+VCuuG)&LvL#e*y} z09F#o<#OH`rkaer2}Ra7^=%WMGxA#}Hse2+BinQKq1HAq16TPlRitBy+&0ScDCPIQ zrF$8o&(|bX%V_$^sq=cvMWw`r?X350K+$-(B3weBjw;?TJmt&1c<4!``+&EK-}C$b Od^zbiQk9Y>0sjNS4)-Sj diff --git a/examples/model_interpretation/imgs/equation5.png b/examples/model_interpretation/imgs/equation5.png deleted file mode 100644 index 75bbe3be4ad581485696e6a12d88bf537a33f0f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14108 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

s!VhP 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 diff --git a/examples/model_interpretation/imgs/example1.png b/examples/model_interpretation/imgs/example1.png deleted file mode 100644 index f0b7dda4dfef00b563601d590df3a54d547343c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88971 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 z
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 diff --git a/examples/model_interpretation/punctuations b/examples/model_interpretation/punctuations deleted file mode 100644 index 11d057b89103..000000000000 --- a/examples/model_interpretation/punctuations +++ /dev/null @@ -1,82 +0,0 @@ -” -。 -, -∈ -] -√ - -! -( -≥ -【 -“ -「 -÷ -《 -】 -! -ˊ -」 -. -_ -@ -~ -– -〕 -∶ -) -’ -℃ -》 -〈 -→ -、 -+ -| -; -: -∠ -' -‘ -, -? -× -△ -- -• -· -— -° -> -′ -● -; -… -" -Ⅱ -/ -< -+ -= -^ -Ⅰ -? -[ -﹑ -﹐ -* -〔 -~ -: -( -) -〉 -◎ -= -- -\ -% -% -& -≠ -. \ No newline at end of file diff --git a/examples/model_interpretation/rationale_extraction/available_gpu.py b/examples/model_interpretation/rationale_extraction/available_gpu.py deleted file mode 100644 index e05ecd3c666a..000000000000 --- a/examples/model_interpretation/rationale_extraction/available_gpu.py +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific l -"""print available_gpu id, using nvgpu -""" - -import logging -import traceback - -import nvgpu - -logging.basicConfig( - level=logging.DEBUG, - format="%(levelname)s: %(asctime)s %(filename)s" " [%(funcName)s:%(lineno)d][%(process)d] %(message)s", - datefmt="%m-%d %H:%M:%S", - filename=None, - filemode="a", -) - -if __name__ == "__main__": - from argparse import ArgumentParser - - try: - arg_parser = ArgumentParser(description="print available_gpu id, using nvgpu") - arg_parser.add_argument("-b", "--best", default=None, type=int, help="output best N") - args = arg_parser.parse_args() - - if args.best is not None: - gpus = sorted(nvgpu.gpu_info(), key=lambda x: (x["mem_used"], x["index"])) - ids = [x["index"] for x in gpus] - print(",".join(ids[: args.best])) - else: - print(",".join(nvgpu.available_gpus())) - - except Exception: - traceback.print_exc() - exit(-1) diff --git a/examples/model_interpretation/rationale_extraction/generate.sh b/examples/model_interpretation/rationale_extraction/generate.sh deleted file mode 100755 index d72b20bda984..000000000000 --- a/examples/model_interpretation/rationale_extraction/generate.sh +++ /dev/null @@ -1,57 +0,0 @@ -TASK=similarity - -if [[ $TASK == "mrc" ]]; then - MODELS=("roberta_base" "roberta_large") - MODES=("attention" "integrated_gradient") -else - MODELS=("roberta_large" "roberta_base" "lstm") - MODES=("lime" "attention" "integrated_gradient") -fi - -for BASE_MODEL in ${MODELS[*]}; -do - for INTER_MODE in ${MODES[*]}; - do - for LANGUAGE in "ch" "en"; - do - if [[ $LANGUAGE == "ch" ]]; then - if [[ $TASK == "senti" ]]; then - RATIO_DIC="[0.311]" - elif [[ $TASK == "similarity" ]]; then - RATIO_DIC="[0.701,0.709]" - elif [[ $TASK == "mrc" ]]; then - RATIO_DIC="[0.096]" - fi - elif [[ $LANGUAGE == "en" ]]; then - if [[ $TASK == "senti" ]]; then - RATIO_DIC="[0.192]" - elif [[ $TASK == "similarity" ]]; then - RATIO_DIC="[0.511,0.505]" - elif [[ $TASK == "mrc" ]]; then - RATIO_DIC="[0.102]" - fi - fi - echo ${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - - PRED_PATH=../task/${TASK}/output/${TASK}_${LANGUAGE}.${BASE_MODEL}/interpret.${INTER_MODE} - SAVE_PATH=./rationale/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - [ -d $SAVE_PATH ] || mkdir -p $SAVE_PATH - - python3 ./newp_text_generate.py \ - --pred_path $PRED_PATH \ - --save_path $SAVE_PATH \ - --task $TASK \ - --language $LANGUAGE \ - --ratio $RATIO_DIC - wait - - sh ./run_2_pred_${TASK}_per.sh $BASE_MODEL $INTER_MODE $LANGUAGE - wait - - sh ./generate_evaluation_data.sh $BASE_MODEL $INTER_MODE $LANGUAGE $TASK - wait - - echo ${BASE_MODEL}_${INTER_MODE}_${LANGUAGE}_finished - done - done -done diff --git a/examples/model_interpretation/rationale_extraction/generate_evaluation_data.py b/examples/model_interpretation/rationale_extraction/generate_evaluation_data.py deleted file mode 100644 index 162b7fb00f70..000000000000 --- a/examples/model_interpretation/rationale_extraction/generate_evaluation_data.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import json - - -def get_args(): - parser = argparse.ArgumentParser("generate data") - - parser.add_argument("--pred_path", required=True) - parser.add_argument("--data_dir", required=True) - parser.add_argument("--data_dir2", required=True) - parser.add_argument("--save_path", required=True) - parser.add_argument("--inter_mode", required=True) - parser.add_argument("--base_model", required=True) - parser.add_argument("--language", required=True) - - args = parser.parse_args() - return args - - -def evids_load(path): - evids = [] - with open(path, "r") as f: - for line in f.readlines(): - dic = json.loads(line) - evids.append(dic) - return evids - - -def dataLoad(args): - base_path = args.data_dir + "/" - text_path = base_path + "rationale_text/dev/dev" - text_exclusive_path = base_path + "rationale_exclusive_text/dev/dev" - - with open(text_path, "r") as f_text: - text_dict_list = {} - for line in f_text.readlines(): - line_dict = json.loads(line) - text_dict_list[line_dict["id"]] = line_dict - - with open(text_exclusive_path, "r") as f_exclusive_text: - text_exclusive_dict_list = {} - for line in f_exclusive_text.readlines(): - line_dict = json.loads(line) - text_exclusive_dict_list[line_dict["id"]] = line_dict - - base_path = args.data_dir2 + "/" - text_path = base_path + "rationale_text/dev/dev" - text_exclusive_path = base_path + "rationale_exclusive_text/dev/dev" - - with open(text_path, "r") as f_text: - text_dict_list2 = {} - for line in f_text.readlines(): - line_dict = json.loads(line) - text_dict_list2[line_dict["id"]] = line_dict - - with open(text_exclusive_path, "r") as f_exclusive_text: - text_exclusive_dict_list2 = {} - for line in f_exclusive_text.readlines(): - line_dict = json.loads(line) - text_exclusive_dict_list2[line_dict["id"]] = line_dict - - return text_dict_list, text_exclusive_dict_list, text_dict_list2, text_exclusive_dict_list2 - - -def r_data_generation( - args, evids, text_dict_list, text_exclusive_dict_list, text_dict_list2, text_exclusive_dict_list2 -): - save_path = args.save_path - f_save = open(save_path, "w") - - res_data = [] - for ins in evids: - temp = {} - temp["id"] = ins["id"] - temp["pred_label"] = ins["pred_label"] - temp["rationale"] = text_dict_list2[ins["id"]]["context_idx"] - temp["no_rationale"] = text_exclusive_dict_list2[ins["id"]]["context_idx"] - if len(temp["rationale"]) > 1 and args.inter_mode != "lime" and not (args.base_model.startswith("roberta")): - for i in range(len(temp["rationale"][1])): - temp["rationale"][1][i] -= len(temp["rationale"][0]) + len(temp["no_rationale"][0]) - for i in range(len(temp["no_rationale"][1])): - temp["no_rationale"][1][i] -= len(temp["rationale"][0]) + len(temp["no_rationale"][0]) - temp["rationale_pred"] = text_dict_list[ins["id"]]["pred_label"] - temp["no_rationale_pred"] = text_exclusive_dict_list[ins["id"]]["pred_label"] - temp["rationale_token"] = text_dict_list2[ins["id"]]["context_token"] - - res_data.append(temp) - - f_save.write(json.dumps(temp, ensure_ascii=False) + "\n") - f_save.close() - - -if __name__ == "__main__": - args = get_args() - text_dict_list, text_exclusive_dict_list, text_dict_list2, text_exclusive_dict_list2 = dataLoad(args) - evids = evids_load(args.pred_path) - r_data_generation( - args, evids, text_dict_list, text_exclusive_dict_list, text_dict_list2, text_exclusive_dict_list2 - ) diff --git a/examples/model_interpretation/rationale_extraction/generate_evaluation_data.sh b/examples/model_interpretation/rationale_extraction/generate_evaluation_data.sh deleted file mode 100755 index fa26d3beb8f9..000000000000 --- a/examples/model_interpretation/rationale_extraction/generate_evaluation_data.sh +++ /dev/null @@ -1,23 +0,0 @@ -### - # This script concatenates results from previous running to generate a formated result for evaluation use -### - -BASE_MODEL=$1 -INTER_MODE=$2 -LANGUAGE=$3 -TASK=$4 - -PRED_PATH=../task/${TASK}/output/${TASK}_${LANGUAGE}.${BASE_MODEL}/interpret.${INTER_MODE} -SAVE_PATH=./evaluation_data/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} - -SAVE_DIR=./evaluation_data/${TASK}/ -[ -d $SAVE_DIR ] || mkdir -p $SAVE_DIR - -python3 generate_evaluation_data.py \ - --data_dir ./prediction/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} \ - --data_dir2 ./rationale/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE} \ - --pred_path $PRED_PATH \ - --save_path $SAVE_PATH \ - --inter_mode $INTER_MODE \ - --base_model $BASE_MODEL \ - --language $LANGUAGE \ No newline at end of file diff --git a/examples/model_interpretation/rationale_extraction/mrc_pred.py b/examples/model_interpretation/rationale_extraction/mrc_pred.py deleted file mode 100644 index 2868c86b1240..000000000000 --- a/examples/model_interpretation/rationale_extraction/mrc_pred.py +++ /dev/null @@ -1,207 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import functools -import json -import os -import sys -import time -from pathlib import Path - -import paddle - -from paddlenlp.data import Dict, Pad -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("../task/mrc") -from saliency_map.squad import RCInterpret, compute_prediction # noqa: E402 - -sys.path.append("..") -from roberta.modeling import RobertaForQuestionAnswering # noqa: E402 - -sys.path.remove("..") -sys.path.remove("../task/mrc") -sys.path.append("../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, -) - -sys.path.remove("../..") - - -def get_args(): - parser = argparse.ArgumentParser("mrc predict with roberta") - parser.add_argument("--base_model", required=True, choices=["roberta_base", "roberta_large"]) - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=128, help="max sentence length, should not greater than 512" - ) - parser.add_argument("--batch_size", type=int, default=32, help="batchsize") - parser.add_argument("--epoch", type=int, default=3, help="epoch") - parser.add_argument("--data_dir", type=str, required=True, help="data directory includes train / develop data") - parser.add_argument("--warmup_proportion", type=float, default=0.1) - parser.add_argument("--lr", type=float, default=5e-5, help="learning rate") - parser.add_argument("--eval", action="store_true") - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument("--wd", type=float, default=0.01, help="weight decay, aka L2 regularizer") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument("--n-samples", type=int, default=25, help="number of samples used for smooth gradient method") - parser.add_argument("--output_dir", type=Path, required=True, help="interpretable output directory") - parser.add_argument( - "--doc_stride", - type=int, - default=128, - help="When splitting up a long document into chunks, how much stride to take between chunks.", - ) - parser.add_argument("--language", type=str, required=True, help="language that the model based on") - parser.add_argument("--input_data", type=str, required=True) - args = parser.parse_args() - return args - - -def map_fn_DuCheckList(examples, args, tokenizer): - # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results - # in one example possible giving several features when a context is long, each of those features having a - # context that overlaps a bit the context of the previous feature. - # NOTE: Almost the same functionality as HuggingFace's prepare_train_features function. The main difference is - # that HugggingFace uses ArrowTable as basic data structure, while we use list of dictionary instead. - contexts = [examples[i]["context"] for i in range(len(examples))] - questions = [examples[i]["question"] for i in range(len(examples))] - - tokenized_examples = tokenizer(questions, contexts, stride=args.doc_stride, max_seq_len=args.max_seq_len) - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - - # For validation, there is no need to compute start and end positions - for i, tokenized_example in enumerate(tokenized_examples): - # Grab the sequence corresponding to that example (to know what is the context and what is the question). - sequence_ids = tokenized_example["token_type_ids"] - - # One example can give several spans, this is the index of the example containing this span of text. - sample_index = tokenized_example["overflow_to_sample"] - tokenized_examples[i]["example_id"] = examples[sample_index]["id"] - - # Set to None the offset_mapping that are not part of the context so it's easy to determine if a token - # position is part of the context or not. - if args.language == "ch": - tokenized_examples[i]["offset_mapping"] = [ - (o if sequence_ids[k] == 1 else None) for k, o in enumerate(tokenized_example["offset_mapping"]) - ] - else: - n = tokenized_example["offset_mapping"].index((0, 0), 1) + 2 # context start position - m = len(tokenized_example["offset_mapping"]) - 1 # context end position + 1 - tokenized_examples[i]["offset_mapping"] = [ - (o if n <= k <= m else None) for k, o in enumerate(tokenized_example["offset_mapping"]) - ] - - return tokenized_examples - - -def load_data(path): - data = {} - f = open(path, "r") - for line in f.readlines(): - line_split = json.loads(line) - data[line_split["id"]] = line_split - f.close() - return data - - -def init_roberta_var(args): - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - - model = RobertaForQuestionAnswering.from_pretrained(args.from_pretrained) - map_fn = functools.partial(map_fn_DuCheckList, args=args, tokenizer=tokenizer) - dev_ds = RCInterpret().read(os.path.join(args.data_dir, "dev")) - # dev_ds = load_dataset('squad', splits='dev_v2', data_files=None) - dev_ds.map(map_fn, batched=True) - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=args.batch_size, shuffle=False) - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_type_id), - } - ): fn(samples) - - dev_dataloader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - - return model, tokenizer, dev_dataloader, dev_ds - - -@paddle.no_grad() -def evaluate(model, data_loader, args): - model.eval() - - all_start_logits = [] - all_end_logits = [] - tic_eval = time.time() - - for batch in data_loader: - input_ids, token_type_ids = batch - loss, start_logits_tensor, end_logits_tensor, cls_logits = model(input_ids, token_type_ids) - for idx in range(start_logits_tensor.shape[0]): - if len(all_start_logits) % 1000 == 0 and len(all_start_logits): - print("Processing example: %d" % len(all_start_logits)) - print("time per 1000:", time.time() - tic_eval) - tic_eval = time.time() - - all_start_logits.append(start_logits_tensor.numpy()[idx]) - all_end_logits.append(end_logits_tensor.numpy()[idx]) - - all_predictions, all_nbest_json, scores_diff_json, all_feature_index = compute_prediction( - data_loader.dataset.data, - data_loader.dataset.new_data, - (all_start_logits, all_end_logits), - True, - 20, - args.max_seq_len, - 0.0, - ) - - # Can also write all_nbest_json and scores_diff_json files if needed - with open(os.path.join(args.output_dir, "dev"), "w") as f: - for id in all_predictions: - temp = {} - temp["id"] = int(id) - temp["pred_label"] = all_predictions[id] - temp["pred_feature"] = all_feature_index[id] - f.write(json.dumps(temp, ensure_ascii=False) + "\n") - - -if __name__ == "__main__": - args = get_args() - if args.base_model.startswith("roberta"): - model, tokenizer, dataloader, dev_ds = init_roberta_var(args) - else: - raise ValueError("unsupported base model name.") - - with paddle.amp.auto_cast(enable=args.use_amp): - - sd = paddle.load(args.init_checkpoint) - model.set_dict(sd) - print("load model from %s" % args.init_checkpoint) - - evaluate(model, dataloader, args) diff --git a/examples/model_interpretation/rationale_extraction/newp_text_generate.py b/examples/model_interpretation/rationale_extraction/newp_text_generate.py deleted file mode 100644 index 28e8e98157d8..000000000000 --- a/examples/model_interpretation/rationale_extraction/newp_text_generate.py +++ /dev/null @@ -1,269 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import json -import math -import os - - -def get_args(): - parser = argparse.ArgumentParser("generate data") - - parser.add_argument("--pred_path", required=True) - parser.add_argument("--save_path", required=True) - parser.add_argument("--language", required=True) - parser.add_argument("--task", required=True) - parser.add_argument("--ratio", type=str, required=True) - - args = parser.parse_args() - return args - - -def evids_load(path): - evids = [] - with open(path, "r") as f: - for line in f.readlines(): - dic = json.loads(line) - evids.append(dic) - return evids - - -def generate_for_senti(args, evid_dict, ratio): - r = {} - ex_r = {} - - label = evid_dict["pred_label"] - char_attri = list(evid_dict["char_attri"].keys()) - length = len(char_attri) - - rationale_ratio = ratio[0] - toprationale_text, toprationale_exclusive_text = [], [] - - keys = [int(x) for x in char_attri[: math.ceil(length * rationale_ratio)]] - keys.sort() - for key in keys: - toprationale_text.append(evid_dict["char_attri"][str(key)][0].strip()) - - keys = [int(x) for x in char_attri[math.ceil(length * rationale_ratio) :]] - keys.sort() - for key in keys: - toprationale_exclusive_text.append(evid_dict["char_attri"][str(key)][0].strip()) - - if args.language == "en": - toprationale_text = " ".join(toprationale_text) - toprationale_exclusive_text = " ".join(toprationale_exclusive_text) - else: - toprationale_text = "".join(toprationale_text) - toprationale_exclusive_text = "".join(toprationale_exclusive_text) - - if len(toprationale_text) == 0: - toprationale_text = "['UNK']" - if len(toprationale_exclusive_text) == 0: - toprationale_exclusive_text = "['UNK']" - - r["id"] = evid_dict["id"] - r["context"] = toprationale_text - r["context_idx"] = [[int(x) for x in char_attri[: math.ceil(length * rationale_ratio)]]] - r["context_token"] = [[evid_dict["char_attri"][x][0] for x in char_attri[: math.ceil(length * rationale_ratio)]]] - r["label"] = label - ex_r["id"] = evid_dict["id"] - ex_r["context"] = toprationale_exclusive_text - ex_r["context_idx"] = [[int(x) for x in char_attri[math.ceil(length * rationale_ratio) :]]] - ex_r["context_token"] = [ - [evid_dict["char_attri"][x][0] for x in char_attri[math.ceil(length * rationale_ratio) :]] - ] - ex_r["label"] = label - return r, ex_r - - -def generate_for_similarity(args, evid_dict, ratio): - r = {} - ex_r = {} - q_rationale_ratio = ratio[0] - t_rationale_ratio = ratio[1] - - label = evid_dict["pred_label"] - # query - q_char_attri = list(evid_dict["query_char_attri"].keys()) - q_length = len(q_char_attri) - - q_topR_Rtext, q_topR_noRtext = [], [] - keys = [int(x) for x in q_char_attri[: math.ceil(q_length * q_rationale_ratio)]] - keys.sort() - for key in keys: - q_topR_Rtext.append(evid_dict["query_char_attri"][str(key)][0].strip()) - - keys = [int(x) for x in q_char_attri[math.ceil(q_length * q_rationale_ratio) :]] - keys.sort() - for key in keys: - q_topR_noRtext.append(evid_dict["query_char_attri"][str(key)][0].strip()) - - if args.language == "ch": - q_topR_Rtext = "".join(q_topR_Rtext) - q_topR_noRtext = "".join(q_topR_noRtext) - else: - q_topR_Rtext = " ".join(q_topR_Rtext) - q_topR_noRtext = " ".join(q_topR_noRtext) - - if len(q_topR_Rtext) == 0: - q_topR_Rtext = "['UNK']" - if len(q_topR_noRtext) == 0: - q_topR_noRtext = "['UNK']" - - # title - t_char_attri = list(evid_dict["title_char_attri"].keys()) - t_length = len(t_char_attri) - - t_topR_Rtext, t_topR_noRtext = [], [] - keys = [int(x) for x in t_char_attri[: math.ceil(t_length * t_rationale_ratio)]] - keys.sort() - for key in keys: - t_topR_Rtext.append(evid_dict["title_char_attri"][str(key)][0]) - - keys = [int(x) for x in t_char_attri[math.ceil(t_length * t_rationale_ratio) :]] - keys.sort() - for key in keys: - t_topR_noRtext.append(evid_dict["title_char_attri"][str(key)][0]) - - if args.language == "ch": - t_topR_Rtext = "".join(t_topR_Rtext) - t_topR_noRtext = "".join(t_topR_noRtext) - else: - t_topR_Rtext = " ".join(t_topR_Rtext) - t_topR_noRtext = " ".join(t_topR_noRtext) - - if len(t_topR_Rtext) == 0: - t_topR_Rtext = "['UNK']" - if len(t_topR_noRtext) == 0: - t_topR_noRtext = "['UNK']" - - r["id"] = evid_dict["id"] - r["context"] = [q_topR_Rtext, t_topR_Rtext] - r["context_idx"] = [ - [int(x) for x in q_char_attri[: math.ceil(q_length * q_rationale_ratio)]], - [int(x) for x in t_char_attri[: math.ceil(t_length * t_rationale_ratio)]], - ] - r["context_token"] = [ - [evid_dict["query_char_attri"][x][0] for x in q_char_attri[: math.ceil(q_length * q_rationale_ratio)]], - [evid_dict["title_char_attri"][x][0] for x in t_char_attri[: math.ceil(t_length * t_rationale_ratio)]], - ] - r["label"] = label - ex_r["id"] = evid_dict["id"] - ex_r["context"] = [q_topR_noRtext, t_topR_noRtext] - ex_r["context_idx"] = [ - [int(x) for x in q_char_attri[math.ceil(q_length * q_rationale_ratio) :]], - [int(x) for x in t_char_attri[math.ceil(t_length * t_rationale_ratio) :]], - ] - ex_r["context_token"] = [ - [evid_dict["query_char_attri"][x][0] for x in q_char_attri[math.ceil(q_length * q_rationale_ratio) :]], - [evid_dict["title_char_attri"][x][0] for x in t_char_attri[math.ceil(t_length * t_rationale_ratio) :]], - ] - ex_r["label"] = label - return r, ex_r - - -def generate_for_MRC(args, evid_dict, ratio): - id = evid_dict["id"] - question = evid_dict["question"] - char_attri = list(evid_dict["char_attri"].keys()) - length = len(char_attri) - - rationale_ratio = ratio[0] - toprationale_text, toprationale_exclusive_text = [], [] - keys = [int(x) for x in char_attri[: math.ceil(length * rationale_ratio)]] - keys.sort() - for key in keys: - toprationale_text.append(evid_dict["char_attri"][str(key)][0].strip()) - - keys = [int(x) for x in char_attri[math.ceil(length * rationale_ratio) :]] - keys.sort() - for key in keys: - toprationale_exclusive_text.append(evid_dict["char_attri"][str(key)][0].strip()) - - if args.language == "en": - toprationale_text = " ".join(toprationale_text) - toprationale_exclusive_text = " ".join(toprationale_exclusive_text) - else: - toprationale_text = "".join(toprationale_text) - toprationale_exclusive_text = "".join(toprationale_exclusive_text) - - if len(toprationale_text) == 0: - toprationale_text = "['UNK']" - if len(toprationale_exclusive_text) == 0: - toprationale_exclusive_text = "['UNK']" - - data_R_dict, Rdata_noR_dict = {}, {} - - data_R_dict["id"] = id - data_R_dict["title"] = "" - data_R_dict["context"] = toprationale_text - data_R_dict["question"] = question - data_R_dict["answers"] = [""] - data_R_dict["answer_starts"] = [-1] - data_R_dict["is_impossible"] = False - data_R_dict["context_idx"] = [[int(x) for x in char_attri[: math.ceil(length * rationale_ratio)]]] - data_R_dict["context_token"] = [ - [evid_dict["char_attri"][x][0] for x in char_attri[: math.ceil(length * rationale_ratio)]] - ] - - Rdata_noR_dict["id"] = id - Rdata_noR_dict["title"] = "" - Rdata_noR_dict["context"] = toprationale_exclusive_text - Rdata_noR_dict["question"] = question - Rdata_noR_dict["answers"] = [""] - Rdata_noR_dict["answer_starts"] = [-1] - Rdata_noR_dict["is_impossible"] = False - Rdata_noR_dict["context_idx"] = [[int(x) for x in char_attri[math.ceil(length * rationale_ratio) :]]] - Rdata_noR_dict["context_token"] = [ - [evid_dict["char_attri"][x][0] for x in char_attri[math.ceil(length * rationale_ratio) :]] - ] - - return data_R_dict, Rdata_noR_dict - - -def r_text_generation(evids, args): - print("num: {}".format(len(evids))) - - f_rationale_path = os.path.join(args.save_path, "rationale_text/dev") - f_rationale_exclusive_path = os.path.join(args.save_path, "rationale_exclusive_text/dev") - - if not os.path.exists(f_rationale_path): - os.makedirs(f_rationale_path) - if not os.path.exists(f_rationale_exclusive_path): - os.makedirs(f_rationale_exclusive_path) - - f_rationale = open(os.path.join(f_rationale_path, "dev"), "w") - f_rationale_exclusive = open(os.path.join(f_rationale_exclusive_path, "dev"), "w") - - rationale_ratio = json.loads(args.ratio) - for id, evid_dict in enumerate(evids): - if args.task == "senti": - data_R_dict, Rdata_noR_dict = generate_for_senti(args, evid_dict, rationale_ratio) - elif args.task == "similarity": - data_R_dict, Rdata_noR_dict = generate_for_similarity(args, evid_dict, rationale_ratio) - elif args.task == "mrc": - data_R_dict, Rdata_noR_dict = generate_for_MRC(args, evid_dict, rationale_ratio) - f_rationale.write(json.dumps(data_R_dict, ensure_ascii=False) + "\n") - f_rationale_exclusive.write(json.dumps(Rdata_noR_dict, ensure_ascii=False) + "\n") - - f_rationale.close() - f_rationale_exclusive.close() - - -if __name__ == "__main__": - args = get_args() - - evids = evids_load(args.pred_path) - r_text_generation(evids, args) diff --git a/examples/model_interpretation/rationale_extraction/run_2_pred_mrc_per.sh b/examples/model_interpretation/rationale_extraction/run_2_pred_mrc_per.sh deleted file mode 100755 index c672ca7a1b60..000000000000 --- a/examples/model_interpretation/rationale_extraction/run_2_pred_mrc_per.sh +++ /dev/null @@ -1,48 +0,0 @@ -### - # This script generates mrc predictions for texts contains rationales only and contains non-rationales only -### -export CUDA_VISIBLE_DEVICES=`python ./available_gpu.py --best 1` -export PYTHONPATH=./:$PYTHONPATH - -BASE_MODEL=$1 -INTER_MODE=$2 -LANGUAGE=$3 -TASK=mrc - -for RATIONAL_TYPE in "rationale_text" "rationale_exclusive_text"; -do - if [[ $LANGUAGE == "ch" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-wwm-ext - CKPT=../task/${TASK}/models/roberta_base_DuReader-Checklist_20211022_095011/ckpt.bin # 3 epoch - - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-wwm-ext-large - CKPT=../task/${TASK}/models/roberta_large_DuReader-Checklist_20211022_095359/ckpt.bin # 3 epoch - fi - elif [[ $LANGUAGE == "en" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=../task/${TASK}/models/roberta_base_squad2_20211113_104225/ckpt.bin - - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=../task/${TASK}/models/roberta_large_squad2_20211113_111300/ckpt.bin - fi - fi - - OUTPUT=./prediction/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE}/${RATIONAL_TYPE}/dev - [ -d $OUTPUT ] || mkdir -p $OUTPUT - set -x - python3 ./mrc_pred.py \ - --input_data ../data/${TASK}_${LANGUAGE} \ - --base_model $BASE_MODEL \ - --data_dir ./rationale/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE}/${RATIONAL_TYPE}/dev \ - --output_dir $OUTPUT \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --init_checkpoint $CKPT \ - --n-samples 300 \ - --doc_stride 128 \ - --language $LANGUAGE -done diff --git a/examples/model_interpretation/rationale_extraction/run_2_pred_senti_per.sh b/examples/model_interpretation/rationale_extraction/run_2_pred_senti_per.sh deleted file mode 100755 index 06dfea7790d8..000000000000 --- a/examples/model_interpretation/rationale_extraction/run_2_pred_senti_per.sh +++ /dev/null @@ -1,62 +0,0 @@ -### - # This script generates sentiment predictions for texts contains rationales only and contains non-rationales only -### - -export CUDA_VISIBLE_DEVICES=`python ./available_gpu.py --best 1` -export PYTHONPATH=./:$PYTHONPATH - -BASE_MODEL=$1 -INTER_MODE=$2 -LANGUAGE=$3 -TASK=senti - -FROM_PRETRAIN='test' -VOCAB_PATH='test' -for RATIONAL_TYPE in "rationale_text" "rationale_exclusive_text"; -do - if [[ $LANGUAGE == "en" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=../task/${TASK}/pretrained_models/saved_model_en/roberta_base_20220318_185322/model_10000/model_state.pdparams - #CKPT=../../../${TASK}/pretrained_models/saved_model_en/roberta_base_20211206_164443/model_10000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=../task/${TASK}/pretrained_models/saved_model_en/roberta_large_20220318_183813/model_4000/model_state.pdparams - #CKPT=../../../${TASK}/pretrained_models/saved_model_en/roberta_large_20211207_174631/model_4000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - VOCAB_PATH=../task/${TASK}/rnn/vocab.sst2_train - CKPT=../task/${TASK}/rnn/checkpoints_en/final.pdparams - fi - - elif [[ $LANGUAGE == "ch" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-wwm-ext' - CKPT=../task/${TASK}/pretrained_models/saved_model_ch/roberta_base_20220318_155933/model_900/model_state.pdparams - #CKPT=../../../${TASK}/pretrained_models/saved_model_ch/roberta_base_20211206_180737/model_900/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-wwm-ext-large' - CKPT=../task/${TASK}/pretrained_models/saved_model_ch/roberta_large_20220318_170123/model_900/model_state.pdparams - #CKPT=../../../${TASK}/pretrained_models/saved_model_ch/roberta_large_20211207_143351/model_900/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - VOCAB_PATH=../task/${TASK}/rnn/vocab.txt - CKPT=../task/${TASK}/rnn/checkpoints_ch/final.pdparams - fi - fi - - OUTPUT=./prediction/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE}/${RATIONAL_TYPE}/dev - [ -d $OUTPUT ] || mkdir -p $OUTPUT - set -x - python3 ./sentiment_pred.py \ - --base_model $BASE_MODEL \ - --data_dir ./rationale/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE}/${RATIONAL_TYPE}/dev \ - --output_dir $OUTPUT \ - --vocab_path $VOCAB_PATH \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE \ - --n-samples 200 \ - --language $LANGUAGE -done \ No newline at end of file diff --git a/examples/model_interpretation/rationale_extraction/run_2_pred_similarity_per.sh b/examples/model_interpretation/rationale_extraction/run_2_pred_similarity_per.sh deleted file mode 100755 index 9f0fecd865b7..000000000000 --- a/examples/model_interpretation/rationale_extraction/run_2_pred_similarity_per.sh +++ /dev/null @@ -1,54 +0,0 @@ -### - # This script generates textual similarity predictions for texts contains rationales only and contains non-rationales only -### -export CUDA_VISIBLE_DEVICES=`python ./available_gpu.py --best 1` -export PYTHONPATH=./:$PYTHONPATH - -BASE_MODEL=$1 -INTER_MODE=$2 -LANGUAGE=$3 -TASK=similarity - -for RATIONAL_TYPE in "rationale_text" "rationale_exclusive_text"; -do - if [[ $LANGUAGE == "en" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=../task/${TASK}/pretrained_models/saved_model_${LANGUAGE}/roberta_base_20211109_205245/model_54000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=../task/${TASK}/pretrained_models/saved_model_${LANGUAGE}/roberta_large_20211109_205649/model_46000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - FROM_PRETRAIN=../task/${TASK}/skep_ernie_1.0_large_ch - CKPT=../task/${TASK}/simnet/checkpoints_${LANGUAGE}/final.pdparams - fi - - elif [[ $LANGUAGE == "ch" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-wwm-ext' - CKPT=../task/${TASK}/pretrained_models/saved_model_${LANGUAGE}/roberta_base_20211018_104038/model_11400/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-wwm-ext-large' - CKPT=../task/${TASK}/pretrained_models/saved_model_${LANGUAGE}/roberta_large_20211018_152833/model_22000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - FROM_PRETRAIN='skep_ernie_1.0_large_ch' - CKPT=../task/${TASK}/simnet/checkpoints_${LANGUAGE}/final.pdparams - fi - fi - - OUTPUT=./prediction/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE}/${RATIONAL_TYPE}/dev - [ -d $OUTPUT ] || mkdir -p $OUTPUT - set -x - python3 similarity_pred.py \ - --base_model $BASE_MODEL \ - --data_dir ./rationale/${TASK}/${BASE_MODEL}_${INTER_MODE}_${LANGUAGE}/${RATIONAL_TYPE}/dev \ - --output_dir $OUTPUT \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --max_seq_len 256 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE \ - --language $LANGUAGE -done \ No newline at end of file diff --git a/examples/model_interpretation/rationale_extraction/sentiment_pred.py b/examples/model_interpretation/rationale_extraction/sentiment_pred.py deleted file mode 100644 index 4ab1397ed304..000000000000 --- a/examples/model_interpretation/rationale_extraction/sentiment_pred.py +++ /dev/null @@ -1,255 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import json -import os -import sys -from functools import partial -from pathlib import Path - -import paddle -from tqdm import tqdm - -from paddlenlp.data import Dict, Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import DatasetBuilder -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("../task/senti") -from rnn.model import BiLSTMAttentionModel, SelfInteractiveAttention # noqa: E402 -from rnn.utils import CharTokenizer, convert_example # noqa: E402 - -sys.path.append("..") -from roberta.modeling import RobertaForSequenceClassification # noqa: E402 - -sys.path.remove("..") -sys.path.remove("../task/senti") -sys.path.append("../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, -) - -sys.path.remove("../..") - - -def get_args(): - parser = argparse.ArgumentParser("sentiment analysis prediction") - - parser.add_argument("--base_model", required=True, choices=["roberta_base", "roberta_large", "lstm"]) - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=128, help="max sentence length, should not greater than 512" - ) - parser.add_argument("--batch_size", type=int, default=1, help="batchsize") - parser.add_argument("--data_dir", type=str, required=True, help="data directory includes train / develop data") - parser.add_argument("--eval", action="store_true") - - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument("--wd", type=float, default=0.01, help="weight decay, aka L2 regularizer") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument( - "--inter_mode", - type=str, - default="attention", - choices=["attention", "simple_gradient", "smooth_gradient", "integrated_gradient", "lime"], - help="appoint the mode of interpretable.", - ) - parser.add_argument("--n-samples", type=int, default=25, help="number of samples used for smooth gradient method") - parser.add_argument("--output_dir", type=Path, required=True, help="interpretable output directory") - parser.add_argument("--start_id", type=int, default=0) - parser.add_argument("--vocab_path", type=str) - parser.add_argument("--language", type=str, required=True, help="Language that the model is built for") - args = parser.parse_args() - return args - - -class SentiData(DatasetBuilder): - def _read(self, filename, language): - with open(filename, "r", encoding="utf8") as f: - for line in f.readlines(): - line_split = json.loads(line) - yield {"id": line_split["id"], "context": line_split["context"]} - - -def create_dataloader(dataset, trans_fn=None, mode="train", batch_size=1, batchify_fn=None): - """ - Creats dataloader. - - Args: - dataset(obj:`paddle.io.Dataset`): Dataset instance. - trans_fn(obj:`callable`, optional, defaults to `None`): function to convert a data sample to input ids, etc. - mode(obj:`str`, optional, defaults to obj:`train`): If mode is 'train', it will shuffle the dataset randomly. - batch_size(obj:`int`, optional, defaults to 1): The sample number of a mini-batch. - batchify_fn(obj:`callable`, optional, defaults to `None`): function to generate mini-batch data by merging - the sample list, None for only stack each fields of sample in axis - 0(same as :attr::`np.stack(..., axis=0)`). - - Returns: - dataloader(obj:`paddle.io.DataLoader`): The dataloader which generates batches. - """ - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - sampler = paddle.io.DistributedBatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - else: - sampler = paddle.io.BatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - dataloader = paddle.io.DataLoader(dataset, batch_sampler=sampler, collate_fn=batchify_fn) - return dataloader - - -def map_fn_senti(examples, tokenizer, language): - print("load data %d" % len(examples)) - - contexts = [example["context"] for example in examples] - tokenized_examples = tokenizer(contexts, max_seq_len=args.max_seq_len) - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - - return tokenized_examples - - -def truncate_offset(seg, start_offset, end_offset): - seg_len = len(seg) - for n in range(len(start_offset) - 1, -1, -1): - if start_offset[n] < seg_len: - end_offset[n] = seg_len - break - start_offset.pop(n) - end_offset.pop(n) - - -def init_lstm_var(args): - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - tokenizer = CharTokenizer(vocab, args.language, "../punctuations") - padding_idx = vocab.token_to_idx.get("[PAD]", 0) - - trans_fn = partial(convert_example, tokenizer=tokenizer, is_test=True, language=args.language) - - # init attention layer - lstm_hidden_size = 196 - attention = SelfInteractiveAttention(hidden_size=2 * lstm_hidden_size) - model = BiLSTMAttentionModel( - attention_layer=attention, - vocab_size=len(tokenizer.vocab), - lstm_hidden_size=lstm_hidden_size, - num_classes=2, - padding_idx=padding_idx, - ) - - # Reads data and generates mini-batches. - dev_ds = SentiData().read(os.path.join(args.data_dir, "dev"), args.language) - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=padding_idx), # input_ids - Stack(dtype="int64"), # seq len - ): [data for data in fn(samples)] - - dev_loader = create_dataloader( - dev_ds, trans_fn=trans_fn, batch_size=args.batch_size, mode="validation", batchify_fn=batchify_fn - ) - - return model, tokenizer, dev_loader - - -def init_roberta_var(args): - tokenizer = None - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - model = RobertaForSequenceClassification.from_pretrained( - args.from_pretrained, - hidden_dropout_prob=0, - attention_probs_dropout_prob=0, - dropout=0, - num_labels=2, - name="", - return_inter_score=True, - ) - - map_fn = partial(map_fn_senti, tokenizer=tokenizer, language=args.language) - - dev_ds = SentiData().read(os.path.join(args.data_dir, "dev"), args.language) - dev_ds.map(map_fn, batched=True) - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=args.batch_size, shuffle=False) - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - } - ): fn(samples) - - dataloader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - - return model, tokenizer, dataloader - - -if __name__ == "__main__": - args = get_args() - if args.base_model.startswith("roberta"): - model, tokenizer, dataloader = init_roberta_var(args) - - elif args.base_model == "lstm": - model, tokenizer, dataloader = init_lstm_var(args) - else: - raise ValueError("unsupported base model name.") - - with paddle.amp.auto_cast(enable=args.use_amp), open(str(args.output_dir) + "/dev", "w") as out_handle: - # Load model - sd = paddle.load(args.init_checkpoint) - model.set_dict(sd) - model.train() # 为了取梯度,加载模型时dropout设为0 - print("load model from %s" % args.init_checkpoint) - - get_sub_word_ids = lambda word: map(str, tokenizer.convert_tokens_to_ids(tokenizer.tokenize(word))) - - for step, d in tqdm(enumerate(dataloader)): - if step + 1 < args.start_id: - continue - - result = {} - if args.base_model.startswith("roberta"): - input_ids, token_type_ids = d - fwd_args = [input_ids, token_type_ids] - fwd_kwargs = {} - - tokens = tokenizer.convert_ids_to_tokens(input_ids[0, 1:-1].tolist()) # list - - elif args.base_model == "lstm": - input_ids, seq_lens = d - fwd_args = [input_ids, seq_lens] - fwd_kwargs = {} - tokens = [tokenizer.vocab.idx_to_token[input_id] for input_id in input_ids.tolist()[0]] - - result["id"] = dataloader.dataset.data[step]["id"] - - probs, atts, embedded = model.forward_interpet(*fwd_args, **fwd_kwargs) - pred_label = paddle.argmax(probs, axis=-1).tolist()[0] - - result["pred_label"] = pred_label - result["probs"] = [float(format(prob, ".5f")) for prob in probs.numpy()[0].tolist()] - if args.language == "en": - result["context"] = tokenizer.convert_tokens_to_string(tokens) - else: - result["context"] = "".join(tokens) - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") diff --git a/examples/model_interpretation/rationale_extraction/similarity_pred.py b/examples/model_interpretation/rationale_extraction/similarity_pred.py deleted file mode 100644 index c6771189b1ee..000000000000 --- a/examples/model_interpretation/rationale_extraction/similarity_pred.py +++ /dev/null @@ -1,229 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import json -import os -import sys -from functools import partial -from pathlib import Path - -import paddle -from tqdm import tqdm - -from paddlenlp.data import Dict, Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import DatasetBuilder -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("..") -from roberta.modeling import RobertaForSequenceClassification # noqa: E402 - -sys.path.remove("..") -from simnet.model import SimNet # noqa: E402 -from simnet.utils import CharTokenizer, preprocess_data # noqa: E402 - -sys.path.remove("../task/similarity") -sys.path.append("../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, -) - -sys.path.remove("../..") - - -def get_args(): - parser = argparse.ArgumentParser("textual similarity prediction") - - parser.add_argument("--base_model", required=True, choices=["roberta_base", "roberta_large", "lstm"]) - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=128, help="max sentence length, should not greater than 512" - ) - parser.add_argument("--batch_size", type=int, default=1, help="batchsize") - parser.add_argument("--data_dir", type=str, required=True, help="data directory includes train / develop data") - - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument("--wd", type=float, default=0.01, help="weight decay, aka L2 regularizer") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument( - "--inter_mode", - type=str, - default="attention", - choices=["attention", "simple_gradient", "smooth_gradient", "integrated_gradient", "lime"], - help="appoint the mode of interpretable.", - ) - parser.add_argument("--output_dir", type=Path, required=True, help="interpretable output directory") - parser.add_argument("--language", type=str, required=True) - args = parser.parse_args() - return args - - -class SimilarityData(DatasetBuilder): - def _read(self, filename): - with open(filename, "r", encoding="utf8") as f: - for line in f.readlines(): - line_split = json.loads(line) - if args.language == "ch": - yield { - "id": line_split["id"], - "query": line_split["context"][0], - "title": line_split["context"][1], - } - else: - yield { - "id": line_split["id"], - "sentence1": line_split["context"][0], - "sentence2": line_split["context"][1], - } - - -def map_fn_senti(examples, tokenizer): - print("load data %d" % len(examples)) - if args.language == "ch": - query = "query" - title = "title" - else: - query = "sentence1" - title = "sentence2" - queries = [example[query] for example in examples] - titles = [example[title] for example in examples] - tokenized_examples = tokenizer(queries, titles, max_seq_len=args.max_seq_len) - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - - return tokenized_examples - - -def init_roberta_var(args): - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - model = RobertaForSequenceClassification.from_pretrained( - args.from_pretrained, - hidden_dropout_prob=0, - attention_probs_dropout_prob=0, - dropout=0, - num_labels=2, - name="", - return_inter_score=True, - ) - - map_fn = partial(map_fn_senti, tokenizer=tokenizer) - - dev_ds = SimilarityData().read(os.path.join(args.data_dir, "dev")) - dev_ds.map(map_fn, batched=True) - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=args.batch_size, shuffle=False) - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - } - ): fn(samples) - - dataloader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - - return model, tokenizer, dataloader, dev_ds - - -def init_lstm_var(args): - if args.language == "ch": - vocab = Vocab.load_vocabulary("../task/similarity/simnet/vocab.char", unk_token="[UNK]", pad_token="[PAD]") - else: - vocab = Vocab.load_vocabulary("../task/similarity/simnet/vocab_QQP", unk_token="[UNK]", pad_token="[PAD]") - - tokenizer = CharTokenizer(vocab, args.language, "../punctuations") - model = SimNet(network="lstm", vocab_size=len(vocab), num_classes=2) - - dev_ds = SimilarityData().read(os.path.join(args.data_dir, "dev")) - dev_examples = preprocess_data(dev_ds.data, tokenizer, language=args.language) - batches = [dev_examples[idx : idx + args.batch_size] for idx in range(0, len(dev_examples), args.batch_size)] - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=vocab.token_to_idx.get("[PAD]", 0)), # query_ids - Pad(axis=0, pad_val=vocab.token_to_idx.get("[PAD]", 0)), # title_ids - Stack(dtype="int64"), # query_seq_lens - Stack(dtype="int64"), # title_seq_lens - ): [data for data in fn(samples)] - - return model, tokenizer, batches, batchify_fn, vocab, dev_ds - - -if __name__ == "__main__": - args = get_args() - if args.base_model.startswith("roberta"): - model, tokenizer, dataloader, dev_ds = init_roberta_var(args) - - elif args.base_model == "lstm": - model, tokenizer, dataloader, batchify_fn, vocab, dev_ds = init_lstm_var(args) - else: - raise ValueError("unsupported base model name.") - - with paddle.amp.auto_cast(enable=args.use_amp), open(str(args.output_dir) + "/dev", "w") as out_handle: - # Load model - sd = paddle.load(args.init_checkpoint) - model.set_dict(sd) - model.train() # 为了取梯度,加载模型时dropout设为0 - print("load model from %s" % args.init_checkpoint) - - for step, d in tqdm(enumerate(dataloader)): - - result = {} - if args.base_model.startswith("roberta"): - input_ids, token_type_ids = d - fwd_args = [input_ids, token_type_ids] - fwd_kwargs = {} - - SEP_idx = input_ids.tolist()[0].index(tokenizer.sep_token_id) - q_tokens = tokenizer.convert_ids_to_tokens(input_ids[0, 1:SEP_idx].tolist()) # list - if args.language == "ch": - t_tokens = tokenizer.convert_ids_to_tokens(input_ids[0, SEP_idx + 1 : -1].tolist()) # list - else: - t_tokens = tokenizer.convert_ids_to_tokens(input_ids[0, SEP_idx + 2 : -1].tolist()) # list - - elif args.base_model == "lstm": - query_ids, title_ids, query_seq_lens, title_seq_lens = batchify_fn(d) - query_ids = paddle.to_tensor(query_ids) - title_ids = paddle.to_tensor(title_ids) - query_seq_lens = paddle.to_tensor(query_seq_lens) - title_seq_lens = paddle.to_tensor(title_seq_lens) - - fwd_args = [query_ids, title_ids, query_seq_lens, title_seq_lens] - fwd_kwargs = {} - q_tokens = [vocab._idx_to_token[idx] for idx in query_ids.tolist()[0]] - t_tokens = [vocab._idx_to_token[idx] for idx in title_ids.tolist()[0]] - - result["id"] = dev_ds.data[step]["id"] - - probs, atts, embedded = model.forward_interpret(*fwd_args, **fwd_kwargs) - pred_label = paddle.argmax(probs, axis=-1).tolist()[0] - - result["pred_label"] = pred_label - result["probs"] = [float(format(prob, ".5f")) for prob in probs.numpy()[0].tolist()] - if args.language == "ch": - result["query"] = "".join(q_tokens) - result["title"] = "".join(t_tokens) - else: - result["query"] = tokenizer.convert_tokens_to_string(q_tokens) - result["title"] = tokenizer.convert_tokens_to_string(t_tokens) - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") diff --git a/examples/model_interpretation/requirements.txt b/examples/model_interpretation/requirements.txt deleted file mode 100644 index 6a6e0abed457..000000000000 --- a/examples/model_interpretation/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -nvgpu>=0.9.0 -regex>=2021.11.10 -spacy>=2.3.7 -tqdm>=4.62.3 -visualdl>=2.2.2 diff --git a/examples/model_interpretation/task/README.md b/examples/model_interpretation/task/README.md deleted file mode 100644 index 03f1edca0dc8..000000000000 --- a/examples/model_interpretation/task/README.md +++ /dev/null @@ -1,19 +0,0 @@ -### 基线模型预测 -#### 情感分析: - 预测:model_interpretation/rationale_extraction/sentiment_pred.py - 参数设置参考:model_interpretation/rationale_extraction/run_2_pred_senti_per.sh (参数涉及模型、文件等路径,以及语言的,请根据实际情况进行修改) -#### 文本相似度: - 预测:model_interpretation/rationale_extraction/similarity_pred.py - 参数设置参考:model_interpretation/rationale_extraction/run_2_pred_similarity_per.sh(参数涉及模型、文件等路径,以及语言的,请根据实际情况进行修改) -#### 阅读理解: - 预测:model_interpretation/rationale_extraction/mrc_pred.py - 参数设置参考:model_interpretation/rationale_extraction/run_2_pred_mrc_per.sh(参数涉及模型、文件等路径,以及语言的,请根据实际情况进行修改) -### 三个任务的基线模型训练 -#### 情感分析 - RoBERTa:model_interpretation/task/senti/pretrained_models/run_train.sh - LSTM:model_interpretation/task/senti/rnn/lstm_train.sh -#### 文本相似度 - RoBERTa:model_interpretation/task/similarity/pretrained_models/run_train_pointwise.sh - LSTM:model_interpretation/task/similarity/simnet/lstm_train.sh -#### 阅读理解 - RoBERTa:model_interpretation/task/mrc/run_train_rc.sh diff --git a/examples/model_interpretation/task/mrc/roberta/modeling.py b/examples/model_interpretation/task/mrc/roberta/modeling.py deleted file mode 100644 index 4b376e43dabc..000000000000 --- a/examples/model_interpretation/task/mrc/roberta/modeling.py +++ /dev/null @@ -1,719 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys - -import paddle -import paddle.nn as nn - -from paddlenlp.transformers.model_utils import PretrainedModel, register_base_model - -sys.path.append("../..") -from task.transformer import TransformerEncoder, TransformerEncoderLayer # noqa: E402 - -sys.path.remove("../..") - -__all__ = [ - "RobertaModel", - "RobertaPretrainedModel", - "RobertaForSequenceClassification", - "RobertaForTokenClassification", - "RobertaForQuestionAnswering", -] - - -class RobertaEmbeddings(nn.Layer): - r""" - Include embeddings from word, position and token_type embeddings. - """ - - def __init__( - self, - vocab_size, - hidden_size=768, - hidden_dropout_prob=0.1, - max_position_embeddings=512, - type_vocab_size=16, - pad_token_id=0, - ): - super(RobertaEmbeddings, self).__init__() - self.word_embeddings = nn.Embedding(vocab_size, hidden_size, padding_idx=pad_token_id) - self.position_embeddings = nn.Embedding(max_position_embeddings, hidden_size) - self.token_type_embeddings = nn.Embedding(type_vocab_size, hidden_size) - self.layer_norm = nn.LayerNorm(hidden_size) - self.dropout = nn.Dropout(hidden_dropout_prob) - - def forward(self, input_ids, token_type_ids=None, position_ids=None): - if position_ids is None: - # maybe need use shape op to unify static graph and dynamic graph - ones = paddle.ones_like(input_ids, dtype="int64") - seq_length = paddle.cumsum(ones, axis=-1) - position_ids = seq_length - ones - position_ids.stop_gradient = True - if token_type_ids is None: - token_type_ids = paddle.zeros_like(input_ids, dtype="int64") - - input_embedings = self.word_embeddings(input_ids) - position_embeddings = self.position_embeddings(position_ids) - token_type_embeddings = self.token_type_embeddings(token_type_ids) - - embeddings = input_embedings + position_embeddings + token_type_embeddings - embeddings = self.layer_norm(embeddings) - embeddings = self.dropout(embeddings) - return embeddings - - -class RobertaPooler(nn.Layer): - def __init__(self, hidden_size): - super(RobertaPooler, self).__init__() - self.dense = nn.Linear(hidden_size, hidden_size) - self.activation = nn.Tanh() - - def forward(self, hidden_states): - # We "pool" the model by simply taking the hidden state corresponding - # to the first token. - first_token_tensor = hidden_states[:, 0] - pooled_output = self.dense(first_token_tensor) - pooled_output = self.activation(pooled_output) - return pooled_output - - -class RobertaPretrainedModel(PretrainedModel): - r""" - An abstract class for pretrained RoBerta models. It provides RoBerta related - `model_config_file`, `pretrained_resource_files_map`, `resource_files_names`, - `pretrained_init_configuration`, `base_model_prefix` for downloading and - loading pretrained models. - Refer to :class:`~paddlenlp.transformers.model_utils.PretrainedModel` for more details. - - """ - - model_config_file = "model_config.json" - pretrained_init_configuration = { - "roberta-wwm-ext": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 768, - "initializer_range": 0.02, - "intermediate_size": 3072, - "max_position_embeddings": 512, - "num_attention_heads": 12, - "num_hidden_layers": 12, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "roberta-wwm-ext-large": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 1024, - "initializer_range": 0.02, - "intermediate_size": 4096, - "max_position_embeddings": 512, - "num_attention_heads": 16, - "num_hidden_layers": 24, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "rbt3": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 768, - "initializer_range": 0.02, - "intermediate_size": 3072, - "max_position_embeddings": 512, - "num_attention_heads": 12, - "num_hidden_layers": 3, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "rbtl3": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 1024, - "initializer_range": 0.02, - "intermediate_size": 4096, - "max_position_embeddings": 512, - "num_attention_heads": 16, - "num_hidden_layers": 3, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - } - resource_files_names = {"model_state": "model_state.pdparams"} - pretrained_resource_files_map = { - "model_state": { - "roberta-wwm-ext": "https://paddlenlp.bj.bcebos.com/models/transformers/roberta_base/roberta_chn_base.pdparams", - "roberta-wwm-ext-large": "https://paddlenlp.bj.bcebos.com/models/transformers/roberta_large/roberta_chn_large.pdparams", - "rbt3": "https://paddlenlp.bj.bcebos.com/models/transformers/rbt3/rbt3_chn_large.pdparams", - "rbtl3": "https://paddlenlp.bj.bcebos.com/models/transformers/rbtl3/rbtl3_chn_large.pdparams", - } - } - base_model_prefix = "roberta" - - def _init_weights(self, layer): - """Initialization hook""" - if isinstance(layer, (nn.Linear, nn.Embedding)): - # only support dygraph, use truncated_normal and make it inplace - # and configurable later - layer.weight.set_value( - paddle.tensor.normal( - mean=0.0, - std=self.initializer_range - if hasattr(self, "initializer_range") - else self.roberta.config["initializer_range"], - shape=layer.weight.shape, - ) - ) - elif isinstance(layer, nn.LayerNorm): - layer._epsilon = 1e-12 - - -@register_base_model -class RobertaModel(RobertaPretrainedModel): - r""" - The bare Roberta Model outputting raw hidden-states. - - This model inherits from :class:`~paddlenlp.transformers.model_utils.PretrainedModel`. - Refer to the superclass documentation for the generic methods. - - This model is also a Paddle `paddle.nn.Layer `__ subclass. Use it as a regular Paddle Layer - and refer to the Paddle documentation for all matter related to general usage and behavior. - - Args: - vocab_size (int): - Vocabulary size of `inputs_ids` in `RobertaModel`. Also is the vocab size of token embedding matrix. - Defines the number of different tokens that can be represented by the `inputs_ids` passed when calling `RobertaModel`. - hidden_size (int, optional): - Dimensionality of the embedding layer, encoder layers and pooler layer. Defaults to `768`. - num_hidden_layers (int, optional): - Number of hidden layers in the Transformer encoder. Defaults to `12`. - num_attention_heads (int, optional): - Number of attention heads for each attention layer in the Transformer encoder. - Defaults to `12`. - intermediate_size (int, optional): - Dimensionality of the feed-forward (ff) layer in the encoder. Input tensors - to ff layers are firstly projected from `hidden_size` to `intermediate_size`, - and then projected back to `hidden_size`. Typically `intermediate_size` is larger than `hidden_size`. - Defaults to `3072`. - hidden_act (str, optional): - The non-linear activation function in the feed-forward layer. - ``"gelu"``, ``"relu"`` and any other paddle supported activation functions - are supported. Defaults to ``"gelu"``. - hidden_dropout_prob (float, optional): - The dropout probability for all fully connected layers in the embeddings and encoder. - Defaults to `0.1`. - attention_probs_dropout_prob (float, optional): - The dropout probability used in MultiHeadAttention in all encoder layers to drop some attention target. - Defaults to `0.1`. - max_position_embeddings (int, optional): - The maximum value of the dimensionality of position encoding, which dictates the maximum supported length of an input - sequence. Defaults to `512`. - type_vocab_size (int, optional): - The vocabulary size of the `token_type_ids` passed when calling `~transformers.RobertaModel`. - Defaults to `2`. - initializer_range (float, optional): - The standard deviation of the normal initializer. Defaults to 0.02. - - .. note:: - A normal_initializer initializes weight matrices as normal distributions. - See :meth:`RobertaPretrainedModel._init_weights()` for how weights are initialized in `RobertaModel`. - - pad_token_id(int, optional): - The index of padding token in the token vocabulary. - Defaults to `0`. - """ - - def __init__( - self, - vocab_size, - hidden_size=768, - num_hidden_layers=12, - num_attention_heads=12, - intermediate_size=3072, - hidden_act="gelu", - hidden_dropout_prob=0.1, - attention_probs_dropout_prob=0.1, - max_position_embeddings=512, - type_vocab_size=16, - initializer_range=0.01, - layer_norm_eps=1e-12, - pad_token_id=0, - ): - super(RobertaModel, self).__init__() - self.pad_token_id = pad_token_id - self.initializer_range = initializer_range - self.embeddings = RobertaEmbeddings( - vocab_size, hidden_size, hidden_dropout_prob, max_position_embeddings, type_vocab_size, pad_token_id - ) - encoder_layer = TransformerEncoderLayer( - hidden_size, - num_attention_heads, - intermediate_size, - dropout=hidden_dropout_prob, - activation=hidden_act, - attn_dropout=attention_probs_dropout_prob, - act_dropout=0, - ) - self.encoder = TransformerEncoder(encoder_layer, num_hidden_layers) - self.pooler = RobertaPooler(hidden_size) - - def forward( - self, - input_ids, - token_type_ids=None, - position_ids=None, - attention_mask=None, - noise=None, - i=None, - n_samples=None, - ): - r""" - Args: - input_ids (Tensor): - Indices of input sequence tokens in the vocabulary. They are - numerical representations of tokens that build the input sequence. - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - token_type_ids (Tensor, optional): - Segment token indices to indicate first and second portions of the inputs. - Indices can be either 0 or 1: - - - 0 corresponds to a **sentence A** token, - - 1 corresponds to a **sentence B** token. - - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - Defaults to None, which means no segment embeddings is added to token embeddings. - position_ids (Tensor, optional): - Indices of positions of each input sequence tokens in the position embeddings. - Selected in the range ``[0, max_position_embeddings - 1]``. - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - Defaults to `None`. - attention_mask (Tensor, optional): - Mask used in multi-head attention to avoid performing attention to some unwanted positions, - usually the paddings or the subsequent positions. - Its data type can be int, float and bool. - When the data type is bool, the `masked` tokens have `False` values and the others have `True` values. - When the data type is int, the `masked` tokens have `0` values and the others have `1` values. - When the data type is float, the `masked` tokens have `-INF` values and the others have `0` values. - It is a tensor with shape broadcasted to `[batch_size, num_attention_heads, sequence_length, sequence_length]`. - For example, its shape can be [batch_size, sequence_length], [batch_size, sequence_length, sequence_length], - [batch_size, num_attention_heads, sequence_length, sequence_length]. - Defaults to `None`, which means nothing needed to be prevented attention to. - - Returns: - tuple: Returns tuple (`sequence_output`, `pooled_output`). - - With the fields: - - - sequence_output (Tensor): - Sequence of hidden-states at the last layer of the model. - It's data type should be float32 and its shape is [batch_size, sequence_length, hidden_size]. - - - pooled_output (Tensor): - The output of first token (`[CLS]`) in sequence. - We "pool" the model by simply taking the hidden state corresponding to the first token. - Its data type should be float32 and its shape is [batch_size, hidden_size]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaModel, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaModel.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - sequence_output, pooled_output = model(**inputs) - - """ - if attention_mask is None: - attention_mask = paddle.unsqueeze( - (input_ids == self.pad_token_id).astype(self.pooler.dense.weight.dtype) * -1e9, axis=[1, 2] - ) - # CLS: 101; SEP: 102; PAD: 0 - baseline_ids = paddle.to_tensor( - [101] + [0] * (input_ids.shape[1] - 2) + [102], - dtype=input_ids.dtype, - place=input_ids.place, - stop_gradient=input_ids.stop_gradient, - ) - - embedding_output = self.embeddings( - input_ids=input_ids, position_ids=position_ids, token_type_ids=token_type_ids - ) - baseline_embedding_output = self.embeddings( - input_ids=baseline_ids, position_ids=position_ids, token_type_ids=token_type_ids - ) - - if noise is not None: - if noise.upper() == "GAUSSIAN": - pass - # stdev_spread = 0.15 - # stdev = stdev_spread * (orig_embedded.max() - orig_embedded.min()).numpy() - # noise = paddle.to_tensor(np.random.normal(0, stdev, orig_embedded.shape).astype(np.float32), - # stop_gradient=False) - # orig_embedded = orig_embedded + noise - if noise.upper() == "INTEGRATED": - embedding_output = baseline_embedding_output + i / (n_samples - 1) * ( - embedding_output - baseline_embedding_output - ) - else: - raise ValueError("unsupported noise method: %s" % (noise)) - - # encoder_outputs = self.encoder(embedding_output, attention_mask) - encoder_outputs, att_weights_list = self.encoder(embedding_output, attention_mask) # interpret - sequence_output = encoder_outputs - pooled_output = self.pooler(sequence_output) - return sequence_output, pooled_output, att_weights_list, embedding_output - - -class RobertaForQuestionAnswering(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the hidden-states output to - compute `span_start_logits` and `span_end_logits`, designed for question-answering tasks like SQuAD. - - Args: - roberta (:class:`RobertaModel`): - An instance of RobertaModel. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` of `RobertaModel` - instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, dropout=None): - super(RobertaForQuestionAnswering, self).__init__() - self.roberta = roberta # allow roberta to be config - self.classifier = nn.Linear(self.roberta.config["hidden_size"], 2) - self.classifier_cls = nn.Linear(self.roberta.config["hidden_size"], 2) - self.criterion = CrossEntropyLossForChecklist() - - # def forward(self, input_ids, token_type_ids=None): - def forward(self, *args, **kwargs): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - tuple: Returns tuple (`start_logits`, `end_logits`). - - With the fields: - - - `start_logits` (Tensor): - A tensor of the input token classification logits, indicates the start position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - - `end_logits` (Tensor): - A tensor of the input token classification logits, indicates the end position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForSequenceClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForSequenceClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - start_pos = kwargs.pop("start_pos", None) - end_pos = kwargs.pop("end_pos", None) - cls_label = kwargs.pop("labels", None) - - # sequence_output, pooled_output, _, _ = self.roberta( - # input_ids, - # token_type_ids=token_type_ids, - # position_ids=None, - # attention_mask=None) - # print(kwargs) - sequence_output, pooled_output, _, _ = self.roberta(*args, **kwargs) - - logits = self.classifier(sequence_output) # (bsz, seq, 2) - logits = paddle.transpose(logits, perm=[2, 0, 1]) # (2, bsz, seq) - start_logits, end_logits = paddle.unstack(x=logits, axis=0) - cls_logits = self.classifier_cls(pooled_output) - - if start_pos is not None and end_pos is not None: - if len(start_pos.shape) != 1: - start_pos = start_pos.squeeze() - if len(end_pos.shape) != 1: - end_pos = end_pos.squeeze() - loss = self.criterion((start_logits, end_logits, cls_logits), (start_pos, end_pos, cls_label)) - else: - loss = None - - # return start_logit, end_logits - return loss, start_logits, end_logits, cls_logits - - def forward_interpret(self, *args, **kwargs): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - tuple: Returns tuple (`start_logits`, `end_logits`). - - With the fields: - - - `start_logits` (Tensor): - A tensor of the input token classification logits, indicates the start position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - - `end_logits` (Tensor): - A tensor of the input token classification logits, indicates the end position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForSequenceClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForSequenceClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - start_pos = kwargs.pop("start_pos", None) - end_pos = kwargs.pop("end_pos", None) - cls_label = kwargs.pop("labels", None) - - # sequence_output, pooled_output, _, _ = self.roberta( - # input_ids, - # token_type_ids=token_type_ids, - # position_ids=None, - # attention_mask=None) - # print(kwargs) - sequence_output, pooled_output, att_weights_list, embedding_output = self.roberta(*args, **kwargs) - - logits = self.classifier(sequence_output) # (bsz, seq, 2) - logits = paddle.transpose(logits, perm=[2, 0, 1]) # (2, bsz, seq) - start_logits, end_logits = paddle.unstack(x=logits, axis=0) - cls_logits = self.classifier_cls(pooled_output) - - if start_pos is not None and end_pos is not None: - if len(start_pos.shape) != 1: - start_pos = start_pos.squeeze() - if len(end_pos.shape) != 1: - end_pos = end_pos.squeeze() - loss = self.criterion((start_logits, end_logits, cls_logits), (start_pos, end_pos, cls_label)) - else: - loss = None - - # return start_logit, end_logits - return loss, start_logits, end_logits, cls_logits, att_weights_list, embedding_output - - -class CrossEntropyLossForChecklist(nn.Layer): - def __init__(self): - super(CrossEntropyLossForChecklist, self).__init__() - - def forward(self, y, label): - start_logits, end_logits, cls_logits = y # [(bsz, seq), (bsz, seq), (bsz, 2)] - start_position, end_position, answerable_label = label # [(bsz), (bsz), (bsz)] - - start_position = paddle.unsqueeze(start_position, axis=-1) - end_position = paddle.unsqueeze(end_position, axis=-1) - answerable_label = paddle.unsqueeze(answerable_label, axis=-1) - - start_loss = nn.functional.cross_entropy(input=start_logits, label=start_position, soft_label=False) - end_loss = nn.functional.cross_entropy(input=end_logits, label=end_position, soft_label=False) - cls_loss = nn.functional.cross_entropy(input=cls_logits, label=answerable_label, soft_label=False) - - mrc_loss = (start_loss + end_loss) / 2 - loss = (mrc_loss + cls_loss) / 2 - return loss - - -class RobertaForSequenceClassification(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the output layer, - designed for sequence classification/regression tasks like GLUE tasks. - - Args: - roberta (:class:`RobertaModel`): - An instance of `RobertaModel`. - num_classes (int, optional): - The number of classes. Defaults to `2`. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` - of `RobertaModel` instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, num_classes=2, dropout=None): - super(RobertaForSequenceClassification, self).__init__() - self.num_classes = num_classes - self.roberta = roberta # allow roberta to be config - self.dropout = nn.Dropout(dropout if dropout is not None else self.roberta.config["hidden_dropout_prob"]) - self.classifier = nn.Linear(self.roberta.config["hidden_size"], num_classes) - self.softmax = nn.Softmax() - - def forward(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - Tensor: Returns tensor `logits`, a tensor of the input text classification logits. - Its data type should be float32 and it has a shape of [batch_size, num_classes]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForSequenceClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForSequenceClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - _, pooled_output, _, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=position_ids, attention_mask=attention_mask - ) - - pooled_output = self.dropout(pooled_output) - logits = self.classifier(pooled_output) - return logits - - def forward_interpet( - self, - input_ids, - token_type_ids=None, - position_ids=None, - attention_mask=None, - noise=None, - i=None, - n_samples=None, - ): - _, pooled_output, att_weights_list, embedding_output = self.roberta( - input_ids, - token_type_ids=token_type_ids, - position_ids=position_ids, - attention_mask=attention_mask, - noise=noise, - i=i, - n_samples=n_samples, - ) - - pooled_output = self.dropout(pooled_output) - logits = self.classifier(pooled_output) - probs = self.softmax(logits) - - return probs, att_weights_list, embedding_output - - -class RobertaForTokenClassification(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the hidden-states output layer, - designed for token classification tasks like NER tasks. - - Args: - roberta (:class:`RobertaModel`): - An instance of `RobertaModel`. - num_classes (int, optional): - The number of classes. Defaults to `2`. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` - of `RobertaModel` instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, num_classes=2, dropout=None): - super(RobertaForTokenClassification, self).__init__() - self.num_classes = num_classes - self.roberta = roberta # allow roberta to be config - self.dropout = nn.Dropout(dropout if dropout is not None else self.roberta.config["hidden_dropout_prob"]) - self.classifier = nn.Linear(self.roberta.config["hidden_size"], num_classes) - - def forward(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - Tensor: Returns tensor `logits`, a tensor of the input token classification logits. - Shape as `[batch_size, sequence_length, num_classes]` and dtype as `float32`. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForTokenClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForTokenClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - sequence_output, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=position_ids, attention_mask=attention_mask - ) - - sequence_output = self.dropout(sequence_output) - logits = self.classifier(sequence_output) - return logits diff --git a/examples/model_interpretation/task/mrc/run_1_predict_rc.sh b/examples/model_interpretation/task/mrc/run_1_predict_rc.sh deleted file mode 100755 index 1039a2e08546..000000000000 --- a/examples/model_interpretation/task/mrc/run_1_predict_rc.sh +++ /dev/null @@ -1,51 +0,0 @@ -### - # This file contains script to run prediction of a specific baseline model and language on given input data - # The result of this script will be used to evaluate the performance of the baseline model -### - -export CUDA_VISIBLE_DEVICES=7 -export PYTHONPATH=./:$PYTHONPATH - -LANGUAGE=ch # LANGUAGE choose in [en, ch] -BASE_MODEL=roberta_base # BASE_MODEL choose in [roberta_base, roberta_large] - -if [[ $LANGUAGE == "ch" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-wwm-ext - CKPT=models/roberta_base_DuReader-Checklist_20211022_095011/ckpt.bin # 3epoch - #CKPT=models/roberta_base_ch_20211220_202953/ckpt.bin #new fine_tune - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-wwm-ext-large - # CKPT=models/ernie_large_DuReader-Checklist_20211007_163424/ckpt.bin # 3 epoch F1: 63.465 EM: 52.832 - # CKPT=models/ernie_large_DuReader-Checklist_20211009_115837/ckpt.bin # 4 epoch F1: 63.323 EM: 52.920 - # CKPT=models/ernie_large_DuReader-Checklist_20211009_142730/ckpt.bin # 3 epoch F1: 66.613 EM: 57.168 - CKPT=models/roberta_large_DuReader-Checklist_20211022_095359/ckpt.bin - #CKPT=models/roberta_large_ch_20211220_203809/ckpt.bin #new fine_tune - fi -elif [[ $LANGUAGE == "en" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=models/roberta_base_squad2_20211113_104225/ckpt.bin - #CKPT=models/roberta_base_en_20211221_201720/ckpt.bin #new fine_tune - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=models/roberta_large_squad2_20211113_111300/ckpt.bin - #CKPT=models/roberta_large_en_20211223_114421/ckpt.bin #new fine_tune - fi -fi - -OUTPUT=./output/mrc_${LANGUAGE}.${BASE_MODEL} -[ -d $OUTPUT ] || mkdir -p $OUTPUT -set -x -python3 ./saliency_map/rc_prediction.py \ - --base_model $BASE_MODEL \ - --data_dir ../../data/mrc_${LANGUAGE} \ - --from_pretrained $FROM_PRETRAIN \ - --init_checkpoint $CKPT \ - --output_dir $OUTPUT \ - --n-samples 300 \ - --doc_stride 128 \ - --language $LANGUAGE \ - --max_seq_len 384 \ - --batch_size 32 \ - --epoch 2 \ No newline at end of file diff --git a/examples/model_interpretation/task/mrc/run_1_predict_rc_all.sh b/examples/model_interpretation/task/mrc/run_1_predict_rc_all.sh deleted file mode 100755 index b504072d49bd..000000000000 --- a/examples/model_interpretation/task/mrc/run_1_predict_rc_all.sh +++ /dev/null @@ -1,57 +0,0 @@ -### - # This file contains script to run predictions of all baseline models and languages on given input data - # The result of this script will be used to evaluate the performance of the baseline model -### - -export CUDA_VISIBLE_DEVICES=4 -export PYTHONPATH=./:$PYTHONPATH - -for BASE_MODEL in "roberta_base" "roberta_large"; -do - for LANGUAGE in "ch" "en"; - do - if [[ $LANGUAGE == "ch" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-wwm-ext - CKPT=models/roberta_base_DuReader-Checklist_20211022_095011/ckpt.bin # 3epoch - #CKPT=models/roberta_base_ch_20211220_202953/ckpt.bin #new fine_tune - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-wwm-ext-large - # CKPT=models/ernie_large_DuReader-Checklist_20211007_163424/ckpt.bin # 3 epoch F1: 63.465 EM: 52.832 - # CKPT=models/ernie_large_DuReader-Checklist_20211009_115837/ckpt.bin # 4 epoch F1: 63.323 EM: 52.920 - # CKPT=models/ernie_large_DuReader-Checklist_20211009_142730/ckpt.bin # 3 epoch F1: 66.613 EM: 57.168 - CKPT=models/roberta_large_DuReader-Checklist_20211022_095359/ckpt.bin - #CKPT=models/roberta_large_ch_20211220_203809/ckpt.bin #new fine_tune - fi - elif [[ $LANGUAGE == "en" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=models/roberta_base_squad2_20211113_104225/ckpt.bin - #CKPT=models/roberta_base_en_20211221_201720/ckpt.bin #new fine_tune - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=models/roberta_large_squad2_20211113_111300/ckpt.bin - #CKPT=models/roberta_large_en_20211223_114421/ckpt.bin #new fine_tune - fi - fi - - OUTPUT=./output/mrc_${LANGUAGE}.${BASE_MODEL} - [ -d $OUTPUT ] || mkdir -p $OUTPUT - set -x - - if [[ ! -f ${OUTPUT}/predict_feature_index ]]; then - python3 ./saliency_map/rc_prediction.py \ - --base_model $BASE_MODEL \ - --data_dir ../../data/mrc_${LANGUAGE} \ - --from_pretrained $FROM_PRETRAIN \ - --init_checkpoint $CKPT \ - --output_dir $OUTPUT \ - --n-samples 300 \ - --doc_stride 128 \ - --language $LANGUAGE \ - --max_seq_len 384 \ - --batch_size 32 \ - --epoch 2 - fi - done -done \ No newline at end of file diff --git a/examples/model_interpretation/task/mrc/run_2_inter_rc.sh b/examples/model_interpretation/task/mrc/run_2_inter_rc.sh deleted file mode 100755 index 5f038bfcaa98..000000000000 --- a/examples/model_interpretation/task/mrc/run_2_inter_rc.sh +++ /dev/null @@ -1,53 +0,0 @@ -### - # This file contains script to generate saliency map of a specific baseline model and language on given input data - # The result of this script will be used to evaluate the interpretive performance of the baseline model -### - -export CUDA_VISIBLE_DEVICES=4 -export PYTHONPATH=./:$PYTHONPATH - -TASK=mrc -LANGUAGE=en # LANGUAGE choose in [ch, en] -BASE_MODEL=roberta_base # BASE_MODEL choose in [roberta_base, roberta_large] -INTER_MODE=integrated_gradient # INTER_MODE choice in [attention, integrated_gradient] -START=0 - -if [[ $LANGUAGE == "ch" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-wwm-ext - CKPT=models/roberta_base_DuReader-Checklist_20211022_095011/ckpt.bin # 3 epoch - - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-wwm-ext-large - CKPT=models/roberta_large_DuReader-Checklist_20211022_095359/ckpt.bin # 3 epoch - fi -elif [[ $LANGUAGE == "en" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=models/roberta_base_squad2_20211113_104225/ckpt.bin - - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=models/roberta_large_squad2_20211113_111300/ckpt.bin - fi -fi - - -OUTPUT=./output/mrc_${LANGUAGE}.${BASE_MODEL} -[ -d $OUTPUT ] || mkdir -p $OUTPUT -set -x -python3 ./saliency_map/rc_interpretable.py \ - --ans_path ./output/${TASK}_${LANGUAGE}.${BASE_MODEL}/predict_ans\ - --ans_idx_path ./output/${TASK}_${LANGUAGE}.${BASE_MODEL}/predict_feature_index\ - --base_model $BASE_MODEL \ - --data_dir ../../data/mrc_${LANGUAGE} \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE\ - --output_dir $OUTPUT \ - --n-samples 300 \ - --doc_stride 128 \ - --start_step $START \ - --language $LANGUAGE \ - --num_classes 2 \ No newline at end of file diff --git a/examples/model_interpretation/task/mrc/run_2_inter_rc_all.sh b/examples/model_interpretation/task/mrc/run_2_inter_rc_all.sh deleted file mode 100755 index 5908512f7ba9..000000000000 --- a/examples/model_interpretation/task/mrc/run_2_inter_rc_all.sh +++ /dev/null @@ -1,61 +0,0 @@ -### - # This file contains script to generate saliency map of all baseline models and languages on given input data - # The result of this script will be used to evaluate the interpretive performance of the baseline model -### - -export CUDA_VISIBLE_DEVICES=6 -export PYTHONPATH=./:$PYTHONPATH - -START=0 -TASK=mrc -for BASE_MODEL in "roberta_base" "roberta_large"; -do - for INTER_MODE in "attention" "integrated_gradient"; - do - for LANGUAGE in "ch" "en"; - do - if [[ $LANGUAGE == "ch" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-wwm-ext - CKPT=models/roberta_base_DuReader-Checklist_20211022_095011/ckpt.bin # 3 epoch - - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-wwm-ext-large - CKPT=models/roberta_large_DuReader-Checklist_20211022_095359/ckpt.bin # 3 epoch - fi - elif [[ $LANGUAGE == "en" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=models/roberta_base_squad2_20211113_104225/ckpt.bin - - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=models/roberta_large_squad2_20211113_111300/ckpt.bin - fi - fi - - - OUTPUT=./output/mrc_${LANGUAGE}.${BASE_MODEL} - [ -d $OUTPUT ] || mkdir -p $OUTPUT - set -x - - if [[ ! -f ${OUTPUT}/interpret.${INTER_MODE} ]]; then - python3 ./saliency_map/rc_interpretable.py \ - --ans_path ./output/${TASK}_${LANGUAGE}.${BASE_MODEL}/predict_ans\ - --ans_idx_path ./output/${TASK}_${LANGUAGE}.${BASE_MODEL}/predict_feature_index\ - --base_model $BASE_MODEL \ - --data_dir ../../data/mrc_${LANGUAGE} \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE\ - --output_dir $OUTPUT \ - --n-samples 300 \ - --doc_stride 128 \ - --start_step $START \ - --language $LANGUAGE\ - --num_classes 2 - fi - done - done -done \ No newline at end of file diff --git a/examples/model_interpretation/task/mrc/run_train_rc.sh b/examples/model_interpretation/task/mrc/run_train_rc.sh deleted file mode 100755 index ff7d95db9342..000000000000 --- a/examples/model_interpretation/task/mrc/run_train_rc.sh +++ /dev/null @@ -1,51 +0,0 @@ -### - # This script is used to run fine-tunning of mrc roberta models. -### - -export CUDA_VISIBLE_DEVICES=7 -export PYTHONPATH=.:$PYTHONPATH - -LANGUAGE=ch # LANGUAGE choose in [ch, en] -BASE_MODEL=roberta_base # chooices [roberta_base, roberta_large] - -[ -d "logs" ] || mkdir -p "logs" -set -x - -if [[ $LANGUAGE == "ch" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-wwm-ext - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-wwm-ext-large - fi - EPOCH=3 - BSZ=2 - LR=3e-5 - MAX_SEQLEN=512 - DATA=DuReader-Checklist -elif [[ $LANGUAGE == 'en' ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - fi - EPOCH=2 - BSZ=16 - LR=5e-6 - MAX_SEQLEN=384 - DATA=squad2 -fi - -timestamp=`date +"%Y%m%d_%H%M%S"` -python3 saliency_map/rc_finetune.py \ - --train_data_dir ./data/$DATA/train/train.json \ - --dev_data_dir ./data/$DATA/dev/dev.json \ - --max_steps -1 \ - --from_pretrained $FROM_PRETRAIN \ - --epoch $EPOCH \ - --bsz $BSZ \ - --lr $LR \ - --max_seq_len $MAX_SEQLEN \ - --save_dir models/${BASE_MODEL}_${LANGUAGE}_${timestamp} \ - --language $LANGUAGE \ - --init_checkpoint models/${BASE_MODEL}_${LANGUAGE}_${timestamp}/ckpt.bin >> logs/log_${BASE_MODEL}_$timestamp 2>&1 - \ No newline at end of file diff --git a/examples/model_interpretation/task/mrc/saliency_map/rc_finetune.py b/examples/model_interpretation/task/mrc/saliency_map/rc_finetune.py deleted file mode 100644 index f676df12d781..000000000000 --- a/examples/model_interpretation/task/mrc/saliency_map/rc_finetune.py +++ /dev/null @@ -1,280 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import logging -import os -import re -import sys -import time -from pathlib import Path - -import paddle -from paddle.io import DataLoader -from roberta.modeling import RobertaForQuestionAnswering -from saliency_map.utils import create_if_not_exists, get_warmup_and_linear_decay -from squad import DuReaderChecklist -from visualdl import LogWriter - -from paddlenlp.data import Dict, Pad, Stack -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("../../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, -) - -sys.path.remove("../../..") - -log = logging.getLogger(__name__) -log.setLevel(logging.DEBUG) -logging.getLogger().setLevel(logging.DEBUG) - - -def get_args(): - parser = argparse.ArgumentParser("mrc task with roberta") - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=128, help="max sentence length, should not greater than 512" - ) - parser.add_argument( - "--doc_stride", - type=int, - default=128, - help="When splitting up a long document into chunks, how much stride to take between chunks.", - ) - parser.add_argument("--bsz", type=int, default=32, help="batchsize") - parser.add_argument("--epoch", type=int, default=3, help="epoch") - parser.add_argument("--train_data_dir", type=str, required=True, help="train data file") - parser.add_argument("--dev_data_dir", type=str, required=True, help="develop data file") - parser.add_argument( - "--max_steps", type=int, required=True, help="max_train_steps, set this to EPOCH * NUM_SAMPLES / BATCH_SIZE" - ) - parser.add_argument("--warmup_proportion", type=float, default=0.1) - parser.add_argument("--lr", type=float, default=5e-5, help="learning rate") - parser.add_argument("--save_dir", type=Path, required=True, help="model output directory") - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument("--wd", type=float, default=0.01, help="weight decay, aka L2 regularizer") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument("--language", type=str, required=True, help="language that the model based on") - args = parser.parse_args() - return args - - -def map_fn_DuCheckList_finetune(examples): - # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results - # in one example possible giving several features when a context is long, each of those features having a - # context that overlaps a bit the context of the previous feature. - questions = [examples[i]["question"] for i in range(len(examples))] - contexts = [examples[i]["context"] + examples[i]["title"] for i in range(len(examples))] - - tokenized_examples = tokenizer(questions, contexts, stride=args.doc_stride, max_seq_len=args.max_seq_len) - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - - for i, tokenized_example in enumerate(tokenized_examples): - - # We will label impossible answers with the index of the CLS token. - input_ids = tokenized_example["input_ids"] # list(seq) - cls_index = input_ids.index(tokenizer.cls_token_id) - - # Grab the sequence corresponding to that example (to know what is the context and what is the question). - sequence_ids = tokenized_example["token_type_ids"] # list(seq) - - # The offset mappings will give us a map from token to character position in the original context. This will - # help us compute the start_positions and end_positions. - offsets = tokenized_example["offset_mapping"] # list(seq) - - # One example can give several spans, this is the index of the example containing this span of text. - sample_index = tokenized_example["overflow_to_sample"] # int - if args.language == "ch": - answers = examples[sample_index]["answers"] # list - answer_starts = examples[sample_index]["answer_starts"] # list - else: - example = examples[sample_index] - example["question_len"] = len(example["question"].split()) - example["context_len"] = len(example["context"].split()) - - answers = example["answers"] # list - answer_starts = example["answer_starts"] # list - - # If no answers are given, set the cls_index as answer. - if len(answer_starts) == 0: - tokenized_examples[i]["start_positions"] = cls_index - tokenized_examples[i]["end_positions"] = cls_index - tokenized_examples[i]["answerable_label"] = 0 - else: - # Start/end character index of the answer in the text. - start_char = answer_starts[0] - end_char = start_char + len(answers[0]) - if args.language == "en": - # Start token index of the current span in the text. - token_start_index = 0 - while not (offsets[token_start_index] == (0, 0) and offsets[token_start_index + 1] == (0, 0)): - token_start_index += 1 - token_start_index += 2 - - # End token index of the current span in the text. - token_end_index = len(input_ids) - 2 - else: - # Start token index of the current span in the text. - token_start_index = 0 - while sequence_ids[token_start_index] != 1: - token_start_index += 1 - - # End token index of the current span in the text. - token_end_index = len(input_ids) - 2 - while sequence_ids[token_end_index] != 1: - token_end_index -= 1 - - # Detect if the answer is out of the span (in which case this feature is labeled with the CLS index). - if not (offsets[token_start_index][0] <= start_char and offsets[token_end_index][1] >= end_char): - tokenized_examples[i]["start_positions"] = cls_index - tokenized_examples[i]["end_positions"] = cls_index - tokenized_examples[i]["answerable_label"] = 0 - else: - # Otherwise move the token_start_index and token_end_index to the two ends of the answer. - # Note: we could go after the last offset if the answer is the last word (edge case). - while token_start_index < len(offsets) and offsets[token_start_index][0] <= start_char: - token_start_index += 1 - tokenized_examples[i]["start_positions"] = token_start_index - 1 - while offsets[token_end_index][1] >= end_char: - token_end_index -= 1 - tokenized_examples[i]["end_positions"] = token_end_index + 1 - tokenized_examples[i]["answerable_label"] = 1 - - return tokenized_examples - - -if __name__ == "__main__": - args = get_args() - - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - model = RobertaForQuestionAnswering.from_pretrained(args.from_pretrained, num_classes=2) - - train_ds = DuReaderChecklist().read(args.train_data_dir) - dev_ds = DuReaderChecklist().read(args.dev_data_dir) - - train_ds.map(map_fn_DuCheckList_finetune, batched=True) - dev_ds.map(map_fn_DuCheckList_finetune, batched=True) - - log.debug("train set: %d" % len(train_ds)) - log.debug("dev set: %d" % len(dev_ds)) - - train_batch_sampler = paddle.io.DistributedBatchSampler(train_ds, batch_size=args.bsz, shuffle=True) - dev_batch_sample = paddle.io.DistributedBatchSampler(dev_ds, batch_size=args.bsz, shuffle=False) - - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_type_id), - "start_positions": Stack(dtype="int64"), - "end_positions": Stack(dtype="int64"), - "answerable_label": Stack(dtype="int64"), - } - ): fn(samples) - - train_data_loader = DataLoader( - dataset=train_ds, batch_sampler=train_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - dev_data_loader = DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sample, collate_fn=batchify_fn, return_list=True - ) - - max_steps = args.max_steps if args.max_steps > 0 else len(train_data_loader) * args.epoch - lr_scheduler = paddle.optimizer.lr.LambdaDecay( - args.lr, get_warmup_and_linear_decay(max_steps, int(args.warmup_proportion * max_steps)) - ) - - param_name_to_exclue_from_weight_decay = re.compile(r".*layer_norm_scale|.*layer_norm_bias|.*b_0") - - opt = paddle.optimizer.AdamW( - lr_scheduler, - parameters=model.parameters(), - weight_decay=args.wd, - apply_decay_param_fun=lambda n: not param_name_to_exclue_from_weight_decay.match(n), - grad_clip=paddle.nn.ClipGradByGlobalNorm(1.0) if args.language == "ch" else None, - ) - - scaler = paddle.amp.GradScaler(enable=args.use_amp) - - with LogWriter(logdir=str(create_if_not_exists(args.save_dir / "vdl"))) as log_writer: - with paddle.amp.auto_cast(enable=args.use_amp): - max_acc = 0.0 - log.debug("start training...") - for epoch in range(args.epoch): - s_time = time.time() - for step, d in enumerate(train_data_loader, start=1): - # input_ids: paddle.Tensor(bsz, seq) - # token_type_ids: paddle.Tensor(bsz, seq) - # start_positions: paddle.Tensor(bsz) - # end_positions: paddle.Tensor(bsz) - # answerable_label: paddle.Tensor(bsz) - input_ids, token_type_ids, start_positions, end_positions, answerable_label = d - loss, _, _, _ = model( - input_ids=input_ids, - token_type_ids=token_type_ids, - start_pos=start_positions, - end_pos=end_positions, - labels=answerable_label, - ) - loss = scaler.scale(loss) - loss.backward() - scaler.minimize(opt, loss) - opt.clear_grad() - lr_scheduler.step() - - if step % 100 == 0: - _lr = lr_scheduler.get_lr() - time_cost = time.time() - s_time - s_time = time.time() - if args.use_amp: - _l = (loss / scaler._scale).numpy() - msg = "[epoch-%d step-%d] train loss %.5f lr %.3e scaling %.3e" % ( - epoch, - step, - _l, - _lr, - scaler._scale.numpy(), - ) - else: - _l = loss.numpy() - msg = "[epoch-%d step-%d] train loss %.5f lr %.3e time_cost: %.1fs" % ( - epoch, - step, - _l, - _lr, - time_cost, - ) - log.debug(msg) - log_writer.add_scalar("loss", _l, step=step) - log_writer.add_scalar("lr", _lr, step=step) - - if step % 1000 == 0: - if args.save_dir is not None: - paddle.save(model.state_dict(), os.path.join(args.save_dir, "ckpt.bin")) - log.debug("save model!") - - if args.save_dir is not None: - paddle.save(model.state_dict(), os.path.join(args.save_dir, "ckpt.bin")) - log.debug("save model!") diff --git a/examples/model_interpretation/task/mrc/saliency_map/rc_interpretable.py b/examples/model_interpretation/task/mrc/saliency_map/rc_interpretable.py deleted file mode 100644 index 7df2bc45d51f..000000000000 --- a/examples/model_interpretation/task/mrc/saliency_map/rc_interpretable.py +++ /dev/null @@ -1,497 +0,0 @@ -# !/usr/bin/env python3 -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import collections -import json -import logging -import os -import sys -from functools import partial -from pathlib import Path - -import paddle -from roberta.modeling import RobertaForQuestionAnswering -from squad import RCInterpret -from tqdm import tqdm - -from paddlenlp.data import Dict, Pad, Stack -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("../../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, - match, -) - -sys.path.remove("../../..") - -log = logging.getLogger(__name__) -log.setLevel(logging.DEBUG) -logging.getLogger().setLevel(logging.DEBUG) - - -def get_args(): - parser = argparse.ArgumentParser("mrc task with roberta") - parser.add_argument("--base_model", required=True, choices=["roberta_base", "roberta_large"]) - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=512, help="max sentence length, should not greater than 512" - ) - parser.add_argument("--batch_size", type=int, default=32, help="batchsize") - parser.add_argument("--data_dir", type=str, required=True, help="data directory includes train / develop data") - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument( - "--inter_mode", - type=str, - default="attention", - choices=["attention", "simple_gradient", "smooth_gradient", "integrated_gradient", "lime"], - help="appoint the mode of interpretable.", - ) - parser.add_argument("--n-samples", type=int, default=25, help="number of samples used for smooth gradient method") - parser.add_argument("--output_dir", type=Path, required=True, help="interpretable output directory") - parser.add_argument( - "--doc_stride", - type=int, - default=128, - help="When splitting up a long document into chunks, how much stride to take between chunks.", - ) - parser.add_argument("--start_step", type=int, default=0, help="start from which instance") - parser.add_argument("--language", type=str, required=True, help="language that the model based on") - parser.add_argument( - "--ans_path", - type=str, - required=True, - help="the path of the file which stores the predicted answer from last step", - ) - parser.add_argument( - "--ans_idx_path", - type=str, - required=True, - help="the path of the file which stores the predicted answer index from last step", - ) - parser.add_argument("--num_classes", type=int, required=True, help="number of class") - args = parser.parse_args() - return args - - -def truncate_offset(seg, start_offset, end_offset): - seg_len = len(seg) - for n in range(len(start_offset) - 1, -1, -1): - if start_offset[n] < seg_len: - end_offset[n] = seg_len - break - start_offset.pop(n) - end_offset.pop(n) - - -def map_fn_DuCheckList(examples, args, tokenizer): - # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results - # in one example possible giving several features when a context is long, each of those features having a - # context that overlaps a bit the context of the previous feature. - if args.language == "en": - questions = [ - examples[i]["question"].encode("ascii", errors="replace").decode("UTF-8") for i in range(len(examples)) - ] - contexts = [ - examples[i]["context"].encode("ascii", errors="replace").decode("UTF-8") for i in range(len(examples)) - ] - else: - questions = [examples[i]["question"] for i in range(len(examples))] - contexts = [examples[i]["context"] for i in range(len(examples))] - tokenized_examples = tokenizer(questions, contexts, stride=args.doc_stride, max_seq_len=args.max_seq_len) - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - - log.debug("\nexample: %d" % len(examples)) - log.debug("feature: %d\n" % len(tokenized_examples)) - - # For validation, there is no need to compute start and end positions - for i, tokenized_example in enumerate(tokenized_examples): - # Grab the sequence corresponding to that example (to know what is the context and what is the question). - # One example can give several spans, this is the index of the example containing this span of text. - sample_index = tokenized_example["overflow_to_sample"] - tokenized_examples[i]["example_id"] = examples[sample_index]["id"] - tokenized_examples[i]["question"] = examples[sample_index]["question"] - tokenized_examples[i]["context"] = examples[sample_index]["context"] - tokenized_examples[i]["sent_token"] = examples[sample_index]["sent_token"] - - return tokenized_examples - - -def init_roberta_var(args): - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - - model = RobertaForQuestionAnswering.from_pretrained(args.from_pretrained, num_classes=args.num_classes) - map_fn = partial(map_fn_DuCheckList, args=args, tokenizer=tokenizer) - dev_ds = RCInterpret().read(args.data_dir) - - dev_ds.map(map_fn, batched=True) - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=args.batch_size, shuffle=False) - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_type_id), - "offset_mapping": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "overflow_to_sample": Stack(dtype="int32"), - } - ): fn(samples) - - dev_dataloader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - - return model, tokenizer, dev_dataloader, dev_ds - - -def ch_per_example( - args, - scores_in_one_example, - prev_context_tokens, - dev_ds, - prev_example_idx, - ans_dic, - ans_idx_dic, - offset, - out_handle, -): - total_score = scores_in_one_example[-1] - assert len(prev_context_tokens) == len(total_score) - token_score_dict = [] - for idx in range(len(total_score)): - token_score_dict.append([idx, offset[idx], total_score[idx]]) - - prev_example = dev_ds.data[prev_example_idx] - char_attribution_dict = match( - prev_example["context"] + prev_example["title"], prev_example["sent_token"], token_score_dict - ) - result["id"] = prev_example["id"] - result["question"] = prev_example["question"] - result["title"] = prev_example["title"] - result["context"] = prev_example["context"] + prev_example["title"] - result["pred_label"] = ans_dic[str(result["id"])] - result["pred_feature"] = ans_idx_dic[str(result["id"])] - - result["char_attri"] = collections.OrderedDict() - for token_info in sorted(char_attribution_dict, key=lambda x: x[2], reverse=True): - result["char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - - -def en_per_example(inter_score, result, ans_dic, ans_idx_dic, offset, out_handle): - sorted_token = [] - for i in range(len(inter_score)): - sorted_token.append([i, offset[i], inter_score[i]]) - char_attribution_dict = match(result["context"], result["sent_token"], sorted_token) - - result["pred_label"] = ans_dic[str(result["id"])] - result["pred_feature"] = ans_idx_dic[str(result["id"])] - result["char_attri"] = collections.OrderedDict() - for token_info in sorted(char_attribution_dict, key=lambda x: x[2], reverse=True): - result["char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - result.pop("sent_token") - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - - -def load_pred_data(ans_path, ans_idx_path): - f = open(ans_path, "r") - ans_dic = json.loads(f.read()) - f.close() - f = open(ans_idx_path, "r") - ans_idx_dic = json.loads(f.read()) - f.close() - return ans_dic, ans_idx_dic - - -def extract_attention_scores( - args, - model, - result, - fwd_args, - fwd_kwargs, - prev_example_idx, - example_idx, - prev_context_tokens, - scores_in_one_example, - dev_ds, - ans_dic, - ans_idx_dic, - context_tokens, - offset, - prev_offset, - out_handle, -): - with paddle.no_grad(): - # start_logits: (bsz, seq); end_logits: (bsz, seq); cls_logits: (bsz, 2) - # attention: list((bsz, head, seq, seq) * 12); embedded: (bsz, seq, emb) - _, start_logits, end_logits, cls_logits, attentions, embedded = model.forward_interpret( - *fwd_args, **fwd_kwargs - ) - - # Attention score equals to the mean of attention of each token in the question - attentions = attentions[-1][:, :, 1:SEP_idx, :].mean(2).mean(1) # attentions: (bsz, seq_len) - context_score = attentions[0, SEP_idx + add_idx : -1] # context_score: Tensor(context) - context_norm_score = context_score / context_score.sum(-1) - - if args.language == "ch": - if prev_example_idx is None or prev_example_idx == example_idx: - scores_in_one_example.append(context_norm_score.numpy().tolist()) - else: - ch_per_example( - args, - scores_in_one_example, - prev_context_tokens, - dev_ds, - prev_example_idx, - ans_dic, - ans_idx_dic, - prev_offset, - out_handle, - ) - scores_in_one_example = [context_norm_score.numpy().tolist()] - prev_example_idx = example_idx - prev_context_tokens = context_tokens - prev_offset = offset - else: - en_per_example(context_norm_score, result, ans_dic, ans_idx_dic, offset, out_handle) - return prev_example_idx, prev_context_tokens, scores_in_one_example, prev_offset - - -def extract_integrated_gradient_scores( - args, - dev_ds, - model, - result, - fwd_args, - fwd_kwargs, - SEP_idx, - add_idx, - prev_example_idx, - example_idx, - scores_in_one_example, - prev_context_tokens, - ans_dic, - ans_idx_dic, - context_tokens, - offset, - prev_offset, - out_handle, -): - embedded_grads_list = [] # [Tensor(1, seq_len, embed_size)] - with open(os.path.join(args.output_dir, "predict_feature_index"), "r") as f_feature_index: - feature_index_dict = json.load(f_feature_index) - example = dev_ds.data[example_idx] - example_id = example["id"] - start_index, end_index = feature_index_dict[str(example_id)] - - for i in range(args.n_samples): - # embedded_start_grad - # start_logits: (bsz, seq); embedded: (bsz, seq, emb) - _, start_logits, _, _, _, embedded = model.forward_interpret( - *fwd_args, **fwd_kwargs, noise="integrated", i=i, n_samples=args.n_samples - ) - - start_logit = start_logits[:, start_index].sum() - start_logit.backward(retain_graph=False) - embedded_start_grad = embedded.grad - model.clear_gradients() - # embedded_end_grad - # end_logits: (bsz, seq); embedded: (bsz, seq, emb) - _, _, end_logits, _, _, embedded = model.forward_interpret( - *fwd_args, **fwd_kwargs, noise="integrated", i=i, n_samples=args.n_samples - ) - end_logit = end_logits[:, end_index].sum() - end_logit.backward(retain_graph=False) - embedded_end_grad = embedded.grad - model.clear_gradients() - - embedded_grad = (embedded_start_grad + embedded_end_grad) / 2 - embedded_grads_list.append(embedded_grad) - - if i == 0: - baseline_embedded = embedded # Tensor(1, seq_len, embed_size) - elif i == args.n_samples - 1: - pred_embedded = embedded # Tensor(1, seq_len, embed_size) - - embedded_grads_tensor = paddle.to_tensor( - embedded_grads_list, dtype="float32", place=paddle.CUDAPlace(0), stop_gradient=True - ) - - trapezoidal_grads = ( - embedded_grads_tensor[1:] + embedded_grads_tensor[:-1] - ) / 2 # Tensor(n_samples-1, 1, seq_len, embed_size) - integral_grads = trapezoidal_grads.sum(0) / trapezoidal_grads.shape[0] # Tensor(1, seq_len, embed_size)xw - - inter_score = (pred_embedded - baseline_embedded) * integral_grads # Tensor(1, seq_len, embed_size) - inter_score = inter_score.sum(-1) # Tensor(1, seq_len) - inter_score.stop_gradient = True - - context_score = inter_score[0, SEP_idx + add_idx : -1] - context_norm_score = context_score / context_score.sum(-1) - if args.language == "ch": - if prev_example_idx is None or prev_example_idx == example_idx: - scores_in_one_example.append(context_norm_score.numpy().tolist()) - else: - ch_per_example( - args, - scores_in_one_example, - prev_context_tokens, - dev_ds, - prev_example_idx, - ans_dic, - ans_idx_dic, - prev_offset, - out_handle, - ) - scores_in_one_example = [context_norm_score.numpy().tolist()] - prev_example_idx = example_idx - prev_context_tokens = context_tokens - prev_offset = offset - else: - en_per_example(context_norm_score, result, ans_dic, ans_idx_dic, offset, out_handle) - return prev_example_idx, prev_context_tokens, scores_in_one_example, prev_offset - - -if __name__ == "__main__": - args = get_args() - if args.language == "ch": - add_idx = 1 - else: - add_idx = 2 - - ans_dic, ans_idx_dic = load_pred_data(args.ans_path, args.ans_idx_path) - if args.base_model.startswith("roberta"): - model, tokenizer, dataloader, dev_ds = init_roberta_var(args) - else: - raise ValueError("unsupported base model name.") - - with paddle.amp.auto_cast(enable=args.use_amp), open( - os.path.join(args.output_dir, "interpret" + f".{args.inter_mode}"), "w" - ) as out_handle: - - sd = paddle.load(args.init_checkpoint) - model.set_dict(sd) - log.debug("load model from %s" % args.init_checkpoint) - - err_total = [] - lime_score_total = [] - lime_relative_err_total = [] - lime_err_total = [] - - # Second forward: evidence extraction - scores_in_one_example = [] - prev_example_idx = None - prev_context_tokens = None - prev_offset = None - - get_subword_ids = lambda word: map(str, tokenizer.convert_tokens_to_ids(tokenizer.tokenize(word))) - for step, d in tqdm(enumerate(dataloader)): - if step < args.start_step: - continue - - model.train() - - result = {} - input_ids, segment_ids, offset_map, example_idx = d - fwd_args = [input_ids, segment_ids] - fwd_kwargs = {} - - SEP_idx = input_ids.numpy()[0].tolist().index(tokenizer.sep_token_id) - context_ids = input_ids[0, SEP_idx + add_idx : -1] - offset = offset_map[0, SEP_idx + add_idx : -1] - context_tokens = tokenizer.convert_ids_to_tokens(context_ids.numpy().tolist()) - - if args.language == "en": - example = dev_ds.data[step] - result["id"] = example["id"] - result["question"] = example["question"] - result["title"] = example["title"] - result["context"] = example["context"] + example["title"] - result["sent_token"] = example["sent_token"] - - if args.inter_mode == "attention": - prev_example_idx, prev_context_tokens, scores_in_one_example, prev_offset = extract_attention_scores( - args, - model, - result, - fwd_args, - fwd_kwargs, - prev_example_idx, - example_idx, - prev_context_tokens, - scores_in_one_example, - dev_ds, - ans_dic, - ans_idx_dic, - context_tokens, - offset, - prev_offset, - out_handle, - ) - - elif args.inter_mode == "integrated_gradient": - ( - prev_example_idx, - prev_context_tokens, - scores_in_one_example, - prev_offset, - ) = extract_integrated_gradient_scores( - args, - dev_ds, - model, - result, - fwd_args, - fwd_kwargs, - SEP_idx, - add_idx, - prev_example_idx, - example_idx, - scores_in_one_example, - prev_context_tokens, - ans_dic, - ans_idx_dic, - context_tokens, - offset, - prev_offset, - out_handle, - ) - else: - raise KeyError(f"Unkonwn interpretable mode: {args.inter_mode}") - - # Deal with last example - if args.language == "ch": - - feature = dev_ds.new_data[-1] - input_ids = feature["input_ids"] - SEP_idx = input_ids.index(tokenizer.sep_token_id) - context_ids = input_ids[SEP_idx + 1 : -1] - offset = feature["offset_mapping"][SEP_idx + 1 : -1] - context_tokens = tokenizer.convert_ids_to_tokens(context_ids) - - ch_per_example( - args, scores_in_one_example, context_tokens, dev_ds, -1, ans_dic, ans_idx_dic, offset, out_handle - ) diff --git a/examples/model_interpretation/task/mrc/saliency_map/rc_prediction.py b/examples/model_interpretation/task/mrc/saliency_map/rc_prediction.py deleted file mode 100644 index c1557de19d10..000000000000 --- a/examples/model_interpretation/task/mrc/saliency_map/rc_prediction.py +++ /dev/null @@ -1,195 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import json -import logging -import os -import sys -import time -from functools import partial -from pathlib import Path - -import paddle -from roberta.modeling import RobertaForQuestionAnswering -from squad import RCInterpret, compute_prediction - -from paddlenlp.data import Dict, Pad -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("../../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, -) - -sys.path.remove("../../..") - -log = logging.getLogger(__name__) -log.setLevel(logging.DEBUG) -logging.getLogger().setLevel(logging.DEBUG) - - -def get_args(): - parser = argparse.ArgumentParser("mrc task with roberta") - parser.add_argument("--base_model", required=True, choices=["roberta_base", "roberta_large"]) - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=128, help="max sentence length, should not greater than 512" - ) - parser.add_argument("--batch_size", type=int, default=32, help="batchsize") - parser.add_argument("--epoch", type=int, default=3, help="epoch") - parser.add_argument("--data_dir", type=str, required=True, help="data directory includes train / develop data") - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument("--n-samples", type=int, default=25, help="number of samples used for smooth gradient method") - parser.add_argument("--output_dir", type=Path, required=True, help="interpretable output directory") - parser.add_argument( - "--doc_stride", - type=int, - default=128, - help="When splitting up a long document into chunks, how much stride to take between chunks.", - ) - parser.add_argument("--language", type=str, required=True, help="language that the model based on") - args = parser.parse_args() - return args - - -def map_fn_DuCheckList(examples, args, tokenizer): - # Tokenize our examples with truncation and maybe padding, but keep the overflows using a stride. This results - # in one example possible giving several features when a context is long, each of those features having a - # context that overlaps a bit the context of the previous feature. - # NOTE: Almost the same functionality as HuggingFace's prepare_train_features function. The main difference is - # that HugggingFace uses ArrowTable as basic data structure, while we use list of dictionary instead. - if args.language == "en": - contexts = [ - examples[i]["context"].encode("ascii", errors="replace").decode("UTF-8") for i in range(len(examples)) - ] - questions = [ - examples[i]["question"].encode("ascii", errors="replace").decode("UTF-8") for i in range(len(examples)) - ] - else: - contexts = [examples[i]["context"] for i in range(len(examples))] - questions = [examples[i]["question"] for i in range(len(examples))] - - tokenized_examples = tokenizer(questions, contexts, stride=args.doc_stride, max_seq_len=args.max_seq_len) - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - - # For validation, there is no need to compute start and end positions - for i, tokenized_example in enumerate(tokenized_examples): - # Grab the sequence corresponding to that example (to know what is the context and what is the question). - sequence_ids = tokenized_example["token_type_ids"] - - # One example can give several spans, this is the index of the example containing this span of text. - sample_index = tokenized_example["overflow_to_sample"] - tokenized_examples[i]["example_id"] = examples[sample_index]["id"] - - # Set to None the offset_mapping that are not part of the context so it's easy to determine if a token - # position is part of the context or not. - if args.language == "ch": - tokenized_examples[i]["offset_mapping"] = [ - (o if sequence_ids[k] == 1 else None) for k, o in enumerate(tokenized_example["offset_mapping"]) - ] - else: - n = tokenized_example["offset_mapping"].index((0, 0), 1) + 2 # context start position - m = len(tokenized_example["offset_mapping"]) - 1 # context end position + 1 - tokenized_examples[i]["offset_mapping"] = [ - (o if n <= k <= m else None) for k, o in enumerate(tokenized_example["offset_mapping"]) - ] - return tokenized_examples - - -def init_roberta_var(args): - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - - model = RobertaForQuestionAnswering.from_pretrained(args.from_pretrained) - map_fn = partial(map_fn_DuCheckList, args=args, tokenizer=tokenizer) - dev_ds = RCInterpret().read(args.data_dir) - dev_ds.map(map_fn, batched=True) - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=args.batch_size, shuffle=False) - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_type_id), - } - ): fn(samples) - - dev_dataloader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - - return model, tokenizer, dev_dataloader, dev_ds - - -@paddle.no_grad() -def evaluate(model, data_loader, args): - model.eval() - - all_start_logits = [] - all_end_logits = [] - tic_eval = time.time() - - for batch in data_loader: - input_ids, token_type_ids = batch - loss, start_logits_tensor, end_logits_tensor, cls_logits = model(input_ids, token_type_ids) - for idx in range(start_logits_tensor.shape[0]): - if len(all_start_logits) % 1000 == 0 and len(all_start_logits): - log.debug("Processing example: %d" % len(all_start_logits)) - log.debug("time per 1000:%.1f" % (time.time() - tic_eval)) - tic_eval = time.time() - - all_start_logits.append(start_logits_tensor.numpy()[idx]) - all_end_logits.append(end_logits_tensor.numpy()[idx]) - - all_predictions, all_nbest_json, scores_diff_json, all_feature_index = compute_prediction( - data_loader.dataset.data, - data_loader.dataset.new_data, - (all_start_logits, all_end_logits), - True, - 20, - args.max_seq_len, - 0.0, - ) - - # Can also write all_nbest_json and scores_diff_json files if needed - with open(os.path.join(args.output_dir, "predict_ans"), "w") as f_ans_pred: - f_ans_pred.write(json.dumps(all_predictions, ensure_ascii=False, indent=4) + "\n") - with open(os.path.join(args.output_dir, "predict_feature_index"), "w") as f_feature_index: - f_feature_index.write(json.dumps(all_feature_index, ensure_ascii=False, indent=4) + "\n") - - # squad_evaluate(examples=data_loader.dataset.data, preds=all_predictions, na_probs=scores_diff_json) - # model.train() - - -if __name__ == "__main__": - args = get_args() - if args.base_model.startswith("roberta"): - model, tokenizer, dataloader, dev_ds = init_roberta_var(args) - else: - raise ValueError("unsupported base model name.") - - with paddle.amp.auto_cast(enable=args.use_amp): - sd = paddle.load(args.init_checkpoint) - model.set_dict(sd) - log.debug("load model from %s" % args.init_checkpoint) - evaluate(model, dataloader, args) diff --git a/examples/model_interpretation/task/mrc/saliency_map/squad.py b/examples/model_interpretation/task/mrc/saliency_map/squad.py deleted file mode 100644 index 3ae811de5e5b..000000000000 --- a/examples/model_interpretation/task/mrc/saliency_map/squad.py +++ /dev/null @@ -1,476 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# !/usr/bin/env python3 -import collections -import json - -import numpy as np - -from paddlenlp.datasets import DatasetBuilder - - -class Similarity(DatasetBuilder): - # similarity test 21.10.3 - def _read(self, filename): - with open(filename, "r", encoding="utf8") as f: - for line in f.readlines(): - line_split = line.strip().split("\t") - assert len(line_split) == 3 - yield {"text_a": line_split[0], "text_b": line_split[1], "label": line_split[2]} - - -class RCInterpret(DatasetBuilder): - # interpret 21.9.24 - def _read(self, filename): - with open(filename, "r", encoding="utf8") as f: - for line in f.readlines(): - example_dic = json.loads(line) - id = example_dic["id"] - title = example_dic["title"] - context = example_dic["context"] - question = example_dic["question"] - if "sent_token" in example_dic: - sent_token = example_dic["sent_token"] - yield { - "id": id, - "title": title, - "context": context, - "question": question, - "sent_token": sent_token, - } - else: - yield {"id": id, "title": title, "context": context, "question": question} - - -class DuReaderChecklist(DatasetBuilder): - def _read(self, filename): - with open(filename, "r", encoding="utf8") as f: - input_data = json.load(f)["data"] - - for entry in input_data: - # title = entry.get("title", "").strip() - for paragraph in entry["paragraphs"]: - context = paragraph["context"].strip() - title = paragraph.get("title", "").strip() - for qa in paragraph["qas"]: - qas_id = qa["id"] - question = qa["question"].strip() - answer_starts = [] - answers = [] - is_impossible = False - - if "is_impossible" in qa.keys(): - is_impossible = qa["is_impossible"] - - answer_starts = [answer["answer_start"] for answer in qa.get("answers", [])] - answers = [answer["text"].strip() for answer in qa.get("answers", [])] - - yield { - "id": qas_id, - "title": title, - "context": context, - "question": question, - "answers": answers, - "answer_starts": answer_starts, - "is_impossible": is_impossible, - } - - -def compute_prediction_checklist( - examples, - features, - predictions, - version_2_with_negative: bool = False, - n_best_size: int = 20, - max_answer_length: int = 30, - cls_threshold: float = 0.5, -): - """ - Post-processes the predictions of a question-answering model to convert them to answers that are substrings of the - original contexts. This is the base postprocessing functions for models that only return start and end logits. - - Args: - examples: The non-preprocessed dataset (see the main script for more information). - features: The processed dataset (see the main script for more information). - predictions (:obj:`Tuple[np.ndarray, np.ndarray]`): - The predictions of the model: two arrays containing the start logits and the end logits respectively. Its - first dimension must match the number of elements of :obj:`features`. - version_2_with_negative (:obj:`bool`, `optional`, defaults to :obj:`False`): - Whether or not the underlying dataset contains examples with no answers. - n_best_size (:obj:`int`, `optional`, defaults to 20): - The total number of n-best predictions to generate when looking for an answer. - max_answer_length (:obj:`int`, `optional`, defaults to 30): - The maximum length of an answer that can be generated. This is needed because the start and end predictions - are not conditioned on one another. - null_score_diff_threshold (:obj:`float`, `optional`, defaults to 0): - The threshold used to select the null answer: if the best answer has a score that is less than the score of - the null answer minus this threshold, the null answer is selected for this example (note that the score of - the null answer for an example giving several features is the minimum of the scores for the null answer on - each feature: all features must be aligned on the fact they `want` to predict a null answer). - - Only useful when :obj:`version_2_with_negative` is :obj:`True`. - """ - - assert ( - len(predictions) == 3 - ), "`predictions` should be a tuple with two elements (start_logits, end_logits, cls_logits)." - all_start_logits, all_end_logits, all_cls_logits = predictions - - assert len(predictions[0]) == len(features), "Number of predictions should be equal to number of features." # 样本数 - - # Build a map example to its corresponding features. - features_per_example = collections.defaultdict(list) - for i, feature in enumerate(features): - features_per_example[feature["example_id"]].append( - i - ) # feature: dict(keys: 'input_ids', 'token_type_ids', 'offset_mapping', 'overflow_to_sample', 'example_id') - - # The dictionaries we have to fill. - all_predictions = collections.OrderedDict() - all_feature_index = collections.OrderedDict() - all_nbest_json = collections.OrderedDict() - all_cls_predictions = [] - - # Let's loop over all the examples! - for example_index, example in enumerate(examples): - # Those are the indices of the features associated to the current example. - feature_indices = features_per_example[example["id"]] - - # if len(feature_indices) > 1: - # print('example_index: %s' % example_index) - - min_null_prediction = None - prelim_predictions = [] - score_answerable = -1 - # Looping through all the features associated to the current example. - for feature_index in feature_indices: - # We grab the predictions of the model for this feature. - start_logits = all_start_logits[feature_index] - end_logits = all_end_logits[feature_index] - cls_logits = all_cls_logits[feature_index] - # This is what will allow us to map some the positions in our logits to span of texts in the original context. - offset_mapping = features[feature_index][ - "offset_mapping" - ] # list[tuple(2)], list长度与input_ids, start_logits, end_logits相同 - - # if len(feature_indices) > 1: - # print('offset_mapping: %s' % offset_mapping) - - # Optional `token_is_max_context`, if provided we will remove answers that do not have the maximum context - # available in the current feature. - token_is_max_context = features[feature_index].get("token_is_max_context", None) - - exp_answerable_scores = np.exp(cls_logits - np.max(cls_logits)) - feature_answerable_score = exp_answerable_scores / exp_answerable_scores.sum() - if feature_answerable_score[-1] > score_answerable: - score_answerable = feature_answerable_score[-1] - answerable_probs = feature_answerable_score - - # Update minimum null prediction. - feature_null_score = start_logits[0] + end_logits[0] - if min_null_prediction is None or min_null_prediction["score"] > feature_null_score: - min_null_prediction = { - "feature_index": (0, 0), - "offsets": (0, 0), - "score": feature_null_score, - "start_logit": start_logits[0], - "end_logit": end_logits[0], - } - - # Go through all possibilities for the `n_best_size` greater start and end logits. - start_indexes = np.argsort(start_logits)[-1 : -n_best_size - 1 : -1].tolist() # list(n_best_size) 从大到小 - end_indexes = np.argsort(end_logits)[-1 : -n_best_size - 1 : -1].tolist() # list(n_best_size) 从大到小 - for start_index in start_indexes: - for end_index in end_indexes: - # Don't consider out-of-scope answers, either because the indices are out of bounds or correspond - # to part of the input_ids that are not in the context. - if ( - start_index >= len(offset_mapping) - or end_index >= len(offset_mapping) - or offset_mapping[start_index] is None - or offset_mapping[end_index] is None # CLS、Question和第一个SEP的位置 - or offset_mapping[start_index] == (0, 0) - or offset_mapping[end_index] == (0, 0) # 第二个SEP的位置 - ): - continue - # Don't consider answers with a length that is either < 0 or > max_answer_length. - if end_index < start_index or end_index - start_index + 1 > max_answer_length: - continue - # Don't consider answer that don't have the maximum context available (if such information is - # provided). - if token_is_max_context is not None and not token_is_max_context.get(str(start_index), False): - continue - prelim_predictions.append( - { - "feature_index": (start_index, end_index), - "offsets": (offset_mapping[start_index][0], offset_mapping[end_index][1]), - "score": start_logits[start_index] + end_logits[end_index], - "start_logit": start_logits[start_index], - "end_logit": end_logits[end_index], - } - ) - if version_2_with_negative: - # Add the minimum null prediction - prelim_predictions.append(min_null_prediction) - pred_cls_label = np.argmax(np.array(answerable_probs)) - all_cls_predictions.append([example["id"], pred_cls_label, answerable_probs[0], answerable_probs[1]]) - - # Only keep the best `n_best_size` predictions. - predictions = sorted(prelim_predictions, key=lambda x: x["score"], reverse=True)[:n_best_size] - - # Add back the minimum null prediction if it was removed because of its low score. - if version_2_with_negative and not any(p["offsets"] == (0, 0) for p in predictions): - predictions.append(min_null_prediction) - - # Use the offsets to gather the answer text in the original context. - context = example["context"] - for pred in predictions: - # offsets = pred.pop("offsets") - offsets = pred["offsets"] - pred["text"] = context[offsets[0] : offsets[1]] if context[offsets[0] : offsets[1]] != "" else "no answer" - - # In the very rare edge case we have not a single non-null prediction, we create a fake prediction to avoid - # failure. - if len(predictions) == 0 or (len(predictions) == 1 and predictions[0]["text"] == "no answer"): - predictions.insert( - 0, - { - "feature_index": (0, 0), - "offsets": (0, 0), - "text": "no answer", - "start_logit": 0.0, - "end_logit": 0.0, - "score": 0.0, - }, - ) - - # Compute the softmax of all scores (we do it with numpy to stay independent from torch/tf in this file, using - # the LogSumExp trick). - scores = np.array([pred.pop("score") for pred in predictions]) - exp_scores = np.exp(scores - np.max(scores)) - probs = exp_scores / exp_scores.sum() - - # Include the probabilities in our predictions. - for prob, pred in zip(probs, predictions): - pred["probability"] = prob - - # Pick the best prediction. If the null answer is not possible, this is easy. - if not version_2_with_negative: - all_predictions[example["id"]] = predictions[0]["text"] - all_feature_index[example["id"]] = predictions[0]["feature_index"] - else: - # Otherwise we first need to find the best non-empty prediction. - i = 0 - while predictions[i]["text"] == "no answer": - i += 1 - best_non_null_pred = predictions[i] - - if answerable_probs[1] < cls_threshold: - all_predictions[example["id"]] = "no answer" - else: - all_predictions[example["id"]] = best_non_null_pred["text"] - all_feature_index[example["id"]] = predictions[i]["feature_index"] - - # Make `predictions` JSON-serializable by casting np.float back to float. - all_nbest_json[example["id"]] = [ - {k: (float(v) if isinstance(v, (np.float16, np.float32, np.float64)) else v) for k, v in pred.items()} - for pred in predictions - ] - - return all_predictions, all_nbest_json, all_cls_predictions, all_feature_index - - -def compute_prediction( - examples, - features, - predictions, - version_2_with_negative=False, - n_best_size=20, - max_answer_length=30, - null_score_diff_threshold=0.0, -): - """ - Post-processes the predictions of a question-answering model to convert - them to answers that are substrings of the original contexts. This is - the base postprocessing functions for models that only return start and - end logits. - - Args: - examples (list): List of raw squad-style data (see `run_squad.py - `__ for more - information). - features (list): List of processed squad-style features (see - `run_squad.py `__ - for more information). - predictions (tuple): The predictions of the model. Should be a tuple - of two list containing the start logits and the end logits. - version_2_with_negative (bool, optional): Whether the dataset contains - examples with no answers. Defaults to False. - n_best_size (int, optional): The total number of candidate predictions - to generate. Defaults to 20. - max_answer_length (int, optional): The maximum length of predicted answer. - Defaults to 20. - null_score_diff_threshold (float, optional): The threshold used to select - the null answer. Only useful when `version_2_with_negative` is True. - Defaults to 0.0. - - Returns: - A tuple of three dictionaries containing final selected answer, all n_best - answers along with their probability and scores, and the score_diff of each - example. - """ - assert len(predictions) == 2, "`predictions` should be a tuple with two elements (start_logits, end_logits)." - all_start_logits, all_end_logits = predictions - - assert len(predictions[0]) == len(features), "Number of predictions should be equal to number of features." - - # Build a map example to its corresponding features. - features_per_example = collections.defaultdict(list) - for i, feature in enumerate(features): - features_per_example[feature["example_id"]].append(i) - - # The dictionaries we have to fill. - all_predictions = collections.OrderedDict() - all_nbest_json = collections.OrderedDict() - all_feature_index = collections.OrderedDict() - scores_diff_json = collections.OrderedDict() - - # Let's loop over all the examples! - for example_index, example in enumerate(examples): - # Those are the indices of the features associated to the current example. - feature_indices = features_per_example[example["id"]] - - min_null_prediction = None - prelim_predictions = [] - - # Looping through all the features associated to the current example. - for feature_index in feature_indices: - # We grab the predictions of the model for this feature. - start_logits = all_start_logits[feature_index] - end_logits = all_end_logits[feature_index] - # This is what will allow us to map some the positions in our logits to span of texts in the original - # context. - offset_mapping = features[feature_index]["offset_mapping"] - # Optional `token_is_max_context`, if provided we will remove answers that do not have the maximum context - # available in the current feature. - token_is_max_context = features[feature_index].get("token_is_max_context", None) - - # Update minimum null prediction. - feature_null_score = start_logits[0] + end_logits[0] - if min_null_prediction is None or min_null_prediction["score"] > feature_null_score: - min_null_prediction = { - "feature_index": (0, 0), - "offsets": (0, 0), - "score": feature_null_score, - "start_logit": start_logits[0], - "end_logit": end_logits[0], - } - - # Go through all possibilities for the `n_best_size` greater start and end logits. - start_indexes = np.argsort(start_logits)[-1 : -n_best_size - 1 : -1].tolist() - end_indexes = np.argsort(end_logits)[-1 : -n_best_size - 1 : -1].tolist() - for start_index in start_indexes: - for end_index in end_indexes: - # Don't consider out-of-scope answers, either because the indices are out of bounds or correspond - # to part of the input_ids that are not in the context. - if ( - start_index >= len(offset_mapping) - or end_index >= len(offset_mapping) - or offset_mapping[start_index] is None - or offset_mapping[end_index] is None - or offset_mapping[start_index] == (0, 0) - or offset_mapping[end_index] == (0, 0) - ): - continue - # Don't consider answers with a length that is either < 0 or > max_answer_length. - if end_index < start_index or end_index - start_index + 1 > max_answer_length: - continue - # Don't consider answer that don't have the maximum context available (if such information is - # provided). - if token_is_max_context is not None and not token_is_max_context.get(str(start_index), False): - continue - prelim_predictions.append( - { - "feature_index": (start_index, end_index), - "offsets": (offset_mapping[start_index][0], offset_mapping[end_index][1]), - "score": start_logits[start_index] + end_logits[end_index], - "start_logit": start_logits[start_index], - "end_logit": end_logits[end_index], - } - ) - if version_2_with_negative: - # Add the minimum null prediction - prelim_predictions.append(min_null_prediction) - null_score = min_null_prediction["score"] - - # Only keep the best `n_best_size` predictions. - predictions = sorted(prelim_predictions, key=lambda x: x["score"], reverse=True)[:n_best_size] - - # Add back the minimum null prediction if it was removed because of its low score. - if version_2_with_negative and not any(p["offsets"] == (0, 0) for p in predictions): - predictions.append(min_null_prediction) - - # Use the offsets to gather the answer text in the original context. - context = example["context"] - for pred in predictions: - offsets = pred.pop("offsets") - pred["text"] = context[offsets[0] : offsets[1]] - - # In the very rare edge case we have not a single non-null prediction, we create a fake prediction to avoid - # failure. - if len(predictions) == 0 or (len(predictions) == 1 and predictions[0]["text"] == ""): - predictions.insert( - 0, {"feature_index": (0, 0), "text": "empty", "start_logit": 0.0, "end_logit": 0.0, "score": 0.0} - ) - - # Compute the softmax of all scores (we do it with numpy to stay independent from torch/tf in this file, using - # the LogSumExp trick). - scores = np.array([pred.pop("score") for pred in predictions]) - exp_scores = np.exp(scores - np.max(scores)) - probs = exp_scores / exp_scores.sum() - - # Include the probabilities in our predictions. - for prob, pred in zip(probs, predictions): - pred["probability"] = prob - - # Pick the best prediction. If the null answer is not possible, this is easy. - if not version_2_with_negative: - all_predictions[example["id"]] = predictions[0]["text"] - all_feature_index[example["id"]] = predictions[0]["feature_index"] - else: - # Otherwise we first need to find the best non-empty prediction. - i = 0 - while predictions[i]["text"] == "": - i += 1 - best_non_null_pred = predictions[i] - - # Then we compare to the null prediction using the threshold. - score_diff = null_score - best_non_null_pred["start_logit"] - best_non_null_pred["end_logit"] - scores_diff_json[example["id"]] = float(score_diff) # To be JSON-serializable. - if score_diff > null_score_diff_threshold: - all_predictions[example["id"]] = "" - else: - all_predictions[example["id"]] = best_non_null_pred["text"] - all_feature_index[example["id"]] = predictions[i]["feature_index"] - - # Make `predictions` JSON-serializable by casting np.float back to float. - all_nbest_json[example["id"]] = [ - {k: (float(v) if isinstance(v, (np.float16, np.float32, np.float64)) else v) for k, v in pred.items()} - for pred in predictions - ] - - return all_predictions, all_nbest_json, scores_diff_json, all_feature_index diff --git a/examples/model_interpretation/task/mrc/saliency_map/utils.py b/examples/model_interpretation/task/mrc/saliency_map/utils.py deleted file mode 100644 index 88c1619769ee..000000000000 --- a/examples/model_interpretation/task/mrc/saliency_map/utils.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import absolute_import, division, print_function, unicode_literals - -import paddle - - -class UnpackDataLoader(paddle.io.DataLoader): - def __init__(self, *args, **kwargs): - super(UnpackDataLoader, self).__init__(*args, batch_size=1, **kwargs) - - def __iter__(self): - return ([yy[0] for yy in y] for y in super(UnpackDataLoader, self).__iter__()) - - -def create_if_not_exists(dir): - try: - dir.mkdir(parents=True) - except: - pass - return dir - - -def get_warmup_and_linear_decay(max_steps, warmup_steps): - return lambda step: min(step / warmup_steps, 1.0 - (step - warmup_steps) / (max_steps - warmup_steps)) diff --git a/examples/model_interpretation/task/senti/LIME/exceptions.py b/examples/model_interpretation/task/senti/LIME/exceptions.py deleted file mode 100644 index c5fa1a29924a..000000000000 --- a/examples/model_interpretation/task/senti/LIME/exceptions.py +++ /dev/null @@ -1,2 +0,0 @@ -class LimeError(Exception): - """Raise for errors""" diff --git a/examples/model_interpretation/task/senti/LIME/explanation.py b/examples/model_interpretation/task/senti/LIME/explanation.py deleted file mode 100644 index 6e212b1613ca..000000000000 --- a/examples/model_interpretation/task/senti/LIME/explanation.py +++ /dev/null @@ -1,344 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Explanation class, with visualization functions. -""" -from io import open -import os -import os.path -import json -import string -import numpy as np - -# from .exceptions import LimeError -from LIME.exceptions import LimeError - -from sklearn.utils import check_random_state - - -def id_generator(size=15, random_state=None): - """Helper function to generate random div ids. This is useful for embedding - HTML into ipython notebooks.""" - chars = list(string.ascii_uppercase + string.digits) - return "".join(random_state.choice(chars, size, replace=True)) - - -class DomainMapper(object): - """Class for mapping features to the specific domain. - - The idea is that there would be a subclass for each domain (text, tables, - images, etc), so that we can have a general Explanation class, and separate - out the specifics of visualizing features in here. - """ - - def __init__(self): - pass - - def map_exp_ids(self, exp, **kwargs): - """Maps the feature ids to concrete names. - - Default behaviour is the identity function. Subclasses can implement - this as they see fit. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - kwargs: optional keyword arguments - - Returns: - exp: list of tuples [(name, weight), (name, weight)...] - """ - return exp - - def visualize_instance_html(self, exp, label, div_name, exp_object_name, **kwargs): - """Produces html for visualizing the instance. - - Default behaviour does nothing. Subclasses can implement this as they - see fit. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - label: label id (integer) - div_name: name of div object to be used for rendering(in js) - exp_object_name: name of js explanation object - kwargs: optional keyword arguments - - Returns: - js code for visualizing the instance - """ - return "" - - -class Explanation(object): - """Object returned by explainers.""" - - def __init__(self, domain_mapper, mode="classification", class_names=None, random_state=None): - """ - - Initializer. - - Args: - domain_mapper: must inherit from DomainMapper class - type: "classification" or "regression" - class_names: list of class names (only used for classification) - random_state: an integer or numpy.RandomState that will be used to - generate random numbers. If None, the random state will be - initialized using the internal numpy seed. - """ - self.random_state = random_state - self.mode = mode - self.domain_mapper = domain_mapper - self.local_exp = {} - self.intercept = {} - self.score = {} - self.local_pred = {} - if mode == "classification": - self.class_names = class_names - self.top_labels = None - self.predict_proba = None - elif mode == "regression": - self.class_names = ["negative", "positive"] - self.predicted_value = None - self.min_value = 0.0 - self.max_value = 1.0 - self.dummy_label = 1 - else: - raise LimeError( - 'Invalid explanation mode "{}". ' 'Should be either "classification" ' 'or "regression".'.format(mode) - ) - - def available_labels(self): - """ - Returns the list of classification labels for which we have any explanations. - """ - try: - assert self.mode == "classification" - except AssertionError: - raise NotImplementedError("Not supported for regression explanations.") - else: - ans = self.top_labels if self.top_labels else self.local_exp.keys() - return list(ans) - - def as_list(self, label=1, **kwargs): - """Returns the explanation as a list. - - Args: - label: desired label. If you ask for a label for which an - explanation wasn't computed, will throw an exception. - Will be ignored for regression explanations. - kwargs: keyword arguments, passed to domain_mapper - - Returns: - list of tuples (representation, weight), where representation is - given by domain_mapper. Weight is a float. - """ - label_to_use = label if self.mode == "classification" else self.dummy_label - ans = self.domain_mapper.map_exp_ids(self.local_exp[label_to_use], **kwargs) - ans = [(x[0], float(x[1])) for x in ans] - return ans - - def as_map(self): - """Returns the map of explanations. - - Returns: - Map from label to list of tuples (feature_id, weight). - """ - return self.local_exp - - def as_pyplot_figure(self, label=1, **kwargs): - """Returns the explanation as a pyplot figure. - - Will throw an error if you don't have matplotlib installed - Args: - label: desired label. If you ask for a label for which an - explanation wasn't computed, will throw an exception. - Will be ignored for regression explanations. - kwargs: keyword arguments, passed to domain_mapper - - Returns: - pyplot figure (barchart). - """ - import matplotlib.pyplot as plt - - exp = self.as_list(label=label, **kwargs) - fig = plt.figure() - vals = [x[1] for x in exp] - names = [x[0] for x in exp] - vals.reverse() - names.reverse() - colors = ["green" if x > 0 else "red" for x in vals] - pos = np.arange(len(exp)) + 0.5 - plt.barh(pos, vals, align="center", color=colors) - plt.yticks(pos, names) - if self.mode == "classification": - title = "Local explanation for class %s" % self.class_names[label] - else: - title = "Local explanation" - plt.title(title) - return fig - - def show_in_notebook(self, labels=None, predict_proba=True, show_predicted_value=True, **kwargs): - """Shows html explanation in ipython notebook. - - See as_html() for parameters. - This will throw an error if you don't have IPython installed""" - - from IPython.core.display import display, HTML - - display( - HTML( - self.as_html( - labels=labels, predict_proba=predict_proba, show_predicted_value=show_predicted_value, **kwargs - ) - ) - ) - - def save_to_file(self, file_path, labels=None, predict_proba=True, show_predicted_value=True, **kwargs): - """Saves html explanation to file. . - - Params: - file_path: file to save explanations to - - See as_html() for additional parameters. - - """ - file_ = open(file_path, "w", encoding="utf8") - file_.write( - self.as_html( - labels=labels, predict_proba=predict_proba, show_predicted_value=show_predicted_value, **kwargs - ) - ) - file_.close() - - def as_html(self, labels=None, predict_proba=True, show_predicted_value=True, **kwargs): - """Returns the explanation as an html page. - - Args: - labels: desired labels to show explanations for (as barcharts). - If you ask for a label for which an explanation wasn't - computed, will throw an exception. If None, will show - explanations for all available labels. (only used for classification) - predict_proba: if true, add barchart with prediction probabilities - for the top classes. (only used for classification) - show_predicted_value: if true, add barchart with expected value - (only used for regression) - kwargs: keyword arguments, passed to domain_mapper - - Returns: - code for an html page, including javascript includes. - """ - - def jsonize(x): - return json.dumps(x, ensure_ascii=False) - - if labels is None and self.mode == "classification": - labels = self.available_labels() - - this_dir, _ = os.path.split(__file__) - bundle = open(os.path.join(this_dir, "bundle.js"), encoding="utf8").read() - - out = ( - """ - - """ - % bundle - ) - random_id = id_generator(size=15, random_state=check_random_state(self.random_state)) - out += ( - """ -
- """ - % random_id - ) - - predict_proba_js = "" - if self.mode == "classification" and predict_proba: - predict_proba_js = """ - var pp_div = top_div.append('div') - .classed('lime predict_proba', true); - var pp_svg = pp_div.append('svg').style('width', '100%%'); - var pp = new lime.PredictProba(pp_svg, %s, %s); - """ % ( - jsonize([str(x) for x in self.class_names]), - jsonize(list(self.predict_proba.astype(float))), - ) - - predict_value_js = "" - if self.mode == "regression" and show_predicted_value: - # reference self.predicted_value - # (svg, predicted_value, min_value, max_value) - predict_value_js = """ - var pp_div = top_div.append('div') - .classed('lime predicted_value', true); - var pp_svg = pp_div.append('svg').style('width', '100%%'); - var pp = new lime.PredictedValue(pp_svg, %s, %s, %s); - """ % ( - jsonize(float(self.predicted_value)), - jsonize(float(self.min_value)), - jsonize(float(self.max_value)), - ) - - exp_js = """var exp_div; - var exp = new lime.Explanation(%s); - """ % ( - jsonize([str(x) for x in self.class_names]) - ) - - if self.mode == "classification": - for label in labels: - exp = jsonize(self.as_list(label)) - exp_js += """ - exp_div = top_div.append('div').classed('lime explanation', true); - exp.show(%s, %d, exp_div); - """ % ( - exp, - label, - ) - else: - exp = jsonize(self.as_list()) - exp_js += """ - exp_div = top_div.append('div').classed('lime explanation', true); - exp.show(%s, %s, exp_div); - """ % ( - exp, - self.dummy_label, - ) - - raw_js = """var raw_div = top_div.append('div');""" - - if self.mode == "classification": - html_data = self.local_exp[labels[0]] - else: - html_data = self.local_exp[self.dummy_label] - - raw_js += self.domain_mapper.visualize_instance_html( - html_data, labels[0] if self.mode == "classification" else self.dummy_label, "raw_div", "exp", **kwargs - ) - out += """ - - """ % ( - random_id, - predict_proba_js, - predict_value_js, - exp_js, - raw_js, - ) - out += "" - - return out diff --git a/examples/model_interpretation/task/senti/LIME/lime_base.py b/examples/model_interpretation/task/senti/LIME/lime_base.py deleted file mode 100644 index 2c9104f69b54..000000000000 --- a/examples/model_interpretation/task/senti/LIME/lime_base.py +++ /dev/null @@ -1,226 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Contains abstract functionality for learning locally linear sparse model. -""" -import numpy as np -import scipy as sp -from sklearn.linear_model import Ridge, lars_path -from sklearn.utils import check_random_state - - -class LimeBase(object): - """Class for learning a locally linear sparse model from perturbed data""" - - def __init__(self, kernel_fn, verbose=False, random_state=None): - """Init function - - Args: - kernel_fn: function that transforms an array of distances into an - array of proximity values (floats). - verbose: if true, print local prediction values from linear model. - random_state: an integer or numpy.RandomState that will be used to - generate random numbers. If None, the random state will be - initialized using the internal numpy seed. - """ - self.kernel_fn = kernel_fn - self.verbose = verbose - self.random_state = check_random_state(random_state) - - @staticmethod - def generate_lars_path(weighted_data, weighted_labels): - """Generates the lars path for weighted data. - - Args: - weighted_data: data that has been weighted by kernel - weighted_label: labels, weighted by kernel - - Returns: - (alphas, coefs), both are arrays corresponding to the - regularization parameter and coefficients, respectively - """ - x_vector = weighted_data - alphas, _, coefs = lars_path(x_vector, weighted_labels, method="lasso", verbose=False) - return alphas, coefs - - def forward_selection(self, data, labels, weights, num_features): - """Iteratively adds features to the model""" - clf = Ridge(alpha=0, fit_intercept=True, random_state=self.random_state) - used_features = [] - for _ in range(min(num_features, data.shape[1])): - max_ = -100000000 - best = 0 - for feature in range(data.shape[1]): - if feature in used_features: - continue - clf.fit(data[:, used_features + [feature]], labels, sample_weight=weights) - score = clf.score(data[:, used_features + [feature]], labels, sample_weight=weights) - if score > max_: - best = feature - max_ = score - used_features.append(best) - return np.array(used_features) - - def feature_selection(self, data, labels, weights, num_features, method): - """Selects features for the model. see explain_instance_with_data to - understand the parameters.""" - if method == "none": - return np.array(range(data.shape[1])) - - elif method == "forward_selection": - return self.forward_selection(data, labels, weights, num_features) - - elif method == "highest_weights": - clf = Ridge(alpha=0.01, fit_intercept=True, random_state=self.random_state) - clf.fit(data, labels, sample_weight=weights) - - coef = clf.coef_ - if sp.sparse.issparse(data): - coef = sp.sparse.csr_matrix(clf.coef_) - weighted_data = coef.multiply(data[0]) - # Note: most efficient to slice the data before reversing - sdata = len(weighted_data.data) - argsort_data = np.abs(weighted_data.data).argsort() - # Edge case where data is more sparse than requested number of feature importances - # In that case, we just pad with zero-valued features - if sdata < num_features: - nnz_indexes = argsort_data[::-1] - indices = weighted_data.indices[nnz_indexes] - num_to_pad = num_features - sdata - indices = np.concatenate((indices, np.zeros(num_to_pad, dtype=indices.dtype))) - indices_set = set(indices) - pad_counter = 0 - for i in range(data.shape[1]): - if i not in indices_set: - indices[pad_counter + sdata] = i - pad_counter += 1 - if pad_counter >= num_to_pad: - break - else: - nnz_indexes = argsort_data[sdata - num_features : sdata][::-1] - indices = weighted_data.indices[nnz_indexes] - return indices - else: - weighted_data = coef * data[0] - feature_weights = sorted( - zip(range(data.shape[1]), weighted_data), # zip(特征的编号, Ridge的w值) - key=lambda x: np.abs(x[1]), - reverse=True, - ) - return np.array([x[0] for x in feature_weights[:num_features]]) # 返回Ridge的前num_features大的w的值对应的特征编号 - - elif method == "lasso_path": - weighted_data = (data - np.average(data, axis=0, weights=weights)) * np.sqrt(weights[:, np.newaxis]) - weighted_labels = (labels - np.average(labels, weights=weights)) * np.sqrt(weights) - nonzero = range(weighted_data.shape[1]) - _, coefs = self.generate_lars_path(weighted_data, weighted_labels) - for i in range(len(coefs.T) - 1, 0, -1): - nonzero = coefs.T[i].nonzero()[0] - if len(nonzero) <= num_features: - break - used_features = nonzero - return used_features - - elif method == "auto": - if num_features <= 6: - n_method = "forward_selection" - else: - n_method = "highest_weights" - return self.feature_selection(data, labels, weights, num_features, n_method) - - def explain_instance_with_data( - self, - neighborhood_data, - neighborhood_labels, - distances, - label, - num_features, - feature_selection="auto", - model_regressor=None, - ): - """Takes perturbed data, labels and distances, returns explanation. - - Args: - neighborhood_data: perturbed data, 2d array. first element is - assumed to be the original data point. - neighborhood_labels: corresponding perturbed labels. should have as - many columns as the number of possible labels. - distances: distances to original data point. - label: label for which we want an explanation - num_features: maximum number of features in explanation - feature_selection: how to select num_features. options are: - 'forward_selection': iteratively add features to the model. - This is costly when num_features is high - 'highest_weights': selects the features that have the highest - product of absolute weight * original data point when - learning with all the features - 'lasso_path': chooses features based on the lasso - regularization path - 'none': uses all features, ignores num_features - 'auto': uses forward_selection if num_features <= 6, and - 'highest_weights' otherwise. - model_regressor: sklearn regressor to use in explanation. - Defaults to Ridge regression if None. Must have - model_regressor.coef_ and 'sample_weight' as a parameter - to model_regressor.fit() - - Returns: - (intercept, exp, score, local_pred): - intercept is a float. - exp is a sorted list of tuples, where each tuple (x,y) corresponds to the feature id (x) - and the local weight (y). The list is sorted by decreasing absolute value of y. - score is the R^2 value of the returned explanation - local_pred is the prediction of the explanation model on the original instance - """ - - weights = self.kernel_fn(distances) # 扰动样本权重 - labels_column = neighborhood_labels[:, label] # 类别label的softmax - - used_features = self.feature_selection( - neighborhood_data, labels_column, weights, num_features, feature_selection - ) - if model_regressor is None: - model_regressor = Ridge( - alpha=1, fit_intercept=True, random_state=self.random_state # L2正则化的系数 # 是否需要截距,即b - ) # seg的伪随机种子 - easy_model = model_regressor - easy_model.fit(neighborhood_data[:, used_features], labels_column, sample_weight=weights) - prediction_score = easy_model.score(neighborhood_data[:, used_features], labels_column, sample_weight=weights) - - local_pred = easy_model.predict(neighborhood_data[0, used_features].reshape(1, -1)) - - ridge_pred = easy_model.predict(neighborhood_data[:, used_features]) - err_np = np.abs(labels_column - ridge_pred) - # relative_err_np = err_np / labels_column - relative_err_np = err_np / ridge_pred - err = np.average(err_np, weights=weights) - relative_err = np.average(relative_err_np, weights=weights) - - if self.verbose: - print("Intercept", easy_model.intercept_) - print( - "Prediction_local", - local_pred, - ) - print("Right:", neighborhood_labels[0, label]) - return ( - easy_model.intercept_, # - sorted( - zip(used_features, easy_model.coef_), key=lambda x: np.abs(x[1]), reverse=True - ), # 按权重大小排序的token_id列表 - prediction_score, # 衡量easy_model模型的预测与label的差,越大越好(差越小),最大为1 - local_pred, # easy_model对原始样本的预测概率 - relative_err, - err, - ) diff --git a/examples/model_interpretation/task/senti/LIME/lime_text.py b/examples/model_interpretation/task/senti/LIME/lime_text.py deleted file mode 100644 index 7ef6d3bc40de..000000000000 --- a/examples/model_interpretation/task/senti/LIME/lime_text.py +++ /dev/null @@ -1,664 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# !/usr/bin/env python3 -""" -Functions for explaining text classifiers. -""" -import itertools -import json -import re -import time -import math -import paddle -from functools import partial - -import numpy as np -import scipy as sp -import sklearn -from sklearn.utils import check_random_state - -import LIME.explanation as explanation -import LIME.lime_base as lime_base - - -class TextDomainMapper(explanation.DomainMapper): - """Maps feature ids to words or word-positions""" - - def __init__(self, indexed_string, language): - """Initializer. - - Args: - indexed_string: lime_text.IndexedString, original string - """ - self.indexed_string = indexed_string - self.language = language - - def map_exp_ids(self, exp, positions=False): - """Maps ids to words or word-position strings. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - positions: if True, also return word positions - - Returns: - list of tuples (word, weight), or (word_positions, weight) if - examples: ('bad', 1) or ('bad_3-6-12', 1) - """ - if positions: - exp = [ - ( - "%s_%s" - % (self.indexed_string.word(x[0]), "-".join(map(str, self.indexed_string.string_position(x[0])))), - x[1], - ) - for x in exp - ] - else: - exp = [(self.indexed_string.word(x[0]), x[1]) for x in exp] - return exp - - def visualize_instance_html(self, exp, label, div_name, exp_object_name, text=True, opacity=True): - """Adds text with highlighted words to visualization. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - label: label id (integer) - div_name: name of div object to be used for rendering(in js) - exp_object_name: name of js explanation object - text: if False, return empty - opacity: if True, fade colors according to weight - """ - if not text: - return "" - text = self.indexed_string.raw_string().encode("utf-8", "xmlcharrefreplace").decode("utf-8") - text = re.sub(r"[<>&]", "|", text) - exp = [(self.indexed_string.word(x[0]), self.indexed_string.string_position(x[0]), x[1]) for x in exp] - all_occurrences = list(itertools.chain.from_iterable([itertools.product([x[0]], x[1], [x[2]]) for x in exp])) - all_occurrences = [(x[0], int(x[1]), x[2]) for x in all_occurrences] - ret = """ - %s.show_raw_text(%s, %d, %s, %s, %s); - """ % ( - exp_object_name, - json.dumps(all_occurrences), - label, - json.dumps(text), - div_name, - json.dumps(opacity), - ) - return ret - - -class IndexedString(object): - """String with various indexes.""" - - def __init__(self, raw_string, split_expression=r"\W+", bow=True, mask_string=None, language="en"): - """Initializer. - - Args: - raw_string: string with raw text in it - split_expression: Regex string or callable. If regex string, will be used with re.split. - If callable, the function should return a list of tokens. - bow: if True, a word is the same everywhere in the text - i.e. we - will index multiple occurrences of the same word. If False, - order matters, so that the same word will have different ids - according to position. - mask_string: If not None, replace words with this if bow=False - if None, default value is UNKWORDZ - """ - self.raw = raw_string - self.mask_string = "UNKWORDZ" if mask_string is None else mask_string - self.language = language - - if callable(split_expression): - tokens = split_expression(self.raw) - self.as_list = self._segment_with_tokens(self.raw, tokens) - tokens = set(tokens) - - def non_word(string): - return string not in tokens - - else: - # with the split_expression as a non-capturing group (?:), we don't need to filter out - # the separator character from the split results. - # splitter = re.compile(r'(%s)|$' % split_expression) - # self.as_list = [s for s in splitter.split(self.raw) if s] - if self.language == "ch": - splitter = re.compile(r"([\u4e00-\u9fa5])") - self.as_list = [w for w in splitter.split(self.raw) if len(w.strip()) > 0] - else: - splitter = re.compile(split_expression) - self.as_list = [w for w in self.raw.strip().split() if len(w.strip()) > 0] - valid_word = splitter.match - - self.as_np = np.array(self.as_list) - self.string_start = np.hstack(([0], np.cumsum([len(x) for x in self.as_np[:-1]]))) - vocab = {} - self.inverse_vocab = [] - self.positions = [] - self.bow = bow - non_vocab = set() - for i, word in enumerate(self.as_np): - if word in non_vocab: - continue - if (valid_word(word) and self.language == "en") or (not valid_word(word) and self.language == "ch"): - non_vocab.add(word) - continue - if bow: - if word not in vocab: - vocab[word] = len(vocab) - self.inverse_vocab.append(word) - self.positions.append([]) - idx_word = vocab[word] - self.positions[idx_word].append(i) - else: - self.inverse_vocab.append(word) - self.positions.append(i) - if not bow: - self.positions = np.array(self.positions) - - def raw_string(self): - """Returns the original raw string""" - return self.raw - - def num_words(self): - """Returns the number of tokens in the vocabulary for this document.""" - return len(self.inverse_vocab) - - def word(self, id_): - """Returns the word that corresponds to id_ (int)""" - return self.inverse_vocab[id_] - - def string_position(self, id_): - """Returns a np array with indices to id_ (int) occurrences""" - if self.bow: - return self.string_start[self.positions[id_]] - else: - return self.string_start[[self.positions[id_]]] - - def inverse_removing(self, words_to_remove): - """Returns a string after removing the appropriate words. - - If self.bow is false, replaces word with UNKWORDZ instead of removing it. - - Args: - words_to_remove: list of ids (ints) to remove - - Returns: - original raw string with appropriate words removed. - """ - mask = np.ones(self.as_np.shape[0], dtype="bool") - mask[self.__get_idxs(words_to_remove)] = False - if self.language == "ch": - if not self.bow: - return "".join([self.as_list[i] if mask[i] else self.mask_string for i in range(mask.shape[0])]) - return "".join([self.as_list[v] for v in mask.nonzero()[0]]) - else: - if not self.bow: - return " ".join([self.as_list[i] if mask[i] else self.mask_string for i in range(mask.shape[0])]) - return " ".join([self.as_list[v] for v in mask.nonzero()[0]]) - - @staticmethod - def _segment_with_tokens(text, tokens): - """Segment a string around the tokens created by a passed-in tokenizer""" - list_form = [] - text_ptr = 0 - for token in tokens: - inter_token_string = [] - while not text[text_ptr:].startswith(token): - inter_token_string.append(text[text_ptr]) - text_ptr += 1 - if text_ptr >= len(text): - raise ValueError("Tokenization produced tokens that do not belong in string!") - text_ptr += len(token) - if inter_token_string: - list_form.append("".join(inter_token_string)) - list_form.append(token) - if text_ptr < len(text): - list_form.append(text[text_ptr:]) - return list_form - - def __get_idxs(self, words): - """Returns indexes to appropriate words.""" - if self.bow: - return list(itertools.chain.from_iterable([self.positions[z] for z in words])) - else: - return self.positions[words] - - -class IndexedCharacters(object): - """String with various indexes.""" - - def __init__(self, raw_string, bow=True, mask_string=None): - """Initializer. - - Args: - raw_string: string with raw text in it - bow: if True, a char is the same everywhere in the text - i.e. we - will index multiple occurrences of the same character. If False, - order matters, so that the same word will have different ids - according to position. - mask_string: If not None, replace characters with this if bow=False - if None, default value is chr(0) - """ - self.raw = raw_string - self.as_list = list(self.raw) - self.as_np = np.array(self.as_list) - self.mask_string = chr(0) if mask_string is None else mask_string - self.string_start = np.arange(len(self.raw)) - vocab = {} - self.inverse_vocab = [] - self.positions = [] - self.bow = bow - non_vocab = set() - for i, char in enumerate(self.as_np): - if char in non_vocab: - continue - if bow: - if char not in vocab: - vocab[char] = len(vocab) - self.inverse_vocab.append(char) - self.positions.append([]) - idx_char = vocab[char] - self.positions[idx_char].append(i) - else: - self.inverse_vocab.append(char) - self.positions.append(i) - if not bow: - self.positions = np.array(self.positions) - - def raw_string(self): - """Returns the original raw string""" - return self.raw - - def num_words(self): - """Returns the number of tokens in the vocabulary for this document.""" - return len(self.inverse_vocab) - - def word(self, id_): - """Returns the word that corresponds to id_ (int)""" - return self.inverse_vocab[id_] - - def string_position(self, id_): - """Returns a np array with indices to id_ (int) occurrences""" - if self.bow: - return self.string_start[self.positions[id_]] - else: - return self.string_start[[self.positions[id_]]] - - def inverse_removing(self, words_to_remove): - """Returns a string after removing the appropriate words. - - If self.bow is false, replaces word with UNKWORDZ instead of removing - it. - - Args: - words_to_remove: list of ids (ints) to remove - - Returns: - original raw string with appropriate words removed. - """ - mask = np.ones(self.as_np.shape[0], dtype="bool") - mask[self.__get_idxs(words_to_remove)] = False - if not self.bow: - return "".join([self.as_list[i] if mask[i] else self.mask_string for i in range(mask.shape[0])]) - return "".join([self.as_list[v] for v in mask.nonzero()[0]]) - - def __get_idxs(self, words): - """Returns indexes to appropriate words.""" - if self.bow: - return list(itertools.chain.from_iterable([self.positions[z] for z in words])) - else: - return self.positions[words] - - -class LimeTextExplainer(object): - """Explains text classifiers. - Currently, we are using an exponential kernel on cosine distance, and - restricting explanations to words that are present in documents.""" - - def __init__( - self, - kernel_width=25, - kernel=None, - verbose=False, - class_names=None, - feature_selection="auto", - split_expression=r"\W+", - bow=True, - mask_string=None, - random_state=None, - char_level=False, - language="en", - ): - """Init function. - - Args: - kernel_width: kernel width for the exponential kernel. - kernel: similarity kernel that takes euclidean distances and kernel - width as input and outputs weights in (0,1). If None, defaults to - an exponential kernel. - verbose: if true, print local prediction values from linear model - class_names: list of class names, ordered according to whatever the - classifier is using. If not present, class names will be '0', - '1', ... - feature_selection: feature selection method. can be - 'forward_selection', 'lasso_path', 'none' or 'auto'. - See function 'explain_instance_with_data' in lime_base.py for - details on what each of the options does. - split_expression: Regex string or callable. If regex string, will be used with re.split. - If callable, the function should return a list of tokens. - bow: if True (bag of words), will perturb input data by removing - all occurrences of individual words or characters. - Explanations will be in terms of these words. Otherwise, will - explain in terms of word-positions, so that a word may be - important the first time it appears and unimportant the second. - Only set to false if the classifier uses word order in some way - (bigrams, etc), or if you set char_level=True. - mask_string: String used to mask tokens or characters if bow=False - if None, will be 'UNKWORDZ' if char_level=False, chr(0) - otherwise. - random_state: an integer or numpy.RandomState that will be used to - generate random numbers. If None, the random state will be - initialized using the internal numpy seed. - char_level: an boolean identifying that we treat each character - as an independent occurence in the string - """ - - if kernel is None: - - def kernel(d, kernel_width): - return np.sqrt(np.exp(-(d**2) / kernel_width**2)) - - kernel_fn = partial(kernel, kernel_width=kernel_width) - - self.random_state = check_random_state(random_state) - self.base = lime_base.LimeBase(kernel_fn, verbose, random_state=self.random_state) - self.class_names = class_names - self.vocabulary = None - self.feature_selection = feature_selection - self.bow = bow - self.mask_string = mask_string - self.split_expression = split_expression - self.char_level = char_level - self.language = language - - def explain_instance( - self, - text_instance: str, - tokenizer, - pred_label: int, - classifier_fn, - labels=(0, 1), - top_labels=None, - num_features=10, - num_samples=5000, - distance_metric="cosine", - model_regressor=None, - if_lstm=False, - ): - """Generates explanations for a prediction. - - First, we generate neighborhood data by randomly hiding features from - the instance (see __data_labels_distance_mapping). We then learn - locally weighted linear models on this neighborhood data to explain - each of the classes in an interpretable way (see lime_base.py). - - Args: - text_instance: raw text string to be explained. - classifier_fn: classifier prediction probability function, which - takes a list of d strings and outputs a (d, k) numpy array with - prediction probabilities, where k is the number of classes. - For ScikitClassifiers , this is classifier.predict_proba. - labels: iterable with labels to be explained. - top_labels: if not None, ignore labels and produce explanations for - the K labels with highest prediction probabilities, where K is - this parameter. - num_features: maximum number of features present in explanation - num_samples: size of the neighborhood to learn the linear model - distance_metric: the distance metric to use for sample weighting, - defaults to cosine similarity - model_regressor: sklearn regressor to use in explanation. Defaults - to Ridge regression in LimeBase. Must have model_regressor.coef_ - and 'sample_weight' as a parameter to model_regressor.fit() - Returns: - An Explanation object (see explanation.py) with the corresponding - explanations. - """ - indexed_string = ( - IndexedCharacters(text_instance, bow=self.bow, mask_string=self.mask_string) - if self.char_level - else IndexedString( - text_instance, - bow=self.bow, - split_expression=self.split_expression, - mask_string=self.mask_string, - language=self.language, - ) - ) - domain_mapper = TextDomainMapper(indexed_string, self.language) - - # 产生扰动数据集 第一条是原始数据 - # data: 解释器训练特征 list (num_samples, doc_size) - # yss: 解释器训练标签 list (num_samples, class_num(2)) - # distances: 扰动样本到原始样本的距离 np.array(float) (num_samples, ) - data, yss, distances = self.__data_labels_distances( - indexed_string, tokenizer, classifier_fn, num_samples, distance_metric=distance_metric, if_lstm=if_lstm - ) - - if self.class_names is None: - self.class_names = [str(x) for x in range(yss[0].shape[0])] - ret_exp = explanation.Explanation( - domain_mapper=domain_mapper, class_names=self.class_names, random_state=self.random_state - ) - ret_exp.predict_proba = yss[0] - if top_labels: - labels = np.argsort(yss[0])[-top_labels:] - ret_exp.top_labels = list(labels) - ret_exp.top_labels.reverse() - - num_features = indexed_string.num_words() # 特征数量跟word_num相同 - - ( - ret_exp.intercept[pred_label], - ret_exp.local_exp[pred_label], - ret_exp.score[pred_label], - ret_exp.local_pred[pred_label], - relative_err, - err, - ) = self.base.explain_instance_with_data( - data, - yss, - distances, - pred_label, - num_features, - model_regressor=model_regressor, - feature_selection=self.feature_selection, - ) - - return ret_exp, indexed_string, relative_err, err - - def __data_labels_distances( - self, indexed_string, tokenizer, classifier_fn, num_samples, distance_metric="cosine", if_lstm=False - ): - """Generates a neighborhood around a prediction. - - Generates neighborhood data by randomly removing words from - the instance, and predicting with the classifier. Uses cosine distance - to compute distances between original and perturbed instances. - Args: - indexed_string: document (IndexedString) to be explained, - classifier_fn: classifier prediction probability function, which - takes a string and outputs prediction probabilities. For - ScikitClassifier, this is classifier.predict_proba. - num_samples: size of the neighborhood to learn the linear model - distance_metric: the distance metric to use for sample weighting, - defaults to cosine similarity. - - Returns: - A tuple (data, labels, distances), where: - data: dense num_samples * K binary matrix, where K is the - number of tokens in indexed_string. The first row is the - original instance, and thus a row of ones. - labels: num_samples * L matrix, where L is the number of target - labels - distances: cosine distance between the original instance and - each perturbed instance (computed in the binary 'data' - matrix), times 100. - """ - - def distance_fn(x): - return sklearn.metrics.pairwise.pairwise_distances(x, x[0], metric=distance_metric).ravel() * 100 - - doc_size = indexed_string.num_words() - - if doc_size > 1: - sample = self.random_state.randint( - 1, doc_size, num_samples - 1 - ) # sample: [int(1 ~ doc_size-1) * num_samples-1] - else: - sample = [0 for i in range(num_samples - 1)] - data = np.ones((num_samples, doc_size)) - data[0] = np.ones(doc_size) - features_range = range(doc_size) - perturb_text = [indexed_string.raw_string()] # [文本 * num_samples] - - for i, size in enumerate(sample, start=1): - # inactive: 从range(0, doc_size)中随机取出的size个数组成的list, 要去掉的字的id - inactive = self.random_state.choice( - features_range, size, replace=False # [0, doc_size) # int: 该扰动样本中remove token的数量 - ) - - text = indexed_string.inverse_removing(inactive) # 原文本去掉了inactive中的字后的文本 - - data[i, inactive] = 0 - perturb_text.append(text) - - prev_time = time.time() - # inverse_data: 扰动数据集 [扰动样本 str] * num_samples - labels = [] - token_ids_list, s_ids_list, seq_len_list = [], [], [] - token_ids_max_len = 0 - - valid_idxs = [] - - for idx, text in enumerate(perturb_text): - if self.language == "en": - if if_lstm: - pad_id = [tokenizer.vocab.token_to_idx.get("[PAD]", 0)] - - token_ids = tokenizer.encode(text) - token_ids_max_len = max(token_ids_max_len, len(token_ids)) - seq_len = len(token_ids) - if seq_len == 0: - continue - else: - valid_idxs.append(idx) - seq_len_list.append(seq_len) - pad_id = [tokenizer.vocab.token_to_idx.get("[PAD]", 0)] - - else: - pad_id = tokenizer.convert_tokens_to_ids(["[PAD]"]) - - tokens = tokenizer.tokenize(text) - token_ids = tokenizer.convert_tokens_to_ids(tokens) - token_ids = ( - tokenizer.convert_tokens_to_ids(["[CLS]"]) - + token_ids - + tokenizer.convert_tokens_to_ids(["[SEP]"]) - ) - token_ids_max_len = max(token_ids_max_len, len(token_ids)) - - token_ids_list.append(token_ids) - else: - if len(text) == 0: # TODO - text = perturb_text[0] - tokens = tokenizer.tokenize(text) - token_ids = tokenizer.convert_tokens_to_ids(tokens) - - if if_lstm: - seq_len = len(token_ids) - if seq_len == 0: - continue - else: - valid_idxs.append(idx) - seq_len_list.append(seq_len) - else: - token_ids = ( - tokenizer.convert_tokens_to_ids(["[CLS]"]) - + token_ids - + tokenizer.convert_tokens_to_ids(["[SEP]"]) - ) - - # padding - token_ids = token_ids + tokenizer.convert_tokens_to_ids(["[PAD]"]) * ( - len(perturb_text[0]) + 2 - len(token_ids) - ) - token_ids_list.append(token_ids) - s_ids = [0 for _ in range(len(token_ids))] - s_ids_list.append(s_ids) - - if self.language == "en": - for token_ids in token_ids_list: - while len(token_ids) < token_ids_max_len: - token_ids += pad_id - - s_ids = [0 for _ in range(len(token_ids))] - s_ids_list.append(s_ids) - - token_ids_np = np.array(token_ids_list) - s_ids_np = np.array(s_ids_list) - seq_len_np = np.array(seq_len_list) - - prev_time = time.time() - - batch = 0 - if self.language == "ch": - length = len(perturb_text[0]) - - if if_lstm: - batch = 128 - else: - batch = 64 if length < 130 else 50 - else: - batch = 32 - - epoch_num = math.ceil(len(token_ids_np) / batch) - for idx in range(epoch_num): - token_ids_tensor = paddle.Tensor( - value=token_ids_np[idx * batch : (idx + 1) * batch], place=paddle.CUDAPlace(0), stop_gradient=True - ) - if if_lstm: - seq_len_tensor = paddle.Tensor( - value=seq_len_np[idx * batch : (idx + 1) * batch], - place=token_ids_tensor.place, - stop_gradient=token_ids_tensor.stop_gradient, - ) - label = classifier_fn(token_ids_tensor, seq_len_tensor)[0] # label: Tensor[num_samples, 2] - else: - s_ids_tensor = paddle.Tensor( - value=s_ids_np[idx * batch : (idx + 1) * batch], - place=token_ids_tensor.place, - stop_gradient=token_ids_tensor.stop_gradient, - ) - label = classifier_fn(token_ids_tensor, s_ids_tensor)[0] # label: Tensor[num_samples, 2] - - labels.extend(label.numpy().tolist()) - - labels = np.array(labels) # labels: nsp.array(num_samples, 2) - - print("mode forward time: %.5f" % (time.time() - prev_time)) - - distances = distance_fn(sp.sparse.csr_matrix(data)) - - return data, labels, distances diff --git a/examples/model_interpretation/task/senti/pretrained_models/run_train.sh b/examples/model_interpretation/task/senti/pretrained_models/run_train.sh deleted file mode 100755 index b13d03c6486e..000000000000 --- a/examples/model_interpretation/task/senti/pretrained_models/run_train.sh +++ /dev/null @@ -1,30 +0,0 @@ -### - # This script is used to finetune pretrained models -### - -export CUDA_VISIBLE_DEVICES=5 - -LANGUAGE=en -BASE_MODEL=roberta_base # [roberta_base, roberta_large] -timestamp=`date +"%Y%m%d_%H%M%S"` - -if [[ $LANGUAGE == "ch" ]]; then - LEARNING_RATE=2e-5 - MAX_SEQ_LENGTH=128 -elif [[ $LANGUAGE == "en" ]]; then - LEARNING_RATE=5e-6 - MAX_SEQ_LENGTH=512 -fi - -[ -d "logs" ] || mkdir -p "logs" -set -x - -python3 ./train.py \ - --learning_rate ${LEARNING_RATE} \ - --max_seq_length ${MAX_SEQ_LENGTH} \ - --batch_size 32 \ - --epochs 5 \ - --base_model $BASE_MODEL \ - --save_dir saved_model_${LANGUAGE}/${BASE_MODEL}_${timestamp} \ - --language $LANGUAGE >> logs/log_${BASE_MODEL}_${timestamp} - diff --git a/examples/model_interpretation/task/senti/pretrained_models/train.py b/examples/model_interpretation/task/senti/pretrained_models/train.py deleted file mode 100644 index 61dcb01ada08..000000000000 --- a/examples/model_interpretation/task/senti/pretrained_models/train.py +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This file is used to fine-tune pretrained models -""" -import argparse -import os -import random -import sys -import time -from functools import partial - -import numpy as np -import paddle -import paddle.nn.functional as F - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.datasets import load_dataset -from paddlenlp.transformers import LinearDecayWithWarmup -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("..") -sys.path.append("../../..") -from roberta.modeling import RobertaForSequenceClassification # noqa: E402 - -sys.path.remove("../../..") -sys.path.remove("..") -from utils import convert_example # noqa: E402 - -parser = argparse.ArgumentParser() -parser.add_argument("--base_model", type=str, choices=["roberta_base", "roberta_large"]) -parser.add_argument( - "--save_dir", - default="./checkpoint", - type=str, - help="The output directory where the model checkpoints will be written.", -) -parser.add_argument( - "--max_seq_length", - default=128, - type=int, - help="The maximum total input sequence length after tokenization. " - "Sequences longer than this will be truncated, sequences shorter will be padded.", -) -parser.add_argument("--batch_size", default=32, type=int, help="Batch size per GPU/CPU for training.") -parser.add_argument("--learning_rate", default=5e-5, type=float, help="The initial learning rate for Adam.") -parser.add_argument("--weight_decay", default=0.0, type=float, help="Weight decay if we apply some.") -parser.add_argument("--epochs", default=3, type=int, help="Total number of training epochs to perform.") -parser.add_argument( - "--warmup_proportion", default=0.0, type=float, help="Linear warmup proportion over the training process." -) -parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.") -parser.add_argument("--seed", type=int, default=1000, help="random seed for initialization") -parser.add_argument( - "--device", - choices=["cpu", "gpu", "xpu"], - default="gpu", - help="Select which device to train model, defaults to gpu.", -) -parser.add_argument( - "--language", choices=["ch", "en"], required=True, default=None, help="Language that the model is built for" -) -args = parser.parse_args() - - -def set_seed(seed): - """sets random seed""" - random.seed(seed) - np.random.seed(seed) - paddle.seed(seed) - - -@paddle.no_grad() -def evaluate(model, criterion, metric, data_loader): - """ - Given a dataset, it evals model and computes the metric. - - Args: - model(obj:`paddle.nn.Layer`): A model to classify texts. - data_loader(obj:`paddle.io.DataLoader`): The dataset loader which generates batches. - criterion(obj:`paddle.nn.Layer`): It can compute the loss. - metric(obj:`paddle.metric.Metric`): The evaluation metric. - """ - model.eval() - metric.reset() - losses = [] - for batch in data_loader: - input_ids, token_type_ids, labels = batch - logits = model(input_ids, token_type_ids) - loss = criterion(logits, labels) - losses.append(loss.numpy()) - correct = metric.compute(logits, labels) - metric.update(correct) - accu = metric.accumulate() - print("eval loss: %.5f, accu: %.5f" % (np.mean(losses), accu)) - model.train() - metric.reset() - - -def create_dataloader(dataset, mode="train", batch_size=1, batchify_fn=None, trans_fn=None): - """ - This function created the dataloader which feeds data into model - """ - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - batch_sampler = paddle.io.DistributedBatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - else: - batch_sampler = paddle.io.BatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - - return paddle.io.DataLoader(dataset=dataset, batch_sampler=batch_sampler, collate_fn=batchify_fn, return_list=True) - - -def do_train(): - """ - This function is the main part of the fine-tunning process - """ - paddle.set_device(args.device) - rank = paddle.distributed.get_rank() - if paddle.distributed.get_world_size() > 1: - paddle.distributed.init_parallel_env() - - set_seed(args.seed) - if args.language == "ch": - train_ds, dev_ds = load_dataset("chnsenticorp", splits=["train", "dev"]) - if args.base_model == "roberta_base": - tokenizer = RobertaTokenizer.from_pretrained("roberta-wwm-ext") - model = RobertaForSequenceClassification.from_pretrained("roberta-wwm-ext", num_classes=2) - elif args.base_model == "roberta_large": - tokenizer = RobertaTokenizer.from_pretrained("roberta-wwm-ext-large") - model = RobertaForSequenceClassification.from_pretrained("roberta-wwm-ext-large", num_classes=2) - else: - train_ds, dev_ds = load_dataset("glue", "sst-2", splits=["train", "dev"]) - # for English version, we load models from local machine - if args.base_model == "roberta_base": - tokenizer = RobertaBPETokenizer.from_pretrained("roberta-base") - model = RobertaForSequenceClassification.from_pretrained("roberta-base", num_classes=2) - elif args.base_model == "roberta_large": - tokenizer = RobertaBPETokenizer.from_pretrained("roberta-large") - model = RobertaForSequenceClassification.from_pretrained("roberta-large", num_classes=2) - - trans_func = partial( - convert_example, tokenizer=tokenizer, max_seq_length=args.max_seq_length, language=args.language - ) - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id), # input - Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # segment - Stack(dtype="int64"), # label - ): [data for data in fn(samples)] - train_data_loader = create_dataloader( - train_ds, mode="train", batch_size=args.batch_size, batchify_fn=batchify_fn, trans_fn=trans_func - ) - dev_data_loader = create_dataloader( - dev_ds, mode="dev", batch_size=args.batch_size, batchify_fn=batchify_fn, trans_fn=trans_func - ) - - if args.init_from_ckpt and os.path.isfile(args.init_from_ckpt): - state_dict = paddle.load(args.init_from_ckpt) - model.set_dict(state_dict) - model = paddle.DataParallel(model) - - num_training_steps = len(train_data_loader) * args.epochs - - lr_scheduler = LinearDecayWithWarmup(args.learning_rate, num_training_steps, args.warmup_proportion) - - # Generate parameter names needed to perform weight decay. - # All bias and LayerNorm parameters are excluded. - 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=args.weight_decay, - apply_decay_param_fun=lambda x: x in decay_params, - ) - - criterion = paddle.nn.loss.CrossEntropyLoss() - metric = paddle.metric.Accuracy() - - global_step = 0 - tic_train = time.time() - log_per_step = 100 if args.language == "en" else 10 - for epoch in range(1, args.epochs + 1): - for step, batch in enumerate(train_data_loader, start=1): - input_ids, token_type_ids, labels = batch - logits = model(input_ids=input_ids, token_type_ids=token_type_ids) - loss = criterion(logits, labels) - probs = F.softmax(logits, axis=1) - correct = metric.compute(probs, labels) - metric.update(correct) - acc = metric.accumulate() - - global_step += 1 - if global_step % log_per_step == 0 and rank == 0: - print( - "global step %d, epoch: %d, batch: %d, loss: %.5f, accu: %.5f, speed: %.2f step/s" - % (global_step, epoch, step, loss, acc, log_per_step / (time.time() - tic_train)), - flush=True, - ) - tic_train = time.time() - loss.backward() - optimizer.step() - lr_scheduler.step() - optimizer.clear_grad() - if global_step % (log_per_step * 10) == 0 and rank == 0: - save_dir = os.path.join(args.save_dir, "model_%d" % global_step) - if not os.path.exists(save_dir): - os.makedirs(save_dir) - evaluate(model, criterion, metric, dev_data_loader) - model._layers.save_pretrained(save_dir) - tokenizer.save_pretrained(save_dir) - - -if __name__ == "__main__": - do_train() diff --git a/examples/model_interpretation/task/senti/pretrained_models/utils.py b/examples/model_interpretation/task/senti/pretrained_models/utils.py deleted file mode 100644 index d8c0bad17bd6..000000000000 --- a/examples/model_interpretation/task/senti/pretrained_models/utils.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This file contains some public function -""" -import numpy as np - - -def convert_example(example, tokenizer, max_seq_length=512, is_test=False, language="ch"): - """ - Builds model inputs from a sequence or a pair of sequence for sequence classification tasks - by concatenating and adding special tokens. And creates a mask from the two sequences passed - to be used in a sequence-pair classification task. - - A BERT sequence has the following format: - - - single sequence: ``[CLS] X [SEP]`` - - It returns the first portion of the mask (0's). - - - Args: - example(obj:`list[str]`): List of input data, containing text and label if it have label. - tokenizer(obj:`PretrainedTokenizer`): This tokenizer inherits from :class:`~paddlenlp.transformers.PretrainedTokenizer` - which contains most of the methods. Users should refer to the superclass for more information regarding methods. - max_seq_len(obj:`int`): The maximum total input sequence length after tokenization. - Sequences longer than this will be truncated, sequences shorter will be padded. - is_test(obj:`False`, defaults to `False`): Whether the example contains label or not. - - Returns: - input_ids(obj:`list[int]`): The list of token ids. - token_type_ids(obj: `list[int]`): List of sequence pair mask. - label(obj:`numpy.array`, data type of int64, optional): The input label if not is_test. - """ - if language == "ch": - text = "text" - label = "label" - else: - text = "sentence" - label = "labels" - encoded_inputs = tokenizer(text=example[text], max_seq_len=max_seq_length) - input_ids = encoded_inputs["input_ids"] - token_type_ids = encoded_inputs["token_type_ids"] - - if is_test: - return input_ids, token_type_ids - label = np.array([example[label]], dtype="int64") - return input_ids, token_type_ids, label diff --git a/examples/model_interpretation/task/senti/rnn/lstm_train.sh b/examples/model_interpretation/task/senti/rnn/lstm_train.sh deleted file mode 100755 index fd3b4a4cc2b8..000000000000 --- a/examples/model_interpretation/task/senti/rnn/lstm_train.sh +++ /dev/null @@ -1,20 +0,0 @@ -### - # This script is used to train lstm models -### - -unset CUDA_VISIBLE_DEVICES -LANGUAGE=en - -if [[ $LANGUAGE == 'ch' ]]; then - VOCAB_PATH='./vocab.txt' -else - VOCAB_PATH='vocab.sst2_train' -fi -python -m paddle.distributed.launch --gpus "5" train.py \ - --device=gpu \ - --lr=4e-4 \ - --batch_size=64 \ - --epochs=12 \ - --vocab_path=$VOCAB_PATH \ - --language=$LANGUAGE \ - --save_dir="./checkpoints_"${LANGUAGE} diff --git a/examples/model_interpretation/task/senti/rnn/model.py b/examples/model_interpretation/task/senti/rnn/model.py deleted file mode 100644 index 247a5f65bc5e..000000000000 --- a/examples/model_interpretation/task/senti/rnn/model.py +++ /dev/null @@ -1,265 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import numpy as np -import paddle -import paddle.nn as nn -import paddle.nn.functional as F - -INF = 1.0 * 1e12 - - -class LSTMModel(nn.Layer): - def __init__( - self, - vocab_size, - num_classes, - emb_dim=128, - padding_idx=0, - lstm_hidden_size=198, - direction="forward", - lstm_layers=1, - dropout_rate=0.0, - pooling_type=None, - fc_hidden_size=96, - ): - super().__init__() - - self.direction = direction - - self.embedder = nn.Embedding(num_embeddings=vocab_size, embedding_dim=emb_dim, padding_idx=padding_idx) - - # self.lstm_encoder = nlp.seq2vec.LSTMEncoder(emb_dim, - # lstm_hidden_size, - # num_layers=lstm_layers, - # direction=direction, - # dropout=dropout_rate, - # pooling_type=pooling_type) - - self.lstm_layer = nn.LSTM( - input_size=emb_dim, - hidden_size=lstm_hidden_size, - num_layers=lstm_layers, - direction=direction, - dropout=dropout_rate, - ) - - self.fc = nn.Linear(lstm_hidden_size * (2 if direction == "bidirect" else 1), fc_hidden_size) - self.output_layer = nn.Linear(fc_hidden_size, num_classes) - self.softmax = nn.Softmax(axis=1) - - def forward(self, text, seq_len): - # Shape: (batch_size, num_tokens, embedding_dim) - embedded_text = self.embedder(text) - # Shape: (batch_size, num_tokens, num_directions*lstm_hidden_size) - # num_directions = 2 if direction is 'bidirect' - # if not, num_directions = 1 - - # text_repr = self.lstm_encoder(embedded_text, sequence_length=seq_len) - - encoded_text, (last_hidden, last_cell) = self.lstm_layer(embedded_text, sequence_length=seq_len) - if self.direction == "bidirect": - text_repr = paddle.concat((last_hidden[-2, :, :], last_hidden[-1, :, :]), axis=1) - else: - text_repr = last_hidden[-1, :, :] - - fc_out = paddle.tanh(self.fc(text_repr)) # Shape: (batch_size, fc_hidden_size) - logits = self.output_layer(fc_out) # Shape: (batch_size, num_classes) - return logits - - def forward_interpet(self, text, seq_len): - embedded_text = self.embedder(text) # Shape: (batch_size, num_tokens, embedding_dim) - - # text_repr = self.lstm_encoder(embedded_text, sequence_length=seq_len) # Shape: (batch_size, num_tokens, num_directions * hidden) - - # encoded_text: tensor[batch, seq_len, num_directions * hidden] - # last_hidden: tensor[2, batch, hiddens] - encoded_text, (last_hidden, last_cell) = self.lstm_layer(embedded_text, sequence_length=seq_len) - if self.direction == "bidirect": - text_repr = paddle.concat( - (last_hidden[-2, :, :], last_hidden[-1, :, :]), axis=1 - ) # text_repr: tensor[batch, 2 * hidden] 双向 - else: - text_repr = last_hidden[-1, :, :] # text_repr: tensor[1, hidden_size] 单向 - - fc_out = paddle.tanh(self.fc(text_repr)) # Shape: (batch_size, fc_hidden_size) - logits = self.output_layer(fc_out) # Shape: (batch_size, num_classes) - probs = self.softmax(logits) - - return probs, text_repr, embedded_text - - -class BiLSTMAttentionModel(nn.Layer): - def __init__( - self, - attention_layer, - vocab_size, - num_classes, - emb_dim=128, - lstm_hidden_size=196, - fc_hidden_size=96, - lstm_layers=1, - dropout_rate=0.0, - padding_idx=0, - ): - super().__init__() - self.padding_idx = padding_idx - - self.embedder = nn.Embedding(num_embeddings=vocab_size, embedding_dim=emb_dim, padding_idx=padding_idx) - self.bilstm = nn.LSTM( - input_size=emb_dim, - hidden_size=lstm_hidden_size, - num_layers=lstm_layers, - dropout=dropout_rate, - direction="bidirect", - ) - self.attention = attention_layer - if isinstance(attention_layer, SelfAttention): - self.fc = nn.Linear(lstm_hidden_size, fc_hidden_size) - elif isinstance(attention_layer, SelfInteractiveAttention): - self.fc = nn.Linear(lstm_hidden_size * 2, fc_hidden_size) - else: - raise RuntimeError("Unknown attention type %s." % attention_layer.__class__.__name__) - self.output_layer = nn.Linear(fc_hidden_size, num_classes) - self.softmax = nn.Softmax(axis=1) - - def forward(self, text, seq_len): - mask = text != self.padding_idx - embedded_text = self.embedder(text) - # Encode text, shape: (batch, max_seq_len, num_directions * hidden_size) - encoded_text, (last_hidden, last_cell) = self.bilstm(embedded_text, sequence_length=seq_len) - # Shape: (batch_size, lstm_hidden_size) - hidden, att_weights = self.attention(encoded_text, mask) # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(hidden)) # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - return logits - - def forward_interpet(self, text, seq_len, noise=None, i=None, n_samples=None): - mask = text != self.padding_idx - - baseline_text = paddle.to_tensor( - [[0] * text.shape[1]], dtype=text.dtype, place=text.place, stop_gradient=text.stop_gradient - ) - - embedded_text = self.embedder(text) - baseline_embedded = self.embedder(baseline_text) - - if noise is not None: - if noise.upper() == "GAUSSIAN": - stdev_spread = 0.15 - stdev = stdev_spread * (embedded_text.max() - embedded_text.min()).numpy() - noise = paddle.to_tensor( - np.random.normal(0, stdev, embedded_text.shape).astype(np.float32), stop_gradient=False - ) - embedded_text = embedded_text + noise - - elif noise.upper() == "INTEGRATED": - embedded_text = baseline_embedded + (i / (n_samples - 1)) * (embedded_text - baseline_embedded) - - else: - raise ValueError("unsupported noise method: %s" % (noise)) - - # Encode text, shape: (batch, max_seq_len, num_directions * hidden_size) - encoded_text, (last_hidden, last_cell) = self.bilstm(embedded_text, sequence_length=seq_len) - # Shape: (batch_size, lstm_hidden_size) - hidden, att_weights = self.attention(encoded_text, mask) # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(hidden)) # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - probs = self.softmax(logits) - return probs, att_weights.squeeze(axis=-1), embedded_text - - -class SelfAttention(nn.Layer): - """ - A close implementation of attention network of ACL 2016 paper, - Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification (Zhou et al., 2016). - ref: https://www.aclweb.org/anthology/P16-2034/ - Args: - hidden_size (int): The number of expected features in the input x. - """ - - def __init__(self, hidden_size): - super().__init__() - self.hidden_size = hidden_size - self.att_weight = self.create_parameter(shape=[1, hidden_size, 1], dtype="float32") - - def forward(self, input, mask=None): - """ - Args: - input (paddle.Tensor) of shape (batch, seq_len, input_size): Tensor containing the features of the input sequence. - mask (paddle.Tensor) of shape (batch, seq_len) : - Tensor is a bool tensor, whose each element identifies whether the input word id is pad token or not. - Defaults to `None`. - """ - forward_input, backward_input = paddle.chunk(input, chunks=2, axis=2) - # elementwise-sum forward_x and backward_x - # Shape: (batch_size, max_seq_len, hidden_size) - h = paddle.add_n([forward_input, backward_input]) - # Shape: (batch_size, hidden_size, 1) - att_weight = self.att_weight.tile(repeat_times=(h.shape[0], 1, 1)) - # Shape: (batch_size, max_seq_len, 1) - att_score = paddle.bmm(paddle.tanh(h), att_weight) - if mask is not None: - # mask, remove the effect of 'PAD' - mask = paddle.cast(mask, dtype="float32") - mask = mask.unsqueeze(axis=-1) - inf_tensor = paddle.full(shape=mask.shape, dtype="float32", fill_value=-INF) - att_score = paddle.multiply(att_score, mask) + paddle.multiply(inf_tensor, (1 - mask)) - # Shape: (batch_size, max_seq_len, 1) - att_weight = F.softmax(att_score, axis=1) - # Shape: (batch_size, lstm_hidden_size) - reps = paddle.bmm(h.transpose(perm=(0, 2, 1)), att_weight).squeeze(axis=-1) - reps = paddle.tanh(reps) - return reps, att_weight - - -class SelfInteractiveAttention(nn.Layer): - """ - A close implementation of attention network of NAACL 2016 paper, Hierarchical Attention Networks for Document Classification (Yang et al., 2016). - ref: https://www.cs.cmu.edu/~./hovy/papers/16HLT-hierarchical-attention-networks.pdf - Args: - hidden_size (int): The number of expected features in the input x. - """ - - def __init__(self, hidden_size): - super().__init__() - self.input_weight = self.create_parameter(shape=[1, hidden_size, hidden_size], dtype="float32") - self.bias = self.create_parameter(shape=[1, 1, hidden_size], dtype="float32") - self.att_context_vector = self.create_parameter(shape=[1, hidden_size, 1], dtype="float32") - - def forward(self, input, mask=None): - """ - Args: - input (paddle.Tensor) of shape (batch, seq_len, hidden_size): Tensor containing the features of the input sequence. - mask (paddle.Tensor) of shape (batch, seq_len) : - Tensor is a bool tensor, whose each element identifies whether the input word id is pad token or not. - Defaults to `None - """ - weight = self.input_weight.tile(repeat_times=(input.shape[0], 1, 1)) # tensor[batch, hidden_size, hidden_size] - bias = self.bias.tile(repeat_times=(input.shape[0], 1, 1)) # tensor[batch, 1, hidden_size] - word_squish = paddle.bmm(input, weight) + bias # Shape: (batch_size, seq_len, hidden_size) - att_context_vector = self.att_context_vector.tile( - repeat_times=(input.shape[0], 1, 1) - ) # Shape: (batch_size, hidden_size, 1) - att_score = paddle.bmm(word_squish, att_context_vector) # tensor[batch_size, seq_len, 1] - if mask is not None: - # mask, remove the effect of 'PAD' - mask = paddle.cast(mask, dtype="float32") - mask = mask.unsqueeze(axis=-1) - inf_tensor = paddle.full(shape=mask.shape, dtype="float32", fill_value=-INF) - att_score = paddle.multiply(att_score, mask) + paddle.multiply(inf_tensor, (1 - mask)) - att_weight = F.softmax(att_score, axis=1) # tensor[batch_size, seq_len, 1] - - reps = paddle.bmm(input.transpose(perm=(0, 2, 1)), att_weight).squeeze(-1) # Shape: (batch_size, hidden_size) - return reps, att_weight diff --git a/examples/model_interpretation/task/senti/rnn/tokenizer_config.json b/examples/model_interpretation/task/senti/rnn/tokenizer_config.json deleted file mode 100644 index 1b15a3460241..000000000000 --- a/examples/model_interpretation/task/senti/rnn/tokenizer_config.json +++ /dev/null @@ -1 +0,0 @@ -{"model":"LSTM"} \ No newline at end of file diff --git a/examples/model_interpretation/task/senti/rnn/train.py b/examples/model_interpretation/task/senti/rnn/train.py deleted file mode 100644 index 570334a5d94e..000000000000 --- a/examples/model_interpretation/task/senti/rnn/train.py +++ /dev/null @@ -1,142 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import os -import random -from functools import partial - -import numpy as np -import paddle -from model import BiLSTMAttentionModel, SelfInteractiveAttention -from utils import CharTokenizer, convert_example - -from paddlenlp.data import Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import load_dataset - -parser = argparse.ArgumentParser(__doc__) -parser.add_argument("--epochs", type=int, default=10, help="Number of epoches for training.") -parser.add_argument( - "--device", - choices=["cpu", "gpu", "xpu"], - default="gpu", - help="Select which device to train model, defaults to gpu.", -) -parser.add_argument("--lr", type=float, default=5e-5, help="Learning rate used to train.") -parser.add_argument("--save_dir", type=str, default="checkpoints/", help="Directory to save model checkpoint") -parser.add_argument("--batch_size", type=int, default=64, help="Total examples' number of a batch for training.") -parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.") -parser.add_argument("--vocab_path", type=str, default=None) -parser.add_argument("--language", choices=["ch", "en"], default=None, help="Language that the model is built for") -args = parser.parse_args() - - -def set_seed(seed=1000): - """sets random seed""" - random.seed(seed) - np.random.seed(seed) - paddle.seed(seed) - - -def create_dataloader(dataset, trans_fn=None, mode="train", batch_size=1, batchify_fn=None): - """ - Creats dataloader. - - Args: - dataset(obj:`paddle.io.Dataset`): Dataset instance. - trans_fn(obj:`callable`, optional, defaults to `None`): function to convert a data sample to input ids, etc. - mode(obj:`str`, optional, defaults to obj:`train`): If mode is 'train', it will shuffle the dataset randomly. - batch_size(obj:`int`, optional, defaults to 1): The sample number of a mini-batch. - batchify_fn(obj:`callable`, optional, defaults to `None`): function to generate mini-batch data by merging - the sample list, None for only stack each fields of sample in axis - 0(same as :attr::`np.stack(..., axis=0)`). - - Returns: - dataloader(obj:`paddle.io.DataLoader`): The dataloader which generates batches. - """ - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - sampler = paddle.io.DistributedBatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - else: - sampler = paddle.io.BatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - dataloader = paddle.io.DataLoader(dataset, batch_sampler=sampler, collate_fn=batchify_fn) - return dataloader - - -if __name__ == "__main__": - paddle.set_device(args.device) - set_seed() - - if args.language == "ch": - train_ds, dev_ds = load_dataset("chnsenticorp", splits=["train", "dev"]) - else: - train_ds, dev_ds = load_dataset("glue", "sst-2", splits=["train", "dev"]) - - # Loads vocab. - if not os.path.exists(args.vocab_path): - raise RuntimeError("The vocab_path can not be found in the path %s" % args.vocab_path) - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - - tokenizer = CharTokenizer(vocab, args.language, "../../../punctuations") - - # Constructs the newtork. - vocab_size = len(vocab) - num_classes = len(train_ds.label_list) - pad_token_id = 0 - pad_value = vocab.token_to_idx.get("[PAD]", 0) - - lstm_hidden_size = 196 - attention = SelfInteractiveAttention(hidden_size=2 * lstm_hidden_size) - model = BiLSTMAttentionModel( - attention_layer=attention, - vocab_size=vocab_size, - lstm_hidden_size=lstm_hidden_size, - num_classes=num_classes, - padding_idx=pad_token_id, - ) - - model = paddle.Model(model) - - # Reads data and generates mini-batches. - trans_fn = partial(convert_example, tokenizer=tokenizer, is_test=False, language=args.language) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=pad_value), Stack(dtype="int64"), Stack(dtype="int64") # input_ids # seq len # label - ): [data for data in fn(samples)] - - train_loader = create_dataloader( - train_ds, trans_fn=trans_fn, batch_size=args.batch_size, mode="train", batchify_fn=batchify_fn - ) - dev_loader = create_dataloader( - dev_ds, trans_fn=trans_fn, batch_size=args.batch_size, mode="validation", batchify_fn=batchify_fn - ) - - optimizer = paddle.optimizer.Adam(parameters=model.parameters(), learning_rate=args.lr) - - # Defines loss and metric. - criterion = paddle.nn.CrossEntropyLoss() - metric = paddle.metric.Accuracy() - - model.prepare(optimizer, criterion, metric) - - # Loads pre-trained parameters. - if args.init_from_ckpt: - model.load(args.init_from_ckpt) - print("Loaded checkpoint from %s" % args.init_from_ckpt) - - # Starts training and evaluating. - callback = paddle.callbacks.ProgBarLogger(log_freq=10, verbose=3) - model.fit(train_loader, dev_loader, epochs=args.epochs, save_dir=args.save_dir, callbacks=callback) diff --git a/examples/model_interpretation/task/senti/rnn/utils.py b/examples/model_interpretation/task/senti/rnn/utils.py deleted file mode 100644 index 4d574423d48a..000000000000 --- a/examples/model_interpretation/task/senti/rnn/utils.py +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import numpy as np - - -def convert_example(example, tokenizer, is_test=False, language="en"): - """ - Builds model inputs from a sequence for sequence classification tasks. - It use `jieba.cut` to tokenize text. - - Args: - example(obj:`list[str]`): List of input data, containing text and label if it have label. - tokenizer(obj: paddlenlp.data.JiebaTokenizer): It use jieba to cut the chinese string. - is_test(obj:`False`, defaults to `False`): Whether the example contains label or not. - - Returns: - input_ids(obj:`list[int]`): The list of token ids. - valid_length(obj:`int`): The input sequence valid length. - label(obj:`numpy.array`, data type of int64, optional): The input label if not is_test. - """ - if is_test: - input_ids = tokenizer.encode(example["context"]) - valid_length = np.array(len(input_ids), dtype="int64") - input_ids = np.array(input_ids, dtype="int64") - return input_ids, valid_length - else: - if language == "en": - input_ids = tokenizer.encode(example["sentence"]) - label = np.array(example["labels"], dtype="int64") - else: - input_ids = tokenizer.encode(example["text"]) - label = np.array(example["label"], dtype="int64") - valid_length = np.array(len(input_ids), dtype="int64") - input_ids = np.array(input_ids, dtype="int64") - return input_ids, valid_length, label - - -def preprocess_prediction_data(data, tokenizer): - """ - It process the prediction data as the format used as training. - - Args: - data (obj:`List[str]`): The prediction data whose each element is a tokenized text. - tokenizer(obj: paddlenlp.data.JiebaTokenizer): It use jieba to cut the chinese string. - - Returns: - examples (obj:`List(Example)`): The processed data whose each element is a Example (numedtuple) object. - A Example object contains `text`(word_ids) and `seq_len`(sequence length). - - """ - examples = [] - for text in data: - # ids = tokenizer.encode(text) # JiebaTokenizer - ids = tokenizer.encode(text)[0].tolist()[1:-1] # ErnieTokenizer list[ids] - examples.append([ids, len(ids)]) - - return examples - - -def get_idx_from_word(word, word_to_idx, unk_word): - if word in word_to_idx: - return word_to_idx[word] - return word_to_idx[unk_word] - - -class CharTokenizer: - def __init__(self, vocab, language, vocab_path): - self.tokenizer = list - self.vocab = vocab - self.language = language - self.vocab_path = vocab_path - self.unk_token = [] - - def encode(self, sentence): - if self.language == "ch": - words = tokenizer_punc(sentence, self.vocab_path) - else: - words = sentence.strip().split() - return [get_idx_from_word(word, self.vocab.token_to_idx, self.vocab.unk_token) for word in words] - - def tokenize(self, sentence, wo_unk=True): - if self.language == "ch": - return tokenizer_punc(sentence, self.vocab_path) - else: - return sentence.strip().split() - - def convert_tokens_to_string(self, tokens): - return " ".join(tokens) - - def convert_tokens_to_ids(self, tokens): - return [get_idx_from_word(word, self.vocab.token_to_idx, self.vocab.unk_token) for word in tokens] - - -def tokenizer_lac(string, lac): - temp = "" - res = [] - for c in string: - if "\u4e00" <= c <= "\u9fff": - if temp != "": - res.extend(lac.run(temp)) - temp = "" - res.append(c) - else: - temp += c - if temp != "": - res.extend(lac.run(temp)) - return res - - -def tokenizer_punc(string, vocab_path): - res = [] - sub_string_list = string.strip().split("[MASK]") - for idx, sub_string in enumerate(sub_string_list): - temp = "" - for c in sub_string: - if "\u4e00" <= c <= "\u9fff": - if temp != "": - temp_seg = punc_split(temp, vocab_path) - res.extend(temp_seg) - temp = "" - res.append(c) - else: - temp += c - if temp != "": - temp_seg = punc_split(temp, vocab_path) - res.extend(temp_seg) - if idx < len(sub_string_list) - 1: - res.append("[MASK]") - return res - - -def punc_split(string, vocab_path): - punc_set = set() - with open(vocab_path, "r") as f: - for token in f: - punc_set.add(token.strip()) - punc_set.add(" ") - for ascii_num in range(65296, 65306): - punc_set.add(chr(ascii_num)) - for ascii_num in range(48, 58): - punc_set.add(chr(ascii_num)) - - res = [] - temp = "" - for c in string: - if c in punc_set: - if temp != "": - res.append(temp) - temp = "" - res.append(c) - else: - temp += c - if temp != "": - res.append(temp) - return res diff --git a/examples/model_interpretation/task/senti/roberta/modeling.py b/examples/model_interpretation/task/senti/roberta/modeling.py deleted file mode 100644 index 02f2bec87d85..000000000000 --- a/examples/model_interpretation/task/senti/roberta/modeling.py +++ /dev/null @@ -1,608 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys - -import paddle -import paddle.nn as nn - -from paddlenlp.transformers.model_utils import PretrainedModel, register_base_model - -sys.path.append("../..") -from task.transformer import TransformerEncoder, TransformerEncoderLayer # noqa: E402 - -sys.path.remove("../..") - -__all__ = [ - "RobertaModel", - "RobertaPretrainedModel", - "RobertaForSequenceClassification", - "RobertaForTokenClassification", - "RobertaForQuestionAnswering", -] - - -class RobertaEmbeddings(nn.Layer): - r""" - Include embeddings from word, position and token_type embeddings. - """ - - def __init__( - self, - vocab_size, - hidden_size=768, - hidden_dropout_prob=0.1, - max_position_embeddings=512, - type_vocab_size=16, - pad_token_id=0, - ): - super(RobertaEmbeddings, self).__init__() - self.word_embeddings = nn.Embedding(vocab_size, hidden_size, padding_idx=pad_token_id) - self.position_embeddings = nn.Embedding(max_position_embeddings, hidden_size) - self.token_type_embeddings = nn.Embedding(type_vocab_size, hidden_size) - self.layer_norm = nn.LayerNorm(hidden_size) - self.dropout = nn.Dropout(hidden_dropout_prob) - - def forward(self, input_ids, token_type_ids=None, position_ids=None): - if position_ids is None: - # maybe need use shape op to unify static graph and dynamic graph - ones = paddle.ones_like(input_ids, dtype="int64") - seq_length = paddle.cumsum(ones, axis=-1) - position_ids = seq_length - ones - position_ids.stop_gradient = True - if token_type_ids is None: - token_type_ids = paddle.zeros_like(input_ids, dtype="int64") - - input_embedings = self.word_embeddings(input_ids) - position_embeddings = self.position_embeddings(position_ids) - token_type_embeddings = self.token_type_embeddings(token_type_ids) - - embeddings = input_embedings + position_embeddings + token_type_embeddings - embeddings = self.layer_norm(embeddings) - embeddings = self.dropout(embeddings) - return embeddings - - -class RobertaPooler(nn.Layer): - def __init__(self, hidden_size): - super(RobertaPooler, self).__init__() - self.dense = nn.Linear(hidden_size, hidden_size) - self.activation = nn.Tanh() - - def forward(self, hidden_states): - # We "pool" the model by simply taking the hidden state corresponding - # to the first token. - first_token_tensor = hidden_states[:, 0] - pooled_output = self.dense(first_token_tensor) - pooled_output = self.activation(pooled_output) - return pooled_output - - -class RobertaPretrainedModel(PretrainedModel): - r""" - An abstract class for pretrained RoBerta models. It provides RoBerta related - `model_config_file`, `pretrained_resource_files_map`, `resource_files_names`, - `pretrained_init_configuration`, `base_model_prefix` for downloading and - loading pretrained models. - Refer to :class:`~paddlenlp.transformers.model_utils.PretrainedModel` for more details. - - """ - - model_config_file = "model_config.json" - pretrained_init_configuration = { - "roberta-wwm-ext": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 768, - "initializer_range": 0.02, - "intermediate_size": 3072, - "max_position_embeddings": 512, - "num_attention_heads": 12, - "num_hidden_layers": 12, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "roberta-wwm-ext-large": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 1024, - "initializer_range": 0.02, - "intermediate_size": 4096, - "max_position_embeddings": 512, - "num_attention_heads": 16, - "num_hidden_layers": 24, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "rbt3": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 768, - "initializer_range": 0.02, - "intermediate_size": 3072, - "max_position_embeddings": 512, - "num_attention_heads": 12, - "num_hidden_layers": 3, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "rbtl3": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 1024, - "initializer_range": 0.02, - "intermediate_size": 4096, - "max_position_embeddings": 512, - "num_attention_heads": 16, - "num_hidden_layers": 3, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - } - resource_files_names = {"model_state": "model_state.pdparams"} - pretrained_resource_files_map = { - "model_state": { - "roberta-wwm-ext": "https://paddlenlp.bj.bcebos.com/models/transformers/roberta_base/roberta_chn_base.pdparams", - "roberta-wwm-ext-large": "https://paddlenlp.bj.bcebos.com/models/transformers/roberta_large/roberta_chn_large.pdparams", - "rbt3": "https://paddlenlp.bj.bcebos.com/models/transformers/rbt3/rbt3_chn_large.pdparams", - "rbtl3": "https://paddlenlp.bj.bcebos.com/models/transformers/rbtl3/rbtl3_chn_large.pdparams", - } - } - base_model_prefix = "roberta" - - def _init_weights(self, layer): - """Initialization hook""" - if isinstance(layer, (nn.Linear, nn.Embedding)): - # only support dygraph, use truncated_normal and make it inplace - # and configurable later - layer.weight.set_value( - paddle.tensor.normal( - mean=0.0, - std=self.initializer_range - if hasattr(self, "initializer_range") - else self.roberta.config["initializer_range"], - shape=layer.weight.shape, - ) - ) - elif isinstance(layer, nn.LayerNorm): - layer._epsilon = 1e-12 - - -@register_base_model -class RobertaModel(RobertaPretrainedModel): - r""" - The bare Roberta Model outputting raw hidden-states. - - This model inherits from :class:`~paddlenlp.transformers.model_utils.PretrainedModel`. - Refer to the superclass documentation for the generic methods. - - This model is also a Paddle `paddle.nn.Layer `__ subclass. Use it as a regular Paddle Layer - and refer to the Paddle documentation for all matter related to general usage and behavior. - - Args: - vocab_size (int): - Vocabulary size of `inputs_ids` in `RobertaModel`. Also is the vocab size of token embedding matrix. - Defines the number of different tokens that can be represented by the `inputs_ids` passed when calling `RobertaModel`. - hidden_size (int, optional): - Dimensionality of the embedding layer, encoder layers and pooler layer. Defaults to `768`. - num_hidden_layers (int, optional): - Number of hidden layers in the Transformer encoder. Defaults to `12`. - num_attention_heads (int, optional): - Number of attention heads for each attention layer in the Transformer encoder. - Defaults to `12`. - intermediate_size (int, optional): - Dimensionality of the feed-forward (ff) layer in the encoder. Input tensors - to ff layers are firstly projected from `hidden_size` to `intermediate_size`, - and then projected back to `hidden_size`. Typically `intermediate_size` is larger than `hidden_size`. - Defaults to `3072`. - hidden_act (str, optional): - The non-linear activation function in the feed-forward layer. - ``"gelu"``, ``"relu"`` and any other paddle supported activation functions - are supported. Defaults to ``"gelu"``. - hidden_dropout_prob (float, optional): - The dropout probability for all fully connected layers in the embeddings and encoder. - Defaults to `0.1`. - attention_probs_dropout_prob (float, optional): - The dropout probability used in MultiHeadAttention in all encoder layers to drop some attention target. - Defaults to `0.1`. - max_position_embeddings (int, optional): - The maximum value of the dimensionality of position encoding, which dictates the maximum supported length of an input - sequence. Defaults to `512`. - type_vocab_size (int, optional): - The vocabulary size of the `token_type_ids` passed when calling `~transformers.RobertaModel`. - Defaults to `2`. - initializer_range (float, optional): - The standard deviation of the normal initializer. Defaults to 0.02. - - .. note:: - A normal_initializer initializes weight matrices as normal distributions. - See :meth:`RobertaPretrainedModel._init_weights()` for how weights are initialized in `RobertaModel`. - - pad_token_id(int, optional): - The index of padding token in the token vocabulary. - Defaults to `0`. - """ - - def __init__( - self, - vocab_size, - hidden_size=768, - num_hidden_layers=12, - num_attention_heads=12, - intermediate_size=3072, - hidden_act="gelu", - hidden_dropout_prob=0.1, - attention_probs_dropout_prob=0.1, - max_position_embeddings=512, - type_vocab_size=16, - initializer_range=0.02, - layer_norm_eps=1e-12, - pad_token_id=0, - ): - super(RobertaModel, self).__init__() - self.pad_token_id = pad_token_id - self.initializer_range = initializer_range - self.embeddings = RobertaEmbeddings( - vocab_size, hidden_size, hidden_dropout_prob, max_position_embeddings, type_vocab_size, pad_token_id - ) - encoder_layer = TransformerEncoderLayer( - hidden_size, - num_attention_heads, - intermediate_size, - dropout=hidden_dropout_prob, - activation=hidden_act, - attn_dropout=attention_probs_dropout_prob, - act_dropout=0, - ) - self.encoder = TransformerEncoder(encoder_layer, num_hidden_layers) - self.pooler = RobertaPooler(hidden_size) - - def forward( - self, - input_ids, - token_type_ids=None, - position_ids=None, - attention_mask=None, - noise=None, - i=None, - n_samples=None, - ): - r""" - Args: - input_ids (Tensor): - Indices of input sequence tokens in the vocabulary. They are - numerical representations of tokens that build the input sequence. - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - token_type_ids (Tensor, optional): - Segment token indices to indicate first and second portions of the inputs. - Indices can be either 0 or 1: - - - 0 corresponds to a **sentence A** token, - - 1 corresponds to a **sentence B** token. - - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - Defaults to None, which means no segment embeddings is added to token embeddings. - position_ids (Tensor, optional): - Indices of positions of each input sequence tokens in the position embeddings. - Selected in the range ``[0, max_position_embeddings - 1]``. - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - Defaults to `None`. - attention_mask (Tensor, optional): - Mask used in multi-head attention to avoid performing attention to some unwanted positions, - usually the paddings or the subsequent positions. - Its data type can be int, float and bool. - When the data type is bool, the `masked` tokens have `False` values and the others have `True` values. - When the data type is int, the `masked` tokens have `0` values and the others have `1` values. - When the data type is float, the `masked` tokens have `-INF` values and the others have `0` values. - It is a tensor with shape broadcasted to `[batch_size, num_attention_heads, sequence_length, sequence_length]`. - For example, its shape can be [batch_size, sequence_length], [batch_size, sequence_length, sequence_length], - [batch_size, num_attention_heads, sequence_length, sequence_length]. - Defaults to `None`, which means nothing needed to be prevented attention to. - - Returns: - tuple: Returns tuple (`sequence_output`, `pooled_output`). - - With the fields: - - - sequence_output (Tensor): - Sequence of hidden-states at the last layer of the model. - It's data type should be float32 and its shape is [batch_size, sequence_length, hidden_size]. - - - pooled_output (Tensor): - The output of first token (`[CLS]`) in sequence. - We "pool" the model by simply taking the hidden state corresponding to the first token. - Its data type should be float32 and its shape is [batch_size, hidden_size]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaModel, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaModel.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - sequence_output, pooled_output = model(**inputs) - - """ - if attention_mask is None: - attention_mask = paddle.unsqueeze( - (input_ids == self.pad_token_id).astype(self.pooler.dense.weight.dtype) * -1e9, axis=[1, 2] - ) - # CLS: 101; SEP: 102; PAD: 0 - baseline_ids = paddle.to_tensor( - [101] + [0] * (input_ids.shape[1] - 2) + [102], - dtype=input_ids.dtype, - place=input_ids.place, - stop_gradient=input_ids.stop_gradient, - ) - - embedding_output = self.embeddings( - input_ids=input_ids, position_ids=position_ids, token_type_ids=token_type_ids - ) - baseline_embedding_output = self.embeddings( - input_ids=baseline_ids, position_ids=position_ids, token_type_ids=token_type_ids - ) - - if noise is not None: - if noise.upper() == "GAUSSIAN": - pass - # stdev_spread = 0.15 - # stdev = stdev_spread * (orig_embedded.max() - orig_embedded.min()).numpy() - # noise = paddle.to_tensor(np.random.normal(0, stdev, orig_embedded.shape).astype(np.float32), - # stop_gradient=False) - # orig_embedded = orig_embedded + noise - if noise.upper() == "INTEGRATED": - embedding_output = baseline_embedding_output + i / (n_samples - 1) * ( - embedding_output - baseline_embedding_output - ) - else: - raise ValueError("unsupported noise method: %s" % (noise)) - - # encoder_outputs = self.encoder(embedding_output, attention_mask) - encoder_outputs, att_weights_list = self.encoder(embedding_output, attention_mask) # interpret - sequence_output = encoder_outputs - pooled_output = self.pooler(sequence_output) - return sequence_output, pooled_output, att_weights_list, embedding_output - - -class RobertaForQuestionAnswering(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the hidden-states output to - compute `span_start_logits` and `span_end_logits`, designed for question-answering tasks like SQuAD. - - Args: - roberta (:class:`RobertaModel`): - An instance of RobertaModel. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` of `RobertaModel` - instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, dropout=None): - super(RobertaForQuestionAnswering, self).__init__() - self.roberta = roberta # allow roberta to be config - self.classifier = nn.Linear(self.roberta.config["hidden_size"], 2) - - def forward(self, input_ids, token_type_ids=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - tuple: Returns tuple (`start_logits`, `end_logits`). - - With the fields: - - - `start_logits` (Tensor): - A tensor of the input token classification logits, indicates the start position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - - `end_logits` (Tensor): - A tensor of the input token classification logits, indicates the end position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForSequenceClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForSequenceClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - sequence_output, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=None, attention_mask=None - ) - - logits = self.classifier(sequence_output) - logits = paddle.transpose(logits, perm=[2, 0, 1]) - start_logits, end_logits = paddle.unstack(x=logits, axis=0) - - return start_logits, end_logits - - -class RobertaForSequenceClassification(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the output layer, - designed for sequence classification/regression tasks like GLUE tasks. - - Args: - roberta (:class:`RobertaModel`): - An instance of `RobertaModel`. - num_classes (int, optional): - The number of classes. Defaults to `2`. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` - of `RobertaModel` instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, num_classes=2, dropout=None): - super(RobertaForSequenceClassification, self).__init__() - self.num_classes = num_classes - self.roberta = roberta # allow roberta to be config - self.dropout = nn.Dropout(dropout if dropout is not None else self.roberta.config["hidden_dropout_prob"]) - self.classifier = nn.Linear(self.roberta.config["hidden_size"], num_classes) - self.softmax = nn.Softmax() - - def forward(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - Tensor: Returns tensor `logits`, a tensor of the input text classification logits. - Its data type should be float32 and it has a shape of [batch_size, num_classes]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForSequenceClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForSequenceClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - _, pooled_output, _, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=position_ids, attention_mask=attention_mask - ) - - pooled_output = self.dropout(pooled_output) - logits = self.classifier(pooled_output) - return logits - - def forward_interpet( - self, - input_ids, - token_type_ids=None, - position_ids=None, - attention_mask=None, - noise=None, - i=None, - n_samples=None, - ): - _, pooled_output, att_weights_list, embedding_output = self.roberta( - input_ids, - token_type_ids=token_type_ids, - position_ids=position_ids, - attention_mask=attention_mask, - noise=noise, - i=i, - n_samples=n_samples, - ) - - pooled_output = self.dropout(pooled_output) - logits = self.classifier(pooled_output) - probs = self.softmax(logits) - - return probs, att_weights_list, embedding_output - - -class RobertaForTokenClassification(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the hidden-states output layer, - designed for token classification tasks like NER tasks. - - Args: - roberta (:class:`RobertaModel`): - An instance of `RobertaModel`. - num_classes (int, optional): - The number of classes. Defaults to `2`. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` - of `RobertaModel` instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, num_classes=2, dropout=None): - super(RobertaForTokenClassification, self).__init__() - self.num_classes = num_classes - self.roberta = roberta # allow roberta to be config - self.dropout = nn.Dropout(dropout if dropout is not None else self.roberta.config["hidden_dropout_prob"]) - self.classifier = nn.Linear(self.roberta.config["hidden_size"], num_classes) - - def forward(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - Tensor: Returns tensor `logits`, a tensor of the input token classification logits. - Shape as `[batch_size, sequence_length, num_classes]` and dtype as `float32`. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForTokenClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForTokenClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - sequence_output, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=position_ids, attention_mask=attention_mask - ) - - sequence_output = self.dropout(sequence_output) - logits = self.classifier(sequence_output) - return logits diff --git a/examples/model_interpretation/task/senti/run_inter.sh b/examples/model_interpretation/task/senti/run_inter.sh deleted file mode 100755 index c7b71e78d212..000000000000 --- a/examples/model_interpretation/task/senti/run_inter.sh +++ /dev/null @@ -1,65 +0,0 @@ -### - # This file contains script to generate saliency map of a specific baseline model and language on given input data - # The result of this script will be used to evaluate the interpretive performance of the baseline model -### - -export CUDA_VISIBLE_DEVICES=4 -export PYTHONPATH=./:$PYTHONPATH - -LANGUAGE=en # LANGUAGE choose in [ch, en] -BASE_MODEL=roberta_base # BASE_MODEL choose in [roberta_base, roberta_large, lstm] -INTER_MODE=attention # INTER_MODE choice in [attention, integrated_gradient, lime] -TASK=senti_${LANGUAGE} -DATA=../../data/${TASK} -START_ID=0 -FROM_PRETRAIN='test' -VOCAB_PATH='test' - -if [[ $LANGUAGE == "en" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-base' - CKPT=pretrained_models/saved_model_en/roberta_base_20211105_135732/model_10000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_base_20211206_164443/model_10000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-large' - CKPT=pretrained_models/saved_model_en/roberta_large_20211105_160323/model_4000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_large_20211207_174631/model_4000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - VOCAB_PATH='rnn/vocab.sst2_train' - CKPT=rnn/checkpoints_en/final.pdparams - fi - -elif [[ $LANGUAGE == "ch" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-wwm-ext' - CKPT=pretrained_models/saved_model_ch/roberta_base/model_900/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_base_20211229_101252/model_900/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-wwm-ext-large' - CKPT=pretrained_models/saved_model_ch/roberta_large_20211014_192021/model_900/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_large_20211229_105019/model_900/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - VOCAB_PATH='rnn/vocab.txt' - CKPT=rnn/checkpoints_ch/final.pdparams - fi -fi - -OUTPUT=./output/${TASK}.${BASE_MODEL} -[ -d $OUTPUT ] || mkdir -p $OUTPUT -set -x - -python3 ./saliency_map/sentiment_interpretable.py \ - --language $LANGUAGE \ - --base_model $BASE_MODEL \ - --data_dir $DATA \ - --vocab_path $VOCAB_PATH \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE\ - --output_dir $OUTPUT \ - --n-samples 200 \ - --start_id $START_ID \ - --eval $@ diff --git a/examples/model_interpretation/task/senti/run_inter_all.sh b/examples/model_interpretation/task/senti/run_inter_all.sh deleted file mode 100755 index 8b0a1d98bf01..000000000000 --- a/examples/model_interpretation/task/senti/run_inter_all.sh +++ /dev/null @@ -1,75 +0,0 @@ -### - # This file contains script to generate saliency map of all baseline models and languages on given input data - # The result of this script will be used to evaluate the interpretive performance of the baseline model -### - -export CUDA_VISIBLE_DEVICES=1 -export PYTHONPATH=./:$PYTHONPATH -START_ID=0 -FROM_PRETRAIN='test' -VOCAB_PATH='test' - -for BASE_MODEL in "lstm" "roberta_base" "roberta_large"; -do - for INTER_MODE in "attention" "integrated_gradient" "lime"; - do - for LANGUAGE in "ch" "en"; - do - TASK=senti_${LANGUAGE} - DATA=../../data/${TASK} - - if [[ $LANGUAGE == "en" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-base' - CKPT=pretrained_models/saved_model_en/roberta_base_20211105_135732/model_10000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_base_20211206_164443/model_10000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-large' - CKPT=pretrained_models/saved_model_en/roberta_large_20211105_160323/model_4000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_large_20211207_174631/model_4000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - VOCAB_PATH='rnn/vocab.sst2_train' - CKPT=rnn/checkpoints_en/final.pdparams - #CKPT=rnn/checkpoints_en/final.pdparams - fi - - elif [[ $LANGUAGE == "ch" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-wwm-ext' - CKPT=pretrained_models/saved_model_ch/roberta_base/model_900/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_base_20211229_101252/model_900/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-wwm-ext-large' - CKPT=pretrained_models/saved_model_ch/roberta_large_20211014_192021/model_900/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_large_20211229_105019/model_900/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - VOCAB_PATH='rnn/vocab.txt' - CKPT=rnn/checkpoints_ch/final.pdparams - #CKPT=rnn/checkpoints_ch/final.pdparams - fi - fi - - OUTPUT=./output/${TASK}.${BASE_MODEL} - [ -d $OUTPUT ] || mkdir -p $OUTPUT - set -x - - if [[ ! -f ${OUTPUT}/interpret.${INTER_MODE} ]]; then - python3 ./saliency_map/sentiment_interpretable.py \ - --language $LANGUAGE \ - --base_model $BASE_MODEL \ - --data_dir $DATA \ - --vocab_path $VOCAB_PATH \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE\ - --output_dir $OUTPUT \ - --n-samples 200 \ - --start_id $START_ID \ - --eval $@ - fi - done - done -done \ No newline at end of file diff --git a/examples/model_interpretation/task/senti/saliency_map/sentiment_interpretable.py b/examples/model_interpretation/task/senti/saliency_map/sentiment_interpretable.py deleted file mode 100644 index 61afefc70ec5..000000000000 --- a/examples/model_interpretation/task/senti/saliency_map/sentiment_interpretable.py +++ /dev/null @@ -1,502 +0,0 @@ -# !/usr/bin/env python3 -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import collections -import json -import logging -import os -import sys -from functools import partial -from pathlib import Path - -import numpy as np -import paddle -from LIME.lime_text import LimeTextExplainer -from rnn.model import BiLSTMAttentionModel, SelfInteractiveAttention -from rnn.utils import CharTokenizer, convert_example -from roberta.modeling import RobertaForSequenceClassification -from tqdm import tqdm - -from paddlenlp.data import Dict, Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import DatasetBuilder -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("../../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, - match, -) - -sys.path.remove("../../..") - -log = logging.getLogger(__name__) -log.setLevel(logging.DEBUG) -logging.getLogger().setLevel(logging.DEBUG) - - -def get_args(): - parser = argparse.ArgumentParser("interpret sentiment analysis task") - parser.add_argument("--base_model", required=True, choices=["roberta_base", "roberta_large", "lstm"]) - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=128, help="max sentence length, should not greater than 512" - ) - parser.add_argument("--batch_size", type=int, default=1, help="batchsize") - parser.add_argument("--data_dir", type=str, required=True, help="data directory includes train / develop data") - parser.add_argument("--eval", action="store_true") - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument("--wd", type=float, default=0.01, help="weight decay, aka L2 regularizer") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument( - "--inter_mode", - type=str, - default="attention", - choices=["attention", "simple_gradient", "smooth_gradient", "integrated_gradient", "lime"], - help="appoint the mode of interpretable.", - ) - parser.add_argument("--n-samples", type=int, default=25, help="number of samples used for smooth gradient method") - parser.add_argument("--output_dir", type=Path, required=True, help="interpretable output directory") - parser.add_argument("--start_id", type=int, default=0) - parser.add_argument("--vocab_path", type=str, required=True) - parser.add_argument("--language", type=str, required=True, help="language that the model is built for") - args = parser.parse_args() - return args - - -class Senti_data(DatasetBuilder): - def _read(self, filename): - with open(filename, "r", encoding="utf8") as f: - for line in f.readlines(): - line_split = json.loads(line) - yield { - "id": line_split["id"], - "context": line_split["context"], - "sent_token": line_split["sent_token"], - } - - -def create_dataloader(dataset, trans_fn=None, mode="train", batch_size=1, batchify_fn=None): - """ - Creats dataloader. - - Args: - dataset(obj:`paddle.io.Dataset`): Dataset instance. - trans_fn(obj:`callable`, optional, defaults to `None`): function to convert a data sample to input ids, etc. - mode(obj:`str`, optional, defaults to obj:`train`): If mode is 'train', it will shuffle the dataset randomly. - batch_size(obj:`int`, optional, defaults to 1): The sample number of a mini-batch. - batchify_fn(obj:`callable`, optional, defaults to `None`): function to generate mini-batch data by merging - the sample list, None for only stack each fields of sample in axis - 0(same as :attr::`np.stack(..., axis=0)`). - - Returns: - dataloader(obj:`paddle.io.DataLoader`): The dataloader which generates batches. - """ - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - sampler = paddle.io.DistributedBatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - else: - sampler = paddle.io.BatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - dataloader = paddle.io.DataLoader(dataset, batch_sampler=sampler, collate_fn=batchify_fn) - return dataloader - - -def map_fn_senti(examples, tokenizer, args): - log.debug("load data %d" % len(examples)) - if args.language == "en": - contexts = [example["context"].encode("ascii", errors="replace").decode("UTF-8") for example in examples] - else: - contexts = [example["context"] for example in examples] - tokenized_examples = tokenizer(contexts, max_seq_len=args.max_seq_len) - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - for i in range(len(tokenized_examples)): - tokenized_examples[i]["offset_mapping"] = ( - [(0, 0)] + tokenizer.get_offset_mapping(contexts[i])[: args.max_seq_len - 2] + [(0, 0)] - ) - return tokenized_examples - - -def init_lstm_var(args): - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - tokenizer = CharTokenizer(vocab, args.language, "../../punctuations") - padding_idx = vocab.token_to_idx.get("[PAD]", 0) - - trans_fn = partial(convert_example, tokenizer=tokenizer, is_test=True, language=args.language) - - # Init attention layer - lstm_hidden_size = 196 - attention = SelfInteractiveAttention(hidden_size=2 * lstm_hidden_size) - model = BiLSTMAttentionModel( - attention_layer=attention, - vocab_size=len(tokenizer.vocab), - lstm_hidden_size=lstm_hidden_size, - num_classes=2, - padding_idx=padding_idx, - ) - - # Reads data and generates mini-batches. - dev_ds = Senti_data().read(args.data_dir) - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=padding_idx), # input_ids - Stack(dtype="int64"), # seq len - ): [data for data in fn(samples)] - - dev_loader = create_dataloader( - dev_ds, trans_fn=trans_fn, batch_size=args.batch_size, mode="validation", batchify_fn=batchify_fn - ) - - return model, tokenizer, dev_loader - - -def init_roberta_var(args): - tokenizer = None - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - model = RobertaForSequenceClassification.from_pretrained( - args.from_pretrained, - hidden_dropout_prob=0, - attention_probs_dropout_prob=0, - dropout=0, - num_labels=2, - name="", - return_inter_score=True, - ) - - map_fn = partial(map_fn_senti, tokenizer=tokenizer, args=args) - - dev_ds = Senti_data().read(args.data_dir) - dev_ds.map(map_fn, batched=True) - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=args.batch_size, shuffle=False) - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_type_id), - "offset_mapping": Pad(axis=0, pad_val=tokenizer.pad_token_id), - } - ): fn(samples) - - dataloader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - - return model, tokenizer, dataloader - - -def extract_attention_scores(args, atts, input_ids, tokens, sub_word_id_dict, result, offset, out_handle): - if args.base_model.startswith("roberta"): - inter_score = atts[-1][:, :, 0, :].mean(1) # (bsz, seq) - inter_score = inter_score[0][1:-1] # remove CLS and SEP - input_ids = input_ids[0][1:-1] - - elif args.base_model == "lstm": - inter_score = atts[0] - input_ids = input_ids[0] - - length = (inter_score > 0).cast("int32").sum(-1).tolist()[0] - assert len(tokens) == length, f"%s: {len(tokens)} != {length}" % (step + 1) - - char_attribution_dict = {} - # Collect scores in different situation - if args.base_model.startswith("roberta"): - assert len(inter_score) == len(offset), str(len(inter_score)) + "not equal to" + str(len(offset)) - sorted_token = [] - for i in range(len(inter_score)): - sorted_token.append([i, offset[i], inter_score[i]]) - - char_attribution_dict = match(result["context"], result["sent_token"], sorted_token) - - result["char_attri"] = collections.OrderedDict() - for token_info in sorted(char_attribution_dict, key=lambda x: x[2], reverse=True): - result["char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - result.pop("sent_token") - else: - if args.language == "ch": - idx = 0 - for token, score in zip(tokens, inter_score.numpy().tolist()): - char_attribution_dict[idx] = (token, score) - idx += 1 - else: - idx = 0 - for word, sub_word_score in zip(tokens, inter_score.tolist()): - char_attribution_dict[idx] = (word, sub_word_score) - idx += 1 - - result["char_attri"] = collections.OrderedDict() - for token_id, token_info in sorted(char_attribution_dict.items(), key=lambda x: x[1][1], reverse=True): - result["char_attri"][token_id] = token_info - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - - -def extract_integrated_gradient_scores( - args, - atts, - input_ids, - tokens, - sub_word_id_dict, - fwd_args, - fwd_kwargs, - model, - result, - pred_label, - err_total, - offset, - out_handle, -): - embedded_grads_list = [] - for i in range(args.n_samples): - probs, _, embedded = model.forward_interpet( - *fwd_args, **fwd_kwargs, noise="integrated", i=i, n_samples=args.n_samples - ) - predicted_class_prob = probs[0][pred_label] - predicted_class_prob.backward(retain_graph=False) - embedded_grad = embedded.grad - model.clear_gradients() - embedded_grads_list.append(embedded_grad) - - if i == 0: - baseline_pred_confidence = probs.tolist()[0][pred_label] # scalar - baseline_embedded = embedded # Tensor(1, seq_len, embed_size) - elif i == args.n_samples - 1: - pred_confidence = probs.tolist()[0][pred_label] # scalar - pred_embedded = embedded # Tensor(1, seq_len, embed_size) - - embedded_grads_tensor = paddle.to_tensor( - embedded_grads_list, dtype="float32", place=paddle.CUDAPlace(0), stop_gradient=True - ) - - trapezoidal_grads = (embedded_grads_tensor[1:] + embedded_grads_tensor[:-1]) / 2 - integral_grads = trapezoidal_grads.sum(0) / trapezoidal_grads.shape[0] # Tensor(1, seq_len, embed_size) - - inter_score = (pred_embedded - baseline_embedded) * integral_grads # Tensor(1, seq_len, embed_size) - inter_score = inter_score.sum(-1) # Tensor(1, seq_len) - - # eval err - delta_pred_confidence = pred_confidence - baseline_pred_confidence - sum_gradient = inter_score.sum().tolist()[0] - err = (delta_pred_confidence - sum_gradient + 1e-12) / (delta_pred_confidence + 1e-12) - err_total.append(np.abs(err)) - - print_str = "%s\t%d\t%.3f\t%.3f\t%.3f\t%.3f" - print_vals = (result["id"], args.n_samples, delta_pred_confidence, sum_gradient, err, np.average(err_total)) - log.debug(print_str % print_vals) - - inter_score.stop_gradient = True - - char_attribution_dict = {} - if args.base_model.startswith("roberta"): - inter_score = inter_score[0][1:-1] - sorted_token = [] - for i in range(len(inter_score)): - sorted_token.append([i, offset[i], inter_score[i]]) - char_attribution_dict = match(result["context"], result["sent_token"], sorted_token) - - result["char_attri"] = collections.OrderedDict() - for token_info in sorted(char_attribution_dict, key=lambda x: x[2], reverse=True): - result["char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - result.pop("sent_token") - - elif args.base_model == "lstm": - inter_score = inter_score[0] - idx = 0 - for word, sub_word_score in zip(tokens, inter_score.tolist()): - char_attribution_dict[idx] = (word, sub_word_score) - idx += 1 - - result["char_attri"] = collections.OrderedDict() - for token_id, token_info in sorted(char_attribution_dict.items(), key=lambda x: x[1][1], reverse=True): - result["char_attri"][token_id] = token_info - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - return err_total - - -def extract_LIME_scores( - args, - tokenizer, - tokens, - pred_label, - model, - probs, - result, - lime_err_total, - lime_score_total, - lime_relative_err_total, - out_handle, -): - explainer = LimeTextExplainer(class_names=["neg", "pos"], verbose=False, language=args.language) - - if_lstm = args.base_model == "lstm" - explain_res = None - - text_instance = result["context"] - - explain_res = explainer.explain_instance( - text_instance=text_instance, - tokenizer=tokenizer, - pred_label=pred_label, - classifier_fn=model.forward_interpet, - num_samples=5000, - if_lstm=if_lstm, - ) - - exp, indexed_string, relative_err, err = explain_res - - score = exp.score[pred_label] - local_exps = exp.local_exp - ridge_pred = exp.local_pred[pred_label] - model_pred = probs.numpy().tolist()[0][pred_label] - - lime_score_total.append(score) - lime_relative_err_total.append(relative_err) - lime_err_total.append(err) - log.debug("score: %.2f" % score) - log.debug("relative_err: %.2f" % relative_err) - log.debug("err: %.2f" % err) - log.debug("ridge_pred: %.2f\tpred: %.2f\tdelta: %.2f" % (ridge_pred, model_pred, ridge_pred - model_pred)) - - for kind, local_exp in local_exps.items(): # only have one iteration here - char_attribution_dict = [] - - for idx in range(len(result["sent_token"])): - t = result["sent_token"][idx] # .replace('Ġ', '') - got_score = False - for word_id, attribution in local_exp: - if indexed_string.inverse_vocab[word_id] == t: - char_attribution_dict.append((idx, t, attribution)) - got_score = True - break - if not got_score: - char_attribution_dict.append((idx, t, 0)) - char_attribution_dict = sorted(char_attribution_dict, key=lambda x: x[2], reverse=True) - - result["char_attri"] = collections.OrderedDict() - for s in char_attribution_dict: - result["char_attri"][s[0]] = (s[1], s[2]) - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - return lime_err_total, lime_score_total, lime_relative_err_total - - -if __name__ == "__main__": - args = get_args() - if args.base_model.startswith("roberta"): - model, tokenizer, dataloader = init_roberta_var(args) - elif args.base_model == "lstm": - model, tokenizer, dataloader = init_lstm_var(args) - else: - raise ValueError("unsupported base model name.") - - assert args.eval, "INTERPRETER must be run in eval mode" - with paddle.amp.auto_cast(enable=args.use_amp), open( - os.path.join(args.output_dir, "interpret" + f".{args.inter_mode}"), "w" - ) as out_handle: - - # Load model - sd = paddle.load(args.init_checkpoint) - model.set_dict(sd) - model.train() # set dropout to 0 in order to get the gradient - log.debug("load model from %s" % args.init_checkpoint) - - get_sub_word_ids = lambda word: map(str, tokenizer.convert_tokens_to_ids(tokenizer.tokenize(word))) - for step, d in tqdm(enumerate(dataloader)): - if step + 1 < args.start_id: # start from the step's instance - continue - # Initialize input_ids, fwd_args, tokens - result = {} - offset = None - if args.base_model.startswith("roberta"): - input_ids, token_type_ids, offset_map = d - fwd_args = [input_ids, token_type_ids] - fwd_kwargs = {} - tokens = tokenizer.convert_ids_to_tokens(input_ids[0, 1:-1].tolist()) # list - offset = offset_map[0, 1:-1] - - elif args.base_model == "lstm": - input_ids, seq_lens = d - fwd_args = [input_ids, seq_lens] - fwd_kwargs = {} - tokens = [tokenizer.vocab.idx_to_token[input_id] for input_id in input_ids.tolist()[0]] - - result["id"] = dataloader.dataset.data[step]["id"] - - probs, atts, embedded = model.forward_interpet(*fwd_args, **fwd_kwargs) - pred_label = paddle.argmax(probs, axis=-1).tolist()[0] - - result["pred_label"] = pred_label - result["probs"] = [float(format(prob, ".5f")) for prob in probs.numpy()[0].tolist()] - sub_word_id_dict = [] - err_total = [] - lime_err_total, lime_score_total, lime_relative_err_total = [], [], [] - - result["context"] = dataloader.dataset.data[step]["context"] - result["sent_token"] = dataloader.dataset.data[step]["sent_token"] - - # Attention - if args.inter_mode == "attention": - # extract attention scores and write resutls to file - extract_attention_scores(args, atts, input_ids, tokens, sub_word_id_dict, result, offset, out_handle) - - # Integrated_gradient - elif args.inter_mode == "integrated_gradient": - err_total = extract_integrated_gradient_scores( - args, - atts, - input_ids, - tokens, - sub_word_id_dict, - fwd_args, - fwd_kwargs, - model, - result, - pred_label, - err_total, - offset, - out_handle, - ) - - # LIME - elif args.inter_mode == "lime": - lime_err_total, lime_score_total, lime_relative_err_total = extract_LIME_scores( - args, - tokenizer, - tokens, - pred_label, - model, - probs, - result, - lime_err_total, - lime_score_total, - lime_relative_err_total, - out_handle, - ) - - else: - raise KeyError(f"Unkonwn interpretable mode: {args.inter_mode}") - - if args.inter_mode == "lime": - log.debug(np.average(np.array(lime_relative_err_total))) diff --git a/examples/model_interpretation/task/senti/saliency_map/utils.py b/examples/model_interpretation/task/senti/saliency_map/utils.py deleted file mode 100644 index da76e25bfa59..000000000000 --- a/examples/model_interpretation/task/senti/saliency_map/utils.py +++ /dev/null @@ -1,38 +0,0 @@ -# !/usr/bin/env python3 -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import absolute_import, division, print_function, unicode_literals - -import paddle - - -class UnpackDataLoader(paddle.io.DataLoader): - def __init__(self, *args, **kwargs): - super(UnpackDataLoader, self).__init__(*args, batch_size=1, **kwargs) - - def __iter__(self): - return ([yy[0] for yy in y] for y in super(UnpackDataLoader, self).__iter__()) - - -def create_if_not_exists(dir): - try: - dir.mkdir(parents=True) - except: - pass - return dir - - -def get_warmup_and_linear_decay(max_steps, warmup_steps): - return lambda step: min(step / warmup_steps, 1.0 - (step - warmup_steps) / (max_steps - warmup_steps)) diff --git a/examples/model_interpretation/task/similarity/LIME/exceptions.py b/examples/model_interpretation/task/similarity/LIME/exceptions.py deleted file mode 100644 index c5fa1a29924a..000000000000 --- a/examples/model_interpretation/task/similarity/LIME/exceptions.py +++ /dev/null @@ -1,2 +0,0 @@ -class LimeError(Exception): - """Raise for errors""" diff --git a/examples/model_interpretation/task/similarity/LIME/explanation.py b/examples/model_interpretation/task/similarity/LIME/explanation.py deleted file mode 100644 index 46b3f0463fa6..000000000000 --- a/examples/model_interpretation/task/similarity/LIME/explanation.py +++ /dev/null @@ -1,343 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Explanation class, with visualization functions. -""" -from io import open -import os -import os.path -import json -import string -import numpy as np - -from sklearn.utils import check_random_state - -from LIME.exceptions import LimeError - - -def id_generator(size=15, random_state=None): - """Helper function to generate random div ids. This is useful for embedding - HTML into ipython notebooks.""" - chars = list(string.ascii_uppercase + string.digits) - return "".join(random_state.choice(chars, size, replace=True)) - - -class DomainMapper(object): - """Class for mapping features to the specific domain. - - The idea is that there would be a subclass for each domain (text, tables, - images, etc), so that we can have a general Explanation class, and separate - out the specifics of visualizing features in here. - """ - - def __init__(self): - pass - - def map_exp_ids(self, exp, **kwargs): - """Maps the feature ids to concrete names. - - Default behaviour is the identity function. Subclasses can implement - this as they see fit. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - kwargs: optional keyword arguments - - Returns: - exp: list of tuples [(name, weight), (name, weight)...] - """ - return exp - - def visualize_instance_html(self, exp, label, div_name, exp_object_name, **kwargs): - """Produces html for visualizing the instance. - - Default behaviour does nothing. Subclasses can implement this as they - see fit. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - label: label id (integer) - div_name: name of div object to be used for rendering(in js) - exp_object_name: name of js explanation object - kwargs: optional keyword arguments - - Returns: - js code for visualizing the instance - """ - return "" - - -class Explanation(object): - """Object returned by explainers.""" - - def __init__(self, domain_mapper, mode="classification", class_names=None, random_state=None): - """ - - Initializer. - - Args: - domain_mapper: must inherit from DomainMapper class - type: "classification" or "regression" - class_names: list of class names (only used for classification) - random_state: an integer or numpy.RandomState that will be used to - generate random numbers. If None, the random state will be - initialized using the internal numpy seed. - """ - self.random_state = random_state - self.mode = mode - self.domain_mapper = domain_mapper - self.local_exp = {} - self.intercept = {} - self.score = {} - self.local_pred = {} - if mode == "classification": - self.class_names = class_names - self.top_labels = None - self.predict_proba = None - elif mode == "regression": - self.class_names = ["negative", "positive"] - self.predicted_value = None - self.min_value = 0.0 - self.max_value = 1.0 - self.dummy_label = 1 - else: - raise LimeError( - 'Invalid explanation mode "{}". ' 'Should be either "classification" ' 'or "regression".'.format(mode) - ) - - def available_labels(self): - """ - Returns the list of classification labels for which we have any explanations. - """ - try: - assert self.mode == "classification" - except AssertionError: - raise NotImplementedError("Not supported for regression explanations.") - else: - ans = self.top_labels if self.top_labels else self.local_exp.keys() - return list(ans) - - def as_list(self, label=1, **kwargs): - """Returns the explanation as a list. - - Args: - label: desired label. If you ask for a label for which an - explanation wasn't computed, will throw an exception. - Will be ignored for regression explanations. - kwargs: keyword arguments, passed to domain_mapper - - Returns: - list of tuples (representation, weight), where representation is - given by domain_mapper. Weight is a float. - """ - label_to_use = label if self.mode == "classification" else self.dummy_label - ans = self.domain_mapper.map_exp_ids(self.local_exp[label_to_use], **kwargs) - ans = [(x[0], float(x[1])) for x in ans] - return ans - - def as_map(self): - """Returns the map of explanations. - - Returns: - Map from label to list of tuples (feature_id, weight). - """ - return self.local_exp - - def as_pyplot_figure(self, label=1, **kwargs): - """Returns the explanation as a pyplot figure. - - Will throw an error if you don't have matplotlib installed - Args: - label: desired label. If you ask for a label for which an - explanation wasn't computed, will throw an exception. - Will be ignored for regression explanations. - kwargs: keyword arguments, passed to domain_mapper - - Returns: - pyplot figure (barchart). - """ - import matplotlib.pyplot as plt - - exp = self.as_list(label=label, **kwargs) - fig = plt.figure() - vals = [x[1] for x in exp] - names = [x[0] for x in exp] - vals.reverse() - names.reverse() - colors = ["green" if x > 0 else "red" for x in vals] - pos = np.arange(len(exp)) + 0.5 - plt.barh(pos, vals, align="center", color=colors) - plt.yticks(pos, names) - if self.mode == "classification": - title = "Local explanation for class %s" % self.class_names[label] - else: - title = "Local explanation" - plt.title(title) - return fig - - def show_in_notebook(self, labels=None, predict_proba=True, show_predicted_value=True, **kwargs): - """Shows html explanation in ipython notebook. - - See as_html() for parameters. - This will throw an error if you don't have IPython installed""" - - from IPython.core.display import display, HTML - - display( - HTML( - self.as_html( - labels=labels, predict_proba=predict_proba, show_predicted_value=show_predicted_value, **kwargs - ) - ) - ) - - def save_to_file(self, file_path, labels=None, predict_proba=True, show_predicted_value=True, **kwargs): - """Saves html explanation to file. . - - Params: - file_path: file to save explanations to - - See as_html() for additional parameters. - - """ - file_ = open(file_path, "w", encoding="utf8") - file_.write( - self.as_html( - labels=labels, predict_proba=predict_proba, show_predicted_value=show_predicted_value, **kwargs - ) - ) - file_.close() - - def as_html(self, labels=None, predict_proba=True, show_predicted_value=True, **kwargs): - """Returns the explanation as an html page. - - Args: - labels: desired labels to show explanations for (as barcharts). - If you ask for a label for which an explanation wasn't - computed, will throw an exception. If None, will show - explanations for all available labels. (only used for classification) - predict_proba: if true, add barchart with prediction probabilities - for the top classes. (only used for classification) - show_predicted_value: if true, add barchart with expected value - (only used for regression) - kwargs: keyword arguments, passed to domain_mapper - - Returns: - code for an html page, including javascript includes. - """ - - def jsonize(x): - return json.dumps(x, ensure_ascii=False) - - if labels is None and self.mode == "classification": - labels = self.available_labels() - - this_dir, _ = os.path.split(__file__) - bundle = open(os.path.join(this_dir, "bundle.js"), encoding="utf8").read() - - out = ( - """ - - """ - % bundle - ) - random_id = id_generator(size=15, random_state=check_random_state(self.random_state)) - out += ( - """ -
- """ - % random_id - ) - - predict_proba_js = "" - if self.mode == "classification" and predict_proba: - predict_proba_js = """ - var pp_div = top_div.append('div') - .classed('lime predict_proba', true); - var pp_svg = pp_div.append('svg').style('width', '100%%'); - var pp = new lime.PredictProba(pp_svg, %s, %s); - """ % ( - jsonize([str(x) for x in self.class_names]), - jsonize(list(self.predict_proba.astype(float))), - ) - - predict_value_js = "" - if self.mode == "regression" and show_predicted_value: - # reference self.predicted_value - # (svg, predicted_value, min_value, max_value) - predict_value_js = """ - var pp_div = top_div.append('div') - .classed('lime predicted_value', true); - var pp_svg = pp_div.append('svg').style('width', '100%%'); - var pp = new lime.PredictedValue(pp_svg, %s, %s, %s); - """ % ( - jsonize(float(self.predicted_value)), - jsonize(float(self.min_value)), - jsonize(float(self.max_value)), - ) - - exp_js = """var exp_div; - var exp = new lime.Explanation(%s); - """ % ( - jsonize([str(x) for x in self.class_names]) - ) - - if self.mode == "classification": - for label in labels: - exp = jsonize(self.as_list(label)) - exp_js += """ - exp_div = top_div.append('div').classed('lime explanation', true); - exp.show(%s, %d, exp_div); - """ % ( - exp, - label, - ) - else: - exp = jsonize(self.as_list()) - exp_js += """ - exp_div = top_div.append('div').classed('lime explanation', true); - exp.show(%s, %s, exp_div); - """ % ( - exp, - self.dummy_label, - ) - - raw_js = """var raw_div = top_div.append('div');""" - - if self.mode == "classification": - html_data = self.local_exp[labels[0]] - else: - html_data = self.local_exp[self.dummy_label] - - raw_js += self.domain_mapper.visualize_instance_html( - html_data, labels[0] if self.mode == "classification" else self.dummy_label, "raw_div", "exp", **kwargs - ) - out += """ - - """ % ( - random_id, - predict_proba_js, - predict_value_js, - exp_js, - raw_js, - ) - out += "" - - return out diff --git a/examples/model_interpretation/task/similarity/LIME/lime_base.py b/examples/model_interpretation/task/similarity/LIME/lime_base.py deleted file mode 100644 index ca9ce2838919..000000000000 --- a/examples/model_interpretation/task/similarity/LIME/lime_base.py +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Contains abstract functionality for learning locally linear sparse model. -""" -import numpy as np -import scipy as sp -from sklearn.linear_model import Ridge, lars_path -from sklearn.utils import check_random_state - - -class LimeBase(object): - """Class for learning a locally linear sparse model from perturbed data""" - - def __init__(self, kernel_fn, verbose=False, random_state=None): - """Init function - - Args: - kernel_fn: function that transforms an array of distances into an - array of proximity values (floats). - verbose: if true, print local prediction values from linear model. - random_state: an integer or numpy.RandomState that will be used to - generate random numbers. If None, the random state will be - initialized using the internal numpy seed. - """ - self.kernel_fn = kernel_fn - self.verbose = verbose - self.random_state = check_random_state(random_state) - - @staticmethod - def generate_lars_path(weighted_data, weighted_labels): - """Generates the lars path for weighted data. - - Args: - weighted_data: data that has been weighted by kernel - weighted_label: labels, weighted by kernel - - Returns: - (alphas, coefs), both are arrays corresponding to the - regularization parameter and coefficients, respectively - """ - x_vector = weighted_data - alphas, _, coefs = lars_path(x_vector, weighted_labels, method="lasso", verbose=False) - return alphas, coefs - - def forward_selection(self, data, labels, weights, num_features): - """Iteratively adds features to the model""" - clf = Ridge(alpha=0, fit_intercept=True, random_state=self.random_state) - used_features = [] - for _ in range(min(num_features, data.shape[1])): - max_ = -100000000 - best = 0 - for feature in range(data.shape[1]): - if feature in used_features: - continue - clf.fit(data[:, used_features + [feature]], labels, sample_weight=weights) - score = clf.score(data[:, used_features + [feature]], labels, sample_weight=weights) - if score > max_: - best = feature - max_ = score - used_features.append(best) - return np.array(used_features) - - def feature_selection(self, data, labels, weights, num_features, method): - """Selects features for the model. see explain_instance_with_data to - understand the parameters.""" - if method == "none": - return np.array(range(data.shape[1])) - - elif method == "forward_selection": - return self.forward_selection(data, labels, weights, num_features) - - elif method == "highest_weights": - clf = Ridge(alpha=0.01, fit_intercept=True, random_state=self.random_state) - clf.fit(data, labels, sample_weight=weights) - - coef = clf.coef_ - if sp.sparse.issparse(data): - coef = sp.sparse.csr_matrix(clf.coef_) - weighted_data = coef.multiply(data[0]) - # Note: most efficient to slice the data before reversing - sdata = len(weighted_data.data) - argsort_data = np.abs(weighted_data.data).argsort() - # Edge case where data is more sparse than requested number of feature importances - # In that case, we just pad with zero-valued features - if sdata < num_features: - nnz_indexes = argsort_data[::-1] - indices = weighted_data.indices[nnz_indexes] - num_to_pad = num_features - sdata - indices = np.concatenate((indices, np.zeros(num_to_pad, dtype=indices.dtype))) - indices_set = set(indices) - pad_counter = 0 - for i in range(data.shape[1]): - if i not in indices_set: - indices[pad_counter + sdata] = i - pad_counter += 1 - if pad_counter >= num_to_pad: - break - else: - nnz_indexes = argsort_data[sdata - num_features : sdata][::-1] - indices = weighted_data.indices[nnz_indexes] - return indices - else: - weighted_data = coef * data[0] - feature_weights = sorted( - zip(range(data.shape[1]), weighted_data), # zip(特征的编号, Ridge的w值) - key=lambda x: np.abs(x[1]), - reverse=True, - ) - return np.array([x[0] for x in feature_weights[:num_features]]) # 返回Ridge的前num_features大的w的值对应的特征编号 - - elif method == "lasso_path": - weighted_data = (data - np.average(data, axis=0, weights=weights)) * np.sqrt(weights[:, np.newaxis]) - weighted_labels = (labels - np.average(labels, weights=weights)) * np.sqrt(weights) - nonzero = range(weighted_data.shape[1]) - _, coefs = self.generate_lars_path(weighted_data, weighted_labels) - for i in range(len(coefs.T) - 1, 0, -1): - nonzero = coefs.T[i].nonzero()[0] - if len(nonzero) <= num_features: - break - used_features = nonzero - return used_features - - elif method == "auto": - if num_features <= 6: - n_method = "forward_selection" - else: - n_method = "highest_weights" - return self.feature_selection(data, labels, weights, num_features, n_method) - - def explain_instance_with_data( - self, - neighborhood_data, - neighborhood_labels, - distances, - label, - num_features, - feature_selection="auto", - model_regressor=None, - ): - """Takes perturbed data, labels and distances, returns explanation. - - Args: - neighborhood_data: perturbed data, 2d array. first element is - assumed to be the original data point. - neighborhood_labels: corresponding perturbed labels. should have as - many columns as the number of possible labels. - distances: distances to original data point. - label: label for which we want an explanation - num_features: maximum number of features in explanation - feature_selection: how to select num_features. options are: - 'forward_selection': iteratively add features to the model. - This is costly when num_features is high - 'highest_weights': selects the features that have the highest - product of absolute weight * original data point when - learning with all the features - 'lasso_path': chooses features based on the lasso - regularization path - 'none': uses all features, ignores num_features - 'auto': uses forward_selection if num_features <= 6, and - 'highest_weights' otherwise. - model_regressor: sklearn regressor to use in explanation. - Defaults to Ridge regression if None. Must have - model_regressor.coef_ and 'sample_weight' as a parameter - to model_regressor.fit() - - Returns: - (intercept, exp, score, local_pred): - intercept is a float. - exp is a sorted list of tuples, where each tuple (x,y) corresponds to the feature id (x) - and the local weight (y). The list is sorted by decreasing absolute value of y. - score is the R^2 value of the returned explanation - local_pred is the prediction of the explanation model on the original instance - """ - - weights = self.kernel_fn(distances) # 扰动样本权重 - labels_column = neighborhood_labels[:, label] # 类别label的softmax - - used_features = self.feature_selection( - neighborhood_data, labels_column, weights, num_features, feature_selection - ) - if model_regressor is None: - model_regressor = Ridge( - alpha=1, fit_intercept=True, random_state=self.random_state # L2正则化的系数 # 是否需要截距,即b - ) # seg的伪随机种子 - easy_model = model_regressor - easy_model.fit(neighborhood_data[:, used_features], labels_column, sample_weight=weights) - prediction_score = easy_model.score(neighborhood_data[:, used_features], labels_column, sample_weight=weights) - - local_pred = easy_model.predict(neighborhood_data[0, used_features].reshape(1, -1)) - - ridge_pred = easy_model.predict(neighborhood_data[:, used_features]) - err_np = np.abs(labels_column - ridge_pred) - relative_err_np = err_np / ridge_pred - err = np.average(err_np, weights=weights) - relative_err = np.average(relative_err_np, weights=weights) - - if self.verbose: - print("Intercept", easy_model.intercept_) - print( - "Prediction_local", - local_pred, - ) - print("Right:", neighborhood_labels[0, label]) - return ( - easy_model.intercept_, # - sorted( - zip(used_features, easy_model.coef_), key=lambda x: np.abs(x[1]), reverse=True - ), # 按权重大小排序的token_id列表 - prediction_score, # 衡量easy_model模型的预测与label的差,越大越好(差越小),最大为1 - local_pred, # easy_model对原始样本的预测概率 - relative_err, - err, - ) diff --git a/examples/model_interpretation/task/similarity/LIME/lime_text.py b/examples/model_interpretation/task/similarity/LIME/lime_text.py deleted file mode 100644 index b702a68d8de1..000000000000 --- a/examples/model_interpretation/task/similarity/LIME/lime_text.py +++ /dev/null @@ -1,660 +0,0 @@ -# !/usr/bin/env python3 -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" -Functions for explaining text classifiers. -""" -from functools import partial -import itertools -import json -import re -import time -import math -import paddle - -import numpy as np -import scipy as sp -import sklearn -from sklearn.utils import check_random_state - -import LIME.explanation as explanation -import LIME.lime_base as lime_base - - -class TextDomainMapper(explanation.DomainMapper): - """Maps feature ids to words or word-positions""" - - def __init__(self, indexed_string): - """Initializer. - - Args: - indexed_string: lime_text.IndexedString, original string - """ - self.indexed_string = indexed_string - - def map_exp_ids(self, exp, positions=False): - """Maps ids to words or word-position strings. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - positions: if True, also return word positions - - Returns: - list of tuples (word, weight), or (word_positions, weight) if - examples: ('bad', 1) or ('bad_3-6-12', 1) - """ - if positions: - exp = [ - ( - "%s_%s" - % (self.indexed_string.word(x[0]), "-".join(map(str, self.indexed_string.string_position(x[0])))), - x[1], - ) - for x in exp - ] - else: - exp = [(self.indexed_string.word(x[0]), x[1]) for x in exp] - return exp - - def visualize_instance_html(self, exp, label, div_name, exp_object_name, text=True, opacity=True): - """Adds text with highlighted words to visualization. - - Args: - exp: list of tuples [(id, weight), (id,weight)] - label: label id (integer) - div_name: name of div object to be used for rendering(in js) - exp_object_name: name of js explanation object - text: if False, return empty - opacity: if True, fade colors according to weight - """ - if not text: - return "" - text = self.indexed_string.raw_string().encode("utf-8", "xmlcharrefreplace").decode("utf-8") - text = re.sub(r"[<>&]", "|", text) - exp = [(self.indexed_string.word(x[0]), self.indexed_string.string_position(x[0]), x[1]) for x in exp] - all_occurrences = list(itertools.chain.from_iterable([itertools.product([x[0]], x[1], [x[2]]) for x in exp])) - all_occurrences = [(x[0], int(x[1]), x[2]) for x in all_occurrences] - ret = """ - %s.show_raw_text(%s, %d, %s, %s, %s); - """ % ( - exp_object_name, - json.dumps(all_occurrences), - label, - json.dumps(text), - div_name, - json.dumps(opacity), - ) - return ret - - -class IndexedString(object): - """String with various indexes.""" - - def __init__(self, raw_string, split_expression=r"\W+", bow=True, mask_string=None, language="ch"): - """Initializer. - - Args: - raw_string: string with raw text in it - split_expression: Regex string or callable. If regex string, will be used with re.split. - If callable, the function should return a list of tokens. - bow: if True, a word is the same everywhere in the text - i.e. we - will index multiple occurrences of the same word. If False, - order matters, so that the same word will have different ids - according to position. - mask_string: If not None, replace words with this if bow=False - if None, default value is UNKWORDZ - """ - self.raw = raw_string - self.mask_string = "UNKWORDZ" if mask_string is None else mask_string - self.language = language - - if callable(split_expression): - tokens = split_expression(self.raw) - self.as_list = self._segment_with_tokens(self.raw, tokens) - tokens = set(tokens) - - def non_word(string): - return string not in tokens - - else: - # with the split_expression as a non-capturing group (?:), we don't need to filter out - # the separator character from the split results. - if self.language == "ch": - splitter = re.compile(r"([\u4e00-\u9fa5])") - else: - splitter = re.compile(split_expression) - self.as_list = [w for w in splitter.split(self.raw) if len(w.strip()) > 0] - valid_word = splitter.match - - self.as_np = np.array(self.as_list) - self.string_start = np.hstack(([0], np.cumsum([len(x) for x in self.as_np[:-1]]))) - vocab = {} - self.inverse_vocab = [] - self.positions = [] - self.bow = bow - non_vocab = set() - for i, word in enumerate(self.as_np): - if word in non_vocab: - continue - if (self.language == "ch" and not valid_word(word)) or (self.language == "en" and valid_word(word)): - non_vocab.add(word) - continue - if bow: - if word not in vocab: - vocab[word] = len(vocab) - self.inverse_vocab.append(word) - self.positions.append([]) - idx_word = vocab[word] - self.positions[idx_word].append(i) - else: - self.inverse_vocab.append(word) - self.positions.append(i) - if not bow: - self.positions = np.array(self.positions) - - def raw_string(self): - """Returns the original raw string""" - return self.raw - - def num_words(self): - """Returns the number of tokens in the vocabulary for this document.""" - return len(self.inverse_vocab) - - def word(self, id_): - """Returns the word that corresponds to id_ (int)""" - return self.inverse_vocab[id_] - - def string_position(self, id_): - """Returns a np array with indices to id_ (int) occurrences""" - if self.bow: - return self.string_start[self.positions[id_]] - else: - return self.string_start[[self.positions[id_]]] - - def inverse_removing(self, words_to_remove): - """Returns a string after removing the appropriate words. - - If self.bow is false, replaces word with UNKWORDZ instead of removing it. - - Args: - words_to_remove: list of ids (ints) to remove - - Returns: - original raw string with appropriate words removed. - """ - mask = np.ones(self.as_np.shape[0], dtype="bool") - mask[self.__get_idxs(words_to_remove)] = False - if not self.bow: - return "".join([self.as_list[i] if mask[i] else self.mask_string for i in range(mask.shape[0])]) - return "".join([self.as_list[v] for v in mask.nonzero()[0]]) - - @staticmethod - def _segment_with_tokens(text, tokens): - """Segment a string around the tokens created by a passed-in tokenizer""" - list_form = [] - text_ptr = 0 - for token in tokens: - inter_token_string = [] - while not text[text_ptr:].startswith(token): - inter_token_string.append(text[text_ptr]) - text_ptr += 1 - if text_ptr >= len(text): - raise ValueError("Tokenization produced tokens that do not belong in string!") - text_ptr += len(token) - if inter_token_string: - list_form.append("".join(inter_token_string)) - list_form.append(token) - if text_ptr < len(text): - list_form.append(text[text_ptr:]) - return list_form - - def __get_idxs(self, words): - """Returns indexes to appropriate words.""" - if self.bow: - return list(itertools.chain.from_iterable([self.positions[z] for z in words])) - else: - return self.positions[words] - - -class IndexedCharacters(object): - """String with various indexes.""" - - def __init__(self, raw_string, bow=True, mask_string=None): - """Initializer. - - Args: - raw_string: string with raw text in it - bow: if True, a char is the same everywhere in the text - i.e. we - will index multiple occurrences of the same character. If False, - order matters, so that the same word will have different ids - according to position. - mask_string: If not None, replace characters with this if bow=False - if None, default value is chr(0) - """ - self.raw = raw_string - self.as_list = list(self.raw) - self.as_np = np.array(self.as_list) - self.mask_string = chr(0) if mask_string is None else mask_string - self.string_start = np.arange(len(self.raw)) - vocab = {} - self.inverse_vocab = [] - self.positions = [] - self.bow = bow - non_vocab = set() - for i, char in enumerate(self.as_np): - if char in non_vocab: - continue - if bow: - if char not in vocab: - vocab[char] = len(vocab) - self.inverse_vocab.append(char) - self.positions.append([]) - idx_char = vocab[char] - self.positions[idx_char].append(i) - else: - self.inverse_vocab.append(char) - self.positions.append(i) - if not bow: - self.positions = np.array(self.positions) - - def raw_string(self): - """Returns the original raw string""" - return self.raw - - def num_words(self): - """Returns the number of tokens in the vocabulary for this document.""" - return len(self.inverse_vocab) - - def word(self, id_): - """Returns the word that corresponds to id_ (int)""" - return self.inverse_vocab[id_] - - def string_position(self, id_): - """Returns a np array with indices to id_ (int) occurrences""" - if self.bow: - return self.string_start[self.positions[id_]] - else: - return self.string_start[[self.positions[id_]]] - - def inverse_removing(self, words_to_remove): - """Returns a string after removing the appropriate words. - - If self.bow is false, replaces word with UNKWORDZ instead of removing - it. - - Args: - words_to_remove: list of ids (ints) to remove - - Returns: - original raw string with appropriate words removed. - """ - mask = np.ones(self.as_np.shape[0], dtype="bool") - mask[self.__get_idxs(words_to_remove)] = False - if not self.bow: - return "".join([self.as_list[i] if mask[i] else self.mask_string for i in range(mask.shape[0])]) - return "".join([self.as_list[v] for v in mask.nonzero()[0]]) - - def __get_idxs(self, words): - """Returns indexes to appropriate words.""" - if self.bow: - return list(itertools.chain.from_iterable([self.positions[z] for z in words])) - else: - return self.positions[words] - - -class LimeTextExplainer(object): - """Explains text classifiers. - Currently, we are using an exponential kernel on cosine distance, and - restricting explanations to words that are present in documents.""" - - def __init__( - self, - kernel_width=25, - kernel=None, - verbose=False, - class_names=None, - feature_selection="auto", - split_expression=r"\W+", - bow=True, - mask_string=None, - random_state=None, - char_level=False, - language="ch", - ): - """Init function. - - Args: - kernel_width: kernel width for the exponential kernel. - kernel: similarity kernel that takes euclidean distances and kernel - width as input and outputs weights in (0,1). If None, defaults to - an exponential kernel. - verbose: if true, print local prediction values from linear model - class_names: list of class names, ordered according to whatever the - classifier is using. If not present, class names will be '0', - '1', ... - feature_selection: feature selection method. can be - 'forward_selection', 'lasso_path', 'none' or 'auto'. - See function 'explain_instance_with_data' in lime_base.py for - details on what each of the options does. - split_expression: Regex string or callable. If regex string, will be used with re.split. - If callable, the function should return a list of tokens. - bow: if True (bag of words), will perturb input data by removing - all occurrences of individual words or characters. - Explanations will be in terms of these words. Otherwise, will - explain in terms of word-positions, so that a word may be - important the first time it appears and unimportant the second. - Only set to false if the classifier uses word order in some way - (bigrams, etc), or if you set char_level=True. - mask_string: String used to mask tokens or characters if bow=False - if None, will be 'UNKWORDZ' if char_level=False, chr(0) - otherwise. - random_state: an integer or numpy.RandomState that will be used to - generate random numbers. If None, the random state will be - initialized using the internal numpy seed. - char_level: an boolean identifying that we treat each character - as an independent occurence in the string - """ - - if kernel is None: - - def kernel(d, kernel_width): - return np.sqrt(np.exp(-(d**2) / kernel_width**2)) - - kernel_fn = partial(kernel, kernel_width=kernel_width) - - self.random_state = check_random_state(random_state) - self.base = lime_base.LimeBase(kernel_fn, verbose, random_state=self.random_state) - self.class_names = class_names - self.vocabulary = None - self.feature_selection = feature_selection - self.bow = bow - self.mask_string = mask_string - self.split_expression = split_expression - self.char_level = char_level - self.language = language - - def explain_instance( - self, - text_instance_q: str, - text_instance_t: str, - analysis_query, - tokenizer, - pred_label: int, - classifier_fn, - labels=(0, 1), - top_labels=None, - num_features=10, - num_samples=5000, - distance_metric="cosine", - model_regressor=None, - if_lstm=False, - ): - """Generates explanations for a prediction. - - First, we generate neighborhood data by randomly hiding features from - the instance (see __data_labels_distance_mapping). We then learn - locally weighted linear models on this neighborhood data to explain - each of the classes in an interpretable way (see lime_base.py). - - Args: - text_instance: raw text string to be explained. - classifier_fn: classifier prediction probability function, which - takes a list of d strings and outputs a (d, k) numpy array with - prediction probabilities, where k is the number of classes. - For ScikitClassifiers , this is classifier.predict_proba. - labels: iterable with labels to be explained. - top_labels: if not None, ignore labels and produce explanations for - the K labels with highest prediction probabilities, where K is - this parameter. - num_features: maximum number of features present in explanation - num_samples: size of the neighborhood to learn the linear model - distance_metric: the distance metric to use for sample weighting, - defaults to cosine similarity - model_regressor: sklearn regressor to use in explanation. Defaults - to Ridge regression in LimeBase. Must have model_regressor.coef_ - and 'sample_weight' as a parameter to model_regressor.fit() - Returns: - An Explanation object (see explanation.py) with the corresponding - explanations. - """ - # prev_time = time.time() - - text_instance = text_instance_q if analysis_query else text_instance_t - text_support = text_instance_t if analysis_query else text_instance_q - - indexed_string = ( - IndexedCharacters(text_instance, bow=self.bow, mask_string=self.mask_string) - if self.char_level - else IndexedString( - text_instance, - bow=self.bow, - split_expression=self.split_expression, - mask_string=self.mask_string, - language=self.language, - ) - ) - domain_mapper = TextDomainMapper(indexed_string) - - # 产生扰动数据集 第一条是原始数据 - # data: 解释器训练特征 list (num_samples, doc_size) - # yss: 解释器训练标签 list (num_samples, class_num(2)) - # distances: 扰动样本到原始样本的距离 np.array(float) (num_samples, ) - data, yss, distances = self.__data_labels_distances( - indexed_string, - text_support, - analysis_query, - tokenizer, - classifier_fn, - num_samples, - distance_metric=distance_metric, - if_lstm=if_lstm, - ) - - if self.class_names is None: - self.class_names = [str(x) for x in range(yss[0].shape[0])] - ret_exp = explanation.Explanation( - domain_mapper=domain_mapper, class_names=self.class_names, random_state=self.random_state - ) - ret_exp.predict_proba = yss[0] - if top_labels: - labels = np.argsort(yss[0])[-top_labels:] - ret_exp.top_labels = list(labels) - ret_exp.top_labels.reverse() - - num_features = indexed_string.num_words() # 特征数量跟word_num相同 - - ( - ret_exp.intercept[pred_label], - ret_exp.local_exp[pred_label], - ret_exp.score[pred_label], - ret_exp.local_pred[pred_label], - relative_err, - err, - ) = self.base.explain_instance_with_data( - data, - yss, - distances, - pred_label, - num_features, - model_regressor=model_regressor, - feature_selection=self.feature_selection, - ) - - return ret_exp, indexed_string, relative_err, err - - def __data_labels_distances( - self, - indexed_string, - text_support, - analysis_query, - tokenizer, - classifier_fn, - num_samples, - distance_metric="cosine", - if_lstm=False, - ): - """Generates a neighborhood around a prediction. - - Generates neighborhood data by randomly removing words from - the instance, and predicting with the classifier. Uses cosine distance - to compute distances between original and perturbed instances. - Args: - indexed_string: document (IndexedString) to be explained, - classifier_fn: classifier prediction probability function, which - takes a string and outputs prediction probabilities. For - ScikitClassifier, this is classifier.predict_proba. - num_samples: size of the neighborhood to learn the linear model - distance_metric: the distance metric to use for sample weighting, - defaults to cosine similarity. - - Returns: - A tuple (data, labels, distances), where: - data: dense num_samples * K binary matrix, where K is the - number of tokens in indexed_string. The first row is the - original instance, and thus a row of ones. - labels: num_samples * L matrix, where L is the number of target - labels - distances: cosine distance between the original instance and - each perturbed instance (computed in the binary 'data' - matrix), times 100. - """ - - def distance_fn(x): - return sklearn.metrics.pairwise.pairwise_distances(x, x[0], metric=distance_metric).ravel() * 100 - - doc_size = indexed_string.num_words() - - sample = self.random_state.randint( - 1, doc_size, num_samples - 1 - ) # sample: [int(1 ~ doc_size-1) * num_samples-1] - data = np.ones((num_samples, doc_size)) - data[0] = np.ones(doc_size) - features_range = range(doc_size) - perturb_text = [indexed_string.raw_string()] # [文本 * num_samples] - - for i, size in enumerate(sample, start=1): - # inactive: 从range(0, doc_size)中随机取出的size个数组成的list, 要去掉的字的id - inactive = self.random_state.choice( - features_range, size, replace=False # [0, doc_size) # int: 该扰动样本中remove token的数量 - ) - - text = indexed_string.inverse_removing(inactive) # 原文本去掉了inactive中的字后的文本 - - data[i, inactive] = 0 - perturb_text.append(text) - - # print('doc size: %d' % doc_size) - - prev_time = time.time() - # inverse_data: 扰动数据集 [扰动样本 str] * num_samples - labels = [] - query_list, title_list, query_len_list, title_len_list = [], [], [], [] # for lstm - token_ids_list, s_ids_list = [], [] # for roberta - max_len = 0 - - support_token_ids = tokenizer.encode(text_support) # for lstm - support_len = len(support_token_ids) # for lstm - for idx, text in enumerate(perturb_text): - if if_lstm: - text_token_ids = tokenizer.encode(text) - text_len = len(text_token_ids) - if idx == 0: - max_len = len(text_token_ids) - while len(text_token_ids) < max_len: - text_token_ids.append(0) - - query_token_ids = text_token_ids if analysis_query else support_token_ids - title_token_ids = support_token_ids if analysis_query else text_token_ids - query_len = text_len if analysis_query else support_len - title_len = support_len if analysis_query else text_len - - query_list.append(query_token_ids) - title_list.append(title_token_ids) - query_len_list.append(query_len) - title_len_list.append(title_len) - - else: - text_tokens = tokenizer.tokenize(text) - text_token_ids = tokenizer.convert_tokens_to_ids(text_tokens) - support_tokens = tokenizer.tokenize(text_support) - support_ids = tokenizer.convert_tokens_to_ids(support_tokens) - if analysis_query: - token_ids = ( - [tokenizer.cls_token_id] - + text_token_ids - + [tokenizer.sep_token_id] - + support_ids - + [tokenizer.sep_token_id] - ) - else: - token_ids = ( - [tokenizer.cls_token_id] - + support_ids - + [tokenizer.sep_token_id] - + text_token_ids - + [tokenizer.sep_token_id] - ) - if len(token_ids) > max_len: - max_len = len(token_ids) - token_ids_list.append(token_ids) - - token_ids_np = [] - if not if_lstm: - for token_ids in token_ids_list: - # token_ids = token_ids[:max_len] - token_ids = token_ids + [tokenizer.pad_token_id] * (max_len - len(token_ids)) - token_ids_np.append(token_ids) - s_ids = [0 for _ in range(len(token_ids))] - s_ids_list.append(s_ids) - - token_ids_np = np.array(token_ids_np) - s_ids_np = np.array(s_ids_list) - - length = len(perturb_text[0]) - if if_lstm: - batch = 128 - else: - batch = 64 if length < 130 else 50 - - prev_time = time.time() - epoch_num = math.ceil(len(perturb_text) / batch) - for idx in range(epoch_num): - if if_lstm: - query_list_tensor = paddle.to_tensor(query_list[idx * batch : (idx + 1) * batch]) - title_list_tensor = paddle.to_tensor(title_list[idx * batch : (idx + 1) * batch]) - query_len_list_tensor = paddle.to_tensor(query_len_list[idx * batch : (idx + 1) * batch]) - title_len_list_tensor = paddle.to_tensor(title_len_list[idx * batch : (idx + 1) * batch]) - label = classifier_fn( - query_list_tensor, title_list_tensor, query_len_list_tensor, title_len_list_tensor - )[ - 0 - ] # label: Tensor[num_samples, 2] - else: - token_ids_tensor = paddle.Tensor( - value=token_ids_np[idx * batch : (idx + 1) * batch], place=paddle.CUDAPlace(0), stop_gradient=True - ) - s_ids_tensor = paddle.Tensor( - value=s_ids_np[idx * batch : (idx + 1) * batch], - place=token_ids_tensor.place, - stop_gradient=token_ids_tensor.stop_gradient, - ) - label = classifier_fn(token_ids_tensor, s_ids_tensor)[0] # label: Tensor[num_samples, 2] - - labels.extend(label.numpy().tolist()) - - labels = np.array(labels) # labels: nsp.array(num_samples, 2) - print("mode forward time: %.5f" % (time.time() - prev_time)) - distances = distance_fn(sp.sparse.csr_matrix(data)) - - return data, labels, distances diff --git a/examples/model_interpretation/task/similarity/pretrained_models/data.py b/examples/model_interpretation/task/similarity/pretrained_models/data.py deleted file mode 100644 index 37f2c12781f4..000000000000 --- a/examples/model_interpretation/task/similarity/pretrained_models/data.py +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import numpy as np - -from paddlenlp.datasets import MapDataset - - -def create_dataloader(dataset, mode="train", batch_size=1, batchify_fn=None, trans_fn=None): - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - batch_sampler = paddle.io.DistributedBatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - else: - batch_sampler = paddle.io.BatchSampler(dataset, batch_size=batch_size, shuffle=shuffle) - - return paddle.io.DataLoader(dataset=dataset, batch_sampler=batch_sampler, collate_fn=batchify_fn, return_list=True) - - -def read_text_pair(data_path): - """Reads data.""" - with open(data_path, "r", encoding="utf-8") as f: - for line in f: - data = line.rstrip().split("\t") - if len(data) != 2: - continue - yield {"query": data[0], "title": data[1]} - - -def convert_pointwise_example(example, tokenizer, max_seq_length=512, is_test=False, language="en"): - if language == "ch": - q_name = "query" - t_name = "title" - l_name = "label" - else: - q_name = "sentence1" - t_name = "sentence2" - l_name = "labels" - - query, title = example[q_name], example[t_name] - - encoded_inputs = tokenizer(text=query, text_pair=title, max_seq_len=max_seq_length) - - input_ids = encoded_inputs["input_ids"] - token_type_ids = encoded_inputs["token_type_ids"] - - if not is_test: - label = np.array([example[l_name]], dtype="int64") - return input_ids, token_type_ids, label - else: - return input_ids, token_type_ids - - -def convert_pairwise_example(example, tokenizer, max_seq_length=512, phase="train"): - - if phase == "train": - query, pos_title, neg_title = example["query"], example["title"], example["neg_title"] - - pos_inputs = tokenizer(text=query, text_pair=pos_title, max_seq_len=max_seq_length) - neg_inputs = tokenizer(text=query, text_pair=neg_title, max_seq_len=max_seq_length) - - pos_input_ids = pos_inputs["input_ids"] - pos_token_type_ids = pos_inputs["token_type_ids"] - neg_input_ids = neg_inputs["input_ids"] - neg_token_type_ids = neg_inputs["token_type_ids"] - - return (pos_input_ids, pos_token_type_ids, neg_input_ids, neg_token_type_ids) - - else: - query, title = example["query"], example["title"] - - inputs = tokenizer(text=query, text_pair=title, max_seq_len=max_seq_length) - - input_ids = inputs["input_ids"] - token_type_ids = inputs["token_type_ids"] - if phase == "eval": - return input_ids, token_type_ids, example["label"] - elif phase == "predict": - return input_ids, token_type_ids - else: - raise ValueError("not supported phase:{}".format(phase)) - - -def gen_pair(dataset, pool_size=100): - """ - Generate triplet randomly based on dataset - - Args: - dataset: A `MapDataset` or `IterDataset` or a tuple of those. - Each example is composed of 2 texts: example["query"], example["title"] - pool_size: the number of example to sample negative example randomly - - Return: - dataset: A `MapDataset` or `IterDataset` or a tuple of those. - Each example is composed of 2 texts: example["query"], example["pos_title"]、example["neg_title"] - """ - - if len(dataset) < pool_size: - pool_size = len(dataset) - - new_examples = [] - pool = [] - tmp_examples = [] - - for example in dataset: - label = example["label"] - - # Filter negative example - if label == 0: - continue - - tmp_examples.append(example) - pool.append(example["title"]) - - if len(pool) >= pool_size: - np.random.shuffle(pool) - for idx, example in enumerate(tmp_examples): - example["neg_title"] = pool[idx] - new_examples.append(example) - tmp_examples = [] - pool = [] - else: - continue - return MapDataset(new_examples) diff --git a/examples/model_interpretation/task/similarity/pretrained_models/model.py b/examples/model_interpretation/task/similarity/pretrained_models/model.py deleted file mode 100644 index cf886ba69a85..000000000000 --- a/examples/model_interpretation/task/similarity/pretrained_models/model.py +++ /dev/null @@ -1,89 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F - - -class PointwiseMatching(nn.Layer): - def __init__(self, pretrained_model, dropout=None): - super().__init__() - self.ptm = pretrained_model - self.dropout = nn.Dropout(dropout if dropout is not None else 0.1) - - # num_labels = 2 (similar or dissimilar) - self.classifier = nn.Linear(self.ptm.config["roberta"].config["hidden_size"], 2) - - def forward(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - - _, cls_embedding = self.ptm(input_ids, token_type_ids, position_ids, attention_mask) - - cls_embedding = self.dropout(cls_embedding) - logits = self.classifier(cls_embedding) - probs = F.softmax(logits) - - return probs - - -class PairwiseMatching(nn.Layer): - def __init__(self, pretrained_model, dropout=None, margin=0.1): - super().__init__() - self.ptm = pretrained_model - self.dropout = nn.Dropout(dropout if dropout is not None else 0.1) - self.margin = margin - - # hidden_size -> 1, calculate similarity - self.similarity = nn.Linear(self.ptm.config["hidden_size"], 1) - - def predict(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - - _, cls_embedding = self.ptm(input_ids, token_type_ids, position_ids, attention_mask) - - cls_embedding = self.dropout(cls_embedding) - sim_score = self.similarity(cls_embedding) - sim_score = F.sigmoid(sim_score) - - return sim_score - - def forward( - self, - pos_input_ids, - neg_input_ids, - pos_token_type_ids=None, - neg_token_type_ids=None, - pos_position_ids=None, - neg_position_ids=None, - pos_attention_mask=None, - neg_attention_mask=None, - ): - - _, pos_cls_embedding = self.ptm(pos_input_ids, pos_token_type_ids, pos_position_ids, pos_attention_mask) - - _, neg_cls_embedding = self.ptm(neg_input_ids, neg_token_type_ids, neg_position_ids, neg_attention_mask) - - pos_embedding = self.dropout(pos_cls_embedding) - neg_embedding = self.dropout(neg_cls_embedding) - - pos_sim = self.similarity(pos_embedding) - neg_sim = self.similarity(neg_embedding) - - pos_sim = F.sigmoid(pos_sim) - neg_sim = F.sigmoid(neg_sim) - - labels = paddle.full(shape=[pos_cls_embedding.shape[0]], fill_value=1.0, dtype="float32") - - loss = F.margin_ranking_loss(pos_sim, neg_sim, labels, margin=self.margin) - - return loss diff --git a/examples/model_interpretation/task/similarity/pretrained_models/predict_pointwise.py b/examples/model_interpretation/task/similarity/pretrained_models/predict_pointwise.py deleted file mode 100644 index 39c56528c9ec..000000000000 --- a/examples/model_interpretation/task/similarity/pretrained_models/predict_pointwise.py +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script is used for predicting results -""" -import argparse -import os -from functools import partial - -import numpy as np -import paddle -from data import convert_pointwise_example as convert_example -from data import create_dataloader, read_text_pair -from model import PointwiseMatching - -from paddlenlp.data import Pad, Tuple -from paddlenlp.datasets import load_dataset -from paddlenlp.transformers import AutoModel, AutoTokenizer - -parser = argparse.ArgumentParser() -parser.add_argument("--input_file", type=str, required=True, help="The full path of input file") -parser.add_argument("--params_path", type=str, required=True, help="The path to model parameters to be loaded.") -parser.add_argument( - "--max_seq_length", - default=64, - type=int, - help="The maximum total input sequence length after tokenization. Sequences longer than this will be truncated, sequences shorter will be padded.", -) -parser.add_argument("--batch_size", default=32, type=int, help="Batch size per GPU/CPU for training.") -parser.add_argument( - "--device", choices=["cpu", "gpu"], default="gpu", help="Select which device to train model, defaults to gpu." -) -parser.add_argument("--language", choices=["ch", "en"], required=True, help="Language that the model is built for") -args = parser.parse_args() - - -def predict(model, data_loader): - """ - Predicts the data labels. - - Args: - model (obj:`SemanticIndexBase`): A model to extract text embedding or calculate similarity of text pair. - data_loader (obj:`List(Example)`): The processed data ids of text pair: - [query_input_ids, query_token_type_ids, title_input_ids, title_token_type_ids] - Returns: - results(obj:`List`): cosine similarity of text pairs. - """ - batch_probs = [] - - model.eval() - - with paddle.no_grad(): - for batch_data in data_loader: - input_ids, token_type_ids = batch_data - - input_ids = paddle.to_tensor(input_ids) - token_type_ids = paddle.to_tensor(token_type_ids) - - batch_prob = model(input_ids=input_ids, token_type_ids=token_type_ids).numpy() - - batch_probs.append(batch_prob) - - batch_probs = np.concatenate(batch_probs, axis=0) - - return batch_probs - - -if __name__ == "__main__": - paddle.set_device(args.device) - pretrained_model = AutoModel.from_pretrained("ernie-3.0-medium-zh") - tokenizer = AutoTokenizer.from_pretrained("ernie-3.0-medium-zh") - - trans_func = partial( - convert_example, tokenizer=tokenizer, max_seq_length=args.max_seq_length, is_test=True, language=args.language - ) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id), # input_ids - Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # segment_ids - ): [data for data in fn(samples)] - - valid_ds = load_dataset(read_text_pair, data_path=args.input_file, lazy=False) - - valid_data_loader = create_dataloader( - valid_ds, mode="predict", batch_size=args.batch_size, batchify_fn=batchify_fn, trans_fn=trans_func - ) - - model = PointwiseMatching(pretrained_model) - - if args.params_path and os.path.isfile(args.params_path): - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - else: - raise ValueError("Please set --params_path with correct pretrained model file") - - y_probs = predict(model, valid_data_loader) - y_preds = np.argmax(y_probs, axis=1) - - valid_ds = load_dataset(read_text_pair, data_path=args.input_file, lazy=False) - for idx, y_pred in enumerate(y_preds): - text_pair = valid_ds[idx] - text_pair["pred_label"] = y_pred - print(text_pair) diff --git a/examples/model_interpretation/task/similarity/pretrained_models/run_train_pointwise.sh b/examples/model_interpretation/task/similarity/pretrained_models/run_train_pointwise.sh deleted file mode 100755 index 13771c1837ed..000000000000 --- a/examples/model_interpretation/task/similarity/pretrained_models/run_train_pointwise.sh +++ /dev/null @@ -1,32 +0,0 @@ -### - # This script is used to finetune pretrained models -### - -export CUDA_VISIBLE_DEVICES=7 - -LANGUAGE="ch" # ['ch', 'en'] -BASE_MODEL=roberta_large # [roberta_base, roberta_large] -timestamp=`date +"%Y%m%d_%H%M%S"` - -if [[ $LANGUAGE == "ch" ]]; then - LEARNING_RATE=3e-5 - MAX_SEQ_LENGTH=256 -elif [[ $LANGUAGE == "en" ]]; then - LEARNING_RATE=5e-6 - MAX_SEQ_LENGTH=128 -fi - -[ -d "logs" ] || mkdir -p "logs" -set -x - -python3 ./train_pointwise.py \ - --learning_rate $LEARNING_RATE \ - --max_seq_length $MAX_SEQ_LENGTH \ - --batch_size 32 \ - --epochs 5 \ - --save_step 1000 \ - --warmup_proportion 0.1 \ - --base_model $BASE_MODEL \ - --language $LANGUAGE \ - --save_dir saved_model_${LANGUAGE}/${BASE_MODEL}_${timestamp} >> logs/log_${BASE_MODEL}_${timestamp} - diff --git a/examples/model_interpretation/task/similarity/pretrained_models/train_pointwise.py b/examples/model_interpretation/task/similarity/pretrained_models/train_pointwise.py deleted file mode 100644 index 7e7bbc190efc..000000000000 --- a/examples/model_interpretation/task/similarity/pretrained_models/train_pointwise.py +++ /dev/null @@ -1,215 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os -import random -import sys -import time -from functools import partial - -import numpy as np -import paddle -from data import convert_pointwise_example as convert_example -from data import create_dataloader - -from paddlenlp.data import Pad, Stack, Tuple -from paddlenlp.datasets import load_dataset -from paddlenlp.transformers import LinearDecayWithWarmup -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("..") -sys.path.append("../../..") -from roberta.modeling import RobertaForSequenceClassification # noqa: E402 - -sys.path.remove("../../..") -sys.path.remove("..") - -parser = argparse.ArgumentParser() -parser.add_argument("--base_model", type=str, choices=["roberta_base", "roberta_large"]) -parser.add_argument( - "--save_dir", - default="./checkpoint", - type=str, - help="The output directory where the model checkpoints will be written.", -) -parser.add_argument( - "--max_seq_length", - default=128, - type=int, - help="The maximum total input sequence length after tokenization. " - "Sequences longer than this will be truncated, sequences shorter will be padded.", -) -parser.add_argument("--batch_size", default=32, type=int, help="Batch size per GPU/CPU for training.") -parser.add_argument("--learning_rate", default=5e-5, type=float, help="The initial learning rate for Adam.") -parser.add_argument("--weight_decay", default=0.0, type=float, help="Weight decay if we apply some.") -parser.add_argument("--epochs", default=3, type=int, help="Total number of training epochs to perform.") -parser.add_argument("--eval_step", default=1000, type=int, help="Step interval for evaluation.") -parser.add_argument("--save_step", default=1000, type=int, help="Step interval for saving checkpoint.") -parser.add_argument( - "--warmup_proportion", default=0.0, type=float, help="Linear warmup proportion over the training process." -) -parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.") -parser.add_argument("--seed", type=int, default=1000, help="Random seed for initialization.") -parser.add_argument( - "--device", choices=["cpu", "gpu"], default="gpu", help="Select which device to train model, defaults to gpu." -) -parser.add_argument("--language", choices=["ch", "en"], required=True, help="Language that the model is built for") -args = parser.parse_args() - - -def set_seed(seed): - """sets random seed""" - random.seed(seed) - np.random.seed(seed) - paddle.seed(seed) - - -@paddle.no_grad() -def evaluate(model, criterion, metric, data_loader, phase="dev"): - """ - Given a dataset, it evals model and computes the metric. - - Args: - model(obj:`paddle.nn.Layer`): A model to classify texts. - data_loader(obj:`paddle.io.DataLoader`): The dataset loader which generates batches. - criterion(obj:`paddle.nn.Layer`): It can compute the loss. - metric(obj:`paddle.metric.Metric`): The evaluation metric. - """ - model.eval() - metric.reset() - losses = [] - for batch in data_loader: - input_ids, token_type_ids, labels = batch - probs = model(input_ids=input_ids, token_type_ids=token_type_ids) - loss = criterion(probs, labels) - losses.append(loss.numpy()) - correct = metric.compute(probs, labels) - metric.update(correct) - accu = metric.accumulate() - print("eval {} loss: {:.5}, accu: {:.5}".format(phase, np.mean(losses), accu)) - model.train() - metric.reset() - - -def do_train(): - paddle.set_device(args.device) - rank = paddle.distributed.get_rank() - if paddle.distributed.get_world_size() > 1: - paddle.distributed.init_parallel_env() - - set_seed(args.seed) - if args.language == "ch": - train_ds, dev_ds = load_dataset("lcqmc", splits=["train", "dev"]) - - if args.base_model == "roberta_base": - tokenizer = RobertaTokenizer.from_pretrained("roberta-wwm-ext") - pretrained_model = RobertaForSequenceClassification.from_pretrained("roberta-wwm-ext", num_classes=2) - elif args.base_model == "roberta_large": - tokenizer = RobertaTokenizer.from_pretrained("roberta-wwm-ext-large") - pretrained_model = RobertaForSequenceClassification.from_pretrained("roberta-wwm-ext-large", num_classes=2) - else: - train_ds, dev_ds = load_dataset("glue", "qqp", splits=["train", "dev"]) - - if args.base_model == "roberta_base": - tokenizer = RobertaBPETokenizer.from_pretrained("roberta-base") - pretrained_model = RobertaForSequenceClassification.from_pretrained("roberta-base", num_classes=2) - elif args.base_model == "roberta_large": - tokenizer = RobertaBPETokenizer.from_pretrained("roberta-large") - pretrained_model = RobertaForSequenceClassification.from_pretrained("roberta-large", num_classes=2) - - trans_func = partial( - convert_example, tokenizer=tokenizer, max_seq_length=args.max_seq_length, language=args.language - ) - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=tokenizer.pad_token_id), # text_pair_input - Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # text_pair_segment - Stack(dtype="int64"), # label - ): [data for data in fn(samples)] - - train_data_loader = create_dataloader( - train_ds, mode="train", batch_size=args.batch_size, batchify_fn=batchify_fn, trans_fn=trans_func - ) - - dev_data_loader = create_dataloader( - dev_ds, mode="dev", batch_size=args.batch_size, batchify_fn=batchify_fn, trans_fn=trans_func - ) - - model = pretrained_model - - if args.init_from_ckpt and os.path.isfile(args.init_from_ckpt): - state_dict = paddle.load(args.init_from_ckpt) - model.set_dict(state_dict) - - model = paddle.DataParallel(model) - - num_training_steps = len(train_data_loader) * args.epochs - - lr_scheduler = LinearDecayWithWarmup(args.learning_rate, num_training_steps, args.warmup_proportion) - - # Generate parameter names needed to perform weight decay. - # All bias and LayerNorm parameters are excluded. - 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=args.weight_decay, - apply_decay_param_fun=lambda x: x in decay_params, - ) - - criterion = paddle.nn.loss.CrossEntropyLoss() - metric = paddle.metric.Accuracy() - - global_step = 0 - tic_train = time.time() - for epoch in range(1, args.epochs + 1): - for step, batch in enumerate(train_data_loader, start=1): - input_ids, token_type_ids, labels = batch - probs = model(input_ids=input_ids, token_type_ids=token_type_ids) - loss = criterion(probs, labels) - correct = metric.compute(probs, labels) - metric.update(correct) - acc = metric.accumulate() - - global_step += 1 - if global_step % 100 == 0 and rank == 0: - print( - "global step %d, epoch: %d, batch: %d, loss: %.5f, accu: %.5f, speed: %.2f step/s" - % (global_step, epoch, step, loss, acc, 100 / (time.time() - tic_train)), - flush=True, - ) - tic_train = time.time() - loss.backward() - optimizer.step() - lr_scheduler.step() - optimizer.clear_grad() - - if global_step % args.eval_step == 0 and rank == 0: - evaluate(model, criterion, metric, dev_data_loader) - - if global_step % args.save_step == 0 and rank == 0: - save_dir = os.path.join(args.save_dir, "model_%d" % global_step) - if not os.path.exists(save_dir): - os.makedirs(save_dir) - save_param_path = os.path.join(save_dir, "model_state.pdparams") - paddle.save(model.state_dict(), save_param_path) - tokenizer.save_pretrained(save_dir) - - -if __name__ == "__main__": - do_train() diff --git a/examples/model_interpretation/task/similarity/roberta/modeling.py b/examples/model_interpretation/task/similarity/roberta/modeling.py deleted file mode 100644 index c5824a443f0a..000000000000 --- a/examples/model_interpretation/task/similarity/roberta/modeling.py +++ /dev/null @@ -1,618 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -""" - This script defines the model structure of roberta -""" -import sys - -import paddle -import paddle.nn as nn - -from paddlenlp.transformers.model_utils import PretrainedModel, register_base_model - -sys.path.append("../..") -from task.transformer import TransformerEncoder, TransformerEncoderLayer # noqa: E402 - -sys.path.remove("../..") - -__all__ = [ - "RobertaModel", - "RobertaPretrainedModel", - "RobertaForSequenceClassification", - "RobertaForTokenClassification", - "RobertaForQuestionAnswering", -] - - -class RobertaEmbeddings(nn.Layer): - r""" - Include embeddings from word, position and token_type embeddings. - """ - - def __init__( - self, - vocab_size, - hidden_size=768, - hidden_dropout_prob=0.1, - max_position_embeddings=512, - type_vocab_size=16, - pad_token_id=0, - ): - super(RobertaEmbeddings, self).__init__() - self.word_embeddings = nn.Embedding(vocab_size, hidden_size, padding_idx=pad_token_id) - self.position_embeddings = nn.Embedding(max_position_embeddings, hidden_size) - self.token_type_embeddings = nn.Embedding(type_vocab_size, hidden_size) - self.layer_norm = nn.LayerNorm(hidden_size) - self.dropout = nn.Dropout(hidden_dropout_prob) - - def forward(self, input_ids, token_type_ids=None, position_ids=None): - """ - forward function - """ - if position_ids is None: - # maybe need use shape op to unify static graph and dynamic graph - ones = paddle.ones_like(input_ids, dtype="int64") - seq_length = paddle.cumsum(ones, axis=-1) - position_ids = seq_length - ones - position_ids.stop_gradient = True - if token_type_ids is None: - token_type_ids = paddle.zeros_like(input_ids, dtype="int64") - - input_embedings = self.word_embeddings(input_ids) - position_embeddings = self.position_embeddings(position_ids) - token_type_embeddings = self.token_type_embeddings(token_type_ids) - - embeddings = input_embedings + position_embeddings + token_type_embeddings - embeddings = self.layer_norm(embeddings) - embeddings = self.dropout(embeddings) - return embeddings - - -class RobertaPooler(nn.Layer): - """ - An abstract class for RobertaPooler - """ - - def __init__(self, hidden_size): - super(RobertaPooler, self).__init__() - self.dense = nn.Linear(hidden_size, hidden_size) - self.activation = nn.Tanh() - - def forward(self, hidden_states): - """ - We "pool" the model by simply taking the hidden state corresponding - to the first token. - """ - first_token_tensor = hidden_states[:, 0] - pooled_output = self.dense(first_token_tensor) - pooled_output = self.activation(pooled_output) - return pooled_output - - -class RobertaPretrainedModel(PretrainedModel): - r""" - An abstract class for pretrained RoBerta models. It provides RoBerta related - `model_config_file`, `pretrained_resource_files_map`, `resource_files_names`, - `pretrained_init_configuration`, `base_model_prefix` for downloading and - loading pretrained models. - Refer to :class:`~paddlenlp.transformers.model_utils.PretrainedModel` for more details. - - """ - - model_config_file = "model_config.json" - pretrained_init_configuration = { - "roberta-wwm-ext": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 768, - "initializer_range": 0.02, - "intermediate_size": 3072, - "max_position_embeddings": 512, - "num_attention_heads": 12, - "num_hidden_layers": 12, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "roberta-wwm-ext-large": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 1024, - "initializer_range": 0.02, - "intermediate_size": 4096, - "max_position_embeddings": 512, - "num_attention_heads": 16, - "num_hidden_layers": 24, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "rbt3": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 768, - "initializer_range": 0.02, - "intermediate_size": 3072, - "max_position_embeddings": 512, - "num_attention_heads": 12, - "num_hidden_layers": 3, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - "rbtl3": { - "attention_probs_dropout_prob": 0.1, - "hidden_act": "gelu", - "hidden_dropout_prob": 0.1, - "hidden_size": 1024, - "initializer_range": 0.02, - "intermediate_size": 4096, - "max_position_embeddings": 512, - "num_attention_heads": 16, - "num_hidden_layers": 3, - "type_vocab_size": 2, - "vocab_size": 21128, - "pad_token_id": 0, - }, - } - resource_files_names = {"model_state": "model_state.pdparams"} - pretrained_resource_files_map = { - "model_state": { - "roberta-wwm-ext": "https://paddlenlp.bj.bcebos.com/models/transformers/roberta_base/roberta_chn_base.pdparams", - "roberta-wwm-ext-large": "https://paddlenlp.bj.bcebos.com/models/transformers/roberta_large/roberta_chn_large.pdparams", - "rbt3": "https://paddlenlp.bj.bcebos.com/models/transformers/rbt3/rbt3_chn_large.pdparams", - "rbtl3": "https://paddlenlp.bj.bcebos.com/models/transformers/rbtl3/rbtl3_chn_large.pdparams", - } - } - base_model_prefix = "roberta" - - def _init_weights(self, layer): - """Initialization hook""" - if isinstance(layer, (nn.Linear, nn.Embedding)): - # only support dygraph, use truncated_normal and make it inplace - # and configurable later - layer.weight.set_value( - paddle.tensor.normal( - mean=0.0, - std=self.initializer_range - if hasattr(self, "initializer_range") - else self.roberta.config["initializer_range"], - shape=layer.weight.shape, - ) - ) - elif isinstance(layer, nn.LayerNorm): - layer._epsilon = 1e-12 - - -@register_base_model -class RobertaModel(RobertaPretrainedModel): - r""" - The bare Roberta Model outputting raw hidden-states. - - This model inherits from :class:`~paddlenlp.transformers.model_utils.PretrainedModel`. - Refer to the superclass documentation for the generic methods. - - This model is also a Paddle `paddle.nn.Layer `__ subclass. Use it as a regular Paddle Layer - and refer to the Paddle documentation for all matter related to general usage and behavior. - - Args: - vocab_size (int): - Vocabulary size of `inputs_ids` in `RobertaModel`. Also is the vocab size of token embedding matrix. - Defines the number of different tokens that can be represented by the `inputs_ids` passed when calling `RobertaModel`. - hidden_size (int, optional): - Dimensionality of the embedding layer, encoder layers and pooler layer. Defaults to `768`. - num_hidden_layers (int, optional): - Number of hidden layers in the Transformer encoder. Defaults to `12`. - num_attention_heads (int, optional): - Number of attention heads for each attention layer in the Transformer encoder. - Defaults to `12`. - intermediate_size (int, optional): - Dimensionality of the feed-forward (ff) layer in the encoder. Input tensors - to ff layers are firstly projected from `hidden_size` to `intermediate_size`, - and then projected back to `hidden_size`. Typically `intermediate_size` is larger than `hidden_size`. - Defaults to `3072`. - hidden_act (str, optional): - The non-linear activation function in the feed-forward layer. - ``"gelu"``, ``"relu"`` and any other paddle supported activation functions - are supported. Defaults to ``"gelu"``. - hidden_dropout_prob (float, optional): - The dropout probability for all fully connected layers in the embeddings and encoder. - Defaults to `0.1`. - attention_probs_dropout_prob (float, optional): - The dropout probability used in MultiHeadAttention in all encoder layers to drop some attention target. - Defaults to `0.1`. - max_position_embeddings (int, optional): - The maximum value of the dimensionality of position encoding, which dictates the maximum supported length of an input - sequence. Defaults to `512`. - type_vocab_size (int, optional): - The vocabulary size of the `token_type_ids` passed when calling `~transformers.RobertaModel`. - Defaults to `2`. - initializer_range (float, optional): - The standard deviation of the normal initializer. Defaults to 0.02. - - .. note:: - A normal_initializer initializes weight matrices as normal distributions. - See :meth:`RobertaPretrainedModel._init_weights()` for how weights are initialized in `RobertaModel`. - - pad_token_id(int, optional): - The index of padding token in the token vocabulary. - Defaults to `0`. - """ - - def __init__( - self, - vocab_size, - hidden_size=768, - num_hidden_layers=12, - num_attention_heads=12, - intermediate_size=3072, - hidden_act="gelu", - hidden_dropout_prob=0.1, - attention_probs_dropout_prob=0.1, - max_position_embeddings=512, - type_vocab_size=16, - initializer_range=0.02, - layer_norm_eps=1e-12, - pad_token_id=0, - ): - super(RobertaModel, self).__init__() - self.pad_token_id = pad_token_id - self.initializer_range = initializer_range - self.embeddings = RobertaEmbeddings( - vocab_size, hidden_size, hidden_dropout_prob, max_position_embeddings, type_vocab_size, pad_token_id - ) - encoder_layer = TransformerEncoderLayer( - hidden_size, - num_attention_heads, - intermediate_size, - dropout=hidden_dropout_prob, - activation=hidden_act, - attn_dropout=attention_probs_dropout_prob, - act_dropout=0, - ) - self.encoder = TransformerEncoder(encoder_layer, num_hidden_layers) - self.pooler = RobertaPooler(hidden_size) - - def forward( - self, - input_ids, - token_type_ids=None, - position_ids=None, - attention_mask=None, - noise=None, - i=None, - n_samples=None, - ): - r""" - Args: - input_ids (Tensor): - Indices of input sequence tokens in the vocabulary. They are - numerical representations of tokens that build the input sequence. - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - token_type_ids (Tensor, optional): - Segment token indices to indicate first and second portions of the inputs. - Indices can be either 0 or 1: - - - 0 corresponds to a **sentence A** token, - - 1 corresponds to a **sentence B** token. - - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - Defaults to None, which means no segment embeddings is added to token embeddings. - position_ids (Tensor, optional): - Indices of positions of each input sequence tokens in the position embeddings. - Selected in the range ``[0, max_position_embeddings - 1]``. - It's data type should be `int64` and has a shape of [batch_size, sequence_length]. - Defaults to `None`. - attention_mask (Tensor, optional): - Mask used in multi-head attention to avoid performing attention to some unwanted positions, - usually the paddings or the subsequent positions. - Its data type can be int, float and bool. - When the data type is bool, the `masked` tokens have `False` values and the others have `True` values. - When the data type is int, the `masked` tokens have `0` values and the others have `1` values. - When the data type is float, the `masked` tokens have `-INF` values and the others have `0` values. - It is a tensor with shape broadcasted to `[batch_size, num_attention_heads, sequence_length, sequence_length]`. - For example, its shape can be [batch_size, sequence_length], [batch_size, sequence_length, sequence_length], - [batch_size, num_attention_heads, sequence_length, sequence_length]. - Defaults to `None`, which means nothing needed to be prevented attention to. - - Returns: - tuple: Returns tuple (`sequence_output`, `pooled_output`). - - With the fields: - - - sequence_output (Tensor): - Sequence of hidden-states at the last layer of the model. - It's data type should be float32 and its shape is [batch_size, sequence_length, hidden_size]. - - - pooled_output (Tensor): - The output of first token (`[CLS]`) in sequence. - We "pool" the model by simply taking the hidden state corresponding to the first token. - Its data type should be float32 and its shape is [batch_size, hidden_size]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaModel, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaModel.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - sequence_output, pooled_output = model(**inputs) - - """ - if attention_mask is None: - attention_mask = paddle.unsqueeze( - (input_ids == self.pad_token_id).astype(self.pooler.dense.weight.dtype) * -1e9, axis=[1, 2] - ) - # CLS: 101; SEP: 102; PAD: 0 - baseline_ids = paddle.to_tensor( - [101] + [0] * (input_ids.shape[1] - 2) + [102], - dtype=input_ids.dtype, - place=input_ids.place, - stop_gradient=input_ids.stop_gradient, - ) - - embedding_output = self.embeddings( - input_ids=input_ids, position_ids=position_ids, token_type_ids=token_type_ids - ) - baseline_embedding_output = self.embeddings( - input_ids=baseline_ids, position_ids=position_ids, token_type_ids=token_type_ids - ) - - if noise is not None: - if noise.upper() == "GAUSSIAN": - pass - if noise.upper() == "INTEGRATED": - embedding_output = baseline_embedding_output + i / (n_samples - 1) * ( - embedding_output - baseline_embedding_output - ) - else: - raise ValueError("unsupported noise method: %s" % (noise)) - - encoder_outputs, att_weights_list = self.encoder(embedding_output, attention_mask) # interpret - sequence_output = encoder_outputs - pooled_output = self.pooler(sequence_output) - result = [sequence_output, pooled_output, att_weights_list] - result.append(embedding_output) - return result - - -class RobertaForQuestionAnswering(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the hidden-states output to - compute `span_start_logits` and `span_end_logits`, designed for question-answering tasks like SQuAD. - - Args: - roberta (:class:`RobertaModel`): - An instance of RobertaModel. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` of `RobertaModel` - instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, dropout=None): - super(RobertaForQuestionAnswering, self).__init__() - self.roberta = roberta # allow roberta to be config - self.classifier = nn.Linear(self.roberta.config["hidden_size"], 2) - - def forward(self, input_ids, token_type_ids=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - tuple: Returns tuple (`start_logits`, `end_logits`). - - With the fields: - - - `start_logits` (Tensor): - A tensor of the input token classification logits, indicates the start position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - - `end_logits` (Tensor): - A tensor of the input token classification logits, indicates the end position of the labelled span. - Its data type should be float32 and its shape is [batch_size, sequence_length]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForSequenceClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForSequenceClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - sequence_output, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=None, attention_mask=None - ) - - logits = self.classifier(sequence_output) - logits = paddle.transpose(logits, perm=[2, 0, 1]) - start_logits, end_logits = paddle.unstack(x=logits, axis=0) - - return start_logits, end_logits - - -class RobertaForSequenceClassification(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the output layer, - designed for sequence classification/regression tasks like GLUE tasks. - - Args: - roberta (:class:`RobertaModel`): - An instance of `RobertaModel`. - num_classes (int, optional): - The number of classes. Defaults to `2`. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` - of `RobertaModel` instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, num_classes=2, dropout=None): - super(RobertaForSequenceClassification, self).__init__() - self.num_classes = num_classes - self.roberta = roberta # allow roberta to be config - self.dropout = nn.Dropout(dropout if dropout is not None else self.roberta.config["hidden_dropout_prob"]) - self.classifier = nn.Linear(self.roberta.config["hidden_size"], num_classes) - self.softmax = nn.Softmax() - - def forward(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - Tensor: Returns tensor `logits`, a tensor of the input text classification logits. - Its data type should be float32 and it has a shape of [batch_size, num_classes]. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForSequenceClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForSequenceClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - _, pooled_output, _, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=position_ids, attention_mask=attention_mask - ) - - pooled_output = self.dropout(pooled_output) - logits = self.classifier(pooled_output) - return logits - - def forward_interpret( - self, - input_ids, - token_type_ids=None, - position_ids=None, - attention_mask=None, - noise=None, - i=None, - n_samples=None, - ): - """ - The forward function used when we are interpreting the model - """ - _, pooled_output, att_weights_list, embedding_output = self.roberta( - input_ids, - token_type_ids=token_type_ids, - position_ids=position_ids, - attention_mask=attention_mask, - noise=noise, - i=i, - n_samples=n_samples, - ) - - pooled_output = self.dropout(pooled_output) - logits = self.classifier(pooled_output) - probs = self.softmax(logits) - - return probs, att_weights_list, embedding_output - - -class RobertaForTokenClassification(RobertaPretrainedModel): - r""" - Roberta Model with a linear layer on top of the hidden-states output layer, - designed for token classification tasks like NER tasks. - - Args: - roberta (:class:`RobertaModel`): - An instance of `RobertaModel`. - num_classes (int, optional): - The number of classes. Defaults to `2`. - dropout (float, optional): - The dropout probability for output of Roberta. - If None, use the same value as `hidden_dropout_prob` - of `RobertaModel` instance `roberta`. Defaults to `None`. - """ - - def __init__(self, roberta, num_classes=2, dropout=None): - super(RobertaForTokenClassification, self).__init__() - self.num_classes = num_classes - self.roberta = roberta # allow roberta to be config - self.dropout = nn.Dropout(dropout if dropout is not None else self.roberta.config["hidden_dropout_prob"]) - self.classifier = nn.Linear(self.roberta.config["hidden_size"], num_classes) - - def forward(self, input_ids, token_type_ids=None, position_ids=None, attention_mask=None): - r""" - Args: - input_ids (Tensor): - See :class:`RobertaModel`. - token_type_ids (Tensor, optional): - See :class:`RobertaModel`. - position_ids (Tensor, optional): - See :class:`RobertaModel`. - attention_mask (Tensor, optional): - See :class:`RobertaModel`. - - Returns: - Tensor: Returns tensor `logits`, a tensor of the input token classification logits. - Shape as `[batch_size, sequence_length, num_classes]` and dtype as `float32`. - - Example: - .. code-block:: - - import paddle - from paddlenlp.transformers import RobertaForTokenClassification, RobertaTokenizer - - tokenizer = RobertaTokenizer.from_pretrained('roberta-wwm-ext') - model = RobertaForTokenClassification.from_pretrained('roberta-wwm-ext') - - inputs = tokenizer("Welcome to use PaddlePaddle and PaddleNLP!") - inputs = {k:paddle.to_tensor([v]) for (k, v) in inputs.items()} - logits = model(**inputs) - - """ - sequence_output, _ = self.roberta( - input_ids, token_type_ids=token_type_ids, position_ids=position_ids, attention_mask=attention_mask - ) - - sequence_output = self.dropout(sequence_output) - logits = self.classifier(sequence_output) - return logits diff --git a/examples/model_interpretation/task/similarity/run_inter.sh b/examples/model_interpretation/task/similarity/run_inter.sh deleted file mode 100755 index e9de8e11df87..000000000000 --- a/examples/model_interpretation/task/similarity/run_inter.sh +++ /dev/null @@ -1,61 +0,0 @@ -### - # This file contains script to generate saliency map of a specific baseline model and language on given input data - # The result of this script will be used to evaluate the interpretive performance of the baseline model -### -export CUDA_VISIBLE_DEVICES=7 -export PYTHONPATH=./:$PYTHONPATH - -LANGUAGE=ch # LANGUAGE choose in [ch, en] -BASE_MODEL=roberta_base # BASE_MODEL choose in [roberta_base, roberta_large, lstm] -INTER_MODE=lime # INTER_MODE choice in [attention, integrated_gradient, lime] -TASK=similarity_${LANGUAGE} -DATA=../../data/${TASK} -START_ID=0 - -if [[ $LANGUAGE == "ch" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-wwm-ext' - CKPT=pretrained_models/saved_model_ch/roberta_base_20211018_104038/model_11400/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_base_20211208_121026/model_12000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-wwm-ext-large' - CKPT=pretrained_models/saved_model_ch/roberta_large_20211018_152833/model_22000/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_large_20211208_131546/model_22000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - FROM_PRETRAIN='skep_ernie_1.0_large_ch' - CKPT=simnet/checkpoints_ch/final.pdparams - fi - -elif [[ $LANGUAGE == "en" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=pretrained_models/saved_model_en/roberta_base_20211109_205245/model_54000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_base_20211208_121339/model_54000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=pretrained_models/saved_model_en/roberta_large_20211109_205649/model_46000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_large_20211208_131440/model_42000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - FROM_PRETRAIN='data/skep_ernie_1.0_large_ch' - CKPT=simnet/checkpoints_en/final.pdparams - fi -fi - -OUTPUT=./output/$TASK.$BASE_MODEL -[ -d $OUTPUT ] || mkdir -p $OUTPUT -set -x - -python3 ./saliency_map/similarity_interpretable.py \ - --base_model $BASE_MODEL \ - --data_dir $DATA \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --max_seq_len 256 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE \ - --start_id $START_ID \ - --output_dir $OUTPUT \ - --n-samples 500 \ - --language $LANGUAGE \ - --eval $@ diff --git a/examples/model_interpretation/task/similarity/run_inter_all.sh b/examples/model_interpretation/task/similarity/run_inter_all.sh deleted file mode 100755 index edabd07d6f41..000000000000 --- a/examples/model_interpretation/task/similarity/run_inter_all.sh +++ /dev/null @@ -1,69 +0,0 @@ -### - # This file contains script to generate saliency map of all baseline models and languages on given input data - # The result of this script will be used to evaluate the interpretive performance of the baseline model -### -export CUDA_VISIBLE_DEVICES=4 -export PYTHONPATH=./:$PYTHONPATH - -START_ID=0 - -for BASE_MODEL in "lstm" "roberta_base" "roberta_large"; -do - for INTER_MODE in "attention" "integrated_gradient" "lime"; - do - for LANGUAGE in "ch" "en"; - do - TASK=similarity_${LANGUAGE} - DATA=../../data/${TASK} - - if [[ $LANGUAGE == "ch" ]]; then - - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN='roberta-wwm-ext' - CKPT=pretrained_models/saved_model_ch/roberta_base_20211018_104038/model_11400/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_base_20211208_121026/model_12000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN='roberta-wwm-ext-large' - CKPT=pretrained_models/saved_model_ch/roberta_large_20211018_152833/model_22000/model_state.pdparams - #CKPT=pretrained_models/saved_model_ch/roberta_large_20211208_131546/model_22000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - FROM_PRETRAIN='data/skep_ernie_1.0_large_ch' - CKPT=simnet/checkpoints_ch/final.pdparams - fi - - elif [[ $LANGUAGE == "en" ]]; then - if [[ $BASE_MODEL == "roberta_base" ]]; then - FROM_PRETRAIN=roberta-base - CKPT=pretrained_models/saved_model_en/roberta_base_20211109_205245/model_54000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_base_20211208_121339/model_54000/model_state.pdparams - elif [[ $BASE_MODEL == "roberta_large" ]]; then - FROM_PRETRAIN=roberta-large - CKPT=pretrained_models/saved_model_en/roberta_large_20211109_205649/model_46000/model_state.pdparams - #CKPT=pretrained_models/saved_model_en/roberta_large_20211208_131440/model_42000/model_state.pdparams - elif [[ $BASE_MODEL == "lstm" ]]; then - FROM_PRETRAIN='data/skep_ernie_1.0_large_ch' - CKPT=simnet/checkpoints_en/final.pdparams - fi - fi - - OUTPUT=./output/$TASK.$BASE_MODEL - [ -d $OUTPUT ] || mkdir -p $OUTPUT - set -x - if [[ ! -f ${OUTPUT}/interpret.${INTER_MODE} ]]; then - python3 ./saliency_map/similarity_interpretable.py \ - --base_model $BASE_MODEL \ - --data_dir $DATA \ - --from_pretrained $FROM_PRETRAIN \ - --batch_size 1 \ - --max_seq_len 256 \ - --init_checkpoint $CKPT \ - --inter_mode $INTER_MODE \ - --start_id $START_ID \ - --output_dir $OUTPUT \ - --n-samples 500 \ - --language $LANGUAGE \ - --eval $@ - fi - done - done -done diff --git a/examples/model_interpretation/task/similarity/saliency_map/similarity_interpretable.py b/examples/model_interpretation/task/similarity/saliency_map/similarity_interpretable.py deleted file mode 100644 index 730640962190..000000000000 --- a/examples/model_interpretation/task/similarity/saliency_map/similarity_interpretable.py +++ /dev/null @@ -1,646 +0,0 @@ -# !/usr/bin/env python3 -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import collections -import json -import logging -import os -import re -import sys -from functools import partial -from pathlib import Path - -import numpy as np -import paddle -from LIME.lime_text import LimeTextExplainer -from roberta.modeling import RobertaForSequenceClassification -from simnet.model import SimNet -from simnet.utils import CharTokenizer, preprocess_data -from tqdm import tqdm - -from paddlenlp.data import Dict, Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import DatasetBuilder -from paddlenlp.transformers.roberta.tokenizer import ( - RobertaBPETokenizer, - RobertaTokenizer, -) - -sys.path.append("../../..") -from model_interpretation.utils import ( # noqa: E402 - convert_tokenizer_res_to_old_version, - match, -) - -sys.path.remove("../../..") - -log = logging.getLogger(__name__) -log.setLevel(logging.DEBUG) -logging.getLogger().setLevel(logging.DEBUG) - - -def get_args(): - parser = argparse.ArgumentParser("interpret textual similarity task") - parser.add_argument("--base_model", required=True, choices=["roberta_base", "roberta_large", "lstm"]) - parser.add_argument("--from_pretrained", type=str, required=True, help="pretrained model directory or tag") - parser.add_argument( - "--max_seq_len", type=int, default=128, help="max sentence length, should not greater than 512" - ) - parser.add_argument("--batch_size", type=int, default=1, help="batchsize") - parser.add_argument("--data_dir", type=str, required=True, help="data directory includes train / develop data") - parser.add_argument("--eval", action="store_true") - parser.add_argument("--init_checkpoint", type=str, default=None, help="checkpoint to warm start from") - parser.add_argument("--wd", type=float, default=0.01, help="weight decay, aka L2 regularizer") - parser.add_argument( - "--use_amp", - action="store_true", - help="only activate AMP(auto mixed precision accelatoin) on TensorCore compatible devices", - ) - parser.add_argument( - "--inter_mode", - type=str, - default="attention", - choices=["attention", "simple_gradient", "smooth_gradient", "integrated_gradient", "lime"], - help="appoint the mode of interpretable.", - ) - parser.add_argument("--n-samples", type=int, default=25, help="number of samples used for smooth gradient method") - parser.add_argument("--output_dir", type=Path, required=True, help="interpretable output directory") - parser.add_argument("--start_id", type=int, default=0) - parser.add_argument("--language", type=str, required=True, help="Language that the model is based on") - args = parser.parse_args() - return args - - -class Similarity_data(DatasetBuilder): - def _read(self, filename): - with open(filename, "r", encoding="utf8") as f: - for line in f.readlines(): - line_split = json.loads(line) - if args.language == "ch": - yield { - "id": line_split["id"], - "query": line_split["query"], - "title": line_split["title"], - "text_q_seg": line_split["text_q_seg"], - "text_t_seg": line_split["text_t_seg"], - } - else: - yield { - "id": line_split["id"], - "sentence1": line_split["sentence1"], - "sentence2": line_split["sentence2"], - "text_q_seg": line_split["text_q_seg"], - "text_t_seg": line_split["text_t_seg"], - } - - -def map_fn_senti(examples, tokenizer, language): - print("load data %d" % len(examples)) - if language == "ch": - q_name = "query" - t_name = "title" - queries = [example[q_name] for example in examples] - titles = [example[t_name] for example in examples] - else: - q_name = "sentence1" - t_name = "sentence2" - queries = [example[q_name].encode("ascii", errors="replace").decode("UTF-8") for example in examples] - titles = [example[t_name].encode("ascii", errors="replace").decode("UTF-8") for example in examples] - tokenized_examples = tokenizer(queries, titles, max_seq_len=args.max_seq_len) - - tokenized_examples = convert_tokenizer_res_to_old_version(tokenized_examples) - - for i in range(len(tokenized_examples)): - tokenized_examples[i]["query_offset_mapping"] = ( - [(0, 0)] + tokenizer.get_offset_mapping(queries[i])[: args.max_seq_len - 2] + [(0, 0)] - ) - tokenized_examples[i]["title_offset_mapping"] = ( - [(0, 0)] + tokenizer.get_offset_mapping(titles[i])[: args.max_seq_len - 2] + [(0, 0)] - ) - - return tokenized_examples - - -def init_roberta_var(args): - if args.language == "ch": - tokenizer = RobertaTokenizer.from_pretrained(args.from_pretrained) - else: - tokenizer = RobertaBPETokenizer.from_pretrained(args.from_pretrained) - - model = RobertaForSequenceClassification.from_pretrained( - args.from_pretrained, - hidden_dropout_prob=0, - attention_probs_dropout_prob=0, - dropout=0, - num_labels=2, - name="", - return_inter_score=True, - ) - - map_fn = partial(map_fn_senti, tokenizer=tokenizer, language=args.language) - - dev_ds = Similarity_data().read(args.data_dir) - dev_ds.map(map_fn, batched=True) - dev_batch_sampler = paddle.io.BatchSampler(dev_ds, batch_size=args.batch_size, shuffle=False) - batchify_fn = lambda samples, fn=Dict( - { - "input_ids": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "token_type_ids": Pad(axis=0, pad_val=tokenizer.pad_token_type_id), - "query_offset_mapping": Pad(axis=0, pad_val=tokenizer.pad_token_id), - "title_offset_mapping": Pad(axis=0, pad_val=tokenizer.pad_token_id), - } - ): fn(samples) - - dataloader = paddle.io.DataLoader( - dataset=dev_ds, batch_sampler=dev_batch_sampler, collate_fn=batchify_fn, return_list=True - ) - - return model, tokenizer, dataloader, dev_ds - - -def init_lstm_var(args): - if args.language == "ch": - vocab = Vocab.load_vocabulary("simnet/vocab.char", unk_token="[UNK]", pad_token="[PAD]") - else: - vocab = Vocab.load_vocabulary("simnet/vocab_QQP", unk_token="[UNK]", pad_token="[PAD]") - - tokenizer = CharTokenizer(vocab, args.language, "../../punctuations") - model = SimNet(network="lstm", vocab_size=len(vocab), num_classes=2) - - dev_ds = Similarity_data().read(args.data_dir) - dev_examples = preprocess_data(dev_ds.data, tokenizer, args.language) - batches = [dev_examples[idx : idx + args.batch_size] for idx in range(0, len(dev_examples), args.batch_size)] - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=vocab.token_to_idx.get("[PAD]", 0)), # query_ids - Pad(axis=0, pad_val=vocab.token_to_idx.get("[PAD]", 0)), # title_ids - Stack(dtype="int64"), # query_seq_lens - Stack(dtype="int64"), # title_seq_lens - ): [data for data in fn(samples)] - - return model, tokenizer, batches, batchify_fn, vocab, dev_ds - - -def get_seq_token_num(language): - if language == "ch": - add_idx = 1 - else: - add_idx = 2 - return add_idx - - -def get_qt_tokens(base_model, d, add_idx=None, tokenizer=None, batchify_fn=None, vocab=None): - SEP_idx = 0 - if base_model == "roberta": - input_ids, token_type_ids, query_offset_map, title_offset_map = d - fwd_args = [input_ids, token_type_ids] - fwd_kwargs = {} - - SEP_idx = input_ids.tolist()[0].index(tokenizer.sep_token_id) - q_tokens = tokenizer.convert_ids_to_tokens(input_ids[0, 1:SEP_idx].tolist()) # list - t_tokens = tokenizer.convert_ids_to_tokens(input_ids[0, SEP_idx + add_idx : -1].tolist()) # list - q_offset = query_offset_map[0, 1:-1].tolist() - t_offset = title_offset_map[0, 1:-1].tolist() - return q_tokens, t_tokens, SEP_idx, fwd_args, fwd_kwargs, q_offset, t_offset - - if base_model == "lstm": - query_ids, title_ids, query_seq_lens, title_seq_lens = batchify_fn(d) - query_ids = paddle.to_tensor(query_ids) - title_ids = paddle.to_tensor(title_ids) - query_seq_lens = paddle.to_tensor(query_seq_lens) - title_seq_lens = paddle.to_tensor(title_seq_lens) - - fwd_args = [query_ids, title_ids, query_seq_lens, title_seq_lens] - fwd_kwargs = {} - q_tokens = [vocab._idx_to_token[idx] for idx in query_ids.tolist()[0]] - t_tokens = [vocab._idx_to_token[idx] for idx in title_ids.tolist()[0]] - return q_tokens, t_tokens, SEP_idx, fwd_args, fwd_kwargs - - -def extract_attention_scores(args, result, atts, q_tokens, t_tokens, out_handle, SEP_idx, q_offset, t_offset, add_idx): - if args.base_model.startswith("roberta"): - inter_score = atts[-1][:, :, 0, :].mean(1) # (bsz, seq) - q_inter_score = inter_score[0][1:SEP_idx] # remove CLS and SEP - t_inter_score = inter_score[0][SEP_idx + add_idx : -1] # remove CLS and SEP - elif args.base_model == "lstm": - q_inter_score = atts[0][0] - t_inter_score = atts[1][0] - - q_length = (q_inter_score > 0).cast("int32").sum(-1)[0] - t_length = (t_inter_score > 0).cast("int32").sum(-1)[0] - assert len(q_tokens) == q_length, f"{len(q_tokens)} != {q_length}" - assert len(t_tokens) == t_length, f"{len(t_tokens)} != {t_length}" - - q_char_attribution_dict, t_char_attribution_dict = {}, {} - if args.base_model.startswith("roberta"): - # Query - sorted_token = [] - for i in range(len(q_inter_score)): - sorted_token.append([i, q_offset[i], q_inter_score[i]]) - q_char_attribution_dict = match(result["query"], result["text_q_seg"], sorted_token) - result["query_char_attri"] = collections.OrderedDict() - for token_info in sorted(q_char_attribution_dict, key=lambda x: x[2], reverse=True): - result["query_char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - result.pop("text_q_seg") - - # Title - sorted_token = [] - for i in range(len(t_inter_score)): - sorted_token.append([i, t_offset[i], t_inter_score[i]]) - t_char_attribution_dict = match(result["title"], result["text_t_seg"], sorted_token) - result["title_char_attri"] = collections.OrderedDict() - for token_info in sorted(t_char_attribution_dict, key=lambda x: x[2], reverse=True): - result["title_char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - result.pop("text_t_seg") - - else: - idx = 0 - for token, score in zip(q_tokens, q_inter_score.tolist()): - q_char_attribution_dict[idx] = (token, score) - idx += 1 - for token, score in zip(t_tokens, t_inter_score.tolist()): - t_char_attribution_dict[idx] = (token, score) - idx += 1 - - result["query_char_attri"], result["title_char_attri"] = collections.OrderedDict(), collections.OrderedDict() - for token, attri in sorted(q_char_attribution_dict.items(), key=lambda x: x[1][1], reverse=True): - result["query_char_attri"][token] = attri - for token, attri in sorted(t_char_attribution_dict.items(), key=lambda x: x[1][1], reverse=True): - result["title_char_attri"][token] = attri - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - - -def IG_roberta_inter_score( - args, - embedded_grads_list, - pred_embedded, - baseline_embedded, - pred_confidence, - baseline_pred_confidence, - SEP_idx, - add_idx, - err_total, -): - embedded_grads_tensor = paddle.to_tensor( - embedded_grads_list, dtype="float32", place=paddle.CUDAPlace(0), stop_gradient=True - ) - - # Tensor(n_samples-1, 1, seq_len, embed_size) - trapezoidal_grads = (embedded_grads_tensor[1:] + embedded_grads_tensor[:-1]) / 2 - integral_grads = trapezoidal_grads.sum(0) / trapezoidal_grads.shape[0] # Tensor(1, seq_len, embed_size) - inter_score = (pred_embedded - baseline_embedded) * integral_grads # Tensor(1, seq_len, embed_size) - inter_score = inter_score.sum(-1) # Tensor(1, seq_len) - - # eval err - delta_pred_confidence = pred_confidence - baseline_pred_confidence - sum_gradient = inter_score.sum().tolist()[0] - err = (delta_pred_confidence - sum_gradient + 1e-12) / (delta_pred_confidence + 1e-12) - err_total.append(np.abs(err)) - - print_str = "%s\t%d\t%.3f\t%.3f\t%.3f\t%.3f" - print_vals = (result["id"], args.n_samples, delta_pred_confidence, sum_gradient, err, np.average(err_total)) - print(print_str % print_vals) - - inter_score.stop_gradient = True - q_inter_score = inter_score[0][1:SEP_idx] # remove CLS and SEP - t_inter_score = inter_score[0][SEP_idx + add_idx : -1] # remove CLS and SEP - - return q_inter_score, t_inter_score - - -def IG_lstm_inter_score(q_embedded_grads_list, pred_embedded, baseline_embedded, idx): - # query - q_embedded_grads_tensor = paddle.to_tensor( - q_embedded_grads_list, dtype="float32", place=paddle.CUDAPlace(0), stop_gradient=True - ) - q_trapezoidal_grads = ( - q_embedded_grads_tensor[1:] + q_embedded_grads_tensor[:-1] - ) / 2 # Tensor(n_samples-1, 1, seq_len, embed_size) - q_integral_grads = q_trapezoidal_grads.sum(0) / q_trapezoidal_grads.shape[0] # Tensor(1, seq_len, embed_size) - q_inter_score = (pred_embedded[idx] - baseline_embedded[idx]) * q_integral_grads # Tensor(1, seq_len, embed_size) - q_inter_score = q_inter_score.sum(-1) # Tensor(1, seq_len) - q_inter_score.stop_gradient = True - q_inter_score = q_inter_score[0] - - return q_inter_score - - -def extract_integrated_gradient_scores( - args, - result, - fwd_args, - fwd_kwargs, - model, - q_tokens, - t_tokens, - out_handle, - SEP_idx, - add_idx, - q_offset, - t_offset, - err_total, -): - embedded_grads_list = [] - q_embedded_grads_list, t_embedded_grads_list = [], [] - for i in range(args.n_samples): - probs, _, embedded = model.forward_interpret( - *fwd_args, **fwd_kwargs, noise="integrated", i=i, n_samples=args.n_samples - ) - predicted_class_prob = probs[0][pred_label] - predicted_class_prob.backward(retain_graph=False) - - if args.base_model.startswith("roberta"): - embedded_grad = embedded.grad - embedded_grads_list.append(embedded_grad) - elif args.base_model == "lstm": - q_embedded, t_embedded = embedded - q_embedded_grad = q_embedded.grad - t_embedded_grad = t_embedded.grad - q_embedded_grads_list.append(q_embedded_grad) - t_embedded_grads_list.append(t_embedded_grad) - model.clear_gradients() - if i == 0: - baseline_pred_confidence = probs.tolist()[0][pred_label] # scalar - baseline_embedded = embedded # Tensor(1, seq_len, embed_size) - elif i == args.n_samples - 1: - pred_confidence = probs.tolist()[0][pred_label] # scalar - pred_embedded = embedded # Tensor(1, seq_len, embed_size) - - if args.base_model.startswith("roberta"): - q_inter_score, t_inter_score = IG_roberta_inter_score( - args, - embedded_grads_list, - pred_embedded, - baseline_embedded, - pred_confidence, - baseline_pred_confidence, - SEP_idx, - add_idx, - err_total, - ) - elif args.base_model == "lstm": - q_inter_score = IG_lstm_inter_score(q_embedded_grads_list, pred_embedded, baseline_embedded, 0) - t_inter_score = IG_lstm_inter_score(t_embedded_grads_list, pred_embedded, baseline_embedded, 1) - - q_char_attribution_dict, t_char_attribution_dict = {}, {} - if args.base_model.startswith("roberta"): - # Query - sorted_token = [] - for i in range(len(q_inter_score)): - sorted_token.append([i, q_offset[i], q_inter_score[i]]) - q_char_attribution_dict = match(result["query"], result["text_q_seg"], sorted_token) - result["query_char_attri"] = collections.OrderedDict() - for token_info in sorted(q_char_attribution_dict, key=lambda x: x[2], reverse=True): - result["query_char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - result.pop("text_q_seg") - - # Title - sorted_token = [] - for i in range(len(t_inter_score)): - sorted_token.append([i, t_offset[i], t_inter_score[i]]) - t_char_attribution_dict = match(result["title"], result["text_t_seg"], sorted_token) - result["title_char_attri"] = collections.OrderedDict() - for token_info in sorted(t_char_attribution_dict, key=lambda x: x[2], reverse=True): - result["title_char_attri"][str(token_info[0])] = [str(token_info[1]), float(token_info[2])] - result.pop("text_t_seg") - else: - idx = 0 - for token, score in zip(q_tokens, q_inter_score.tolist()): - q_char_attribution_dict[idx] = (token, score) - idx += 1 - for token, score in zip(t_tokens, t_inter_score.tolist()): - t_char_attribution_dict[idx] = (token, score) - idx += 1 - - result["query_char_attri"], result["title_char_attri"] = collections.OrderedDict(), collections.OrderedDict() - for token, attri in sorted(q_char_attribution_dict.items(), key=lambda x: x[1][1], reverse=True): - result["query_char_attri"][token] = attri - for token, attri in sorted(t_char_attribution_dict.items(), key=lambda x: x[1][1], reverse=True): - result["title_char_attri"][token] = attri - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - - -def extract_LIME_scores( - args, q_tokens, t_tokens, result, tokenizer, pred_label, fwd_args, fwd_kwargs, model, probs, out_handle -): - explainer = LimeTextExplainer(class_names=["neg", "pos"], verbose=False, language=args.language) - if_lstm = args.base_model == "lstm" - - explain_res_q = explainer.explain_instance( - text_instance_q=result["query"], - text_instance_t=result["title"], - analysis_query=True, - tokenizer=tokenizer, - pred_label=pred_label, - classifier_fn=model.forward_interpret, - num_samples=5000, - if_lstm=if_lstm, - ) - exp_q, indexed_string_q, relative_err, err = explain_res_q - local_exps_q = exp_q.local_exp - - explain_res_t = explainer.explain_instance( - text_instance_q=result["query"], - text_instance_t=result["title"], - analysis_query=False, - tokenizer=tokenizer, - pred_label=pred_label, - classifier_fn=model.forward_interpret, - num_samples=5000, - if_lstm=if_lstm, - ) - exp_t, indexed_string_t, _, _ = explain_res_t - local_exps_t = exp_t.local_exp - - # query - char_attribution_dict = [] - for kind, local_exp in local_exps_q.items(): - for idx in range(len(result["text_q_seg"])): - t = result["text_q_seg"][idx] # .replace('Ġ', '') - got_score = False - for word_id, attribution in local_exp: - if indexed_string_q.inverse_vocab[word_id] == t: - char_attribution_dict.append((idx, t, attribution)) - got_score = True - break - if not got_score: - char_attribution_dict.append((idx, t, 0)) - char_attribution_dict = sorted(char_attribution_dict, key=lambda x: x[2], reverse=True) - result["query_char_attri"] = collections.OrderedDict() - for s in char_attribution_dict: - result["query_char_attri"][s[0]] = (s[1], s[2]) - - # title - char_attribution_dict = [] - for kind, local_exp in local_exps_t.items(): - for idx in range(len(result["text_t_seg"])): - t = result["text_t_seg"][idx] # .replace('Ġ', '') - got_score = False - for word_id, attribution in local_exp: - if indexed_string_t.inverse_vocab[word_id] == t: - char_attribution_dict.append((idx, t, attribution)) - got_score = True - break - if not got_score: - char_attribution_dict.append((idx, t, 0)) - char_attribution_dict = sorted(char_attribution_dict, key=lambda x: x[2], reverse=True) - result["title_char_attri"] = collections.OrderedDict() - for s in char_attribution_dict: - result["title_char_attri"][s[0]] = (s[1], s[2]) - - out_handle.write(json.dumps(result, ensure_ascii=False) + "\n") - return exp_q, exp_t, relative_err, err - - -def LIME_error_evaluation( - exp_q, pred_label, probs, lime_score_total, lime_relative_err_total, lime_err_total, relative_err, err -): - # err evaluation - score = exp_q.score[pred_label] - ridge_pred = exp_q.local_pred[pred_label] - model_pred = probs.numpy().tolist()[0][pred_label] - - lime_score_total.append(score) - lime_relative_err_total.append(relative_err) - lime_err_total.append(err) - print("score: %.2f" % score) - print("relative_err: %.2f" % relative_err) - print("err: %.2f" % err) - print("ridge_pred: %.2f\tpred: %.2f\tdelta: %.2f" % (ridge_pred, model_pred, ridge_pred - model_pred)) - return lime_score_total, lime_relative_err_total, lime_err_total - - -g_splitter = re.compile(r"([\u4e00-\u9fa5])") - -if __name__ == "__main__": - args = get_args() - if args.base_model.startswith("roberta"): - model, tokenizer, dataloader, dev_ds = init_roberta_var(args) - elif args.base_model == "lstm": - model, tokenizer, dataloader, batchify_fn, vocab, dev_ds = init_lstm_var(args) - else: - raise ValueError("unsupported base model name.") - - assert args.eval, "INTERPRETER must be run in eval mode" - with paddle.amp.auto_cast(enable=args.use_amp), open( - os.path.join(args.output_dir, "interpret" + f".{args.inter_mode}"), "w" - ) as out_handle: - # Load model - sd = paddle.load(args.init_checkpoint) - model.set_dict(sd) - model.train() # Set dropout to 0 when init the model to collect the gradient - print("load model from %s" % args.init_checkpoint) - - # For IG - err_total = [] - # For LIME - lime_score_total = [] - lime_relative_err_total = [] - lime_err_total = [] - # For Roberta - sub_word_id_dict_query = [] - sub_word_id_dict_title = [] - # For LSTM - q_offset, t_offset = None, None - - get_sub_word_ids = lambda word: map(str, tokenizer.convert_tokens_to_ids(tokenizer.tokenize(word))) - for step, d in tqdm(enumerate(dataloader)): - if step + 1 < args.start_id: - continue - - result = {} - # English and Chinese models have different numbers of [SEQ] tokens between query and title - add_idx = get_seq_token_num(args.language) - - if args.base_model.startswith("roberta"): - q_tokens, t_tokens, SEP_idx, fwd_args, fwd_kwargs, q_offset, t_offset = get_qt_tokens( - base_model="roberta", d=d, add_idx=add_idx, tokenizer=tokenizer - ) - elif args.base_model == "lstm": - q_tokens, t_tokens, SEP_idx, fwd_args, fwd_kwargs = get_qt_tokens( - base_model="lstm", d=d, batchify_fn=batchify_fn, vocab=vocab - ) - - result["id"] = dev_ds.data[step]["id"] - result["text_q_seg"] = dev_ds.data[step]["text_q_seg"] - result["text_t_seg"] = dev_ds.data[step]["text_t_seg"] - - probs, atts, embedded = model.forward_interpret(*fwd_args, **fwd_kwargs) - pred_label = paddle.argmax(probs, axis=-1).tolist()[0] - - result["pred_label"] = pred_label - result["probs"] = [float(format(prob, ".5f")) for prob in probs.numpy()[0].tolist()] - - if args.language == "ch": - result["query"] = dev_ds.data[step]["query"] - result["title"] = dev_ds.data[step]["title"] - else: - result["query"] = dev_ds.data[step]["sentence1"] - result["title"] = dev_ds.data[step]["sentence2"] - - # Attention - if args.inter_mode == "attention": - extract_attention_scores( - args, result, atts, q_tokens, t_tokens, out_handle, SEP_idx, q_offset, t_offset, add_idx - ) - - elif args.inter_mode == "integrated_gradient": - extract_integrated_gradient_scores( - args, - result, - fwd_args, - fwd_kwargs, - model, - q_tokens, - t_tokens, - out_handle, - SEP_idx, - add_idx, - q_offset, - t_offset, - err_total, - ) - - elif args.inter_mode == "lime": - exp_q, exp_t, relative_err, err = extract_LIME_scores( - args, - q_tokens, - t_tokens, - result, - tokenizer, - pred_label, - fwd_args, - fwd_kwargs, - model, - probs, - out_handle, - ) - lime_score_total, lime_relative_err_total, lime_err_total = LIME_error_evaluation( - exp_q, - pred_label, - probs, - lime_score_total, - lime_relative_err_total, - lime_err_total, - relative_err, - err, - ) - - else: - raise KeyError(f"Unkonwn interpretable mode: {args.inter_mode}") - - if args.inter_mode == "lime": - print(np.average(np.array(lime_relative_err_total))) diff --git a/examples/model_interpretation/task/similarity/saliency_map/utils.py b/examples/model_interpretation/task/similarity/saliency_map/utils.py deleted file mode 100644 index 9e6dd7e1a61b..000000000000 --- a/examples/model_interpretation/task/similarity/saliency_map/utils.py +++ /dev/null @@ -1,38 +0,0 @@ -# !/usr/bin/env python3 -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import absolute_import, division, print_function, unicode_literals - -import paddle - - -class UnpackDataLoader(paddle.io.DataLoader): - def __init__(self, *args, **kwargs): - super(UnpackDataLoader, self).__init__(*args, batch_size=1, **kwargs) - - def __iter__(self): - return ([yy[0] for yy in y] for y in super(UnpackDataLoader, self).__iter__()) - - -def create_if_not_exists(dir): - try: - dir.mkdir(parents=True) - except FileExistsError: - pass - return dir - - -def get_warmup_and_linear_decay(max_steps, warmup_steps): - return lambda step: min(step / warmup_steps, 1.0 - (step - warmup_steps) / (max_steps - warmup_steps)) diff --git a/examples/model_interpretation/task/similarity/simnet/gen_vocab.py b/examples/model_interpretation/task/similarity/simnet/gen_vocab.py deleted file mode 100644 index 435990282531..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/gen_vocab.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# !/usr/bin/env python -# coding=utf-8 - -import sys -from collections import defaultdict - -import spacy - -from paddlenlp.datasets import load_dataset - -if sys.argv[1] == "ch": - train_ds, dev_ds, test_ds = load_dataset("lcqmc", splits=["train", "dev", "test"]) - - vocab = defaultdict(int) - for example in train_ds.data: - query = example["query"] - title = example["title"] - for c in query: - vocab[c] += 1 - for c in title: - vocab[c] += 1 - with open("vocab.char", "w") as f: - for k, v in vocab.items(): - if v > 3: - f.write(k + "\n") - -else: - tokenizer = spacy.load("en_core_web_sm") - vocab = defaultdict(int) - - with open("../data/QQP/train/train.tsv", "r") as f_dataset: - for idx, line in enumerate(f_dataset.readlines()): - if idx == 0: - continue - line_split = line.strip().split("\t") - query = [token.text for token in tokenizer(line_split[0])] - title = [token.text for token in tokenizer(line_split[1])] - - for word in query: - vocab[word] += 1 - for word in title: - vocab[word] += 1 - - with open("vocab_QQP", "w") as f: - for k, v in vocab.items(): - if v > 3: - f.write(k + "\n") diff --git a/examples/model_interpretation/task/similarity/simnet/interpreter_attention.py b/examples/model_interpretation/task/similarity/simnet/interpreter_attention.py deleted file mode 100644 index e2ed642e836b..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/interpreter_attention.py +++ /dev/null @@ -1,121 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import sys - -import paddle - -from paddlenlp.data import Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import load_dataset - -sys.path.append("../../..") -from model import SimNet # noqa: E402 -from utils import CharTokenizer, preprocess_data # noqa: E402 - -parser = argparse.ArgumentParser(__doc__) -parser.add_argument( - "--device", choices=["cpu", "gpu"], default="gpu", help="Select which device to train model, defaults to gpu." -) -parser.add_argument("--batch_size", type=int, default=1, help="Total examples' number of a batch for training.") -parser.add_argument("--vocab_path", type=str, default="./vocab.char", help="The path to vocabulary.") -parser.add_argument( - "--network", type=str, default="lstm", help="Which network you would like to choose bow, cnn, lstm or gru ?" -) -parser.add_argument( - "--params_path", type=str, default="./checkpoints/final.pdparams", help="The path of model parameter to be loaded." -) -parser.add_argument("--language", type=str, required=True, help="Language that this model based on") -args = parser.parse_args() - - -def interpret(model, data, label_map, batch_size=1, pad_token_id=0, vocab=None): - """ - Predicts the data labels. - - Args: - model (obj:`paddle.nn.Layer`): A model to classify texts. - data (obj:`List(Example)`): The processed data whose each element is a Example (numedtuple) object. - A Example object contains `text`(word_ids) and `seq_len`(sequence length). - label_map(obj:`dict`): The label id (key) to label str (value) map. - batch_size(obj:`int`, defaults to 1): The number of batch. - pad_token_id(obj:`int`, optional, defaults to 0): The pad token index. - - Returns: - results(obj:`dict`): All the predictions labels. - """ - - # Separates data into some batches. - batches = [data[idx : idx + batch_size] for idx in range(0, len(data), batch_size)] - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=pad_token_id), # query_ids - Pad(axis=0, pad_val=pad_token_id), # title_ids - Stack(dtype="int64"), # query_seq_lens - Stack(dtype="int64"), # title_seq_lens - ): [data for data in fn(samples)] - - model.eval() - results = [] - for batch in batches: - query_ids, title_ids, query_seq_lens, title_seq_lens = batchify_fn(batch) - query_ids = paddle.to_tensor(query_ids) - title_ids = paddle.to_tensor(title_ids) - query_seq_lens = paddle.to_tensor(query_seq_lens) - title_seq_lens = paddle.to_tensor(title_seq_lens) - - logits, attention, _ = model.forward_interpret(query_ids, title_ids, query_seq_lens, title_seq_lens) - query_att = attention[0] - title_att = attention[1] - - model.clear_gradients() - for query_id, title_id in zip(query_ids.numpy().tolist(), title_ids.numpy().tolist()): - query = [vocab._idx_to_token[idx] for idx in query_id] - title = [vocab._idx_to_token[idx] for idx in title_id] - results.append([query_att, query, title_att, title]) - - print("query_att: %s" % query_att.shape) - print("title_att: %s" % title_att.shape) - - return results - - -if __name__ == "__main__": - paddle.set_device(args.device + ":2") - # Loads vocab. - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - tokenizer = CharTokenizer(vocab, args.language) - label_map = {0: "dissimilar", 1: "similar"} - - # Constructs the newtork. - model = SimNet(network=args.network, vocab_size=len(vocab), num_classes=len(label_map)) - - # Loads model parameters. - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - - # Firstly pre-processing prediction data and then do predict. - dev_ds, test_ds = load_dataset("lcqmc", splits=["dev", "test"]) - - dev_examples = preprocess_data(dev_ds.data, tokenizer, args.language) - test_examples = preprocess_data(test_ds.data, tokenizer, args.language) - results = interpret( - model, - dev_examples, - label_map=label_map, - batch_size=args.batch_size, - pad_token_id=vocab.token_to_idx.get("[PAD]", 0), - vocab=vocab, - ) diff --git a/examples/model_interpretation/task/similarity/simnet/interpreter_grad.py b/examples/model_interpretation/task/similarity/simnet/interpreter_grad.py deleted file mode 100644 index 8da2733bee65..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/interpreter_grad.py +++ /dev/null @@ -1,131 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import sys - -import paddle - -from paddlenlp.data import Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import load_dataset - -sys.path.append("../../..") -from model import SimNet # noqa: E402 -from utils import CharTokenizer, preprocess_data # noqa: E402 - -parser = argparse.ArgumentParser(__doc__) -parser.add_argument( - "--device", choices=["cpu", "gpu"], default="gpu", help="Select which device to train model, defaults to gpu." -) -parser.add_argument("--batch_size", type=int, default=1, help="Total examples' number of a batch for training.") -parser.add_argument("--vocab_path", type=str, default="./vocab.char", help="The path to vocabulary.") -parser.add_argument( - "--network", type=str, default="lstm", help="Which network you would like to choose bow, cnn, lstm or gru ?" -) -parser.add_argument( - "--params_path", type=str, default="./checkpoints/final.pdparams", help="The path of model parameter to be loaded." -) -parser.add_argument("--language", type=str, required=True, help="Language that this model based on") -args = parser.parse_args() - - -def interpret(model, data, label_map, batch_size=1, pad_token_id=0, vocab=None): - """ - Predicts the data labels. - - Args: - model (obj:`paddle.nn.Layer`): A model to classify texts. - data (obj:`List(Example)`): The processed data whose each element is a Example (numedtuple) object. - A Example object contains `text`(word_ids) and `seq_len`(sequence length). - label_map(obj:`dict`): The label id (key) to label str (value) map. - batch_size(obj:`int`, defaults to 1): The number of batch. - pad_token_id(obj:`int`, optional, defaults to 0): The pad token index. - - Returns: - results(obj:`dict`): All the predictions labels. - """ - - # Separates data into some batches. - batches = [data[idx : idx + batch_size] for idx in range(0, len(data), batch_size)] - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=pad_token_id), # query_ids - Pad(axis=0, pad_val=pad_token_id), # title_ids - Stack(dtype="int64"), # query_seq_lens - Stack(dtype="int64"), # title_seq_lens - Stack(dtype="int64"), - ): [data for data in fn(samples)] - - model.train() - results = [] - for batch in batches: - query_ids, title_ids, query_seq_lens, title_seq_lens = batchify_fn(batch) - query_ids = paddle.to_tensor(query_ids) - title_ids = paddle.to_tensor(title_ids) - query_seq_lens = paddle.to_tensor(query_seq_lens) - title_seq_lens = paddle.to_tensor(title_seq_lens) - probs, addiational_info = model.forward_interpreter(query_ids, title_ids, query_seq_lens, title_seq_lens) - query_emb = addiational_info["embedded"][0] - title_emb = addiational_info["embedded"][1] - - predicted_class_probs = paddle.max(probs, axis=-1) - predicted_class_probs = predicted_class_probs.sum() - paddle.autograd.backward([predicted_class_probs]) - q_gradients = ((query_emb * query_emb.grad).sum(-1).detach()).abs() # gradients: (1, seq_len) - q_grad_output = q_gradients / q_gradients.sum(-1, keepdim=True) - t_gradients = ((title_emb * title_emb.grad).sum(-1).detach()).abs() # gradients: (1, seq_len) - t_grad_output = t_gradients / t_gradients.sum(-1, keepdim=True) - - model.clear_gradients() - for query_id, title_id in zip(query_ids.numpy().tolist(), title_ids.numpy().tolist()): - query = [vocab._idx_to_token[idx] for idx in query_id] - title = [vocab._idx_to_token[idx] for idx in title_id] - results.append([q_grad_output, query, t_grad_output, title]) - print([q_grad_output, query, t_grad_output, title]) - - return results - - -if __name__ == "__main__": - paddle.set_device(args.device + ":1") - # Loads vocab. - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - tokenizer = CharTokenizer(vocab, args.language) - label_map = {0: "dissimilar", 1: "similar"} - - # Constructs the newtork. - model = SimNet(network=args.network, vocab_size=len(vocab), num_classes=len(label_map)) - - # Loads model parameters. - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - - # Firstly pre-processing prediction data and then do predict. - - dev_ds, test_ds = load_dataset("lcqmc", splits=["dev", "test"]) - - dev_examples = preprocess_data(dev_ds.data, tokenizer, args.language) - test_examples = preprocess_data(test_ds.data, tokenizer, args.language) - results = interpret( - model, - dev_examples, - label_map=label_map, - batch_size=args.batch_size, - pad_token_id=vocab.token_to_idx.get("[PAD]", 0), - vocab=vocab, - ) - - # for idx, text in enumerate(data): - # print('Data: {} \t Label: {}'.format(text, results[idx])) diff --git a/examples/model_interpretation/task/similarity/simnet/lstm_train.sh b/examples/model_interpretation/task/similarity/simnet/lstm_train.sh deleted file mode 100755 index 5c1b671f0930..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/lstm_train.sh +++ /dev/null @@ -1,21 +0,0 @@ -### - # This script is used to train lstm models -### - -unset CUDA_VISIBLE_DEVICES -LANGUAGE=en - -if [[ $LANGUAGE == "ch" ]]; then - VOCAB_PATH=vocab.char -elif [[ $LANGUAGE == "en" ]]; then - VOCAB_PATH=vocab_QQP -fi - -python -m paddle.distributed.launch --gpus "5" train.py \ - --device=gpu \ - --lr=4e-4 \ - --batch_size=64 \ - --epochs=12 \ - --vocab_path=$VOCAB_PATH \ - --language=$LANGUAGE \ - --save_dir="./checkpoints_"${LANGUAGE} diff --git a/examples/model_interpretation/task/similarity/simnet/model.py b/examples/model_interpretation/task/similarity/simnet/model.py deleted file mode 100644 index e3c86ad21c4e..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/model.py +++ /dev/null @@ -1,270 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F - -import paddlenlp as nlp - - -class SimNet(nn.Layer): - def __init__(self, network, vocab_size, num_classes, emb_dim=128, pad_token_id=0): - super().__init__() - - network = network.lower() - if network == "bow": - self.model = BoWModel(vocab_size, num_classes, emb_dim, padding_idx=pad_token_id) - elif network == "cnn": - self.model = CNNModel(vocab_size, num_classes, emb_dim, padding_idx=pad_token_id) - elif network == "gru": - self.model = GRUModel(vocab_size, num_classes, emb_dim, direction="forward", padding_idx=pad_token_id) - elif network == "lstm": - self.model = LSTMModel(vocab_size, num_classes, emb_dim, direction="forward", padding_idx=pad_token_id) - else: - raise ValueError("Unknown network: %s, it must be one of bow, cnn, lstm or gru." % network) - - def forward(self, query, title, query_seq_len=None, title_seq_len=None): - logits = self.model(query, title, query_seq_len, title_seq_len) - return logits - - def forward_interpret( - self, query, title, query_seq_len=None, title_seq_len=None, noise=None, i=None, n_samples=None - ): - - logits, addiational_info = self.model.forward_interpreter( - query, title, query_seq_len, title_seq_len, noise=noise, i=i, n_samples=n_samples - ) - - return logits, addiational_info["attention"], addiational_info["embedded"] - - -class BoWModel(nn.Layer): - """ - This class implements the Bag of Words Classification Network model to classify texts. - At a high level, the model starts by embedding the tokens and running them through - a word embedding. Then, we encode these representations with a `BoWEncoder`. - Lastly, we take the output of the encoder to create a final representation, - which is passed through some feed-forward layers to output a logits (`output_layer`). - Args: - vocab_size (obj:`int`): The vocabulary size. - emb_dim (obj:`int`, optional, defaults to 128): The embedding dimension. - padding_idx (obj:`int`, optional, defaults to 0) : The pad token index. - hidden_size (obj:`int`, optional, defaults to 128): The first full-connected layer hidden size. - fc_hidden_size (obj:`int`, optional, defaults to 96): The second full-connected layer hidden size. - num_classes (obj:`int`): All the labels that the data has. - """ - - def __init__(self, vocab_size, num_classes, emb_dim=128, padding_idx=0, fc_hidden_size=128): - super().__init__() - self.embedder = nn.Embedding(vocab_size, emb_dim, padding_idx=padding_idx) - self.bow_encoder = nlp.seq2vec.BoWEncoder(emb_dim) - self.fc = nn.Linear(self.bow_encoder.get_output_dim() * 2, fc_hidden_size) - self.output_layer = nn.Linear(fc_hidden_size, num_classes) - - def forward(self, query, title, query_seq_len=None, title_seq_len=None): - # Shape: (batch_size, num_tokens, embedding_dim) - embedded_query = self.embedder(query) - embedded_title = self.embedder(title) - # Shape: (batch_size, embedding_dim) - summed_query = self.bow_encoder(embedded_query) - summed_title = self.bow_encoder(embedded_title) - encoded_query = paddle.tanh(summed_query) - encoded_title = paddle.tanh(summed_title) - # Shape: (batch_size, embedding_dim*2) - contacted = paddle.concat([encoded_query, encoded_title], axis=-1) - # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(contacted)) - # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - # probs = F.softmax(logits, axis=-1) - return logits - - -class LSTMModel(nn.Layer): - def __init__( - self, - vocab_size, - num_classes, - emb_dim=128, - padding_idx=0, - lstm_hidden_size=128, - direction="forward", - lstm_layers=1, - dropout_rate=0.0, - pooling_type=None, - fc_hidden_size=128, - ): - super().__init__() - self.embedder = nn.Embedding(num_embeddings=vocab_size, embedding_dim=emb_dim, padding_idx=padding_idx) - self.lstm_encoder = nlp.seq2vec.LSTMEncoder( - emb_dim, lstm_hidden_size, num_layers=lstm_layers, direction=direction, dropout=dropout_rate - ) - self.fc = nn.Linear(self.lstm_encoder.get_output_dim() * 2, fc_hidden_size) - self.output_layer = nn.Linear(fc_hidden_size, num_classes) - self.pad_token_id = padding_idx - - def forward(self, query, title, query_seq_len, title_seq_len): - assert query_seq_len is not None and title_seq_len is not None - # Shape: (batch_size, num_tokens, embedding_dim) - embedded_query = self.embedder(query) - embedded_title = self.embedder(title) - # Shape: (batch_size, lstm_hidden_size) - query_repr = self.lstm_encoder(embedded_query, sequence_length=query_seq_len) - title_repr = self.lstm_encoder(embedded_title, sequence_length=title_seq_len) - # Shape: (batch_size, 2*lstm_hidden_size) - contacted = paddle.concat([query_repr, title_repr], axis=-1) - # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(contacted)) - # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - # probs = F.softmax(logits, axis=-1) - - return logits - - def forward_interpreter(self, query, title, query_seq_len, title_seq_len, noise=None, i=None, n_samples=None): - assert query_seq_len is not None and title_seq_len is not None - # Shape: (batch_size, num_tokens, embedding_dim) - - query_baseline = paddle.to_tensor([self.pad_token_id] * query.shape[1]).unsqueeze(0) - title_baseline = paddle.to_tensor([self.pad_token_id] * title.shape[1]).unsqueeze(0) - - embedded_query = self.embedder(query) - embedded_title = self.embedder(title) - embedded_query_baseline = self.embedder(query_baseline) - embedded_title_baseline = self.embedder(title_baseline) - - if noise is not None and noise.upper() == "INTEGRATED": - embedded_query = embedded_query_baseline + i / (n_samples - 1) * (embedded_query - embedded_query_baseline) - embedded_title = embedded_title_baseline + i / (n_samples - 1) * (embedded_title - embedded_title_baseline) - - # Shape: (batch_size, lstm_hidden_size) - query_repr = self.lstm_encoder(embedded_query, sequence_length=query_seq_len) - title_repr = self.lstm_encoder(embedded_title, sequence_length=title_seq_len) - # Shape: (batch_size, 2*lstm_hidden_size) - contacted = paddle.concat([query_repr, title_repr], axis=-1) - # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(contacted)) - # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - probs = F.softmax(logits, axis=-1) - - q_att = paddle.matmul(fc_out, embedded_query, transpose_y=True).squeeze(axis=[1]) # (bsz, query_len) - q_att = F.softmax(q_att, axis=-1) - t_att = paddle.matmul(fc_out, embedded_title, transpose_y=True).squeeze(axis=[1]) # (bsz, title_len) - t_att = F.softmax(t_att, axis=-1) - - addiational_info = { - "embedded": [embedded_query, embedded_title], - "attention": [q_att, t_att], - } - # return logits, addiational_info - return probs, addiational_info - - -class GRUModel(nn.Layer): - def __init__( - self, - vocab_size, - num_classes, - emb_dim=128, - padding_idx=0, - gru_hidden_size=128, - direction="forward", - gru_layers=1, - dropout_rate=0.0, - pooling_type=None, - fc_hidden_size=96, - ): - super().__init__() - self.embedder = nn.Embedding(num_embeddings=vocab_size, embedding_dim=emb_dim, padding_idx=padding_idx) - self.gru_encoder = nlp.seq2vec.GRUEncoder( - emb_dim, gru_hidden_size, num_layers=gru_layers, direction=direction, dropout=dropout_rate - ) - self.fc = nn.Linear(self.gru_encoder.get_output_dim() * 2, fc_hidden_size) - self.output_layer = nn.Linear(fc_hidden_size, num_classes) - - def forward(self, query, title, query_seq_len, title_seq_len): - # Shape: (batch_size, num_tokens, embedding_dim) - embedded_query = self.embedder(query) - embedded_title = self.embedder(title) - # Shape: (batch_size, gru_hidden_size) - query_repr = self.gru_encoder(embedded_query, sequence_length=query_seq_len) - title_repr = self.gru_encoder(embedded_title, sequence_length=title_seq_len) - # Shape: (batch_size, 2*gru_hidden_size) - contacted = paddle.concat([query_repr, title_repr], axis=-1) - # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(contacted)) - # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - # probs = F.softmax(logits, axis=-1) - - return logits - - -class CNNModel(nn.Layer): - """ - This class implements the - - - Convolution Neural Network model. - At a high level, the model starts by embedding the tokens and running them through - a word embedding. Then, we encode these representations with a `CNNEncoder`. - The CNN has one convolution layer for each ngram filter size. Each convolution operation gives - out a vector of size num_filter. The number of times a convolution layer will be used - is `num_tokens - ngram_size + 1`. The corresponding maxpooling layer aggregates all these - outputs from the convolution layer and outputs the max. - Lastly, we take the output of the encoder to create a final representation, - which is passed through some feed-forward layers to output a logits (`output_layer`). - Args: - vocab_size (obj:`int`): The vocabulary size. - emb_dim (obj:`int`, optional, defaults to 128): The embedding dimension. - padding_idx (obj:`int`, optional, defaults to 0) : The pad token index. - num_classes (obj:`int`): All the labels that the data has. - """ - - def __init__( - self, - vocab_size, - num_classes, - emb_dim=128, - padding_idx=0, - num_filter=256, - ngram_filter_sizes=(3,), - fc_hidden_size=128, - ): - super().__init__() - self.padding_idx = padding_idx - self.embedder = nn.Embedding(vocab_size, emb_dim, padding_idx=padding_idx) - self.encoder = nlp.seq2vec.CNNEncoder( - emb_dim=emb_dim, num_filter=num_filter, ngram_filter_sizes=ngram_filter_sizes - ) - self.fc = nn.Linear(self.encoder.get_output_dim() * 2, fc_hidden_size) - self.output_layer = nn.Linear(fc_hidden_size, num_classes) - - def forward(self, query, title, query_seq_len=None, title_seq_len=None): - # Shape: (batch_size, num_tokens, embedding_dim) - embedded_query = self.embedder(query) - embedded_title = self.embedder(title) - # Shape: (batch_size, num_filter) - query_repr = self.encoder(embedded_query) - title_repr = self.encoder(embedded_title) - # Shape: (batch_size, 2*num_filter) - contacted = paddle.concat([query_repr, title_repr], axis=-1) - # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(contacted)) - # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - # probs = F.softmax(logits, axis=-1) - return logits diff --git a/examples/model_interpretation/task/similarity/simnet/predict.py b/examples/model_interpretation/task/similarity/simnet/predict.py deleted file mode 100644 index dec464bf4130..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/predict.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - -import paddle -import paddle.nn.functional as F -from model import SimNet -from utils import preprocess_prediction_data - -from paddlenlp.data import JiebaTokenizer, Pad, Stack, Tuple, Vocab - -# yapf: disable -parser = argparse.ArgumentParser(__doc__) -parser.add_argument('--device', choices=['cpu', 'gpu'], default="gpu", help="Select which device to train model, defaults to gpu.") -parser.add_argument("--batch_size", type=int, default=64, help="Total examples' number of a batch for training.") -parser.add_argument("--vocab_path", type=str, default="./simnet_vocab.txt", help="The path to vocabulary.") -parser.add_argument('--network', type=str, default="lstm", help="Which network you would like to choose bow, cnn, lstm or gru ?") -parser.add_argument("--params_path", type=str, default='./checkpoints/final.pdparams', help="The path of model parameter to be loaded.") -args = parser.parse_args() -# yapf: enable - - -def predict(model, data, label_map, batch_size=1, pad_token_id=0): - """ - Predicts the data labels. - - Args: - model (obj:`paddle.nn.Layer`): A model to classify texts. - data (obj:`List(Example)`): The processed data whose each element is a Example (numedtuple) object. - A Example object contains `text`(word_ids) and `seq_len`(sequence length). - label_map(obj:`dict`): The label id (key) to label str (value) map. - batch_size(obj:`int`, defaults to 1): The number of batch. - pad_token_id(obj:`int`, optional, defaults to 0): The pad token index. - - Returns: - results(obj:`dict`): All the predictions labels. - """ - - # Separates data into some batches. - batches = [data[idx : idx + batch_size] for idx in range(0, len(data), batch_size)] - - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=pad_token_id), # query_ids - Pad(axis=0, pad_val=pad_token_id), # title_ids - Stack(dtype="int64"), # query_seq_lens - Stack(dtype="int64"), # title_seq_lens - ): [data for data in fn(samples)] - - results = [] - model.eval() - for batch in batches: - query_ids, title_ids, query_seq_lens, title_seq_lens = batchify_fn(batch) - query_ids = paddle.to_tensor(query_ids) - title_ids = paddle.to_tensor(title_ids) - query_seq_lens = paddle.to_tensor(query_seq_lens) - title_seq_lens = paddle.to_tensor(title_seq_lens) - logits = model(query_ids, title_ids, query_seq_lens, title_seq_lens) - probs = F.softmax(logits, axis=1) - idx = paddle.argmax(probs, axis=1).numpy() - idx = idx.tolist() - labels = [label_map[i] for i in idx] - results.extend(labels) - return results - - -if __name__ == "__main__": - paddle.set_device(args.device) - # Loads vocab. - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - tokenizer = JiebaTokenizer(vocab) - label_map = {0: "dissimilar", 1: "similar"} - - # Constructs the newtork. - model = SimNet(network=args.network, vocab_size=len(vocab), num_classes=len(label_map)) - - # Loads model parameters. - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - - # Firstly pre-processing prediction data and then do predict. - data = [ - ["世界上什么东西最小", "世界上什么东西最小?"], - ["光眼睛大就好看吗", "眼睛好看吗?"], - ["小蝌蚪找妈妈怎么样", "小蝌蚪找妈妈是谁画的"], - ] - examples = preprocess_prediction_data(data, tokenizer) - results = predict( - model, - examples, - label_map=label_map, - batch_size=args.batch_size, - pad_token_id=vocab.token_to_idx.get("[PAD]", 0), - ) - - for idx, text in enumerate(data): - print("Data: {} \t Label: {}".format(text, results[idx])) diff --git a/examples/model_interpretation/task/similarity/simnet/train.py b/examples/model_interpretation/task/similarity/simnet/train.py deleted file mode 100644 index ec36090726cc..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/train.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import os -import sys -from functools import partial - -import paddle - -from paddlenlp.data import Pad, Stack, Tuple, Vocab -from paddlenlp.datasets import load_dataset - -sys.path.append("../../../") -from model import SimNet # noqa: E402 -from utils import CharTokenizer, convert_example # noqa: E402 - -parser = argparse.ArgumentParser(__doc__) -parser.add_argument("--epochs", type=int, default=10, help="Number of epoches for training.") -parser.add_argument( - "--device", choices=["cpu", "gpu"], default="gpu", help="Select which device to train model, defaults to gpu." -) -parser.add_argument("--lr", type=float, default=5e-4, help="Learning rate used to train.") -parser.add_argument("--save_dir", type=str, default="checkpoints/", help="Directory to save model checkpoint") -parser.add_argument("--batch_size", type=int, default=64, help="Total examples' number of a batch for training.") -parser.add_argument( - "--vocab_path", - type=str, - default="./vocab.char", - help="The directory to dataset. Chinese version uses vocab.char while English version uses vocab_QQP", -) -parser.add_argument( - "--network", type=str, default="lstm", help="Which network you would like to choose bow, cnn, lstm or gru ?" -) -parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.") -parser.add_argument("--language", type=str, required=True, help="Language that this model based on") -args = parser.parse_args() - - -def create_dataloader(dataset, trans_fn=None, mode="train", batch_size=1, batchify_fn=None): - """ - Creats dataloader. - - Args: - dataset(obj:`paddle.io.Dataset`): Dataset instance. - trans_fn(obj:`callable`, optional, defaults to `None`): function to convert a data sample to input ids, etc. - mode(obj:`str`, optional, defaults to obj:`train`): If mode is 'train', it will shuffle the dataset randomly. - batch_size(obj:`int`, optional, defaults to 1): The sample number of a mini-batch. - batchify_fn(obj:`callable`, optional, defaults to `None`): function to generate mini-batch data by merging - the sample list, None for only stack each fields of sample in axis - 0(same as :attr::`np.stack(..., axis=0)`). - - Returns: - dataloader(obj:`paddle.io.DataLoader`): The dataloader which generates batches. - """ - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - sampler = paddle.io.DistributedBatchSampler(dataset=dataset, batch_size=batch_size, shuffle=True) - else: - sampler = paddle.io.BatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - dataloader = paddle.io.DataLoader(dataset, batch_sampler=sampler, return_list=True, collate_fn=batchify_fn) - return dataloader - - -if __name__ == "__main__": - paddle.set_device(args.device) - - # Loads vocab. - if not os.path.exists(args.vocab_path): - raise RuntimeError("The vocab_path can not be found in the path %s" % args.vocab_path) - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - - # Loads dataset. - if args.language == "ch": - train_ds, dev_ds, test_ds = load_dataset("lcqmc", splits=["train", "dev", "test"]) - else: - train_ds, dev_ds, test_ds = load_dataset("glue", "qqp", splits=["train", "dev", "test"]) - - # Constructs the newtork. - model = SimNet(network=args.network, vocab_size=len(vocab), num_classes=len(train_ds.label_list)) - model = paddle.Model(model) - - # Reads data and generates mini-batches. - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=vocab.token_to_idx.get("[PAD]", 0)), # query_ids - Pad(axis=0, pad_val=vocab.token_to_idx.get("[PAD]", 0)), # title_ids - Stack(dtype="int64"), # query_seq_lens - Stack(dtype="int64"), # title_seq_lens - Stack(dtype="int64"), # label - ): [data for data in fn(samples)] - tokenizer = CharTokenizer(vocab, args.language, "../../../punctuations") - trans_fn = partial(convert_example, tokenizer=tokenizer, is_test=False, language=args.language) - train_loader = create_dataloader( - train_ds, trans_fn=trans_fn, batch_size=args.batch_size, mode="train", batchify_fn=batchify_fn - ) - dev_loader = create_dataloader( - dev_ds, trans_fn=trans_fn, batch_size=args.batch_size, mode="validation", batchify_fn=batchify_fn - ) - test_loader = create_dataloader( - test_ds, trans_fn=trans_fn, batch_size=args.batch_size, mode="test", batchify_fn=batchify_fn - ) - - optimizer = paddle.optimizer.Adam(parameters=model.parameters(), learning_rate=args.lr) - - # Defines loss and metric. - criterion = paddle.nn.CrossEntropyLoss() - metric = paddle.metric.Accuracy() - - model.prepare(optimizer, criterion, metric) - - # Loads pre-trained parameters. - if args.init_from_ckpt: - model.load(args.init_from_ckpt) - print("Loaded checkpoint from %s" % args.init_from_ckpt) - - # Starts training and evaluating. - model.fit( - train_loader, - dev_loader, - epochs=args.epochs, - save_dir=args.save_dir, - ) diff --git a/examples/model_interpretation/task/similarity/simnet/utils.py b/examples/model_interpretation/task/similarity/simnet/utils.py deleted file mode 100644 index b2161cd48ce2..000000000000 --- a/examples/model_interpretation/task/similarity/simnet/utils.py +++ /dev/null @@ -1,211 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import numpy as np - - -def convert_example(example, tokenizer, is_test=False, language="en"): - """ - Builds model inputs from a sequence for sequence classification tasks. - It use `jieba.cut` to tokenize text. - - Args: - example(obj:`list[str]`): List of input data, containing text and label if it have label. - tokenizer(obj: paddlenlp.data.JiebaTokenizer): It use jieba to cut the chinese string. - is_test(obj:`False`, defaults to `False`): Whether the example contains label or not. - - Returns: - query_ids(obj:`list[int]`): The list of query ids. - title_ids(obj:`list[int]`): The list of title ids. - query_seq_len(obj:`int`): The input sequence query length. - title_seq_len(obj:`int`): The input sequence title length. - label(obj:`numpy.array`, data type of int64, optional): The input label if not is_test. - """ - if language == "ch": - q_name = "query" - t_name = "title" - label = "label" - else: - q_name = "sentence1" - t_name = "sentence2" - label = "labels" - - query, title = example[q_name], example[t_name] - query_ids = np.array(tokenizer.encode(query), dtype="int64") - query_seq_len = np.array(len(query_ids), dtype="int64") - title_ids = np.array(tokenizer.encode(title), dtype="int64") - title_seq_len = np.array(len(title_ids), dtype="int64") - result = [query_ids, title_ids, query_seq_len, title_seq_len] - if not is_test: - label = np.array(example[label], dtype="int64") - result.append(label) - return result - - -def preprocess_prediction_data(data, tokenizer): - """ - It process the prediction data as the format used as training. - - Args: - data (obj:`List[List[str, str]]`): - The prediction data whose each element is a text pair. - Each text will be tokenized by jieba.lcut() function. - tokenizer(obj: paddlenlp.data.JiebaTokenizer): It use jieba to cut the chinese string. - - Returns: - examples (obj:`list`): The processed data whose each element - is a `list` object, which contains - - - query_ids(obj:`list[int]`): The list of query ids. - - title_ids(obj:`list[int]`): The list of title ids. - - query_seq_len(obj:`int`): The input sequence query length. - - title_seq_len(obj:`int`): The input sequence title length. - - """ - examples = [] - for query, title in data: - query_ids = tokenizer.encode(query) - title_ids = tokenizer.encode(title) - examples.append([query_ids, title_ids, len(query_ids), len(title_ids)]) - return examples - - -def preprocess_data(data, tokenizer, language): - """ - It process the prediction data as the format used as training. - - Args: - data (obj:`List[List[str, str]]`): - The prediction data whose each element is a text pair. - Each text will be tokenized by jieba.lcut() function. - tokenizer(obj: paddlenlp.data.JiebaTokenizer): It use jieba to cut the chinese string. - - Returns: - examples (obj:`list`): The processed data whose each element - is a `list` object, which contains - - - query_ids(obj:`list[int]`): The list of query ids. - - title_ids(obj:`list[int]`): The list of title ids. - - query_seq_len(obj:`int`): The input sequence query length. - - title_seq_len(obj:`int`): The input sequence title length. - - """ - if language == "ch": - q_name = "query" - t_name = "title" - else: - q_name = "sentence1" - t_name = "sentence2" - examples = [] - for example in data: - query_ids = tokenizer.encode(example[q_name]) - title_ids = tokenizer.encode(example[t_name]) - examples.append([query_ids, title_ids, len(query_ids), len(title_ids)]) - return examples - - -def get_idx_from_word(word, word_to_idx, unk_word): - if word in word_to_idx: - return word_to_idx[word] - return word_to_idx[unk_word] - - -class CharTokenizer: - def __init__(self, vocab, language, vocab_path): - self.vocab = vocab - self.language = language - self.vocab_path = vocab_path - self.unk_token = [] - - def encode(self, sentence): - if self.language == "ch": - words = tokenizer_punc(sentence, self.vocab_path) - else: - words = sentence.strip().split() - return [get_idx_from_word(word, self.vocab.token_to_idx, self.vocab.unk_token) for word in words] - - def tokenize(self, sentence, wo_unk=True): - if self.language == "ch": - return tokenizer_punc(sentence, self.vocab_path) - else: - return sentence.strip().split() - - def convert_tokens_to_string(self, tokens): - return " ".join(tokens) - - def convert_tokens_to_ids(self, tokens): - return [get_idx_from_word(word, self.vocab.token_to_idx, self.vocab.unk_token) for word in tokens] - - -def tokenizer_lac(string, lac): - temp = "" - res = [] - for c in string: - if "\u4e00" <= c <= "\u9fff": - if temp != "": - res.extend(lac.run(temp)) - temp = "" - res.append(c) - else: - temp += c - if temp != "": - res.extend(lac.run(temp)) - return res - - -def tokenizer_punc(string, vocab_path): - res = [] - sub_string_list = string.strip().split("[MASK]") - for idx, sub_string in enumerate(sub_string_list): - temp = "" - for c in sub_string: - if "\u4e00" <= c <= "\u9fff": - if temp != "": - temp_seg = punc_split(temp, vocab_path) - res.extend(temp_seg) - temp = "" - res.append(c) - else: - temp += c - if temp != "": - temp_seg = punc_split(temp, vocab_path) - res.extend(temp_seg) - if idx < len(sub_string_list) - 1: - res.append("[MASK]") - return res - - -def punc_split(string, vocab_path): - punc_set = set() - with open(vocab_path, "r") as f: - for token in f: - punc_set.add(token.strip()) - punc_set.add(" ") - for ascii_num in range(65296, 65306): - punc_set.add(chr(ascii_num)) - for ascii_num in range(48, 58): - punc_set.add(chr(ascii_num)) - - res = [] - temp = "" - for c in string: - if c in punc_set: - if temp != "": - res.append(temp) - temp = "" - res.append(c) - else: - temp += c - if temp != "": - res.append(temp) - return res diff --git a/examples/model_interpretation/task/transformer.py b/examples/model_interpretation/task/transformer.py deleted file mode 100644 index 2504503739b0..000000000000 --- a/examples/model_interpretation/task/transformer.py +++ /dev/null @@ -1,1329 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# TODO: define the classes of Transformer neural network - -import collections -import copy - -import numpy as np -import paddle -from paddle import ParamAttr, tensor -from paddle.common_ops_import import convert_dtype -from paddle.nn import Layer, LayerList -from paddle.nn import functional as F -from paddle.nn.layer.common import Dropout, Linear -from paddle.nn.layer.norm import LayerNorm - -__all__ = [] - - -def _convert_param_attr_to_list(param_attr, n): - """ - If `param_attr` is a list or tuple, convert every element in it to a - ParamAttr instance. Otherwise, repeat `param_attr` `n` times to - construct a list, and rename every one by appending a increasing index - suffix to avoid having same names when `param_attr` contains a name. - - Parameters: - param_attr (list|tuple|ParamAttr): A list, tuple or something can be - converted to a ParamAttr instance by `ParamAttr._to_attr`. - n (int): The times to repeat to construct a list when `param_attr` - is not a list or tuple. - - Returns: - list: A list composed of each including cell's `param_attr`. - """ - if isinstance(param_attr, (list, tuple)): - assert len(param_attr) == n, "length of param_attr should be %d when it is a list/tuple" % n - param_attrs = [] - for attr in param_attr: - if isinstance(attr, bool): - if attr: - param_attrs.append(ParamAttr._to_attr(None)) - else: - param_attrs.append(False) - else: - param_attrs.append(ParamAttr._to_attr(attr)) - # param_attrs = [ParamAttr._to_attr(attr) for attr in param_attr] - elif isinstance(param_attr, bool): - param_attrs = [] - if param_attr: - param_attrs = [ParamAttr._to_attr(None) for i in range(n)] - else: - param_attrs = [False] * n - else: - param_attrs = [] - attr = ParamAttr._to_attr(param_attr) - for i in range(n): - attr_i = copy.deepcopy(attr) - if attr.name: - attr_i.name = attr_i.name + "_" + str(i) - param_attrs.append(attr_i) - return param_attrs - - -def _convert_attention_mask(attn_mask, dtype): - """ - Convert the attention mask to the target dtype we expect. - - Parameters: - attn_mask (Tensor, optional): A tensor used in multi-head attention - to prevents attention to some unwanted positions, usually the - paddings or the subsequent positions. It is a tensor with shape - broadcasted to `[batch_size, n_head, sequence_length, sequence_length]`. - When the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - dtype (VarType): The target type of `attn_mask` we expect. - - Returns: - Tensor: A Tensor with shape same as input `attn_mask`, with data type `dtype`. - """ - if attn_mask is not None and attn_mask.dtype != dtype: - attn_mask_dtype = convert_dtype(attn_mask.dtype) - if attn_mask_dtype == "bool" or "int" in attn_mask_dtype: - attn_mask = (paddle.cast(attn_mask, dtype) - 1.0) * 1e9 - else: - attn_mask = paddle.cast(attn_mask, dtype) - return attn_mask - - -class MultiHeadAttention(Layer): - """ - Attention mapps queries and a set of key-value pairs to outputs, and - Multi-Head Attention performs multiple parallel attention to jointly attending - to information from different representation subspaces. - - Please refer to `Attention Is All You Need `_ - for more details. - - Parameters: - embed_dim (int): The expected feature size in the input and output. - num_heads (int): The number of heads in multi-head attention. - dropout (float, optional): The dropout probability used on attention - weights to drop some attention targets. 0 for no dropout. Default 0 - kdim (int, optional): The feature size in key. If None, assumed equal to - `embed_dim`. Default None. - vdim (int, optional): The feature size in value. If None, assumed equal to - `embed_dim`. Default None. - need_weights (bool, optional): Indicate whether to return the attention - weights. Default False. - weight_attr(ParamAttr, optional): To specify the weight parameter property. - Default: None, which means the default weight parameter property is used. - See usage for details in :code:`ParamAttr` . - bias_attr (ParamAttr|bool, optional): To specify the bias parameter property. - Default: None, which means the default bias parameter property is used. - If it is set to False, this layer will not have trainable bias parameter. - See usage for details in :code:`ParamAttr` . - - Examples: - - .. code-block:: python - - import paddle - - # encoder input: [batch_size, sequence_length, d_model] - query = paddle.rand((2, 4, 128)) - # self attention mask: [batch_size, num_heads, query_len, query_len] - attn_mask = paddle.rand((2, 2, 4, 4)) - multi_head_attn = paddle.nn.MultiHeadAttention(128, 2) - output = multi_head_attn(query, None, None, attn_mask=attn_mask) # [2, 4, 128] - """ - - Cache = collections.namedtuple("Cache", ["k", "v"]) - StaticCache = collections.namedtuple("StaticCache", ["k", "v"]) - - def __init__( - self, - embed_dim, - num_heads, - dropout=0.0, - kdim=None, - vdim=None, - need_weights=False, - weight_attr=None, - bias_attr=None, - ): - super(MultiHeadAttention, self).__init__() - self.embed_dim = embed_dim - self.kdim = kdim if kdim is not None else embed_dim - self.vdim = vdim if vdim is not None else embed_dim - self.num_heads = num_heads - self.dropout = dropout - self.need_weights = need_weights - - self.head_dim = embed_dim // num_heads - assert self.head_dim * num_heads == self.embed_dim, "embed_dim must be divisible by num_heads" - - self.q_proj = Linear(embed_dim, embed_dim, weight_attr, bias_attr=bias_attr) - self.k_proj = Linear(self.kdim, embed_dim, weight_attr, bias_attr=bias_attr) - self.v_proj = Linear(self.vdim, embed_dim, weight_attr, bias_attr=bias_attr) - self.out_proj = Linear(embed_dim, embed_dim, weight_attr, bias_attr=bias_attr) - - def _prepare_qkv(self, query, key, value, cache=None): - r""" - Prapares linear projected queries, keys and values for usage of subsequnt - multiple parallel attention. If `cache` is not None, using cached results - to reduce redundant calculations. - - Parameters: - query (Tensor): The queries for multi-head attention. It is a - tensor with shape `[batch_size, query_length, embed_dim]`. The - data type should be float32 or float64. - key (Tensor): The keys for multi-head attention. It is - a tensor with shape `[batch_size, key_length, kdim]`. The - data type should be float32 or float64. If None, use `query` as - `key`. - value (Tensor): The values for multi-head attention. It - is a tensor with shape `[batch_size, value_length, vdim]`. - The data type should be float32 or float64. If None, use `query` as - `value`. - cache (MultiHeadAttention.Cache|MultiHeadAttention.StaticCache, optional): - It is a namedtuple with `k` and `v` as fields, and stores tensors - shaped `[batch_size, num_heads, length, embed_dim]` which are results - of linear projection, reshape and transpose calculations in - MultiHeadAttention. If is an instance of `Cache`, `k` and `v` - fields reserve intermediate results of previous positions, which - mostly used for decoder self attention. If it is an instance of - `StaticCache`, `key` and `value` args would be ignored, `k` and - `v` fields would be used as calculated results on `key` and - `value`, which mostly used for decoder-encoder cross attention. - It is only used for inference and should be None for training. - Default None. - - Returns: - tuple: A tuple including linear projected keys and values. These two \ - tensors have shapes `[batch_size, n_head, sequence_length, d_key]` \ - and `[batch_size, n_head, sequence_length, d_value]` separately, \ - and their data types are same as inputs. - """ - q = self.q_proj(query) - q = tensor.reshape(x=q, shape=[0, 0, self.num_heads, self.head_dim]) - q = tensor.transpose(x=q, perm=[0, 2, 1, 3]) - - if isinstance(cache, self.StaticCache): - # for encoder-decoder attention in inference and has cached - k, v = cache.k, cache.v - else: - k, v = self.compute_kv(key, value) - - if isinstance(cache, self.Cache): - # for decoder self-attention in inference - k = tensor.concat([cache.k, k], axis=2) - v = tensor.concat([cache.v, v], axis=2) - cache = self.Cache(k, v) - - return (q, k, v) if cache is None else (q, k, v, cache) - - def compute_kv(self, key, value): - r""" - Applies linear projection on input keys and values, then splits heads - (reshape and transpose) to get keys and values from different representation - subspaces. The results are used as key-values pairs for subsequent multiple - parallel attention. - - It is part of calculations in multi-head attention, and is provided as - a method to pre-compute and prefetch these results, thus we can use them - to construct cache for inference. - - Parameters: - key (Tensor): The keys for multi-head attention. It is a tensor - with shape `[batch_size, sequence_length, kdim]`. The data type - should be float32 or float64. - value (Tensor): The values for multi-head attention. It is a tensor - with shape `[batch_size, sequence_length, vdim]`. The data type - should be float32 or float64. - - Returns: - tuple: A tuple including transformed keys and values. Their shapes \ - both are `[batch_size, num_heads, sequence_length, embed_dim // num_heads]`, \ - and their data types are same as inputs. - """ - k = self.k_proj(key) - v = self.v_proj(value) - k = tensor.reshape(x=k, shape=[0, 0, self.num_heads, self.head_dim]) - k = tensor.transpose(x=k, perm=[0, 2, 1, 3]) - v = tensor.reshape(x=v, shape=[0, 0, self.num_heads, self.head_dim]) - v = tensor.transpose(x=v, perm=[0, 2, 1, 3]) - return k, v - - def gen_cache(self, key, value=None, type=Cache): - """ - Generates cache for `forward` usage in inference accroding to arguments. - The generated cache is an instance of `MultiHeadAttention.Cache` or an - instance of `MultiHeadAttention.StaticCache`. - - `Cache` or `StaticCache` is namedtuple with `k` and `v` as fields, - and it stores tensors shaped `[batch_size, num_heads, length, embed_dim]` - which are results of linear projection, reshape and transpose calculations - in MultiHeadAttention. - - If the generated cache is an instance of `Cache`, `k` and `v` fields - reserve intermediate result tensors of previous positions, and the tensors - are incremental among decoding steps, which mostly are used for decoder - decoder self attention. - - If the generated cache is an instance of `StaticCache`, `k` and `v` fields - would be used as calculated result tensors on keys an values in `forward`, - and the tensors keep unchanged among decoding steps, which are mostly used - for decoder-encoder cross attention. - - The cache is generated as follows: - - 1. If `type` is `StaticCache`, apply `compute_kv(key, value)` and use the - results to create an instance of `StaticCache`. - - 2. If `type` is `Cache` and `value` is None, generate empty tensors shaped - `[batch_size, num_heads, 0, embed_dim // num_heads]` and use the results - to create an instance of `Cache`, where `batch_size` is from the first - dimension of `key`. - - 3. If `type` is `Cache` and `value` is not None, use `key`, `value` to create - an instance of `Cache`. - - Parameters: - key (Tensor): The keys for multi-head attention. It is - a tensor with shape `[batch_size, key_length, kdim]`. The - data type should be float32 or float64. If `value` is None, - it is only for batch size and data type reference. - value (Tensor, optional): The values for multi-head attention. It - is a tensor with shape `[batch_size, value_length, vdim]`. - The data type should be float32 or float64. If None, `key` is only - for batch size reference. Default None. - type (type): It should be `MultiHeadAttention.StaticCache` or - `MultiHeadAttention.Cache` to indicate the cache type to generate. - - Returns: - namedtuple: an instance of `Cache` or `StaticCache` accordingly. - """ - if type == MultiHeadAttention.StaticCache: # static_kv - k, v = self.compute_kv(key, value) - return self.StaticCache(k, v) - elif value is None: # incremental_state - k = paddle.full(shape=[key.shape[0], self.num_heads, 0, self.head_dim], dtype=key.dtype, fill_value=0) - v = paddle.full(shape=[key.shape[0], 2, self.num_heads, 0, self.head_dim], dtype=key.dtype, fill_value=0) - return self.Cache(k, v) - else: - # incremental_state with initial value, mainly for usage like UniLM - return self.Cache(key, value) - - def forward(self, query, key=None, value=None, attn_mask=None, cache=None): - r""" - Applies multi-head attention to map queries and a set of key-value pairs - to outputs. - - Parameters: - query (Tensor): The queries for multi-head attention. It is a - tensor with shape `[batch_size, query_length, embed_dim]`. The - data type should be float32 or float64. - key (Tensor, optional): The keys for multi-head attention. It is - a tensor with shape `[batch_size, key_length, kdim]`. The - data type should be float32 or float64. If None, use `query` as - `key`. Default None. - value (Tensor, optional): The values for multi-head attention. It - is a tensor with shape `[batch_size, value_length, vdim]`. - The data type should be float32 or float64. If None, use `query` as - `value`. Default None. - attn_mask (Tensor, optional): A tensor used in multi-head attention - to prevents attention to some unwanted positions, usually the - paddings or the subsequent positions. It is a tensor with shape - broadcasted to `[batch_size, n_head, sequence_length, sequence_length]`. - When the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - cache (MultiHeadAttention.Cache|MultiHeadAttention.StaticCache, optional): - It is a namedtuple with `k` and `v` as fields, and stores tensors - shaped `[batch_size, num_heads, length, embed_dim]` which are results - of linear projection, reshape and transpose calculations in - MultiHeadAttention. If it is an instance of `Cache`, `k` and `v` - fields reserve intermediate results of previous positions, which - mostly used for decoder self attention. If it is an instance of - `StaticCache`, `key` and `value` args would be ignored, `k` and - `v` fields would be used as calculated results on `key` and - `value`, which mostly used for decoder-encoder cross attention. - It is only used for inference and should be None for training. - Default None. - - Returns: - Tensor|tuple: It is a tensor that has the same shape and data type \ - as `query`, representing attention output. Or a tuple if \ - `need_weights` is True or `cache` is not None. If `need_weights` \ - is True, except for attention output, the tuple also includes \ - the attention weights tensor shaped `[batch_size, num_heads, query_length, key_length]`. \ - If `cache` is not None, the tuple then includes the new cache \ - having the same type as `cache`, and if it is `StaticCache`, it \ - is same as the input `cache`, if it is `Cache`, the new cache \ - reserves tensors concatanating raw tensors with intermediate \ - results of current query. - """ - key = query if key is None else key - value = query if value is None else value - # compute q ,k ,v - if cache is None: - q, k, v = self._prepare_qkv(query, key, value, cache) - else: - q, k, v, cache = self._prepare_qkv(query, key, value, cache) - - # scale dot product attention - product = paddle.matmul(x=q * (self.head_dim**-0.5), y=k, transpose_y=True) - if attn_mask is not None: - # Support bool or int mask - attn_mask = _convert_attention_mask(attn_mask, product.dtype) - product = product + attn_mask - weights = F.softmax(product) - if self.dropout: - weights = F.dropout(weights, self.dropout, training=self.training, mode="upscale_in_train") - - out = tensor.matmul(weights, v) - - # combine heads - out = tensor.transpose(out, perm=[0, 2, 1, 3]) - out = tensor.reshape(x=out, shape=[0, 0, out.shape[2] * out.shape[3]]) - - # project to output - out = self.out_proj(out) - - outs = [out] - if self.need_weights: - outs.append(weights) - if cache is not None: - outs.append(cache) - return out if len(outs) == 1 else tuple(outs) - - -class TransformerEncoderLayer(Layer): - """ - TransformerEncoderLayer is composed of two sub-layers which are self (multi-head) - attention and feedforward network. Before and after each sub-layer, pre-process - and post-precess would be applied on the input and output accordingly. If - `normalize_before` is True, pre-process is layer normalization and post-precess - includes dropout, residual connection. Otherwise, no pre-process and post-precess - includes dropout, residual connection, layer normalization. - - Parameters: - d_model (int): The expected feature size in the input and output. - nhead (int): The number of heads in multi-head attention(MHA). - dim_feedforward (int): The hidden layer size in the feedforward network(FFN). - dropout (float, optional): The dropout probability used in pre-process - and post-precess of MHA and FFN sub-layer. Default 0.1 - activation (str, optional): The activation function in the feedforward - network. Default relu. - attn_dropout (float, optional): The dropout probability used - in MHA to drop some attention target. If None, use the value of - `dropout`. Default None - act_dropout (float, optional): The dropout probability used after FFN - activition. If None, use the value of `dropout`. Default None - normalize_before (bool, optional): Indicate whether to put layer normalization - into preprocessing of MHA and FFN sub-layers. If True, pre-process is layer - normalization and post-precess includes dropout, residual connection. - Otherwise, no pre-process and post-precess includes dropout, residual - connection, layer normalization. Default False - weight_attr(ParamAttr|list|tuple, optional): To specify the weight parameter property. - If it is a list/tuple, `weight_attr[0]` would be used as `weight_attr` for - MHA, and `weight_attr[1]` would be used as `weight_attr` for linear in FFN. - Otherwise, MHA and FFN both use it as `weight_attr` to create parameters. - Default: None, which means the default weight parameter property is used. - See usage for details in :code:`ParamAttr` . - bias_attr (ParamAttr|list|tuple|bool, optional): To specify the bias parameter property. - If it is a list/tuple, `bias_attr[0]` would be used as `bias_attr` for - MHA, and `bias_attr[1]` would be used as `bias_attr` for linear in FFN. - Otherwise, MHA and FFN both use it as `bias_attr` to create parameters. - The `False` value means the corresponding layer would not have trainable - bias parameter. See usage for details in :code:`ParamAttr` . Default: None, - which means the default bias parameter property is used. - - - Examples: - - .. code-block:: python - - import paddle - from paddle.nn import TransformerEncoderLayer - - # encoder input: [batch_size, src_len, d_model] - enc_input = paddle.rand((2, 4, 128)) - # self attention mask: [batch_size, n_head, src_len, src_len] - attn_mask = paddle.rand((2, 2, 4, 4)) - encoder_layer = TransformerEncoderLayer(128, 2, 512) - enc_output = encoder_layer(enc_input, attn_mask) # [2, 4, 128] - """ - - def __init__( - self, - d_model, - nhead, - dim_feedforward, - dropout=0.1, - activation="relu", - attn_dropout=None, - act_dropout=None, - normalize_before=False, - weight_attr=None, - bias_attr=None, - ): - self._config = locals() - self._config.pop("self") - self._config.pop("__class__", None) # py3 - - super(TransformerEncoderLayer, self).__init__() - attn_dropout = dropout if attn_dropout is None else attn_dropout - act_dropout = dropout if act_dropout is None else act_dropout - self.normalize_before = normalize_before - - weight_attrs = _convert_param_attr_to_list(weight_attr, 2) - bias_attrs = _convert_param_attr_to_list(bias_attr, 2) - - self.self_attn = MultiHeadAttention( - d_model, - nhead, - dropout=attn_dropout, - need_weights=True, # interpret - weight_attr=weight_attrs[0], - bias_attr=bias_attrs[0], - ) - self.linear1 = Linear(d_model, dim_feedforward, weight_attrs[1], bias_attr=bias_attrs[1]) - self.dropout = Dropout(act_dropout, mode="upscale_in_train") - self.linear2 = Linear(dim_feedforward, d_model, weight_attrs[1], bias_attr=bias_attrs[1]) - self.norm1 = LayerNorm(d_model) - self.norm2 = LayerNorm(d_model) - self.dropout1 = Dropout(dropout, mode="upscale_in_train") - self.dropout2 = Dropout(dropout, mode="upscale_in_train") - self.activation = getattr(F, activation) - - def forward(self, src, src_mask=None, cache=None): - r""" - Applies a Transformer encoder layer on the input. - - Parameters: - src (Tensor): The input of Transformer encoder layer. It is - a tensor with shape `[batch_size, sequence_length, d_model]`. - The data type should be float32 or float64. - src_mask (Tensor, optional): A tensor used in multi-head attention - to prevents attention to some unwanted positions, usually the - paddings or the subsequent positions. It is a tensor with shape - broadcasted to `[batch_size, n_head, sequence_length, sequence_length]`. - When the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - cache (Tensor, optional): It is an instance of `MultiHeadAttention.Cache`. - See `TransformerEncoderLayer.gen_cache` for more details. It is - only used for inference and should be None for training. Default - None. - - Returns: - Tensor|tuple: It is a tensor that has the same shape and data type \ - as `enc_input`, representing the output of Transformer encoder \ - layer. Or a tuple if `cache` is not None, except for encoder \ - layer output, the tuple includes the new cache which is same \ - as input `cache` argument but `incremental_cache` has an \ - incremental length. See `MultiHeadAttention.gen_cache` and \ - `MultiHeadAttention.forward` for more details. - """ - src_mask = _convert_attention_mask(src_mask, src.dtype) - - residual = src - if self.normalize_before: - src = self.norm1(src) - # Add cache for encoder for the usage like UniLM - if cache is None: - # src = self.self_attn(src, src, src, src_mask) - src, att_weights = self.self_attn(src, src, src, src_mask) # interpret - else: - # src, incremental_cache = self.self_attn(src, src, src, src_mask, cache) - src, att_weights, incremental_cache = self.self_attn(src, src, src, src_mask, cache) # interpret - - src = residual + self.dropout1(src) - if not self.normalize_before: - src = self.norm1(src) - - residual = src - if self.normalize_before: - src = self.norm2(src) - src = self.linear2(self.dropout(self.activation(self.linear1(src)))) - src = residual + self.dropout2(src) - if not self.normalize_before: - src = self.norm2(src) - # return src if cache is None else (src, incremental_cache) - return (src, att_weights) if cache is None else (src, att_weights, incremental_cache) # interpret - - def gen_cache(self, src): - r""" - Generates cache for `forward` usage. The generated cache is an - instance of `MultiHeadAttention.Cache`. - - Parameters: - src (Tensor): The input of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data - type should be float32 or float64. - - Returns: - incremental_cache: It is an instance of `MultiHeadAttention.Cache` \ - produced by `self_attn.gen_cache`, it reserves two tensors - shaped `[batch_size, nhead, 0, d_model // nhead]`. See \ - `MultiHeadAttention.gen_cache` and `MultiHeadAttention.forward` \ - for more details. - """ - incremental_cache = self.self_attn.gen_cache(src, type=self.self_attn.Cache) - return incremental_cache - - -class TransformerEncoder(Layer): - """ - TransformerEncoder is a stack of N encoder layers. - - Parameters: - encoder_layer (Layer): an instance of the `TransformerEncoderLayer`. It - would be used as the first layer, and the other layers would be created - according to the configurations of it. - num_layers (int): The number of encoder layers to be stacked. - norm (LayerNorm, optional): the layer normalization component. If provided, - apply layer normalization on the output of last encoder layer. - - Examples: - - .. code-block:: python - - import paddle - from paddle.nn import TransformerEncoderLayer, TransformerEncoder - - # encoder input: [batch_size, src_len, d_model] - enc_input = paddle.rand((2, 4, 128)) - # self attention mask: [batch_size, n_head, src_len, src_len] - attn_mask = paddle.rand((2, 2, 4, 4)) - encoder_layer = TransformerEncoderLayer(128, 2, 512) - encoder = TransformerEncoder(encoder_layer, 2) - enc_output = encoder(enc_input, attn_mask) # [2, 4, 128] - """ - - def __init__(self, encoder_layer, num_layers, norm=None): - super(TransformerEncoder, self).__init__() - self.layers = LayerList( - [(encoder_layer if i == 0 else type(encoder_layer)(**encoder_layer._config)) for i in range(num_layers)] - ) - self.num_layers = num_layers - self.norm = norm - - def forward(self, src, src_mask=None, cache=None): - r""" - Applies a stack of N Transformer encoder layers on inputs. If `norm` is - provided, also applies layer normalization on the output of last encoder - layer. - - Parameters: - src (Tensor): The input of Transformer encoder. It is a tensor - with shape `[batch_size, sequence_length, d_model]`. The data - type should be float32 or float64. - src_mask (Tensor, optional): A tensor used in multi-head attention - to prevents attention to some unwanted positions, usually the - paddings or the subsequent positions. It is a tensor with shape - broadcasted to `[batch_size, n_head, sequence_length, sequence_length]`. - When the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - cache (list, optional): It is a list, and each element in the list - is `incremental_cache` produced by `TransformerEncoderLayer.gen_cache`. - See `TransformerEncoder.gen_cache` for more details. It is only - used for inference and should be None for training. Default None. - - Returns: - Tensor|tuple: It is a tensor that has the same shape and data type \ - as `src`, representing the output of Transformer encoder. \ - Or a tuple if `cache` is not None, except for encoder output, \ - the tuple includes the new cache which is same as input `cache` \ - argument but `incremental_cache` in it has an incremental length. \ - See `MultiHeadAttention.gen_cache` and `MultiHeadAttention.forward` \ - for more details. - """ - src_mask = _convert_attention_mask(src_mask, src.dtype) - - output = src - att_weights_list = [] # interpret - new_caches = [] - for i, mod in enumerate(self.layers): - if cache is None: - # output = mod(output, src_mask=src_mask) - output, att_weights = mod(output, src_mask=src_mask) # interpret - att_weights_list.append(att_weights) - else: - # output, new_cache = mod(output, src_mask=src_mask, cache=cache[i]) - output, att_weights, new_cache = mod(output, src_mask=src_mask, cache=cache[i]) # interpret - att_weights_list.append(att_weights) - new_caches.append(new_cache) - - if self.norm is not None: - output = self.norm(output) - - # return output if cache is None else (output, new_caches) - return (output, att_weights_list) if cache is None else (output, att_weights_list, new_caches) # interpret - - def gen_cache(self, src): - r""" - Generates cache for `forward` usage. The generated cache is a list, and - each element in it is `incremental_cache` produced by - `TransformerEncoderLayer.gen_cache`. See `TransformerEncoderLayer.gen_cache` - for more details. - - Parameters: - src (Tensor): The input of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data type - should be float32 or float64. - - Returns: - list: It is a list, and each element in the list is `incremental_cache` - produced by `TransformerEncoderLayer.gen_cache`. See - `TransformerEncoderLayer.gen_cache` for more details. - """ - cache = [layer.gen_cache(src) for layer in self.layers] - return cache - - -class TransformerDecoderLayer(Layer): - """ - TransformerDecoderLayer is composed of three sub-layers which are decoder - self (multi-head) attention, decoder-encoder cross attention and feedforward - network. Before and after each sub-layer, pre-process and post-precess would - be applied on the input and output accordingly. If `normalize_before` is True, - pre-process is layer normalization and post-precess includes dropout, residual - connection. Otherwise, no pre-process and post-precess includes dropout, residual - connection, layer normalization. - - Parameters: - d_model (int): The expected feature size in the input and output. - nhead (int): The number of heads in multi-head attention(MHA). - dim_feedforward (int): The hidden layer size in the feedforward network(FFN). - dropout (float, optional): The dropout probability used in pre-process - and post-precess of MHA and FFN sub-layer. Default 0.1 - activation (str, optional): The activation function in the feedforward - network. Default relu. - attn_dropout (float, optional): The dropout probability used - in MHA to drop some attention target. If None, use the value of - `dropout`. Default None - act_dropout (float, optional): The dropout probability used after FFN - activition. If None, use the value of `dropout`. Default None - normalize_before (bool, optional): Indicate whether to put layer normalization - into preprocessing of MHA and FFN sub-layers. If True, pre-process is layer - normalization and post-precess includes dropout, residual connection. - Otherwise, no pre-process and post-precess includes dropout, residual - connection, layer normalization. Default False - weight_attr(ParamAttr|list|tuple, optional): To specify the weight parameter property. - If it is a list/tuple, `weight_attr[0]` would be used as `weight_attr` for - self attention, `weight_attr[1]` would be used as `weight_attr` for - cross attention, and `weight_attr[2]` would be used as `weight_attr` - for linear in FFN. Otherwise, the three sub-layers all uses it as - `weight_attr` to create parameters. Default: None, which means the - default weight parameter property is used. See usage for details - in :ref:`api_paddle_ParamAttr` . - bias_attr (ParamAttr|list|tuple|bool, optional): To specify the bias parameter property. - If it is a list/tuple, `bias_attr[0]` would be used as `bias_attr` for - self attention, `bias_attr[1]` would be used as `bias_attr` for - cross attention, and `bias_attr[2]` would be used as `bias_attr` - for linear in FFN. Otherwise, the three sub-layers all uses it as - `bias_attr` to create parameters. The `False` value means the - corresponding layer would not have trainable bias parameter. See - usage for details in :code:`ParamAttr` . Default: None,which means - the default bias parameter property is used. - - Examples: - - .. code-block:: python - - import paddle - from paddle.nn import TransformerDecoderLayer - - # decoder input: [batch_size, tgt_len, d_model] - dec_input = paddle.rand((2, 4, 128)) - # encoder output: [batch_size, src_len, d_model] - enc_output = paddle.rand((2, 6, 128)) - # self attention mask: [batch_size, n_head, tgt_len, tgt_len] - self_attn_mask = paddle.rand((2, 2, 4, 4)) - # cross attention mask: [batch_size, n_head, tgt_len, src_len] - cross_attn_mask = paddle.rand((2, 2, 4, 6)) - decoder_layer = TransformerDecoderLayer(128, 2, 512) - output = decoder_layer(dec_input, - enc_output, - self_attn_mask, - cross_attn_mask) # [2, 4, 128] - """ - - def __init__( - self, - d_model, - nhead, - dim_feedforward, - dropout=0.1, - activation="relu", - attn_dropout=None, - act_dropout=None, - normalize_before=False, - weight_attr=None, - bias_attr=None, - ): - self._config = locals() - self._config.pop("self") - self._config.pop("__class__", None) # py3 - - super(TransformerDecoderLayer, self).__init__() - attn_dropout = dropout if attn_dropout is None else attn_dropout - act_dropout = dropout if act_dropout is None else act_dropout - self.normalize_before = normalize_before - - weight_attrs = _convert_param_attr_to_list(weight_attr, 3) - bias_attrs = _convert_param_attr_to_list(bias_attr, 3) - - self.self_attn = MultiHeadAttention( - d_model, nhead, dropout=attn_dropout, weight_attr=weight_attrs[0], bias_attr=bias_attrs[0] - ) - self.cross_attn = MultiHeadAttention( - d_model, nhead, dropout=attn_dropout, weight_attr=weight_attrs[1], bias_attr=bias_attrs[1] - ) - self.linear1 = Linear(d_model, dim_feedforward, weight_attrs[2], bias_attr=bias_attrs[2]) - self.dropout = Dropout(act_dropout, mode="upscale_in_train") - self.linear2 = Linear(dim_feedforward, d_model, weight_attrs[2], bias_attr=bias_attrs[2]) - self.norm1 = LayerNorm(d_model) - self.norm2 = LayerNorm(d_model) - self.norm3 = LayerNorm(d_model) - self.dropout1 = Dropout(dropout, mode="upscale_in_train") - self.dropout2 = Dropout(dropout, mode="upscale_in_train") - self.dropout3 = Dropout(dropout, mode="upscale_in_train") - self.activation = getattr(F, activation) - - def forward(self, tgt, memory, tgt_mask=None, memory_mask=None, cache=None): - r""" - Applies a Transformer decoder layer on the input. - - Parameters: - tgt (Tensor): The input of Transformer decoder layer. It is a tensor - with shape `[batch_size, target_length, d_model]`. The data type - should be float32 or float64. - memory (Tensor): The output of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data type - should be float32 or float64. - tgt_mask (Tensor, optional): A tensor used in self attention - to prevents attention to some unwanted positions, usually the - the subsequent positions. It is a tensor with shape broadcasted - to `[batch_size, n_head, target_length, target_length]`. - When the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - memory_mask (Tensor, optional): A tensor used in decoder-encoder - cross attention to prevents attention to some unwanted positions, - usually the paddings. It is a tensor with shape broadcasted to - `[batch_size, n_head, target_length, source_length]`. When the - data type is bool, the unwanted positions have `False` values - and the others have `True` values. When the data type is int, - the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - cache (tuple, optional): It is a tuple( :code:`(incremental_cache, static_cache)` ), - `incremental_cache` is an instance of `MultiHeadAttention.Cache`, - `static_cache` is an instance of `MultiHeadAttention.StaticCache. - See `TransformerDecoderLayer.gen_cache` for more details. It is - only used for inference and should be None for training. Default - None. - - Returns: - Tensor|tuple: It is a tensor that has the same shape and data type \ - as `tgt`, representing the output of Transformer decoder layer. \ - Or a tuple if `cache` is not None, except for decoder layer output, \ - the tuple includes the new cache which is same as input `cache` \ - argument but `incremental_cache` in it has an incremental length. \ - See `MultiHeadAttention.gen_cache` and `MultiHeadAttention.forward` \ - for more details. - """ - tgt_mask = _convert_attention_mask(tgt_mask, tgt.dtype) - memory_mask = _convert_attention_mask(memory_mask, memory.dtype) - - residual = tgt - if self.normalize_before: - tgt = self.norm1(tgt) - if cache is None: - tgt = self.self_attn(tgt, tgt, tgt, tgt_mask, None) - else: - tgt, incremental_cache = self.self_attn(tgt, tgt, tgt, tgt_mask, cache[0]) - tgt = residual + self.dropout1(tgt) - if not self.normalize_before: - tgt = self.norm1(tgt) - - residual = tgt - if self.normalize_before: - tgt = self.norm2(tgt) - if cache is None: - tgt = self.cross_attn(tgt, memory, memory, memory_mask, None) - else: - tgt, static_cache = self.cross_attn(tgt, memory, memory, memory_mask, cache[1]) - tgt = residual + self.dropout2(tgt) - if not self.normalize_before: - tgt = self.norm2(tgt) - - residual = tgt - if self.normalize_before: - tgt = self.norm3(tgt) - tgt = self.linear2(self.dropout(self.activation(self.linear1(tgt)))) - tgt = residual + self.dropout3(tgt) - if not self.normalize_before: - tgt = self.norm3(tgt) - return tgt if cache is None else (tgt, (incremental_cache, static_cache)) - - def gen_cache(self, memory): - r""" - Generates cache for `forward` usage. The generated cache is a tuple - composed of an instance of `MultiHeadAttention.Cache` and an instance - of `MultiHeadAttention.StaticCache`. - - Parameters: - memory (Tensor): The output of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data type - should be float32 or float64. - - Returns: - tuple: It is a tuple( :code:`(incremental_cache, static_cache)` ). \ - `incremental_cache` is an instance of `MultiHeadAttention.Cache` \ - produced by `self_attn.gen_cache(memory, MultiHeadAttention.Cache)`, \ - it reserves two tensors shaped `[batch_size, nhead, 0, d_model // nhead]`. \ - `static_cache` is an instance of `MultiHeadAttention.StaticCache` \ - produced by `cross_attn.gen_cache(memory, MultiHeadAttention.StaticCache)`, \ - it reserves two tensors shaped `[batch_size, nhead, source_length, d_model // nhead]`. - See `MultiHeadAttention.gen_cache` and `MultiHeadAttention.forward` \ - for more details. - """ - incremental_cache = self.self_attn.gen_cache(memory, type=self.self_attn.Cache) - static_cache = self.cross_attn.gen_cache(memory, memory, type=self.cross_attn.StaticCache) - return incremental_cache, static_cache - - -class TransformerDecoder(Layer): - """ - TransformerDecoder is a stack of N decoder layers. - - Parameters: - decoder_layer (Layer): an instance of the `TransformerDecoderLayer`. It - would be used as the first layer, and the other layers would be created - according to the configurations of it. - num_layers (int): The number of decoder layers to be stacked. - norm (LayerNorm, optional): the layer normalization component. If provided, - apply layer normalization on the output of last encoder layer. - - Examples: - - .. code-block:: python - - import paddle - from paddle.nn import TransformerDecoderLayer, TransformerDecoder - - # decoder input: [batch_size, tgt_len, d_model] - dec_input = paddle.rand((2, 4, 128)) - # encoder output: [batch_size, src_len, d_model] - enc_output = paddle.rand((2, 6, 128)) - # self attention mask: [batch_size, n_head, tgt_len, tgt_len] - self_attn_mask = paddle.rand((2, 2, 4, 4)) - # cross attention mask: [batch_size, n_head, tgt_len, src_len] - cross_attn_mask = paddle.rand((2, 2, 4, 6)) - decoder_layer = TransformerDecoderLayer(128, 2, 512) - decoder = TransformerDecoder(decoder_layer, 2) - output = decoder(dec_input, - enc_output, - self_attn_mask, - cross_attn_mask) # [2, 4, 128] - """ - - def __init__(self, decoder_layer, num_layers, norm=None): - super(TransformerDecoder, self).__init__() - self.layers = LayerList( - [(decoder_layer if i == 0 else type(decoder_layer)(**decoder_layer._config)) for i in range(num_layers)] - ) - self.num_layers = num_layers - self.norm = norm - - def forward(self, tgt, memory, tgt_mask=None, memory_mask=None, cache=None): - r""" - Applies a stack of N Transformer decoder layers on inputs. If `norm` is - provided, also applies layer normalization on the output of last decoder - layer. - - Parameters: - tgt (Tensor): The input of Transformer decoder. It is a tensor - with shape `[batch_size, target_length, d_model]`. The data type - should be float32 or float64. - memory (Tensor): The output of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data type - should be float32 or float64. - tgt_mask (Tensor, optional): A tensor used in self attention - to prevents attention to some unwanted positions, usually the - the subsequent positions. It is a tensor with shape broadcasted - to `[batch_size, n_head, target_length, target_length]`. When - the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - memory_mask (Tensor, optional): A tensor used in decoder-encoder - cross attention to prevents attention to some unwanted positions, - usually the paddings. It is a tensor with shape broadcasted to - `[batch_size, n_head, target_length, source_length]`. When the - data type is bool, the unwanted positions have `False` values - and the others have `True` values. When the data type is int, - the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - cache (list, optional): It is a list, and each element in the list - is a tuple( :code:`(incremental_cache, static_cache)` ). See - `TransformerDecoder.gen_cache` for more details. It is only - used for inference and should be None for training. Default None. - - Returns: - Tensor|tuple: It is a tensor that has the same shape and data type \ - as `tgt`, representing the output of Transformer decoder. \ - Or a tuple if `cache` is not None, except for decoder output, \ - the tuple includes the new cache which is same as input `cache` \ - argument but `incremental_cache` in it has an incremental length. \ - See `MultiHeadAttention.gen_cache` and `MultiHeadAttention.forward` \ - for more details. - """ - tgt_mask = _convert_attention_mask(tgt_mask, tgt.dtype) - memory_mask = _convert_attention_mask(memory_mask, memory.dtype) - - output = tgt - new_caches = [] - for i, mod in enumerate(self.layers): - if cache is None: - output = mod(output, memory, tgt_mask=tgt_mask, memory_mask=memory_mask, cache=None) - else: - output, new_cache = mod(output, memory, tgt_mask=tgt_mask, memory_mask=memory_mask, cache=cache[i]) - new_caches.append(new_cache) - - if self.norm is not None: - output = self.norm(output) - - return output if cache is None else (output, new_caches) - - def gen_cache(self, memory, do_zip=False): - r""" - Generates cache for `forward` usage. The generated cache is a list, and - each element in it is a tuple( :code:`(incremental_cache, static_cache)` ) - produced by `TransformerDecoderLayer.gen_cache`. See `TransformerDecoderLayer.gen_cache` - for more details. If `do_zip` is True, apply `zip` on these tuples to get - a list with two elements. - - - Parameters: - memory (Tensor): The output of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data type - should be float32 or float64. - do_zip (bool, optional): Indicate whether to apply `zip` on the tuples. - If True, return a list with two elements. Default False - - Returns: - list: It is a list, and each element in the list is a tuple produced \ - by `TransformerDecoderLayer.gen_cache(memory)`. See `TransformerDecoderLayer.gen_cache` \ - for more details. If `do_zip` is True, apply `zip` on these tuples \ - and return a list with two elements. - """ - cache = [layer.gen_cache(memory) for layer in self.layers] - if do_zip: - cache = list(zip(*cache)) - return cache - - -class Transformer(Layer): - """ - A Transformer model composed of an instance of `TransformerEncoder` and an - instance of `TransformerDecoder`. While the embedding layer and output layer - are not included. - - Please refer to `Attention is all you need `_ , - and see `TransformerEncoder` and `TransformerDecoder` for more details. - - Users can configurate the model architecture with corresponding parameters. - Note the usage of `normalize_before` representing where to apply layer - normalization (in pre-process or post-precess of multi-head attention or FFN), - and some transformer like models are different on this, such as - `BERT `_ and `GPT2 `_ . - The default architecture here places layer normalization in post-process and - applies another layer normalization on the output of last encoder/decoder layer. - - Parameters: - d_model (int, optional): The expected feature size in the encoder/decoder input - and output. Default 512 - nhead (int, optional): The number of heads in multi-head attention(MHA). Default 8 - num_encoder_layers (int, optional): The number of layers in encoder. Default 6 - num_decoder_layers (int, optional): The number of layers in decoder. Default 6 - dim_feedforward (int, optional): The hidden layer size in the feedforward network(FFN). Default 2048 - dropout (float, optional): The dropout probability used in pre-process - and post-precess of MHA and FFN sub-layer. Default 0.1 - activation (str, optional): The activation function in the feedforward - network. Default relu. - attn_dropout (float, optional): The dropout probability used - in MHA to drop some attention target. If None, use the value of - `dropout`. Default None - act_dropout (float, optional): The dropout probability used after FFN - activition. If None, use the value of `dropout`. Default None - normalize_before (bool, optional): Indicate whether to put layer normalization - into preprocessing of MHA and FFN sub-layers. If True, pre-process is layer - normalization and post-precess includes dropout, residual connection. - Otherwise, no pre-process and post-precess includes dropout, residual - connection, layer normalization. Default False - weight_attr(ParamAttr|list|tuple, optional): To specify the weight parameter property. - If it is a list/tuple, the length of `weight_attr` could be 1, 2 or 3. If it is 3, - `weight_attr[0]` would be used as `weight_attr` for self attention, `weight_attr[1]` - would be used as `weight_attr` for cross attention of `TransformerDecoder`, - and `weight_attr[2]` would be used as `weight_attr` for linear in FFN. - If it is 2, `weight_attr[0]` would be used as `weight_attr` both for self attention - and cross attntion and `weight_attr[1]` would be used as `weight_attr` for - linear in FFN. If it is 1, `weight_attr[0]` would be used as `weight_attr` - for self attention, cross attention and linear in FFN. Otherwise, - the three sub-layers all uses it as `weight_attr` to create parameters. - Default: None, which means the default weight parameter property is used. - See usage for details - in :code:`ParamAttr` . - bias_attr (ParamAttr|list|tuple|bool, optional): To specify the bias parameter property. - If it is a list/tuple, the length of `bias_attr` could be 1, 2 or 3. If it is 3, - `bias_attr[0]` would be used as `bias_attr` for self attention, `bias_attr[1]` - would be used as `bias_attr` for cross attention of `TransformerDecoder`, - and `bias_attr[2]` would be used as `bias_attr` for linear in FFN. - If it is 2, `bias_attr[0]` would be used as `bias_attr` both for self attention - and cross attntion and `bias_attr[1]` would be used as `bias_attr` for - linear in FFN. If it is 1, `bias_attr[0]` would be used as `bias_attr` - for self attention, cross attention and linear in FFN. Otherwise, - the three sub-layers all uses it as `bias_attr` to create parameters. - The `False` value means the corresponding layer would not have trainable - bias parameter. See usage for details in :code:`ParamAttr` . - Default: None,which means the default bias parameter property is used. - custom_encoder (Layer, optional): If custom encoder is provided, use it as the encoder. - Default None - custom_decoder (Layer, optional): If custom decoder is provided, use it as the decoder. - Default None - - Examples: - - .. code-block:: python - - import paddle - from paddle.nn import Transformer - - # src: [batch_size, tgt_len, d_model] - enc_input = paddle.rand((2, 4, 128)) - # tgt: [batch_size, src_len, d_model] - dec_input = paddle.rand((2, 6, 128)) - # src_mask: [batch_size, n_head, src_len, src_len] - enc_self_attn_mask = paddle.rand((2, 2, 4, 4)) - # tgt_mask: [batch_size, n_head, tgt_len, tgt_len] - dec_self_attn_mask = paddle.rand((2, 2, 6, 6)) - # memory_mask: [batch_size, n_head, tgt_len, src_len] - cross_attn_mask = paddle.rand((2, 2, 6, 4)) - transformer = Transformer(128, 2, 4, 4, 512) - output = transformer(enc_input, - dec_input, - enc_self_attn_mask, - dec_self_attn_mask, - cross_attn_mask) # [2, 6, 128] - """ - - def __init__( - self, - d_model=512, - nhead=8, - num_encoder_layers=6, - num_decoder_layers=6, - dim_feedforward=2048, - dropout=0.1, - activation="relu", - attn_dropout=None, - act_dropout=None, - normalize_before=False, - weight_attr=None, - bias_attr=None, - custom_encoder=None, - custom_decoder=None, - ): - super(Transformer, self).__init__() - - if isinstance(bias_attr, (list, tuple)): - if len(bias_attr) == 1: - encoder_bias_attr = [bias_attr[0]] * 2 - decoder_bias_attr = [bias_attr[0]] * 3 - elif len(bias_attr) == 2: - encoder_bias_attr = bias_attr - decoder_bias_attr = [bias_attr[0], bias_attr[0], bias_attr[-1]] - elif len(bias_attr) == 3: - encoder_bias_attr = [bias_attr[0], bias_attr[-1]] - decoder_bias_attr = bias_attr - else: - assert False, "length of bias_attr should be 1 or 2 or 3 when it is a list/tuple" - else: - encoder_bias_attr = bias_attr - decoder_bias_attr = bias_attr - - if isinstance(weight_attr, (list, tuple)): - if len(weight_attr) == 1: - encoder_weight_attr = [weight_attr[0]] * 2 - decoder_weight_attr = [weight_attr[0]] * 3 - elif len(weight_attr) == 2: - encoder_weight_attr = weight_attr - decoder_weight_attr = [weight_attr[0], weight_attr[0], weight_attr[-1]] - elif len(weight_attr) == 3: - encoder_weight_attr = [weight_attr[0], weight_attr[-1]] - decoder_weight_attr = weight_attr - else: - assert False, "length of weight_attr should be 1 or 2 or 3 when it is a list/tuple" - else: - encoder_weight_attr = weight_attr - decoder_weight_attr = weight_attr - - if custom_encoder is not None: - self.encoder = custom_encoder - else: - encoder_layer = TransformerEncoderLayer( - d_model, - nhead, - dim_feedforward, - dropout, - activation, - attn_dropout, - act_dropout, - normalize_before, - encoder_weight_attr, - encoder_bias_attr, - ) - encoder_norm = LayerNorm(d_model) - self.encoder = TransformerEncoder(encoder_layer, num_encoder_layers, encoder_norm) - - if custom_decoder is not None: - self.decoder = custom_decoder - else: - decoder_layer = TransformerDecoderLayer( - d_model, - nhead, - dim_feedforward, - dropout, - activation, - attn_dropout, - act_dropout, - normalize_before, - decoder_weight_attr, - decoder_bias_attr, - ) - decoder_norm = LayerNorm(d_model) - self.decoder = TransformerDecoder(decoder_layer, num_decoder_layers, decoder_norm) - - self.d_model = d_model - self.nhead = nhead - - def forward(self, src, tgt, src_mask=None, tgt_mask=None, memory_mask=None): - r""" - Applies a Transformer model on the inputs. - - Parameters: - src (Tensor): The input of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data type - should be float32 or float64. - tgt (Tensor): The input of Transformer decoder. It is a tensor - with shape `[batch_size, target_length, d_model]`. The data type - should be float32 or float64. - memory (Tensor): The output of Transformer encoder. It is a tensor - with shape `[batch_size, source_length, d_model]`. The data type - should be float32 or float64. - src_mask (Tensor, optional): A tensor used in multi-head attention - to prevents attention to some unwanted positions, usually the - paddings or the subsequent positions. It is a tensor with shape - broadcasted to `[batch_size, n_head, sequence_length, sequence_length]`. - When the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - tgt_mask (Tensor, optional): A tensor used in self attention - to prevents attention to some unwanted positions, usually the - the subsequent positions. It is a tensor with shape broadcasted - to `[batch_size, n_head, target_length, target_length]`. When - the data type is bool, the unwanted positions have `False` - values and the others have `True` values. When the data type is - int, the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - memory_mask (Tensor, optional): A tensor used in decoder-encoder - cross attention to prevents attention to some unwanted positions, - usually the paddings. It is a tensor with shape broadcasted to - `[batch_size, n_head, target_length, source_length]`. When the - data type is bool, the unwanted positions have `False` values - and the others have `True` values. When the data type is int, - the unwanted positions have 0 values and the others have 1 - values. When the data type is float, the unwanted positions have - `-INF` values and the others have 0 values. It can be None when - nothing wanted or needed to be prevented attention to. Default None. - - Returns: - Tensor: It is a tensor that has the same shape and data type \ - as `tgt`, representing the output of Transformer decoder. - """ - src_mask = _convert_attention_mask(src_mask, src.dtype) - memory = self.encoder(src, src_mask=src_mask) - - tgt_mask = _convert_attention_mask(tgt_mask, tgt.dtype) - memory_mask = _convert_attention_mask(memory_mask, memory.dtype) - output = self.decoder(tgt, memory, tgt_mask=tgt_mask, memory_mask=memory_mask) - return output - - def generate_square_subsequent_mask(self, length): - """ - Generate a square mask for the sequence. The mask ensures that the - predictions for position i can depend only on the known outputs at - positions less than i. - - Parameters: - length (int|Tensor): The length of sequence. - - Returns: - Tensor: Generated square mask according to the given length. - - Examples: - .. code-block:: python - - import paddle - from paddle.nn.layer.transformer import Transformer - length = 5 - d_model, n_head, dim_feedforward = 8, 4, 64 - transformer_paddle = Transformer( - d_model, n_head, dim_feedforward=dim_feedforward) - mask = transformer_paddle.generate_square_subsequent_mask(length) - print(mask) - - # [[ 0. -inf -inf -inf -inf] - # [ 0. 0. -inf -inf -inf] - # [ 0. 0. 0. -inf -inf] - # [ 0. 0. 0. 0. -inf] - # [ 0. 0. 0. 0. 0.]] - - """ - return paddle.tensor.triu((paddle.ones((length, length), dtype=paddle.get_default_dtype()) * -np.inf), 1) diff --git a/examples/model_interpretation/utils.py b/examples/model_interpretation/utils.py deleted file mode 100644 index 469dc6f797f1..000000000000 --- a/examples/model_interpretation/utils.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -"""This file contains some public functions -""" - - -def convert_tokenizer_res_to_old_version(tokenized_res): - if isinstance(tokenized_res, list): - return tokenized_res - if isinstance(tokenized_res, dict): - if len(tokenized_res["input_ids"]) == 0 or not isinstance(tokenized_res["input_ids"][0], list): - return tokenized_res - else: - res = [] - for idx in range(len(tokenized_res["input_ids"])): - temp_dict = {} - key_list = list(tokenized_res.keys()) - for key in key_list: - temp_dict[key] = tokenized_res[key][idx] - res.append(temp_dict) - return res - else: - raise ValueError("unsupported result type") - - -def cal_score(match_list, sorted_token): - over_all = [] - miss = 0 - for i in match_list: - over_all.extend(i[0]) - - score_dic = {} - for i in sorted_token: - split_time = over_all.count(i[0]) - if split_time: - score_dic[i[0]] = i[2] / split_time - else: - score_dic[i[0]] = 0.0 - if miss != 0: - print(miss) - - score = [] - for i in range(len(match_list)): - cur_score = 0.0 - for j in match_list[i][0]: - if j == -1: - continue - cur_score += score_dic[j] - score.append([str(match_list[i][1]), match_list[i][2], cur_score]) - return score - - -def match(context, context_seg, sorted_token): - result = [] - pointer1 = 0 # point at the context - pointer2 = 0 # point at the sorted_token array - for i in range(len(context_seg)): - seg_start_idx = context.find(context_seg[i], pointer1) - if seg_start_idx < 0: - print("Error: token not in context") - seg_end_idx = seg_start_idx + len(context_seg[i]) - - cur_set = [] - while pointer2 < len(sorted_token): - while pointer2 < len(sorted_token) and sorted_token[pointer2][1][1] <= seg_start_idx: - pointer2 += 1 - if pointer2 >= len(sorted_token): - break - if sorted_token[pointer2][1][0] >= seg_end_idx: - break - cur_set.append(sorted_token[pointer2][0]) - pointer2 += 1 - result.append([cur_set, i, context_seg[i]]) - pointer2 -= 1 - pointer1 = seg_end_idx - score = cal_score(result, sorted_token) - return score diff --git a/examples/multimodal/layoutlm/README.md b/examples/multimodal/layoutlm/README.md deleted file mode 100644 index f1f46392d4cd..000000000000 --- a/examples/multimodal/layoutlm/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# LayoutLM - -## 模型简介 -本项目是 [LayoutLM:Pre-training of Text and Layout for Document Image Understanding](https://arxiv.org/pdf/1912.13318v5.pdf) 在 Paddle 2.2上的开源实现, -包含了在 [FUNSD数据集](https://guillaumejaume.github.io/FUNSD/) 上的微调代码。 - -## 快速开始 -### 配置环境 -环境依赖 -- cv2 -- sentencepiece -- yacs - -安装命令: -```shell -pip install opencv-python -pip install sentencepiece -pip install yacs -``` - -### 数据准备 -处理好的FUNSD中文数据集下载地址:https://bj.bcebos.com/v1/paddlenlp/datasets/FUNSD.zip 。 - -下载并解压该数据集,解压后将数据集放置在当前目录下。 - -### 执行Fine-tuning -1. ``Sequence Labeling`` 任务启动Fine-tuning的方式如下: - ```shell - bash train_funsd.sh - - # 结果如下: - # best metrics: {'precision': 0.7642124883504194, 'recall': 0.8204102051025512, 'f1': 0.7913148371531967} - ``` - -### 数据处理 -FUNSD数据集是常用的表格理解数据集,原始的数据集下载地址:https://guillaumejaume.github.io/FUNSD/dataset.zip. -包括training_data和test_dataing两个子文件夹,包括149个训练数据和50个测试数据。数据预处理方式如下: -```shell - bash preprocess.sh -``` - -## Reference -- [LayoutLM: Pre-training of Text and Layout for Document Image Understanding](https://arxiv.org/pdf/1912.13318v5.pdf) -- [microsoft/unilm/layoutlm](https://github.com/microsoft/unilm/tree/master/layoutlm) diff --git a/examples/multimodal/layoutlm/funsd.py b/examples/multimodal/layoutlm/funsd.py deleted file mode 100644 index 4421cd3710b4..000000000000 --- a/examples/multimodal/layoutlm/funsd.py +++ /dev/null @@ -1,317 +0,0 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging -import os - -import paddle -from paddle.io import Dataset - -logger = logging.getLogger(__name__) - - -class FunsdDataset(Dataset): - def __init__(self, args, tokenizer, labels, pad_token_label_id, mode): - logger.info("Creating features from dataset file at %s", args.data_dir) - examples = read_examples_from_file(args.data_dir, mode) - features = convert_examples_to_features( - examples, - labels, - args.max_seq_length, - tokenizer, - cls_token_at_end=False, - cls_token=tokenizer.cls_token, - cls_token_segment_id=0, - sep_token=tokenizer.sep_token, - sep_token_extra=False, - pad_on_left=False, - pad_token=tokenizer.convert_tokens_to_ids([tokenizer.pad_token])[0], - pad_token_segment_id=0, - pad_token_label_id=pad_token_label_id, - ) - - self.features = features - # Convert to Tensors and build dataset - self.all_input_ids = paddle.to_tensor([f.input_ids for f in features], dtype="int64") - self.all_input_mask = paddle.to_tensor([f.input_mask for f in features], dtype="int64") - self.all_segment_ids = paddle.to_tensor([f.segment_ids for f in features], dtype="int64") - self.all_label_ids = paddle.to_tensor([f.label_ids for f in features], dtype="int64") - self.all_bboxes = paddle.to_tensor([f.boxes for f in features], dtype="int64") - - def __len__(self): - return len(self.features) - - def __getitem__(self, index): - return ( - self.all_input_ids[index], - self.all_input_mask[index], - self.all_segment_ids[index], - self.all_label_ids[index], - self.all_bboxes[index], - ) - - -class InputExample(object): - """A single training/test example for token classification.""" - - def __init__(self, guid, words, labels, boxes, actual_bboxes, file_name, page_size): - """Constructs a InputExample. - Args: - guid: Unique id for the example. - words: list. The words of the sequence. - labels: (Optional) list. The labels for each word of the sequence. This should be - specified for train and dev examples, but not for test examples. - """ - self.guid = guid - self.words = words - self.labels = labels - self.boxes = boxes - self.actual_bboxes = actual_bboxes - self.file_name = file_name - self.page_size = page_size - - -class InputFeatures(object): - """A single set of features of data.""" - - def __init__( - self, - input_ids, - input_mask, - segment_ids, - label_ids, - boxes, - actual_bboxes, - file_name, - page_size, - ): - assert ( - 0 <= all(boxes) <= 1000 - ), "Error with input bbox ({}): the coordinate value is not between 0 and 1000".format(boxes) - self.input_ids = input_ids - self.input_mask = input_mask - self.segment_ids = segment_ids - self.label_ids = label_ids - self.boxes = boxes - self.actual_bboxes = actual_bboxes - self.file_name = file_name - self.page_size = page_size - - -def read_examples_from_file(data_dir, mode): - file_path = os.path.join(data_dir, "{}.txt".format(mode)) - box_file_path = os.path.join(data_dir, "{}_box.txt".format(mode)) - image_file_path = os.path.join(data_dir, "{}_image.txt".format(mode)) - guid_index = 1 - examples = [] - with open(file_path, encoding="utf-8") as f, open(box_file_path, encoding="utf-8") as fb, open( - image_file_path, encoding="utf-8" - ) as fi: - words = [] - boxes = [] - actual_bboxes = [] - file_name = None - page_size = None - labels = [] - for line, bline, iline in zip(f, fb, fi): - if line.startswith("-DOCSTART-") or line == "" or line == "\n": - if words: - examples.append( - InputExample( - guid="{}-{}".format(mode, guid_index), - words=words, - labels=labels, - boxes=boxes, - actual_bboxes=actual_bboxes, - file_name=file_name, - page_size=page_size, - ) - ) - guid_index += 1 - words = [] - boxes = [] - actual_bboxes = [] - file_name = None - page_size = None - labels = [] - else: - splits = line.split("\t") - bsplits = bline.split("\t") - isplits = iline.split("\t") - assert len(splits) == 2 - assert len(bsplits) == 2 - assert len(isplits) == 4 - assert splits[0] == bsplits[0] - words.append(splits[0]) - if len(splits) > 1: - labels.append(splits[-1].replace("\n", "")) - box = bsplits[-1].replace("\n", "") - box = [int(b) for b in box.split()] - boxes.append(box) - actual_bbox = [int(b) for b in isplits[1].split()] - actual_bboxes.append(actual_bbox) - page_size = [int(i) for i in isplits[2].split()] - file_name = isplits[3].strip() - else: - # Examples could have no label for mode = "test" - labels.append("O") - if words: - examples.append( - InputExample( - guid=f"{mode}-{guid_index}", - words=words, - labels=labels, - boxes=boxes, - actual_bboxes=actual_bboxes, - file_name=file_name, - page_size=page_size, - ) - ) - return examples - - -def convert_examples_to_features( - examples, - label_list, - max_seq_length, - tokenizer, - cls_token_at_end=False, - cls_token="[CLS]", - cls_token_segment_id=1, - sep_token="[SEP]", - sep_token_extra=False, - pad_on_left=False, - pad_token=0, - cls_token_box=[0, 0, 0, 0], - sep_token_box=[1000, 1000, 1000, 1000], - pad_token_box=[0, 0, 0, 0], - pad_token_segment_id=0, - pad_token_label_id=-1, - sequence_a_segment_id=0, - mask_padding_with_zero=True, -): - - label_map = {label: i for i, label in enumerate(label_list)} - - features = [] - for (ex_index, example) in enumerate(examples): - file_name = example.file_name - page_size = example.page_size - width, height = page_size - if ex_index % 10000 == 0: - logger.info("Writing example %d of %d", ex_index, len(examples)) - - tokens = [] - token_boxes = [] - actual_bboxes = [] - label_ids = [] - for word, label, box, actual_bbox in zip(example.words, example.labels, example.boxes, example.actual_bboxes): - word_tokens = tokenizer.tokenize(word) - tokens.extend(word_tokens) - token_boxes.extend([box] * len(word_tokens)) - actual_bboxes.extend([actual_bbox] * len(word_tokens)) - # Use the real label id for the first token of the word, and padding ids for the remaining tokens - label_ids.extend([label_map[label]] + [pad_token_label_id] * (len(word_tokens) - 1)) - - # Account for [CLS] and [SEP] with "- 2" and with "- 3" for RoBERTa. - special_tokens_count = 3 if sep_token_extra else 2 - if len(tokens) > max_seq_length - special_tokens_count: - tokens = tokens[: (max_seq_length - special_tokens_count)] - token_boxes = token_boxes[: (max_seq_length - special_tokens_count)] - actual_bboxes = actual_bboxes[: (max_seq_length - special_tokens_count)] - label_ids = label_ids[: (max_seq_length - special_tokens_count)] - - # The convention in BERT is: - # (a) For sequence pairs: - # tokens: [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP] - # type_ids: 0 0 0 0 0 0 0 0 1 1 1 1 1 1 - # (b) For single sequences: - # tokens: [CLS] the dog is hairy . [SEP] - # type_ids: 0 0 0 0 0 0 0 - # - # Where "type_ids" are used to indicate whether this is the first - # sequence or the second sequence. The embedding vectors for `type=0` and - # `type=1` were learned during pre-training and are added to the wordpiece - # embedding vector (and position vector). This is not *strictly* necessary - # since the [SEP] token unambiguously separates the sequences, but it makes - # it easier for the model to learn the concept of sequences. - # - # For classification tasks, the first vector (corresponding to [CLS]) is - # used as the "sentence vector". Note that this only makes sense because - # the entire model is fine-tuned. - tokens += [sep_token] - token_boxes += [sep_token_box] - actual_bboxes += [[0, 0, width, height]] - label_ids += [pad_token_label_id] - if sep_token_extra: - # roberta uses an extra separator b/w pairs of sentences - tokens += [sep_token] - token_boxes += [sep_token_box] - actual_bboxes += [[0, 0, width, height]] - label_ids += [pad_token_label_id] - segment_ids = [sequence_a_segment_id] * len(tokens) - - if cls_token_at_end: - tokens += [cls_token] - token_boxes += [cls_token_box] - actual_bboxes += [[0, 0, width, height]] - label_ids += [pad_token_label_id] - segment_ids += [cls_token_segment_id] - else: - tokens = [cls_token] + tokens - token_boxes = [cls_token_box] + token_boxes - actual_bboxes = [[0, 0, width, height]] + actual_bboxes - label_ids = [pad_token_label_id] + label_ids - segment_ids = [cls_token_segment_id] + segment_ids - - input_ids = tokenizer.convert_tokens_to_ids(tokens) - - # The mask has 1 for real tokens and 0 for padding tokens. Only real - # tokens are attended to. - input_mask = [1 if mask_padding_with_zero else 0] * len(input_ids) - - # Zero-pad up to the sequence length. - padding_length = max_seq_length - len(input_ids) - if pad_on_left: - input_ids = ([pad_token] * padding_length) + input_ids - input_mask = ([0 if mask_padding_with_zero else 1] * padding_length) + input_mask - segment_ids = ([pad_token_segment_id] * padding_length) + segment_ids - label_ids = ([pad_token_label_id] * padding_length) + label_ids - token_boxes = ([pad_token_box] * padding_length) + token_boxes - else: - input_ids += [pad_token] * padding_length - input_mask += [0 if mask_padding_with_zero else 1] * padding_length - segment_ids += [pad_token_segment_id] * padding_length - label_ids += [pad_token_label_id] * padding_length - token_boxes += [pad_token_box] * padding_length - - assert len(input_ids) == max_seq_length - assert len(input_mask) == max_seq_length - assert len(segment_ids) == max_seq_length - assert len(label_ids) == max_seq_length - assert len(token_boxes) == max_seq_length - - features.append( - InputFeatures( - input_ids=input_ids, - input_mask=input_mask, - segment_ids=segment_ids, - label_ids=label_ids, - boxes=token_boxes, - actual_bboxes=actual_bboxes, - file_name=file_name, - page_size=page_size, - ) - ) - return features diff --git a/examples/multimodal/layoutlm/preprocess.py b/examples/multimodal/layoutlm/preprocess.py deleted file mode 100644 index 28b07e5ca5d8..000000000000 --- a/examples/multimodal/layoutlm/preprocess.py +++ /dev/null @@ -1,166 +0,0 @@ -import argparse -import json -import os - -from PIL import Image -from paddlenlp.transformers import AutoTokenizer - - -def bbox_string(box, width, length): - return ( - str(int(1000 * (box[0] / width))) - + " " - + str(int(1000 * (box[1] / length))) - + " " - + str(int(1000 * (box[2] / width))) - + " " - + str(int(1000 * (box[3] / length))) - ) - - -def actual_bbox_string(box, width, length): - return ( - str(box[0]) + " " + str(box[1]) + " " + str(box[2]) + " " + str(box[3]) + "\t" + str(width) + " " + str(length) - ) - - -def convert(args): - with open(os.path.join(args.output_dir, args.data_split + ".txt.tmp"), "w", encoding="utf8",) as fw, open( - os.path.join(args.output_dir, args.data_split + "_box.txt.tmp"), - "w", - encoding="utf8", - ) as fbw, open( - os.path.join(args.output_dir, args.data_split + "_image.txt.tmp"), - "w", - encoding="utf8", - ) as fiw: - for file in os.listdir(args.data_dir): - file_path = os.path.join(args.data_dir, file) - with open(file_path, "r", encoding="utf8") as f: - data = json.load(f) - image_path = file_path.replace("annotations", "images") - image_path = image_path.replace("json", "png") - file_name = os.path.basename(image_path) - image = Image.open(image_path) - width, length = image.size - for item in data["form"]: - words, label = item["words"], item["label"] - words = [w for w in words if w["text"].strip() != ""] - if len(words) == 0: - continue - if label == "other": - for w in words: - fw.write(w["text"] + "\tO\n") - fbw.write(w["text"] + "\t" + bbox_string(w["box"], width, length) + "\n") - fiw.write( - w["text"] + "\t" + actual_bbox_string(w["box"], width, length) + "\t" + file_name + "\n" - ) - else: - if len(words) == 1: - fw.write(words[0]["text"] + "\tS-" + label.upper() + "\n") - fbw.write(words[0]["text"] + "\t" + bbox_string(words[0]["box"], width, length) + "\n") - fiw.write( - words[0]["text"] - + "\t" - + actual_bbox_string(words[0]["box"], width, length) - + "\t" - + file_name - + "\n" - ) - else: - fw.write(words[0]["text"] + "\tB-" + label.upper() + "\n") - fbw.write(words[0]["text"] + "\t" + bbox_string(words[0]["box"], width, length) + "\n") - fiw.write( - words[0]["text"] - + "\t" - + actual_bbox_string(words[0]["box"], width, length) - + "\t" - + file_name - + "\n" - ) - for w in words[1:-1]: - fw.write(w["text"] + "\tI-" + label.upper() + "\n") - fbw.write(w["text"] + "\t" + bbox_string(w["box"], width, length) + "\n") - fiw.write( - w["text"] - + "\t" - + actual_bbox_string(w["box"], width, length) - + "\t" - + file_name - + "\n" - ) - fw.write(words[-1]["text"] + "\tE-" + label.upper() + "\n") - fbw.write(words[-1]["text"] + "\t" + bbox_string(words[-1]["box"], width, length) + "\n") - fiw.write( - words[-1]["text"] - + "\t" - + actual_bbox_string(words[-1]["box"], width, length) - + "\t" - + file_name - + "\n" - ) - fw.write("\n") - fbw.write("\n") - fiw.write("\n") - - -def seg_file(file_path, tokenizer, max_len): - subword_len_counter = 0 - output_path = file_path[:-4] - with open(file_path, "r", encoding="utf8") as f_p, open(output_path, "w", encoding="utf8") as fw_p: - for line in f_p: - line = line.rstrip() - - if not line: - fw_p.write(line + "\n") - subword_len_counter = 0 - continue - token = line.split("\t")[0] - - current_subwords_len = len(tokenizer.tokenize(token)) - - # Token contains strange control characters like \x96 or \x95 - # Just filter out the complete line - if current_subwords_len == 0: - continue - - if (subword_len_counter + current_subwords_len) > max_len: - fw_p.write("\n" + line + "\n") - subword_len_counter = current_subwords_len - continue - - subword_len_counter += current_subwords_len - - fw_p.write(line + "\n") - - -def seg(args): - tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path, do_lower_case=True) - seg_file( - os.path.join(args.output_dir, args.data_split + ".txt.tmp"), - tokenizer, - args.max_len, - ) - seg_file( - os.path.join(args.output_dir, args.data_split + "_box.txt.tmp"), - tokenizer, - args.max_len, - ) - seg_file( - os.path.join(args.output_dir, args.data_split + "_image.txt.tmp"), - tokenizer, - args.max_len, - ) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("--data_dir", type=str, default="data/training_data/annotations") - parser.add_argument("--data_split", type=str, default="train") - parser.add_argument("--output_dir", type=str, default="data") - parser.add_argument("--model_name_or_path", type=str, default="bert-base-uncased") - parser.add_argument("--max_len", type=int, default=510) - args = parser.parse_args() - - convert(args) - seg(args) diff --git a/examples/multimodal/layoutlm/preprocess.sh b/examples/multimodal/layoutlm/preprocess.sh deleted file mode 100644 index 2ff8dc4e317a..000000000000 --- a/examples/multimodal/layoutlm/preprocess.sh +++ /dev/null @@ -1,13 +0,0 @@ -python preprocess.py --data_dir data/training_data/annotations \ - --data_split train \ - --output_dir data \ - --model_name_or_path bert-base-uncased \ - --max_len 510 - -python preprocess.py --data_dir data/testing_data/annotations \ - --data_split test \ - --output_dir data \ - --model_name_or_path bert-base-uncased \ - --max_len 510 - -cat data/train.txt | cut -d$'\t' -f 2 | grep -v "^$"| sort | uniq > data/labels.txt \ No newline at end of file diff --git a/examples/multimodal/layoutlm/train_funsd.py b/examples/multimodal/layoutlm/train_funsd.py deleted file mode 100644 index 8021e0f752f1..000000000000 --- a/examples/multimodal/layoutlm/train_funsd.py +++ /dev/null @@ -1,282 +0,0 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import logging -import os -import random - -import numpy as np -import paddle -from funsd import FunsdDataset -from seqeval.metrics import ( - classification_report, - f1_score, - precision_score, - recall_score, -) -from tqdm import tqdm, trange - -# relative reference -from utils import parse_args - -from paddlenlp.transformers import ( - LayoutLMForTokenClassification, - LayoutLMModel, - LayoutLMTokenizer, -) - -logger = logging.getLogger(__name__) - - -def get_labels(path): - with open(path, "r") as f: - labels = f.read().splitlines() - if "O" not in labels: - labels = ["O"] + labels - return labels - - -def set_seed(args): - random.seed(args.seed) - np.random.seed(args.seed) - paddle.seed(args.seed) - - -def train(args): - logging.basicConfig( - filename=os.path.join(args.output_dir, "train.log") if paddle.distributed.get_rank() == 0 else None, - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - level=logging.INFO if paddle.distributed.get_rank() == 0 else logging.WARN, - ) - - all_labels = get_labels(args.labels) - - pad_token_label_id = paddle.nn.CrossEntropyLoss().ignore_index - - tokenizer = LayoutLMTokenizer.from_pretrained(args.model_name_or_path) - - # for training process, model is needed for the bert class - # else it can directly loaded for the downstream task - if not args.do_train: - model = LayoutLMForTokenClassification.from_pretrained(args.model_name_or_path) - else: - model = LayoutLMModel.from_pretrained(args.model_name_or_path) - model = LayoutLMForTokenClassification(model, num_classes=len(all_labels), dropout=None) - - train_dataset = FunsdDataset(args, tokenizer, all_labels, pad_token_label_id, mode="train") - train_sampler = paddle.io.DistributedBatchSampler( - train_dataset, batch_size=args.per_gpu_train_batch_size, shuffle=True - ) - - args.train_batch_size = args.per_gpu_train_batch_size * max(1, paddle.distributed.get_world_size()) - train_dataloader = paddle.io.DataLoader( - train_dataset, - batch_sampler=train_sampler, - collate_fn=None, - ) - - t_total = len(train_dataloader) // args.gradient_accumulation_steps * args.num_train_epochs - - # build linear decay with warmup lr sch - lr_scheduler = paddle.optimizer.lr.PolynomialDecay( - learning_rate=args.learning_rate, decay_steps=t_total, end_lr=0.0, power=1.0 - ) - if args.warmup_steps > 0: - lr_scheduler = paddle.optimizer.lr.LinearWarmup( - lr_scheduler, - args.warmup_steps, - start_lr=0, - end_lr=args.learning_rate, - ) - - optimizer = paddle.optimizer.AdamW( - learning_rate=lr_scheduler, - parameters=model.parameters(), - epsilon=args.adam_epsilon, - weight_decay=args.weight_decay, - ) - - loss_fct = paddle.nn.loss.CrossEntropyLoss(ignore_index=pad_token_label_id) - - # Train - logger.info("***** Running training *****") - logger.info(" Num examples = %d", len(train_dataset)) - logger.info(" Num Epochs = %d", args.num_train_epochs) - logger.info(" Instantaneous batch size per GPU = %d", args.per_gpu_train_batch_size) - logger.info( - " Total train batch size (w. parallel, distributed & accumulation) = %d", - args.train_batch_size * paddle.distributed.get_world_size(), - ) - logger.info(" Gradient Accumulation steps = %d", args.gradient_accumulation_steps) - logger.info(" Total optimization steps = %d", t_total) - - global_step = 0 - tr_loss = 0.0 - model.clear_gradients() - train_iterator = trange(int(args.num_train_epochs), desc="Epoch", disable=args.local_rank not in [-1, 0]) - set_seed(args) - for _ in train_iterator: - epoch_iterator = tqdm(train_dataloader, desc="Iteration", disable=args.local_rank not in [-1, 0]) - for step, batch in enumerate(epoch_iterator): - model.train() - inputs = { - "input_ids": batch[0], - "attention_mask": batch[1], - "token_type_ids": batch[2], - "bbox": batch[4], - } - labels = batch[3] - logits = model(**inputs) - loss = loss_fct( - logits.reshape([-1, len(all_labels)]), - labels.reshape( - [ - -1, - ] - ), - ) - - loss = loss.mean() - logger.info("train loss: {}".format(loss.numpy())) - loss.backward() - - tr_loss += loss.item() - if (step + 1) % args.gradient_accumulation_steps == 0: - optimizer.step() - lr_scheduler.step() # Update learning rate schedule - model.clear_gradients() - global_step += 1 - - if ( - paddle.distributed.get_rank() == 0 - and args.logging_steps > 0 - and global_step % args.logging_steps == 0 - ): - # Log metrics - if ( - paddle.distributed.get_rank() == 0 and args.evaluate_during_training - ): # Only evaluate when single GPU otherwise metrics may not average well - results, _ = evaluate( - args, - model, - tokenizer, - all_labels, - loss_fct, - pad_token_label_id, - mode="test", - ) - logger.info("results: {}".format(results)) - - if args.local_rank in [-1, 0] and args.save_steps > 0 and global_step % args.save_steps == 0: - # Save model checkpoint - output_dir = os.path.join(args.output_dir, "checkpoint-{}".format(global_step)) - os.makedirs(output_dir, exist_ok=True) - if paddle.distributed.get_rank() == 0: - model.save_pretrained(output_dir) - tokenizer.save_pretrained(output_dir) - paddle.save(args, os.path.join(output_dir, "training_args.bin")) - logger.info("Saving model checkpoint to %s", output_dir) - - if args.max_steps > 0 and global_step > args.max_steps: - epoch_iterator.close() - break - if args.max_steps > 0 and global_step > args.max_steps: - train_iterator.close() - break - - return global_step, tr_loss / global_step - - -def evaluate(args, model, tokenizer, all_labels, loss_fct, pad_token_label_id, mode, prefix=""): - eval_dataset = FunsdDataset(args, tokenizer, all_labels, pad_token_label_id, mode=mode) - args.eval_batch_size = args.per_gpu_eval_batch_size * max(1, paddle.distributed.get_world_size()) - eval_dataloader = paddle.io.DataLoader( - eval_dataset, - batch_size=args.eval_batch_size, - collate_fn=None, - ) - - # Eval - logger.info("***** Running evaluation %s *****", prefix) - logger.info(" Num examples = %d", len(eval_dataset)) - logger.info(" Batch size = %d", args.eval_batch_size) - eval_loss = 0.0 - nb_eval_steps = 0 - preds = None - out_label_ids = None - model.eval() - for batch in tqdm(eval_dataloader, desc="Evaluating"): - with paddle.no_grad(): - inputs = { - "input_ids": batch[0], - "attention_mask": batch[1], - "token_type_ids": batch[2], - "bbox": batch[4], - } - labels = batch[3] - logits = model(**inputs) - tmp_eval_loss = loss_fct( - logits.reshape([-1, len(all_labels)]), - labels.reshape( - [ - -1, - ] - ), - ) - tmp_eval_loss = tmp_eval_loss.mean() - eval_loss += tmp_eval_loss.item() - - nb_eval_steps += 1 - if preds is None: - preds = logits.numpy() - out_label_ids = labels.numpy() - else: - preds = np.append(preds, logits.numpy(), axis=0) - out_label_ids = np.append(out_label_ids, labels.numpy(), axis=0) - - eval_loss = eval_loss / nb_eval_steps - preds = np.argmax(preds, axis=2) - - label_map = {i: label for i, label in enumerate(all_labels)} - out_label_list = [[] for _ in range(out_label_ids.shape[0])] - preds_list = [[] for _ in range(out_label_ids.shape[0])] - - for i in range(out_label_ids.shape[0]): - for j in range(out_label_ids.shape[1]): - if out_label_ids[i, j] != pad_token_label_id: - out_label_list[i].append(label_map[out_label_ids[i][j]]) - preds_list[i].append(label_map[preds[i][j]]) - - results = { - "loss": eval_loss, - "precision": precision_score(out_label_list, preds_list), - "recall": recall_score(out_label_list, preds_list), - "f1": f1_score(out_label_list, preds_list), - } - - report = classification_report(out_label_list, preds_list) - logger.info("\n" + report) - - logger.info("***** Eval results %s *****", prefix) - for key in sorted(results.keys()): - logger.info(" %s = %s", key, str(results[key])) - - return results, preds - - -if __name__ == "__main__": - args = parse_args() - os.makedirs(args.output_dir, exist_ok=True) - train(args) diff --git a/examples/multimodal/layoutlm/train_funsd.sh b/examples/multimodal/layoutlm/train_funsd.sh deleted file mode 100644 index cfd65d6c3ba1..000000000000 --- a/examples/multimodal/layoutlm/train_funsd.sh +++ /dev/null @@ -1,17 +0,0 @@ -export CUDA_VISIBLE_DEVICES=7 - -python3.7 train_funsd.py \ - --data_dir "./data/" \ - --model_name_or_path "layoutlm-base-uncased" \ - --do_lower_case \ - --max_seq_length 512 \ - --do_train \ - --do_eval \ - --num_train_epochs 100 \ - --logging_steps 10 \ - --save_steps 500 \ - --output_dir "output/" \ - --labels "./data/labels.txt" \ - --per_gpu_train_batch_size 16 \ - --per_gpu_eval_batch_size 16 \ - --evaluate_during_training diff --git a/examples/multimodal/layoutlm/utils.py b/examples/multimodal/layoutlm/utils.py deleted file mode 100644 index 6e3c4bce7404..000000000000 --- a/examples/multimodal/layoutlm/utils.py +++ /dev/null @@ -1,188 +0,0 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import absolute_import, division, print_function - -import argparse - - -def parse_args(): - parser = argparse.ArgumentParser() - - # Required parameters - parser.add_argument( - "--data_dir", - default=None, - type=str, - required=True, - help="The input data dir. Should contain the training files for the CoNLL-2003 NER task.", - ) - parser.add_argument( - "--model_name_or_path", - default=None, - type=str, - required=True, - ) - parser.add_argument( - "--weights_path", - default=None, - type=str, - required=False, - ) - - parser.add_argument( - "--output_dir", - default=None, - type=str, - required=True, - help="The output directory where the model predictions and checkpoints will be written.", - ) - - # Other parameters - parser.add_argument( - "--labels", - default="", - type=str, - help="Path to a file containing all labels. If not specified, CoNLL-2003 labels are used.", - ) - parser.add_argument( - "--config_name", - default="", - type=str, - help="Pretrained config name or path if not the same as model_name", - ) - parser.add_argument( - "--tokenizer_name", - default="", - type=str, - help="Pretrained tokenizer name or path if not the same as model_name", - ) - parser.add_argument( - "--cache_dir", - default="", - type=str, - help="Where do you want to store the pre-trained models downloaded from s3", - ) - parser.add_argument( - "--max_seq_length", - default=512, - type=int, - help="The maximum total input sequence length after tokenization. Sequences longer " - "than this will be truncated, sequences shorter will be padded.", - ) - parser.add_argument("--do_train", action="store_true", help="Whether to run training.") - parser.add_argument("--do_eval", action="store_true", help="Whether to run eval on the dev set.") - parser.add_argument( - "--do_predict", - action="store_true", - help="Whether to run predictions on the test set.", - ) - parser.add_argument( - "--evaluate_during_training", - action="store_true", - help="Whether to run evaluation during training at each logging step.", - ) - parser.add_argument( - "--do_lower_case", - action="store_true", - help="Set this flag if you are using an uncased model.", - ) - - parser.add_argument( - "--per_gpu_train_batch_size", - default=8, - type=int, - help="Batch size per GPU/CPU for training.", - ) - parser.add_argument( - "--per_gpu_eval_batch_size", - default=8, - type=int, - help="Batch size per GPU/CPU for evaluation.", - ) - parser.add_argument( - "--gradient_accumulation_steps", - type=int, - default=1, - help="Number of updates steps to accumulate before performing a backward/update pass.", - ) - parser.add_argument( - "--learning_rate", - default=5e-5, - type=float, - help="The initial learning rate for Adam.", - ) - parser.add_argument("--weight_decay", default=0.0, type=float, help="Weight decay if we apply some.") - parser.add_argument("--adam_epsilon", default=1e-8, type=float, help="Epsilon for Adam optimizer.") - parser.add_argument("--max_grad_norm", default=1.0, type=float, help="Max gradient norm.") - parser.add_argument( - "--num_train_epochs", - default=3, - type=int, - help="Total number of training epochs to perform.", - ) - parser.add_argument( - "--max_steps", - default=-1, - type=int, - help="If > 0: set total number of training steps to perform. Override num_train_epochs.", - ) - parser.add_argument("--warmup_steps", default=0, type=int, help="Linear warmup over warmup_steps.") - - parser.add_argument("--logging_steps", type=int, default=10, help="Log every X updates steps.") - parser.add_argument( - "--save_steps", - type=int, - default=50, - help="Save checkpoint every X updates steps.", - ) - parser.add_argument( - "--eval_all_checkpoints", - action="store_true", - help="Evaluate all checkpoints starting with the same prefix as model_name ending and ending with step number", - ) - parser.add_argument("--no_cuda", action="store_true", help="Avoid using CUDA when available") - parser.add_argument( - "--overwrite_output_dir", - action="store_true", - help="Overwrite the content of the output directory", - ) - parser.add_argument( - "--overwrite_cache", - action="store_true", - help="Overwrite the cached training and evaluation sets", - ) - parser.add_argument("--seed", type=int, default=42, help="random seed for initialization") - parser.add_argument( - "--fp16", - action="store_true", - help="Whether to use 16-bit (mixed) precision instead of 32-bit", - ) - parser.add_argument( - "--fp16_opt_level", - type=str, - default="O1", - help="For fp16: AMP optimization level selected in ['O0', 'O1', 'O2', and 'O3']." - "See details at https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/amp/auto_cast_cn.html", - ) - parser.add_argument( - "--local_rank", - type=int, - default=-1, - help="For distributed training: local_rank", - ) - parser.add_argument("--server_ip", type=str, default="", help="For distant debugging.") - parser.add_argument("--server_port", type=str, default="", help="For distant debugging.") - args = parser.parse_args() - return args diff --git a/examples/multimodal/layoutxlm/README.md b/examples/multimodal/layoutxlm/README.md deleted file mode 100644 index 03c0a93c6a20..000000000000 --- a/examples/multimodal/layoutxlm/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# LayoutXLM - -## 模型简介 -本项目是 [LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding](https://arxiv.org/pdf/2104.08836.pdf) 在 Paddle 2.2上的开源实现, -包含了在 [XFUND数据集](https://github.com/doc-analysis/XFUND) 上的微调代码。 - -## 快速开始 -### 配置环境 -环境依赖 -- cv2 -- sentencepiece -- yacs - -安装命令: -```shell -pip install opencv-python -pip install sentencepiece -pip install yacs -``` - -### 数据准备 -处理好的XFUND中文数据集下载地址:https://bj.bcebos.com/v1/paddlenlp/datasets/XFUND.zip 。 - -下载并解压该数据集,解压后将数据集放置在当前目录下。 - -### 执行Fine-tuning -1. ``Semantic Entity Recognition`` 任务启动Fine-tuning的方式如下: - ```shell - bash run_xfun_ser.sh - - # 结果如下: - # best metrics: {'precision': 0.8514686248331108, 'recall': 0.9354602126879354, 'f1': 0.8914904770225406} - ``` - -2. ``Relation Extraction`` 任务启动Fine-tuning的方式如下: - ```shell - bash run_xfun_re.sh - - # 结果如下: - # best metrics: {'precision': 0.6788935658448587, 'recall': 0.7743484224965707, 'f1': 0.7234860621595642} - ``` - -## Reference -- [LayoutXLM: Multimodal Pre-training for Multilingual Visually-rich Document Understanding](https://arxiv.org/pdf/2104.08836.pdf) -- [microsoft/unilm/layoutxlm](https://github.com/microsoft/unilm/tree/master/layoutxlm) diff --git a/examples/multimodal/layoutxlm/compare.py b/examples/multimodal/layoutxlm/compare.py deleted file mode 100644 index 120f651c177a..000000000000 --- a/examples/multimodal/layoutxlm/compare.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import sys - -import numpy as np -import paddle -import torch - -sys.path.insert(0, "../../../") - - -def get_input_demo(platform="paddle", device="cpu"): - info = paddle.load("fake_input_paddle_xlm.data") - # imgs = np.random.rand(info["input_ids"].shape[0], 3, 224, 224).astype(np.float32) - # info["image"] = paddle.to_tensor(imgs) - if platform == "torch": - info = {key: torch.tensor(info[key].numpy()) for key in info} - if device == "gpu": - info = {key: info[key].cuda() for key in info} - return info - - -def test_layoutlm_paddle(): - from paddlenlp.transformers import LayoutXLMModel - - model = LayoutXLMModel.from_pretrained("layoutxlm-base-uncased") - model.eval() - - paddle.save(model.state_dict(), "v2.pdparams") - - batch_input = get_input_demo(platform="paddle", device="gpu") - with paddle.no_grad(): - outputs = model( - input_ids=batch_input["input_ids"], - bbox=batch_input["bbox"], - image=batch_input["image"], - attention_mask=batch_input["attention_mask"], - ) - sequence_output = outputs[0] - pooled_output = outputs[1] - return sequence_output, pooled_output - - -def test_layoutlm_torch(): - # import pytorch models - from layoutlmft.models.layoutxlm import LayoutXLMModel - - model = LayoutXLMModel.from_pretrained("microsoft/layoutxlm-base") - model.eval() - model = model.cuda() - - batch_input = get_input_demo(platform="torch", device="gpu") - - outputs = model( - input_ids=batch_input["input_ids"], - bbox=batch_input["bbox"], - image=batch_input["image"], - attention_mask=batch_input["attention_mask"], - ) - sequence_output = outputs[0] - pooled_output = outputs[1] - return sequence_output, pooled_output - - -def get_statistic_info(x, y): - mean_abs_diff = np.mean(np.abs(x - y)) - max_abs_diff = np.max(np.abs(x - y)) - return mean_abs_diff, max_abs_diff - - -if __name__ == "__main__": - - print("\n====test_layoutxlm_torch=====") - torch_hidden_out, torch_pool_out = test_layoutlm_torch() - torch_hidden_out = torch_hidden_out.cpu().detach().numpy() - torch_pool_out = torch_pool_out.cpu().detach().numpy() - print(torch_hidden_out.shape, torch_pool_out.shape) - - print("\n====test_layoutxlm_paddle=====") - paddle_hidden_out, paddle_pool_out = test_layoutlm_paddle() - paddle_hidden_out = paddle_hidden_out.numpy() - paddle_pool_out = paddle_pool_out.numpy() - print(paddle_hidden_out.shape, paddle_pool_out.shape) - - mean_abs_diff, max_abs_diff = get_statistic_info(torch_hidden_out, paddle_hidden_out) - print("======hidden_out diff info====") - print("\t mean_abs_diff: {}".format(mean_abs_diff)) - print("\t max_abs_diff: {}".format(max_abs_diff)) - - mean_abs_diff, max_abs_diff = get_statistic_info(torch_pool_out, paddle_pool_out) - print("======pool_out diff info====") - print("\t mean_abs_diff: {}".format(mean_abs_diff)) - print("\t max_abs_diff: {}".format(max_abs_diff)) diff --git a/examples/multimodal/layoutxlm/run_xfun_re.py b/examples/multimodal/layoutxlm/run_xfun_re.py deleted file mode 100644 index 13e31b27b99c..000000000000 --- a/examples/multimodal/layoutxlm/run_xfun_re.py +++ /dev/null @@ -1,406 +0,0 @@ -import sys -import os -import random -import numbers -import logging - -import argparse -import paddle -import numpy as np -from paddlenlp.transformers import LayoutXLMModel, LayoutXLMTokenizer, LayoutXLMForRelationExtraction -from xfun import XFUN - -# Todo: delete the following line after the release of v2.2 -sys.path.insert(0, "../../../") -logger = logging.getLogger(__name__) - - -class DataCollator: - def __call__(self, batch): - data_dict = {} - to_tensor_keys = [] - for sample in batch: - for k, v in sample.items(): - if k not in data_dict: - data_dict[k] = [] - if isinstance(v, (np.ndarray, paddle.Tensor, numbers.Number)): - if k not in to_tensor_keys: - to_tensor_keys.append(k) - data_dict[k].append(v) - for k in to_tensor_keys: - data_dict[k] = paddle.to_tensor(data_dict[k]) - return data_dict - - -def parse_args(): - parser = argparse.ArgumentParser() - # Required parameters - # yapf: disable - parser.add_argument("--model_name_or_path", default=None, type=str, required=True,) - parser.add_argument("--train_data_dir", default=None, type=str, required=False,) - parser.add_argument("--train_label_path", default=None, type=str, required=False,) - parser.add_argument("--eval_data_dir", default=None, type=str, required=False,) - parser.add_argument("--eval_label_path", default=None, type=str, required=False,) - parser.add_argument("--use_vdl", default=False, type=bool, required=False,) - parser.add_argument("--output_dir", default=None, type=str, required=True,) - parser.add_argument("--max_seq_length", default=512, type=int,) - parser.add_argument("--evaluate_during_training", action="store_true",) - parser.add_argument("--per_gpu_train_batch_size", default=8, type=int, help="Batch size per GPU/CPU for training.",) - parser.add_argument("--per_gpu_eval_batch_size", default=8, type=int, help="Batch size per GPU/CPU for eval.",) - parser.add_argument("--learning_rate", default=5e-5, type=float, help="The initial learning rate for Adam.",) - parser.add_argument("--weight_decay", default=0.0, type=float, help="Weight decay if we apply some.",) - parser.add_argument("--adam_epsilon", default=1e-8, type=float, help="Epsilon for Adam optimizer.",) - parser.add_argument("--max_grad_norm", default=1.0, type=float, help="Max gradient norm.",) - parser.add_argument("--num_train_epochs", default=3, type=int, help="Total number of training epochs to perform.",) - parser.add_argument("--warmup_steps", default=0, type=int, help="Linear warmup over warmup_steps.",) - parser.add_argument("--eval_steps", type=int, default=10, help="eval every X updates steps.",) - parser.add_argument("--save_steps", type=int, default=50, help="Save checkpoint every X updates steps.",) - parser.add_argument("--seed", type=int, default=42, help="random seed for initialization",) - # yapf: enable - args = parser.parse_args() - return args - - -def set_seed(args): - random.seed(args.seed) - np.random.seed(args.seed) - paddle.seed(args.seed) - - -def get_label_maps(): - labels = ["O", "B-QUESTION", "B-ANSWER", "B-HEADER", "I-ANSWER", "I-QUESTION", "I-HEADER"] - label2id_map = {label: idx for idx, label in enumerate(labels)} - id2label_map = {idx: label for idx, label in enumerate(labels)} - return label2id_map, id2label_map - - -def cal_metric(re_preds, re_labels, entities): - gt_relations = [] - for b in range(len(re_labels)): - rel_sent = [] - for head, tail in zip(re_labels[b]["head"], re_labels[b]["tail"]): - rel = {} - rel["head_id"] = head - rel["head"] = (entities[b]["start"][rel["head_id"]], entities[b]["end"][rel["head_id"]]) - rel["head_type"] = entities[b]["label"][rel["head_id"]] - - rel["tail_id"] = tail - rel["tail"] = (entities[b]["start"][rel["tail_id"]], entities[b]["end"][rel["tail_id"]]) - rel["tail_type"] = entities[b]["label"][rel["tail_id"]] - - rel["type"] = 1 - rel_sent.append(rel) - gt_relations.append(rel_sent) - re_metrics = re_score(re_preds, gt_relations, mode="boundaries") - return re_metrics - - -def re_score(pred_relations, gt_relations, mode="strict"): - """Evaluate RE predictions - - Args: - pred_relations (list) : list of list of predicted relations (several relations in each sentence) - gt_relations (list) : list of list of ground truth relations - - rel = { "head": (start_idx (inclusive), end_idx (exclusive)), - "tail": (start_idx (inclusive), end_idx (exclusive)), - "head_type": ent_type, - "tail_type": ent_type, - "type": rel_type} - - vocab (Vocab) : dataset vocabulary - mode (str) : in 'strict' or 'boundaries'""" - - assert mode in ["strict", "boundaries"] - - relation_types = [v for v in [0, 1] if not v == 0] - scores = {rel: {"tp": 0, "fp": 0, "fn": 0} for rel in relation_types + ["ALL"]} - - # Count GT relations and Predicted relations - n_sents = len(gt_relations) - n_rels = sum([len([rel for rel in sent]) for sent in gt_relations]) - n_found = sum([len([rel for rel in sent]) for sent in pred_relations]) - - # Count TP, FP and FN per type - for pred_sent, gt_sent in zip(pred_relations, gt_relations): - for rel_type in relation_types: - # strict mode takes argument types into account - if mode == "strict": - pred_rels = { - (rel["head"], rel["head_type"], rel["tail"], rel["tail_type"]) - for rel in pred_sent - if rel["type"] == rel_type - } - gt_rels = { - (rel["head"], rel["head_type"], rel["tail"], rel["tail_type"]) - for rel in gt_sent - if rel["type"] == rel_type - } - - # boundaries mode only takes argument spans into account - elif mode == "boundaries": - pred_rels = {(rel["head"], rel["tail"]) for rel in pred_sent if rel["type"] == rel_type} - gt_rels = {(rel["head"], rel["tail"]) for rel in gt_sent if rel["type"] == rel_type} - - scores[rel_type]["tp"] += len(pred_rels & gt_rels) - scores[rel_type]["fp"] += len(pred_rels - gt_rels) - scores[rel_type]["fn"] += len(gt_rels - pred_rels) - - # Compute per entity Precision / Recall / F1 - for rel_type in scores.keys(): - if scores[rel_type]["tp"]: - scores[rel_type]["p"] = scores[rel_type]["tp"] / (scores[rel_type]["fp"] + scores[rel_type]["tp"]) - scores[rel_type]["r"] = scores[rel_type]["tp"] / (scores[rel_type]["fn"] + scores[rel_type]["tp"]) - else: - scores[rel_type]["p"], scores[rel_type]["r"] = 0, 0 - - if not scores[rel_type]["p"] + scores[rel_type]["r"] == 0: - scores[rel_type]["f1"] = ( - 2 * scores[rel_type]["p"] * scores[rel_type]["r"] / (scores[rel_type]["p"] + scores[rel_type]["r"]) - ) - else: - scores[rel_type]["f1"] = 0 - - # Compute micro F1 Scores - tp = sum([scores[rel_type]["tp"] for rel_type in relation_types]) - fp = sum([scores[rel_type]["fp"] for rel_type in relation_types]) - fn = sum([scores[rel_type]["fn"] for rel_type in relation_types]) - - if tp: - precision = tp / (tp + fp) - recall = tp / (tp + fn) - f1 = 2 * precision * recall / (precision + recall) - - else: - precision, recall, f1 = 0, 0, 0 - - scores["ALL"]["p"] = precision - scores["ALL"]["r"] = recall - scores["ALL"]["f1"] = f1 - scores["ALL"]["tp"] = tp - scores["ALL"]["fp"] = fp - scores["ALL"]["fn"] = fn - - # Compute Macro F1 Scores - scores["ALL"]["Macro_f1"] = np.mean([scores[ent_type]["f1"] for ent_type in relation_types]) - scores["ALL"]["Macro_p"] = np.mean([scores[ent_type]["p"] for ent_type in relation_types]) - scores["ALL"]["Macro_r"] = np.mean([scores[ent_type]["r"] for ent_type in relation_types]) - - logger.info(f"RE Evaluation in *** {mode.upper()} *** mode") - - logger.info( - "processed {} sentences with {} relations; found: {} relations; correct: {}.".format( - n_sents, n_rels, n_found, tp - ) - ) - logger.info( - "\tALL\t TP: {};\tFP: {};\tFN: {}".format(scores["ALL"]["tp"], scores["ALL"]["fp"], scores["ALL"]["fn"]) - ) - logger.info("\t\t(m avg): precision: {:.2f};\trecall: {:.2f};\tf1: {:.2f} (micro)".format(precision, recall, f1)) - logger.info( - "\t\t(M avg): precision: {:.2f};\trecall: {:.2f};\tf1: {:.2f} (Macro)\n".format( - scores["ALL"]["Macro_p"], scores["ALL"]["Macro_r"], scores["ALL"]["Macro_f1"] - ) - ) - - for rel_type in relation_types: - logger.info( - "\t{}: \tTP: {};\tFP: {};\tFN: {};\tprecision: {:.2f};\trecall: {:.2f};\tf1: {:.2f};\t{}".format( - rel_type, - scores[rel_type]["tp"], - scores[rel_type]["fp"], - scores[rel_type]["fn"], - scores[rel_type]["p"], - scores[rel_type]["r"], - scores[rel_type]["f1"], - scores[rel_type]["tp"] + scores[rel_type]["fp"], - ) - ) - - return scores - - -def evaluate(model, eval_dataloader, logger, prefix=""): - # Eval! - logger.info(f"***** Running evaluation {prefix} *****") - logger.info(f" Num examples = {len(eval_dataloader.dataset)}") - - re_preds = [] - re_labels = [] - entities = [] - eval_loss = 0.0 - model.eval() - for idx, batch in enumerate(eval_dataloader): - with paddle.no_grad(): - outputs = model(**batch) - loss = outputs["loss"].mean().item() - if paddle.distributed.get_rank() == 0: - logger.info(f"[Eval] process: {idx}/{len(eval_dataloader)}, loss: {loss:.5f}") - - eval_loss += loss - re_preds.extend(outputs["pred_relations"]) - re_labels.extend(batch["relations"]) - entities.extend(outputs["entities"]) - re_metrics = cal_metric(re_preds, re_labels, entities) - re_metrics = { - "precision": re_metrics["ALL"]["p"], - "recall": re_metrics["ALL"]["r"], - "f1": re_metrics["ALL"]["f1"], - } - model.train() - return re_metrics - - -def train(args): - os.makedirs(args.output_dir, exist_ok=True) - set_seed(args) - - label2id_map, id2label_map = get_label_maps() - pad_token_label_id = paddle.nn.CrossEntropyLoss().ignore_index - - # dist mode - if paddle.distributed.get_world_size() > 1: - paddle.distributed.init_parallel_env() - - tokenizer = LayoutXLMTokenizer.from_pretrained(args.model_name_or_path) - base_model = LayoutXLMModel.from_pretrained(args.model_name_or_path) - model = LayoutXLMForRelationExtraction(base_model, dropout=None) - - # dist mode - if paddle.distributed.get_world_size() > 1: - model = paddle.DataParallel(model) - - train_dataset = XFUN( - tokenizer, - data_dir=args.train_data_dir, - label_path=args.train_label_path, - label2id_map=label2id_map, - img_size=(224, 224), - max_seq_len=args.max_seq_length, - pad_token_label_id=pad_token_label_id, - contains_re=True, - add_special_ids=False, - return_attention_mask=True, - load_mode="all", - ) - - eval_dataset = XFUN( - tokenizer, - data_dir=args.eval_data_dir, - label_path=args.eval_label_path, - label2id_map=label2id_map, - img_size=(224, 224), - max_seq_len=args.max_seq_length, - pad_token_label_id=pad_token_label_id, - contains_re=True, - add_special_ids=False, - return_attention_mask=True, - load_mode="all", - ) - - train_sampler = paddle.io.DistributedBatchSampler( - train_dataset, batch_size=args.per_gpu_train_batch_size, shuffle=True - ) - args.train_batch_size = args.per_gpu_train_batch_size * max(1, paddle.distributed.get_world_size()) - train_dataloader = paddle.io.DataLoader( - train_dataset, batch_sampler=train_sampler, num_workers=8, use_shared_memory=True, collate_fn=DataCollator() - ) - - eval_dataloader = paddle.io.DataLoader( - eval_dataset, batch_size=args.per_gpu_eval_batch_size, num_workers=8, shuffle=False, collate_fn=DataCollator() - ) - - t_total = len(train_dataloader) * args.num_train_epochs - - # build linear decay with warmup lr sch - lr_scheduler = paddle.optimizer.lr.PolynomialDecay( - learning_rate=args.learning_rate, decay_steps=t_total, end_lr=0.0, power=1.0 - ) - if args.warmup_steps > 0: - lr_scheduler = paddle.optimizer.lr.LinearWarmup( - lr_scheduler, - args.warmup_steps, - start_lr=0, - end_lr=args.learning_rate, - ) - grad_clip = paddle.nn.ClipGradByNorm(clip_norm=10) - optimizer = paddle.optimizer.Adam( - learning_rate=args.learning_rate, - parameters=model.parameters(), - epsilon=args.adam_epsilon, - grad_clip=grad_clip, - weight_decay=args.weight_decay, - ) - - # Train! - logger.info("***** Running training *****") - logger.info(f" Num examples = {len(train_dataset)}") - logger.info(f" Num Epochs = {args.num_train_epochs}") - logger.info(f" Instantaneous batch size per GPU = {args.per_gpu_train_batch_size}") - logger.info( - f" Total train batch size (w. parallel, distributed & accumulation) = {args.train_batch_size * paddle.distributed.get_world_size()}" - ) - logger.info(f" Total optimization steps = {t_total}") - - global_step = 0 - train_dataloader_len = len(train_dataloader) - best_metirc = {"f1": 0} - model.train() - - for epoch in range(int(args.num_train_epochs)): - for step, batch in enumerate(train_dataloader): - outputs = model(**batch) - # model outputs are always tuple in ppnlp (see doc) - loss = outputs["loss"] - loss = loss.mean() - - logger.info( - f"epoch: [{epoch}/{args.num_train_epochs}], iter: [{step}/{train_dataloader_len}], global_step:{global_step}, train loss: {np.mean(loss.numpy())}, lr: {optimizer.get_lr()}" - ) - - loss.backward() - optimizer.step() - optimizer.clear_grad() - # lr_scheduler.step() # Update learning rate schedule - - global_step += 1 - - if paddle.distributed.get_rank() == 0 and args.eval_steps > 0 and global_step % args.eval_steps == 0: - # Log metrics - if paddle.distributed.get_rank() == 0 and args.evaluate_during_training: - results = evaluate(model, eval_dataloader, logger) - if results["f1"] > best_metirc["f1"]: - best_metirc = results - output_dir = os.path.join(args.output_dir, "checkpoint-best") - os.makedirs(output_dir, exist_ok=True) - model.save_pretrained(output_dir) - tokenizer.save_pretrained(output_dir) - paddle.save(args, os.path.join(output_dir, "training_args.bin")) - logger.info(f"Saving model checkpoint to {output_dir}") - logger.info(f"eval results: {results}") - logger.info(f"best_metirc: {best_metirc}") - - if paddle.distributed.get_rank() == 0 and args.save_steps > 0 and global_step % args.save_steps == 0: - # Save model checkpoint - output_dir = os.path.join(args.output_dir, "checkpoint-latest") - os.makedirs(output_dir, exist_ok=True) - if paddle.distributed.get_rank() == 0: - model.save_pretrained(output_dir) - tokenizer.save_pretrained(output_dir) - paddle.save(args, os.path.join(output_dir, "training_args.bin")) - logger.info(f"Saving model checkpoint to {output_dir}") - logger.info(f"best_metirc: {best_metirc}") - - -def print_arguments(args): - """print arguments""" - print("----------- Configuration Arguments -----------") - for arg, value in sorted(vars(args).items()): - print("%s: %s" % (arg, value)) - print("------------------------------------------------") - - -if __name__ == "__main__": - args = parse_args() - print_arguments(args) - train(args) diff --git a/examples/multimodal/layoutxlm/run_xfun_re.sh b/examples/multimodal/layoutxlm/run_xfun_re.sh deleted file mode 100644 index 4aeea52f5dc9..000000000000 --- a/examples/multimodal/layoutxlm/run_xfun_re.sh +++ /dev/null @@ -1,19 +0,0 @@ -export CUDA_VISIBLE_DEVICES=0 - -python ./run_xfun_re.py \ - --model_name_or_path "layoutxlm-base-uncased" \ - --max_seq_length 512 \ - --train_data_dir "XFUND/zh_train/image" \ - --train_label_path "XFUND/zh_train/xfun_normalize_train.json" \ - --eval_data_dir "XFUND/zh_val/image" \ - --eval_label_path "XFUND/zh_val/xfun_normalize_val.json" \ - --num_train_epochs 200 \ - --eval_steps 50 \ - --save_steps 500 \ - --output_dir "./output/re/" \ - --learning_rate 5e-5 \ - --warmup_steps 50 \ - --per_gpu_train_batch_size 8 \ - --per_gpu_eval_batch_size 8 \ - --evaluate_during_training \ - --seed 2048 diff --git a/examples/multimodal/layoutxlm/run_xfun_ser.py b/examples/multimodal/layoutxlm/run_xfun_ser.py deleted file mode 100644 index 36b0b988822d..000000000000 --- a/examples/multimodal/layoutxlm/run_xfun_ser.py +++ /dev/null @@ -1,353 +0,0 @@ -# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import copy -import logging -import os -import random -import sys - -import numpy as np -import paddle -from seqeval.metrics import ( - classification_report, - f1_score, - precision_score, - recall_score, -) -from xfun import XFUN - -from paddlenlp.transformers import ( - LayoutXLMForTokenClassification, - LayoutXLMModel, - LayoutXLMTokenizer, -) - -# Todo: delete the following line after the release of v2.2 -sys.path.insert(0, "../../../") -logger = logging.getLogger(__name__) - - -def parse_args(): - parser = argparse.ArgumentParser() - # Required parameters - # yapf: disable - parser.add_argument("--model_name_or_path", default=None, type=str, required=True,) - parser.add_argument("--train_data_dir", default=None, type=str, required=False,) - parser.add_argument("--train_label_path", default=None, type=str, required=False,) - parser.add_argument("--eval_data_dir", default=None, type=str, required=False,) - parser.add_argument("--eval_label_path", default=None, type=str, required=False,) - parser.add_argument("--use_vdl", default=False, type=bool, required=False,) - parser.add_argument("--output_dir", default=None, type=str, required=True,) - parser.add_argument("--max_seq_length", default=512, type=int,) - parser.add_argument("--evaluate_during_training", action="store_true",) - parser.add_argument("--per_gpu_train_batch_size", default=8, type=int, help="Batch size per GPU/CPU for training.",) - parser.add_argument("--per_gpu_eval_batch_size", default=8, type=int, help="Batch size per GPU/CPU for eval.",) - parser.add_argument("--learning_rate", default=5e-5, type=float, help="The initial learning rate for Adam.",) - parser.add_argument("--weight_decay", default=0.0, type=float, help="Weight decay if we apply some.",) - parser.add_argument("--adam_epsilon", default=1e-8, type=float, help="Epsilon for Adam optimizer.",) - parser.add_argument("--max_grad_norm", default=1.0, type=float, help="Max gradient norm.",) - parser.add_argument("--num_train_epochs", default=3, type=int, help="Total number of training epochs to perform.",) - parser.add_argument("--warmup_steps", default=0, type=int, help="Linear warmup over warmup_steps.",) - parser.add_argument("--eval_steps", type=int, default=10, help="eval every X updates steps.",) - parser.add_argument("--save_steps", type=int, default=50, help="Save checkpoint every X updates steps.",) - parser.add_argument("--seed", type=int, default=42, help="random seed for initialization",) - # yapf: enable - args = parser.parse_args() - return args - - -def set_seed(args): - random.seed(args.seed) - np.random.seed(args.seed) - paddle.seed(args.seed) - - -def get_label_maps(): - labels = ["O", "B-QUESTION", "B-ANSWER", "B-HEADER", "I-ANSWER", "I-QUESTION", "I-HEADER"] - label2id_map = {label: idx for idx, label in enumerate(labels)} - id2label_map = {idx: label for idx, label in enumerate(labels)} - return label2id_map, id2label_map - - -def train(args): - os.makedirs(args.output_dir, exist_ok=True) - logging.basicConfig( - filename=os.path.join(args.output_dir, "train.log") if paddle.distributed.get_rank() == 0 else None, - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - level=logging.INFO if paddle.distributed.get_rank() == 0 else logging.WARN, - ) - - ch = logging.StreamHandler() - ch.setLevel(logging.DEBUG) - logger.addHandler(ch) - - label2id_map, id2label_map = get_label_maps() - pad_token_label_id = paddle.nn.CrossEntropyLoss().ignore_index - - # dist mode - if paddle.distributed.get_world_size() > 1: - paddle.distributed.init_parallel_env() - - tokenizer = LayoutXLMTokenizer.from_pretrained(args.model_name_or_path) - base_model = LayoutXLMModel.from_pretrained(args.model_name_or_path) - model = LayoutXLMForTokenClassification(base_model, num_classes=len(label2id_map), dropout=None) - - # dist mode - if paddle.distributed.get_world_size() > 1: - model = paddle.DataParallel(model) - - train_dataset = XFUN( - tokenizer, - data_dir=args.train_data_dir, - label_path=args.train_label_path, - label2id_map=label2id_map, - img_size=(224, 224), - pad_token_label_id=pad_token_label_id, - contains_re=False, - add_special_ids=False, - return_attention_mask=True, - load_mode="all", - ) - - train_sampler = paddle.io.DistributedBatchSampler( - train_dataset, batch_size=args.per_gpu_train_batch_size, shuffle=True - ) - - args.train_batch_size = args.per_gpu_train_batch_size * max(1, paddle.distributed.get_world_size()) - - train_dataloader = paddle.io.DataLoader( - train_dataset, - batch_sampler=train_sampler, - num_workers=0, - use_shared_memory=True, - collate_fn=None, - ) - - t_total = len(train_dataloader) * args.num_train_epochs - - # build linear decay with warmup lr sch - lr_scheduler = paddle.optimizer.lr.PolynomialDecay( - learning_rate=args.learning_rate, decay_steps=t_total, end_lr=0.0, power=1.0 - ) - if args.warmup_steps > 0: - lr_scheduler = paddle.optimizer.lr.LinearWarmup( - lr_scheduler, - args.warmup_steps, - start_lr=0, - end_lr=args.learning_rate, - ) - - optimizer = paddle.optimizer.AdamW( - learning_rate=lr_scheduler, - parameters=model.parameters(), - epsilon=args.adam_epsilon, - weight_decay=args.weight_decay, - ) - - # Train! - logger.info("***** Running training *****") - logger.info(" Num examples = %d", len(train_dataset)) - logger.info(" Num Epochs = %d", args.num_train_epochs) - logger.info(" Instantaneous batch size per GPU = %d", args.per_gpu_train_batch_size) - logger.info( - " Total train batch size (w. parallel, distributed) = %d", - args.train_batch_size * paddle.distributed.get_world_size(), - ) - logger.info(" Total optimization steps = %d", t_total) - - global_step = 0 - tr_loss = 0.0 - set_seed(args) - best_metrics = None - - for epoch_id in range(args.num_train_epochs): - for step, batch in enumerate(train_dataloader): - model.train() - outputs = model(**batch) - # model outputs are always tuple in ppnlp (see doc) - loss = outputs[0] - loss = loss.mean() - logger.info( - "[epoch {}/{}][iter: {}/{}] lr: {:.5f}, train loss: {:.5f}, ".format( - epoch_id, - args.num_train_epochs, - step, - len(train_dataloader), - lr_scheduler.get_lr(), - float(loss), - ) - ) - - loss.backward() - tr_loss += loss.item() - optimizer.step() - lr_scheduler.step() # Update learning rate schedule - optimizer.clear_grad() - global_step += 1 - - if paddle.distributed.get_rank() == 0 and args.eval_steps > 0 and global_step % args.eval_steps == 0: - # Log metrics - # Only evaluate when single GPU otherwise metrics may not average well - if paddle.distributed.get_rank() == 0 and args.evaluate_during_training: - results, _ = evaluate( - args, - model, - tokenizer, - label2id_map, - id2label_map, - pad_token_label_id, - ) - - if best_metrics is None or results["f1"] >= best_metrics["f1"]: - best_metrics = copy.deepcopy(results) - output_dir = os.path.join(args.output_dir, "best_model") - os.makedirs(output_dir, exist_ok=True) - if paddle.distributed.get_rank() == 0: - model.save_pretrained(output_dir) - tokenizer.save_pretrained(output_dir) - paddle.save(args, os.path.join(output_dir, "training_args.bin")) - logger.info("Saving model checkpoint to %s", output_dir) - - logger.info( - "[epoch {}/{}][iter: {}/{}] results: {}".format( - epoch_id, args.num_train_epochs, step, len(train_dataloader), results - ) - ) - if best_metrics is not None: - logger.info("best metrics: {}".format(best_metrics)) - - if paddle.distributed.get_rank() == 0 and args.save_steps > 0 and global_step % args.save_steps == 0: - # Save model checkpoint - output_dir = os.path.join(args.output_dir, "checkpoint-{}".format(global_step)) - os.makedirs(output_dir, exist_ok=True) - if paddle.distributed.get_rank() == 0: - model.save_pretrained(output_dir) - tokenizer.save_pretrained(output_dir) - paddle.save(args, os.path.join(output_dir, "training_args.bin")) - logger.info("Saving model checkpoint to %s", output_dir) - - return global_step, tr_loss / global_step - - -def evaluate(args, model, tokenizer, label2id_map, id2label_map, pad_token_label_id, prefix=""): - eval_dataset = XFUN( - tokenizer, - data_dir=args.eval_data_dir, - label_path=args.eval_label_path, - label2id_map=label2id_map, - img_size=(224, 224), - pad_token_label_id=pad_token_label_id, - contains_re=False, - add_special_ids=False, - return_attention_mask=True, - load_mode="all", - ) - - args.eval_batch_size = args.per_gpu_eval_batch_size * max(1, paddle.distributed.get_world_size()) - - eval_dataloader = paddle.io.DataLoader( - eval_dataset, - batch_size=args.eval_batch_size, - num_workers=0, - use_shared_memory=True, - collate_fn=None, - ) - - # Eval! - logger.info("***** Running evaluation %s *****", prefix) - logger.info(" Num examples = %d", len(eval_dataset)) - logger.info(" Batch size = %d", args.eval_batch_size) - eval_loss = 0.0 - nb_eval_steps = 0 - preds = None - out_label_ids = None - model.eval() - for idx, batch in enumerate(eval_dataloader): - with paddle.no_grad(): - outputs = model(**batch) - tmp_eval_loss, logits = outputs[:2] - - tmp_eval_loss = tmp_eval_loss.mean() - - if paddle.distributed.get_rank() == 0: - logger.info( - "[Eval]process: {}/{}, loss: {:.5f}".format(idx, len(eval_dataloader), float(tmp_eval_loss)) - ) - - eval_loss += tmp_eval_loss.item() - nb_eval_steps += 1 - if preds is None: - preds = logits.numpy() - out_label_ids = batch["labels"].numpy() - else: - preds = np.append(preds, logits.numpy(), axis=0) - out_label_ids = np.append(out_label_ids, batch["labels"].numpy(), axis=0) - - eval_loss = eval_loss / nb_eval_steps - preds = np.argmax(preds, axis=2) - - # label_map = {i: label.upper() for i, label in enumerate(labels)} - - out_label_list = [[] for _ in range(out_label_ids.shape[0])] - preds_list = [[] for _ in range(out_label_ids.shape[0])] - - for i in range(out_label_ids.shape[0]): - for j in range(out_label_ids.shape[1]): - if out_label_ids[i, j] != pad_token_label_id: - out_label_list[i].append(id2label_map[out_label_ids[i][j]]) - preds_list[i].append(id2label_map[preds[i][j]]) - - results = { - "loss": eval_loss, - "precision": precision_score(out_label_list, preds_list), - "recall": recall_score(out_label_list, preds_list), - "f1": f1_score(out_label_list, preds_list), - } - - with open(os.path.join(args.output_dir, "test_gt.txt"), "w") as fout: - for lbl in out_label_list: - for l in lbl: - fout.write(l + "\t") - fout.write("\n") - with open(os.path.join(args.output_dir, "test_pred.txt"), "w") as fout: - for lbl in preds_list: - for l in lbl: - fout.write(l + "\t") - fout.write("\n") - - report = classification_report(out_label_list, preds_list) - logger.info("\n" + report) - - logger.info("***** Eval results %s *****", prefix) - for key in sorted(results.keys()): - logger.info(" %s = %s", key, str(results[key])) - - return results, preds_list - - -def print_arguments(args): - """print arguments""" - print("----------- Configuration Arguments -----------") - for arg, value in sorted(vars(args).items()): - print("%s: %s" % (arg, value)) - print("------------------------------------------------") - - -if __name__ == "__main__": - args = parse_args() - print_arguments(args) - train(args) diff --git a/examples/multimodal/layoutxlm/run_xfun_ser.sh b/examples/multimodal/layoutxlm/run_xfun_ser.sh deleted file mode 100644 index 43454abfc264..000000000000 --- a/examples/multimodal/layoutxlm/run_xfun_ser.sh +++ /dev/null @@ -1,19 +0,0 @@ -export CUDA_VISIBLE_DEVICES=0 - -python ./run_xfun_ser.py \ - --model_name_or_path "layoutxlm-base-uncased" \ - --max_seq_length 512 \ - --train_data_dir "XFUND/zh_train/image" \ - --train_label_path "XFUND/zh_train/xfun_normalize_train.json" \ - --eval_data_dir "XFUND/zh_val/image" \ - --eval_label_path "XFUND/zh_val/xfun_normalize_val.json" \ - --num_train_epochs 200 \ - --eval_steps 10 \ - --save_steps 500 \ - --output_dir "./output/ser/" \ - --learning_rate 5e-5 \ - --warmup_steps 50 \ - --per_gpu_train_batch_size 8 \ - --per_gpu_eval_batch_size 8 \ - --evaluate_during_training \ - --seed 2048 diff --git a/examples/multimodal/layoutxlm/xfun.py b/examples/multimodal/layoutxlm/xfun.py deleted file mode 100644 index 3bb5be92e913..000000000000 --- a/examples/multimodal/layoutxlm/xfun.py +++ /dev/null @@ -1,410 +0,0 @@ -import json -import os -import cv2 -import numpy as np -import paddle -import copy -from paddle.io import Dataset - -__all__ = ["XFUN"] - - -class XFUN(Dataset): - """ - Example: - print("=====begin to build dataset=====") - from paddlenlp.transformers import LayoutXLMTokenizer - tokenizer = LayoutXLMTokenizer.from_pretrained("/paddle/models/transformers/layoutxlm-base-paddle/") - tok_res = tokenizer.tokenize("Maribyrnong") - # res = tokenizer.convert_ids_to_tokens(val_data["input_ids"][0]) - dataset = XfunDatasetForSer( - tokenizer, - data_dir="./zh.val/", - label_path="zh.val/xfun_normalize_val.json", - img_size=(224,224)) - print(len(dataset)) - - data = dataset[0] - print(data.keys()) - print("input_ids: ", data["input_ids"]) - print("labels: ", data["labels"]) - print("token_type_ids: ", data["token_type_ids"]) - print("words_list: ", data["words_list"]) - print("image shape: ", data["image"].shape) - """ - - def __init__( - self, - tokenizer, - data_dir, - label_path, - contains_re=False, - label2id_map=None, - img_size=(224, 224), - pad_token_label_id=None, - add_special_ids=False, - return_attention_mask=True, - load_mode="all", - max_seq_len=512, - ): - super(XFUN, self).__init__() - self.tokenizer = tokenizer - self.data_dir = data_dir - self.label_path = label_path - self.contains_re = contains_re - self.label2id_map = label2id_map - self.img_size = img_size - self.pad_token_label_id = pad_token_label_id - self.add_special_ids = add_special_ids - self.return_attention_mask = return_attention_mask - self.load_mode = load_mode - self.max_seq_len = max_seq_len - - if self.pad_token_label_id is None: - self.pad_token_label_id = paddle.nn.CrossEntropyLoss().ignore_index - - self.all_lines = self.read_all_lines() - - self.entities_labels = {"HEADER": 0, "QUESTION": 1, "ANSWER": 2} - self.return_keys = { - "bbox": "np", - "input_ids": "np", - "labels": "np", - "attention_mask": "np", - "image": "np", - "token_type_ids": "np", - "entities": "dict", - "relations": "dict", - } - - if load_mode == "all": - self.encoded_inputs_all = self._parse_label_file_all() - - def pad_sentences( - self, - encoded_inputs, - max_seq_len=512, - pad_to_max_seq_len=True, - return_attention_mask=True, - return_token_type_ids=True, - truncation_strategy="longest_first", - return_overflowing_tokens=False, - return_special_tokens_mask=False, - ): - # Padding - needs_to_be_padded = pad_to_max_seq_len and max_seq_len and len(encoded_inputs["input_ids"]) < max_seq_len - - if needs_to_be_padded: - difference = max_seq_len - len(encoded_inputs["input_ids"]) - if self.tokenizer.padding_side == "right": - if return_attention_mask: - encoded_inputs["attention_mask"] = [1] * len(encoded_inputs["input_ids"]) + [0] * difference - if return_token_type_ids: - encoded_inputs["token_type_ids"] = ( - encoded_inputs["token_type_ids"] + [self.tokenizer.pad_token_type_id] * difference - ) - if return_special_tokens_mask: - encoded_inputs["special_tokens_mask"] = encoded_inputs["special_tokens_mask"] + [1] * difference - encoded_inputs["input_ids"] = encoded_inputs["input_ids"] + [self.tokenizer.pad_token_id] * difference - encoded_inputs["labels"] = encoded_inputs["labels"] + [self.pad_token_label_id] * difference - encoded_inputs["bbox"] = encoded_inputs["bbox"] + [[0, 0, 0, 0]] * difference - elif self.tokenizer.padding_side == "left": - if return_attention_mask: - encoded_inputs["attention_mask"] = [0] * difference + [1] * len(encoded_inputs["input_ids"]) - if return_token_type_ids: - encoded_inputs["token_type_ids"] = [ - self.tokenizer.pad_token_type_id - ] * difference + encoded_inputs["token_type_ids"] - if return_special_tokens_mask: - encoded_inputs["special_tokens_mask"] = [1] * difference + encoded_inputs["special_tokens_mask"] - encoded_inputs["input_ids"] = [self.tokenizer.pad_token_id] * difference + encoded_inputs["input_ids"] - encoded_inputs["labels"] = [self.pad_token_label_id] * difference + encoded_inputs["labels"] - encoded_inputs["bbox"] = [[0, 0, 0, 0]] * difference + encoded_inputs["bbox"] - else: - if return_attention_mask: - encoded_inputs["attention_mask"] = [1] * len(encoded_inputs["input_ids"]) - - return encoded_inputs - - def truncate_inputs(self, encoded_inputs, max_seq_len=512): - for key in encoded_inputs: - if key == "sample_id": - continue - length = min(len(encoded_inputs[key]), max_seq_len) - encoded_inputs[key] = encoded_inputs[key][:length] - return encoded_inputs - - def read_all_lines( - self, - ): - with open(self.label_path, "r") as fin: - lines = fin.readlines() - return lines - - def _parse_label_file_all(self): - """ - parse all samples - """ - encoded_inputs_all = [] - for line in self.all_lines: - encoded_inputs_all.extend(self._parse_label_file(line)) - return encoded_inputs_all - - def _parse_label_file(self, line): - """ - parse single sample - """ - - image_name, info_str = line.split("\t") - image_path = os.path.join(self.data_dir, image_name) - - def add_imgge_path(x): - x["image_path"] = image_path - return x - - encoded_inputs = self._read_encoded_inputs_sample(info_str) - if self.contains_re: - encoded_inputs = self._chunk_re(encoded_inputs) - else: - encoded_inputs = self._chunk_ser(encoded_inputs) - encoded_inputs = list(map(add_imgge_path, encoded_inputs)) - return encoded_inputs - - def _read_encoded_inputs_sample(self, info_str): - """ - parse label info - """ - # read text info - info_dict = json.loads(info_str) - height = info_dict["height"] - width = info_dict["width"] - - words_list = [] - bbox_list = [] - input_ids_list = [] - token_type_ids_list = [] - gt_label_list = [] - - if self.contains_re: - # for re - entities = [] - relations = [] - id2label = {} - entity_id_to_index_map = {} - empty_entity = set() - for info in info_dict["ocr_info"]: - if self.contains_re: - # for re - if len(info["text"]) == 0: - empty_entity.add(info["id"]) - continue - id2label[info["id"]] = info["label"] - relations.extend([tuple(sorted(l)) for l in info["linking"]]) - - # x1, y1, x2, y2 - bbox = info["bbox"] - label = info["label"] - bbox[0] = int(bbox[0] * 1000.0 / width) - bbox[2] = int(bbox[2] * 1000.0 / width) - bbox[1] = int(bbox[1] * 1000.0 / height) - bbox[3] = int(bbox[3] * 1000.0 / height) - - text = info["text"] - encode_res = self.tokenizer.encode( - text, pad_to_max_seq_len=False, return_token_type_ids=True, return_attention_mask=True - ) - - gt_label = [] - if not self.add_special_ids: - # TODO: use tok.all_special_ids to remove - encode_res["input_ids"] = encode_res["input_ids"][1:-1] - encode_res["token_type_ids"] = encode_res["token_type_ids"][1:-1] - encode_res["attention_mask"] = encode_res["attention_mask"][1:-1] - if label.lower() == "other": - gt_label.extend([0] * len(encode_res["input_ids"])) - else: - gt_label.append(self.label2id_map[("b-" + label).upper()]) - gt_label.extend([self.label2id_map[("i-" + label).upper()]] * (len(encode_res["input_ids"]) - 1)) - if self.contains_re: - if gt_label[0] != self.label2id_map["O"]: - entity_id_to_index_map[info["id"]] = len(entities) - entities.append( - { - "start": len(input_ids_list), - "end": len(input_ids_list) + len(encode_res["input_ids"]), - "label": label.upper(), - } - ) - input_ids_list.extend(encode_res["input_ids"]) - token_type_ids_list.extend(encode_res["token_type_ids"]) - bbox_list.extend([bbox] * len(encode_res["input_ids"])) - gt_label_list.extend(gt_label) - words_list.append(text) - - encoded_inputs = { - "input_ids": input_ids_list, - "labels": gt_label_list, - "token_type_ids": token_type_ids_list, - "bbox": bbox_list, - "attention_mask": [1] * len(input_ids_list), - # "words_list": words_list, - } - encoded_inputs = self.pad_sentences( - encoded_inputs, max_seq_len=self.max_seq_len, return_attention_mask=self.return_attention_mask - ) - encoded_inputs = self.truncate_inputs(encoded_inputs) - - if self.contains_re: - relations = self._relations(entities, relations, id2label, empty_entity, entity_id_to_index_map) - encoded_inputs["relations"] = relations - encoded_inputs["entities"] = entities - return encoded_inputs - - def _chunk_ser(self, encoded_inputs): - encoded_inputs_all = [] - seq_len = len(encoded_inputs["input_ids"]) - chunk_size = 512 - for chunk_id, index in enumerate(range(0, seq_len, chunk_size)): - chunk_beg = index - chunk_end = min(index + chunk_size, seq_len) - encoded_inputs_example = {} - for key in encoded_inputs: - encoded_inputs_example[key] = encoded_inputs[key][chunk_beg:chunk_end] - - encoded_inputs_all.append(encoded_inputs_example) - return encoded_inputs_all - - def _chunk_re(self, encoded_inputs): - # prepare data - entities = encoded_inputs.pop("entities") - relations = encoded_inputs.pop("relations") - encoded_inputs_all = [] - chunk_size = 512 - for chunk_id, index in enumerate(range(0, len(encoded_inputs["input_ids"]), chunk_size)): - item = {} - for k in encoded_inputs: - item[k] = encoded_inputs[k][index : index + chunk_size] - - # select entity in current chunk - entities_in_this_span = [] - global_to_local_map = {} # - for entity_id, entity in enumerate(entities): - if index <= entity["start"] < index + chunk_size and index <= entity["end"] < index + chunk_size: - entity["start"] = entity["start"] - index - entity["end"] = entity["end"] - index - global_to_local_map[entity_id] = len(entities_in_this_span) - entities_in_this_span.append(entity) - - # select relations in current chunk - relations_in_this_span = [] - for relation in relations: - if ( - index <= relation["start_index"] < index + chunk_size - and index <= relation["end_index"] < index + chunk_size - ): - relations_in_this_span.append( - { - "head": global_to_local_map[relation["head"]], - "tail": global_to_local_map[relation["tail"]], - "start_index": relation["start_index"] - index, - "end_index": relation["end_index"] - index, - } - ) - item.update( - { - "entities": reformat(entities_in_this_span), - "relations": reformat(relations_in_this_span), - } - ) - item["entities"]["label"] = [self.entities_labels[x] for x in item["entities"]["label"]] - encoded_inputs_all.append(item) - return encoded_inputs_all - - def _relations(self, entities, relations, id2label, empty_entity, entity_id_to_index_map): - """ - build relations - """ - relations = list(set(relations)) - relations = [rel for rel in relations if rel[0] not in empty_entity and rel[1] not in empty_entity] - kv_relations = [] - for rel in relations: - pair = [id2label[rel[0]], id2label[rel[1]]] - if pair == ["question", "answer"]: - kv_relations.append({"head": entity_id_to_index_map[rel[0]], "tail": entity_id_to_index_map[rel[1]]}) - elif pair == ["answer", "question"]: - kv_relations.append({"head": entity_id_to_index_map[rel[1]], "tail": entity_id_to_index_map[rel[0]]}) - else: - continue - relations = sorted( - [ - { - "head": rel["head"], - "tail": rel["tail"], - "start_index": get_relation_span(rel, entities)[0], - "end_index": get_relation_span(rel, entities)[1], - } - for rel in kv_relations - ], - key=lambda x: x["head"], - ) - return relations - - def load_img(self, image_path): - # read img - img = cv2.imread(image_path) - img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) - resize_h, resize_w = self.img_size - im_shape = img.shape[0:2] - im_scale_y = resize_h / im_shape[0] - im_scale_x = resize_w / im_shape[1] - img_new = cv2.resize(img, None, None, fx=im_scale_x, fy=im_scale_y, interpolation=2) - mean = np.array([0.485, 0.456, 0.406])[np.newaxis, np.newaxis, :] - std = np.array([0.229, 0.224, 0.225])[np.newaxis, np.newaxis, :] - img_new = img_new / 255.0 - img_new -= mean - img_new /= std - img = img_new.transpose((2, 0, 1)) - return img - - def __getitem__(self, idx): - if self.load_mode == "all": - data = copy.deepcopy(self.encoded_inputs_all[idx]) - else: - data = self._parse_label_file(self.all_lines[idx])[0] - - image_path = data.pop("image_path") - data["image"] = self.load_img(image_path) - - return_data = {} - for k, v in data.items(): - if k in self.return_keys: - if self.return_keys[k] == "np": - v = np.array(v) - return_data[k] = v - return return_data - - def __len__( - self, - ): - if self.load_mode == "all": - return len(self.encoded_inputs_all) - else: - return len(self.all_lines) - - -def get_relation_span(rel, entities): - bound = [] - for entity_index in [rel["head"], rel["tail"]]: - bound.append(entities[entity_index]["start"]) - bound.append(entities[entity_index]["end"]) - return min(bound), max(bound) - - -def reformat(data): - new_data = {} - for item in data: - for k, v in item.items(): - if k not in new_data: - new_data[k] = [] - new_data[k].append(v) - return new_data diff --git a/examples/multimodal/minigpt4/README.md b/examples/multimodal/minigpt4/README.md deleted file mode 100644 index 48c9f7384076..000000000000 --- a/examples/multimodal/minigpt4/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# MiniGPT4 - -## 1. 模型简介 - -MiniGPT4 是一个具有图像理解能力的开源模型,其基于 Vicuna 大语言模型 以及 BLIP-2 中的VIT和Qformer模块进行训练,使得MiniGPT4 拥有类似于GPT4的非凡能力,例如详细的图像描述生成和从手写草稿创建网站。 此外 MiniGPT4 还具备一些的其他新的功能,包括根据给定图像写故事和诗歌,为图像中显示的问题提供解决方案,教用户如何根据食物照片做饭等。下图展示了MiniGPT4的模型结构, 更多信息请参考[MiniGPT4](https://arxiv.org/abs/2304.10592)。 - -
- - -## 2. 获取MiniGPT4 权重以及相关配置 -这里可以分两步:1. 获取MiniGPT4权重;2. 获取相关配置,包括模型参数说明以及tokenizer相关文件等。 -### 2.1 获取MiniGPT4权重 -目前需要用户手动下载MiniGPT4权重和并转换为相应的 Paddle 版权重,为方便转换,本项目提供了相应的操作说明和转换脚本,详情请参考[MiniGPT4 权重下载和转换说明](./paddle_minigpt4_instrction.md)。 - -### 2.2 获取相关配置 -下载相关的配置文件,这里提供了两版配置文件,请根据你的需要,点击下载即可。 -| files Aligned with MiniGPT4-7B | files Aligned with MiniGPT4-13B | -:-------------------------------------:|:-----------------------------------: - [Download](https://paddlenlp.bj.bcebos.com/models/community/minigpt4-7b/minigpt4_7b.tar.gz)|[Download](https://paddlenlp.bj.bcebos.com/models/community/minigpt4-13b/minigpt4_13b.tar.gz) | - - -下载之后进行解压,请将其中相关文件放至 与 MiniGPT4 权重相同的目录中。 - - -## 3. 模型预测 -在下载和转换好上述模型权重之后,可执行以下命令进行模型预测。其中参数 `pretrained_name_or_path` 用于指定 MiniGPT4 的保存目录。 - -``` -python run_predict.py \ - -- pretrained_name_or_path "your minigpt4 path" - -``` - -下图这个示例展示了在使用MiniGPT-7b时的效果: - -输入图片:
- -输入文本:“describe this image” - -输出: -``` -The image shows two mugs with cats on them, one is black and white and the other is blue and white. The mugs are sitting on a table with a book in the background. The mugs have a whimsical, cartoon-like appearance. The cats on the mugs are looking at each other with a playful expression. The overall mood of the image is lighthearted and fun.### -``` - - -## Reference -- [MiniGPT-4: Enhancing Vision-language Understanding with Advanced Large Language Models](https://minigpt-4.github.io/) diff --git a/examples/multimodal/minigpt4/merge_weight.py b/examples/multimodal/minigpt4/merge_weight.py deleted file mode 100644 index 8f74d7c6a960..000000000000 --- a/examples/multimodal/minigpt4/merge_weight.py +++ /dev/null @@ -1,88 +0,0 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os - -os.environ["CUDA_VISIBLE_DEVICES"] = "0" -os.environ["FLAGS_use_cuda_managed_memory"] = "true" - -import paddle -import torch - -from paddlenlp.transformers import LlamaForCausalLM - - -def merge(args): - model_dict = {} - # load the first item: blip2-flan-t5-xxl - state_dict = paddle.load(args.blip2_path) - for n, p in state_dict.items(): - if n.startswith("vision_model") or n.startswith("qformer") or n == "query_tokens": - model_dict[n] = p - print("[1/3] load ViT, qformer and query_tokens from blip2-flan-t5-xxl done!") - - # load the second item: vicuna - llama_model = LlamaForCausalLM.from_pretrained(args.vicuna_path) - - for n, p in llama_model.named_parameters(): - new_name = "language_model." + n - model_dict[new_name] = p - print("[2/3] load vicuna(llama typel) done!") - - # load the third item: minigpt4 - minigpt4_state_dict = torch.load(args.minigpt4_path) - for n, p in minigpt4_state_dict["model"].items(): - if n.startswith("llama_model.model"): - new_name = n.replace("llama_model.model", "language_model.llama") - new_p = paddle.to_tensor(p.cpu().numpy()) - model_dict[new_name] = new_p - - if n.startswith("llama_proj"): - new_name = n.replace("llama_proj", "language_projection") - if n.endswith("weight"): - new_p = paddle.to_tensor(p.cpu().numpy()).transpose([1, 0]) - else: - new_p = paddle.to_tensor(p.cpu().numpy()) - model_dict[new_name] = new_p - - print("[3/3] load language_projection, some llama weights from minigpt4 done!") - - save_path = os.path.join(args.save_path, "model_state.pdparams") - paddle.save(model_dict, save_path) - print("The checkpoint of minigpt4 has been saved to :{}".format(save_path)) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - - parser.add_argument("--blip2_path", default="/blip2/dirname", type=str, help="The dir name of blip2-flan-t5-xxl.") - parser.add_argument("--vicuna_path", default="/vicuna/dirname", type=str, help="The dir name of vicuna.") - parser.add_argument( - "--minigpt4_path", default="/minigpt4/prerained_minigpt4.pth", type=str, help="The checkpoint path of vicuna." - ) - parser.add_argument("--save_path", default="/save/to/dirname", type=str, help="The saving path of minigpt4.") - args = parser.parse_args() - - args.blip2_path = os.path.join(args.blip2_path, "model_state.pdparams") - if not os.path.exists(args.blip2_path): - raise ValueError("Not found the file: {}".format(args.blip2_path)) - if not os.path.isdir(args.vicuna_path): - raise ValueError("It is not a directory: {}".format(args.vicuna_path)) - if not os.path.exists(args.minigpt4_path): - raise ValueError("Not found the file: {}".format(args.minigpt4_path)) - if not os.path.exists(args.save_path): - os.makedirs(args.save_path) - - merge(args) diff --git a/examples/multimodal/minigpt4/paddle_minigpt4_instrction.md b/examples/multimodal/minigpt4/paddle_minigpt4_instrction.md deleted file mode 100644 index 7b84aea48bd7..000000000000 --- a/examples/multimodal/minigpt4/paddle_minigpt4_instrction.md +++ /dev/null @@ -1,117 +0,0 @@ -# 获取和转换 Paddle 版 MiniGPT4 权重 - -## 1. 准备 MiniGPT4 中所有模块的权重 - -你需要下载3个权重,以获取最终 MiniGPT4的权重,分别是: -- Pretrained MiniGPT-4 -- Vicuna Weight -- Blip2 Weight - -### 1.1 下载 MiniGPT4 的预训练权重 - -根据你准备的Vicuna模型版本,下载预训练的MiniGPT4 权重。 - -| Checkpoint Aligned with Vicuna 7B | Checkpoint Aligned with Vicuna 13B | -:-------------------------------------:|:-----------------------------------: -[Download](https://drive.google.com/file/d/1RY9jV0dyqLX-o38LrumkKRh6Jtaop58R/view?usp=sharing) | [Download](https://drive.google.com/file/d/1a4zLvaiDBr-36pasffmgpvH5P7CKmpze/view?usp=share_link) - -### 1.2准备 ViT and Qformer 权重 -MiniGPT4中使用的ViT和Qformer Weight来自blip2-flan-t5-xxl,这个weight在PaddleNLP中进行了转换。 所以你可以从 PaddleNLP 下载它,你有两种下载方式进行下载: - -#### 1.2.1 通过 paddlenlp 方式加载 -直接通过paddlenlp的模型加载方法进行下载,下载后一般会存入 `PPNLP_HOME` 指定的目录。 - -```python -import os -os.environ["CUDA_VISIBLE_DEVICES"]="0" - -import paddle -from paddlenlp.transformers import Blip2Model, Blip2VisionModel, Blip2VisionConfig, Blip2QFormerConfig, Blip2QFormerModel - -Blip2Model.from_pretrained("Salesforce/blip2-flan-t5-xxl") -``` - -#### 1.2.2 直接点击下载 -可以直接进行点击下载: - -| blip2-flan-t5-xxl 权重 | 点击下载 | -:-------------------------------------:|:-----------------------------------: -| model_state.pdparams | [Download](https://paddlenlp.bj.bcebos.com/models/community/Salesforce/blip2-flan-t5-xxl/model_state.pdparams) | - -### 1.3 准备 Vicuna 权重 - -这里需要下载两个权重:Vicuna delta Weight和huggingface-formated Llama Weight。 然后你应该结合这两个重量来获得可以使用的Vicuna 权重。 - -#### 1.3.1 下载 Vicuna delta 权重 - -这里展示两种Vicuna delta 权重,请根据需要选择一种并点击下载。 - -| vicuna-7b-delta-v0 | vicuna-13b-delta-v0 | -:-------------------------------------:|:-----------------------------------: - [Download](https://huggingface.co/lmsys/vicuna-7b-delta-v0/tree/main) | [Download](https://huggingface.co/lmsys/vicuna-13b-delta-v0g) - -#### 1.3.2 根据以上选择的vicuna delta 权重,下载 相应的 llama 权重。 - -| llama-7b | llama-13b | -:-------------------------------------:|:-----------------------------------: - [Download](https://huggingface.co/decapoda-research/llama-7b-hf/tree/main) | [Download](https://huggingface.co/decapoda-research/llama-13b-hf) - - -#### 1.3.3 结合上面的两个权重,得到可以使用的 vicuna 权重 -- 为组合如上两个权重,请安装以下工具: - -```shell -pip install git+https://github.com/lm-sys/FastChat.git@v0.1.10 -``` -- 运行以下命令,获取最终可用的vicuna 权重 - -```shell -python -m fastchat.model.apply_delta --base /path/to/llama-13bOR7b-hf/ --target /path/to/save/working/vicuna-13b/weight/ --delta /path/to/vicuna-13bOR7b-delta-v0/ -``` - -## 2. 将多个 pytorch 子权重文件合并为一个权重文件 - -Pytorch版的权重文件可能是由多个子权重文件组合而成,为使用PaddleNLP进行加载并自动转换为Paddle版,需要将其合并为一个文件: - -### 2.1 下载MiniGPT库 -在开始之前,请确保已经下载了 [MiniGPT4](https://github.com/Vision-CAIR/MiniGPT-4.git) 库: - -``` -git clone https://github.com/Vision-CAIR/MiniGPT-4.git -``` - -### 2.2 获取完整的 vicuna 权重 -进入到MiniGPT4文件夹,执行以下代码,获取完整的 vicuna 权重文件: -```python -import argparse -import os -os.environ["CUDA_VISIBLE_DEVICES"]="0" -os.environ["FLAGS_use_cuda_managed_memory"]="true" - -import torch -from minigpt4.models.modeling_llama import LlamaForCausalLM - -llama_model = LlamaForCausalLM.from_pretrained("/path/to/save/working/vicuna-13b/") -torch.save(llama_model.state_dict(), "/path/to/save/working/vicuna-13b/pytorch_model.bin") -``` - -## 3. 合并以上所有权重,获取最终的 Paddle 版 MiniGPT4 权重 -这里提供了一个合并以上权重的脚本,你可以通过设置相关权重路径 以获取最终的 MiniGPT4 权重。 - -```shell -python merge_weight.py \ - --blip2_path "your dir name of blip2" \ - --vicuna_path "your dir name of vicuna" \ - --minigpt4_path "your ckpt path of minigpt4" \ - --save_path "your dir name saving the final minigpt4" -``` - -**参数说明**: -- `blip2_path`: 存放 blip2 权重的目录名 -- `vicuna_path`: 存放 vicuna_path 权重的目录名 -- `minigpt4_path`: 存放 blip2 权重的文件地址,比如./prerained_minigpt4_7b.pth -- `save_path`: 保存 Paddle 版 MiniGPT3 权重的目录名 - -## 3. More Reference - -- [MiniGPT Official Site](https://github.com/Vision-CAIR/MiniGPT-4) diff --git a/examples/multimodal/minigpt4/run_predict.py b/examples/multimodal/minigpt4/run_predict.py deleted file mode 100644 index 4b36089f3c91..000000000000 --- a/examples/multimodal/minigpt4/run_predict.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2023 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os - -os.environ["CUDA_VISIBLE_DEVICES"] = "0" -os.environ["FLAGS_use_cuda_managed_memory"] = "true" -import requests -from PIL import Image - -from paddlenlp.transformers import MiniGPT4ForConditionalGeneration, MiniGPT4Processor - - -def predict(args): - # load MiniGPT4 moel and processor - model = MiniGPT4ForConditionalGeneration.from_pretrained(args.pretrained_name_or_path) - model.eval() - processor = MiniGPT4Processor.from_pretrained(args.pretrained_name_or_path) - print("load processor and model done!") - - # prepare model inputs for MiniGPT4 - url = "https://paddlenlp.bj.bcebos.com/data/images/mugs.png" - image = Image.open(requests.get(url, stream=True).raw) - - text = "describe this image" - prompt = "Give the following image: ImageContent. You will be able to see the image once I provide it to you. Please answer my questions.###Human: ###Assistant:" - inputs = processor([image], text, prompt) - - # generate with MiniGPT4 - # breakpoint - generate_kwargs = { - "max_length": 300, - "num_beams": 1, - "top_p": 1.0, - "repetition_penalty": 1.0, - "length_penalty": 0, - "temperature": 1, - "decode_strategy": "greedy_search", - "eos_token_id": [[835], [2277, 29937]], - } - outputs = model.generate(**inputs, **generate_kwargs) - msg = processor.batch_decode(outputs[0]) - print("Inference result: ", msg) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument( - "--pretrained_name_or_path", - default="your directory of minigpt4", - type=str, - help="The dir name of minigpt4 checkpoint.", - ) - args = parser.parse_args() - - predict(args) diff --git a/examples/sentiment_analysis/textcnn/README.md b/examples/sentiment_analysis/textcnn/README.md deleted file mode 100644 index d4cd1599322a..000000000000 --- a/examples/sentiment_analysis/textcnn/README.md +++ /dev/null @@ -1,192 +0,0 @@ -# 使用TextCNN模型完成中文对话情绪识别任务 - -情感分析旨在自动识别和提取文本中的倾向、立场、评价、观点等主观信息。情感分析其中的一个任务就是对话情绪识别,针对智能对话中的用户文本,自动判断该文本的情绪类别并给出相应的置信度,情绪类型分为积极(positive)、消极(negative)和中性(neutral)。 - -本示例展示了如何用TextCNN预训练模型在机器人聊天数据集上进行Finetune完成中文对话情绪识别任务。 - -## 快速开始 - -### 代码结构说明 - -以下是本项目主要代码结构及说明: - -```text -textcnn/ -├── deploy # 部署 -│   └── python -│   └── predict.py # python预测部署示例 -├── data.py # 数据处理脚本 -├── export_model.py # 动态图参数导出静态图参数脚本 -├── model.py # 模型组网脚本 -├── predict.py # 模型预测脚本 -├── README.md # 文档说明 -└── train.py # 对话情绪识别任务训练脚本 -``` - -### 数据准备 - -这里我们提供一份已标注的机器人聊天数据集,包括训练集(train.tsv),开发集(dev.tsv)和测试集(test.tsv)。 -完整数据集可以通过以下命令下载并解压: - -```shell -wget https://bj.bcebos.com/paddlenlp/datasets/RobotChat.tar.gz -tar xvf RobotChat.tar.gz -``` - -### 词表下载 - -在模型训练之前,需要先下载词汇表文件word_dict.txt,用于构造词-id映射关系。 - -```shell -wget https://bj.bcebos.com/paddlenlp/robot_chat_word_dict.txt -``` - -**NOTE:** 词表的选择和实际应用数据相关,需根据实际数据选择词表。 - -### 预训练模型下载 - -这里我们提供了一个百度基于海量数据训练好的TextCNN模型,用户通过以下方式下载预训练模型。 - -```shell -wget https://bj.bcebos.com/paddlenlp/models/textcnn.pdparams -``` - -### 模型训练 - -在下载好词表和预训练模型后就可以在机器人聊天数据集上进行finetune,通过运行以下命令,在训练集(train.tsv)上进行模型训练,并在开发集(dev.tsv)验证,这里通过`--init_from_ckpt=./textcnn.pdparams`指定TextCNN预训练模型。 - -CPU 启动: - -```shell -python train.py --vocab_path=./robot_chat_word_dict.txt \ - --init_from_ckpt=./textcnn.pdparams \ - --device=cpu \ - --lr=5e-5 \ - --batch_size=64 \ - --epochs=10 \ - --save_dir=./checkpoints \ - --data_path=./RobotChat -``` - -GPU 启动: - -```shell -unset CUDA_VISIBLE_DEVICES -python -m paddle.distributed.launch --gpus "0" train.py \ - --vocab_path=./robot_chat_word_dict.txt \ - --init_from_ckpt=./textcnn.pdparams \ - --device=gpu \ - --lr=5e-5 \ - --batch_size=64 \ - --epochs=10 \ - --save_dir=./checkpoints \ - --data_path=./RobotChat -``` - -XPU启动: - -```shell -python train.py --vocab_path=./robot_chat_word_dict.txt \ - --init_from_ckpt=./textcnn.pdparams \ - --device=xpu \ - --lr=5e-5 \ - --batch_size=64 \ - --epochs=10 \ - --save_dir=./checkpoints \ - --data_path=./RobotChat -``` - -以上参数表示: - -* `vocab_path`: 词汇表文件路径。 -* `init_from_ckpt`: 恢复模型训练的断点路径。 -* `device`: 选用什么设备进行训练,可选cpu、gpu或xpu。如使用gpu训练则参数gpus指定GPU卡号。 -* `lr`: 学习率, 默认为5e-5。 -* `batch_size`: 运行一个batch大小,默认为64。 -* `epochs`: 训练轮次,默认为10。 -* `save_dir`: 训练保存模型的文件路径。 -* `data_path`: 数据集文件路径。 - - -程序运行时将会自动进行训练,评估,测试。同时训练过程中会自动保存模型在指定的`save_dir`中。 -如: -```text -checkpoints/ -├── 0.pdopt -├── 0.pdparams -├── 1.pdopt -├── 1.pdparams -├── ... -└── final.pdparams -``` - -**NOTE:** - -* 如需恢复模型训练,则init_from_ckpt只需指定到文件名即可,不需要添加文件尾缀。如`--init_from_ckpt=checkpoints/0`即可,程序会自动加载模型参数`checkpoints/0.pdparams`,也会自动加载优化器状态`checkpoints/0.pdopt`。 -* 使用动态图训练结束之后,还可以将动态图参数导出成静态图参数,具体代码见export_model.py。静态图参数保存在`output_path`指定路径中。 - 运行方式: - -```shell -python export_model.py --vocab_path=./robot_chat_word_dict.txt --params_path=./checkpoints/final.pdparams --output_path=./static_graph_params -``` - -其中`params_path`是指动态图训练保存的参数路径,`output_path`是指静态图参数导出路径。 - -导出模型之后,可以用于部署,deploy/python/predict.py文件提供了python部署预测示例。运行方式: - -```shell -python deploy/python/predict.py --model_file=static_graph_params.pdmodel --params_file=static_graph_params.pdiparams -``` - -### 模型预测 - -启动预测: - -CPU启动: - -```shell -python predict.py --vocab_path=./robot_chat_word_dict.txt \ - --device=cpu \ - --params_path=./checkpoints/final.pdparams -``` - -GPU启动: - -```shell -export CUDA_VISIBLE_DEVICES=0 -python predict.py --vocab_path=./robot_chat_word_dict.txt \ - --device=gpu \ - --params_path=./checkpoints/final.pdparams -``` - -XPU启动: - -```shell -python predict.py --vocab_path=./robot_chat_word_dict.txt \ - --device=xpu \ - --params_path=./checkpoints/final.pdparams -``` - -待预测数据如以下示例: - -```text -你再骂我我真的不跟你聊了 -你看看我附近有什么好吃的 -我喜欢画画也喜欢唱歌 -``` - -经过`preprocess_prediction_data`函数处理后,调用`predict`函数即可输出预测结果。 - -如 - -```text -Data: 你再骂我我真的不跟你聊了 Label: negative -Data: 你看看我附近有什么好吃的 Label: neutral -Data: 我喜欢画画也喜欢唱歌 Label: positive -``` - -## Reference - -TextCNN参考论文: - -- [EMNLP2014-Convolutional Neural Networks for Sentence Classification](https://aclanthology.org/D14-1181.pdf) diff --git a/examples/sentiment_analysis/textcnn/data.py b/examples/sentiment_analysis/textcnn/data.py deleted file mode 100644 index 3426f065afec..000000000000 --- a/examples/sentiment_analysis/textcnn/data.py +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import numpy as np -import paddle - - -def create_dataloader(dataset, mode="train", batch_size=1, batchify_fn=None, trans_fn=None): - """ - Create dataloader. - - Args: - dataset(obj:`paddle.io.Dataset`): Dataset instance. - mode(obj:`str`, optional, defaults to obj:`train`): If mode is 'train', it will shuffle the dataset randomly. - batch_size(obj:`int`, optional, defaults to 1): The sample number of a mini-batch. - batchify_fn(obj:`callable`, optional, defaults to `None`): function to generate mini-batch data by merging - the sample list, None for only stack each fields of sample in axis - 0(same as :attr::`np.stack(..., axis=0)`). - trans_fn(obj:`callable`, optional, defaults to `None`): function to convert a data sample to input ids, etc. - - Returns: - dataloader(obj:`paddle.io.DataLoader`): The dataloader which generates batches. - """ - if trans_fn: - dataset = dataset.map(trans_fn) - - shuffle = True if mode == "train" else False - if mode == "train": - sampler = paddle.io.DistributedBatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - else: - sampler = paddle.io.BatchSampler(dataset=dataset, batch_size=batch_size, shuffle=shuffle) - dataloader = paddle.io.DataLoader(dataset, batch_sampler=sampler, collate_fn=batchify_fn) - return dataloader - - -def preprocess_prediction_data(data, tokenizer, pad_token_id=0, max_ngram_filter_size=3): - """ - It process the prediction data as the format used as training. - - Args: - data (obj:`list[str]`): The prediction data whose each element is a tokenized text. - tokenizer(obj: paddlenlp.data.JiebaTokenizer): It use jieba to cut the chinese string. - pad_token_id(obj:`int`, optional, defaults to 0): The pad token index. - max_ngram_filter_size (obj:`int`, optional, defaults to 3) Max n-gram size in TextCNN model. - Users should refer to the ngram_filter_sizes setting in TextCNN, if ngram_filter_sizes=(1, 2, 3) - then max_ngram_filter_size=3 - - Returns: - examples (obj:`list`): The processed data whose each element - is a `list` object, which contains - - - word_ids(obj:`list[int]`): The list of word ids. - """ - examples = [] - for text in data: - ids = tokenizer.encode(text) - seq_len = len(ids) - # Sequence length should larger or equal than the maximum ngram_filter_size in TextCNN model - if seq_len < max_ngram_filter_size: - ids.extend([pad_token_id] * (max_ngram_filter_size - seq_len)) - examples.append(ids) - return examples - - -def convert_example(example, tokenizer): - """convert_example""" - input_ids = tokenizer.encode(example["text"]) - input_ids = np.array(input_ids, dtype="int64") - - label = np.array(example["label"], dtype="int64") - return input_ids, label - - -def read_custom_data(filename): - """Reads data.""" - with open(filename, "r", encoding="utf-8") as f: - # Skip head - next(f) - for line in f: - data = line.strip().split("\t") - label, text = data - yield {"text": text, "label": label} diff --git a/examples/sentiment_analysis/textcnn/deploy/python/predict.py b/examples/sentiment_analysis/textcnn/deploy/python/predict.py deleted file mode 100644 index 35d6e15ecf2c..000000000000 --- a/examples/sentiment_analysis/textcnn/deploy/python/predict.py +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - -import numpy as np -import paddle -import paddle.nn.functional as F - -from paddlenlp.data import JiebaTokenizer, Pad, Vocab - -parser = argparse.ArgumentParser() -parser.add_argument( - "--model_file", - type=str, - required=True, - default="./static_graph_params.pdmodel", - help="The path to model info in static graph.", -) -parser.add_argument( - "--params_file", - type=str, - required=True, - default="./static_graph_params.pdiparams", - help="The path to parameters in static graph.", -) -parser.add_argument("--vocab_path", type=str, default="./robot_chat_word_dict.txt", help="The path to vocabulary.") -parser.add_argument( - "--max_seq_length", - default=128, - type=int, - help="The maximum total input sequence length after tokenization. " - "Sequences longer than this will be truncated, sequences shorter will be padded.", -) -parser.add_argument("--batch_size", default=2, type=int, help="Batch size per GPU/CPU for training.") -parser.add_argument( - "--device", - choices=["cpu", "gpu", "xpu"], - default="gpu", - help="Select which device to train model, defaults to gpu.", -) -args = parser.parse_args() - - -def convert_example(data, tokenizer, pad_token_id=0, max_ngram_filter_size=3): - """convert_example""" - input_ids = tokenizer.encode(data) - seq_len = len(input_ids) - # Sequence length should larger or equal than the maximum ngram_filter_size in TextCNN model - if seq_len < max_ngram_filter_size: - input_ids.extend([pad_token_id] * (max_ngram_filter_size - seq_len)) - input_ids = np.array(input_ids, dtype="int64") - return input_ids - - -class Predictor(object): - def __init__(self, model_file, params_file, device, max_seq_length): - self.max_seq_length = max_seq_length - - config = paddle.inference.Config(model_file, params_file) - if device == "gpu": - # set GPU configs accordingly - config.enable_use_gpu(100, 0) - elif device == "cpu": - # set CPU configs accordingly, - # such as enable_mkldnn, set_cpu_math_library_num_threads - config.disable_gpu() - elif device == "xpu": - # set XPU configs accordingly - config.enable_xpu(100) - config.switch_use_feed_fetch_ops(False) - self.predictor = paddle.inference.create_predictor(config) - - self.input_handles = [self.predictor.get_input_handle(name) for name in self.predictor.get_input_names()] - - self.output_handle = self.predictor.get_output_handle(self.predictor.get_output_names()[0]) - - def predict(self, data, tokenizer, label_map, batch_size=1, pad_token_id=0): - """ - Predicts the data labels. - - Args: - data (obj:`list(str)`): Data to be predicted. - tokenizer(obj: paddlenlp.data.JiebaTokenizer): It use jieba to cut the chinese string. - label_map(obj:`dict`): The label id (key) to label str (value) map. - batch_size(obj:`int`, defaults to 1): The number of batch. - pad_token_id(obj:`int`, optional, defaults to 0): The pad token index. - - Returns: - results(obj:`dict`): All the predictions labels. - """ - examples = [] - for text in data: - input_ids = convert_example(text, tokenizer) - examples.append(input_ids) - - # Separates data into some batches. - batches = [examples[idx : idx + batch_size] for idx in range(0, len(examples), batch_size)] - - batchify_fn = lambda samples, fn=Pad(axis=0, pad_val=pad_token_id): fn(samples) # input - - results = [] - for batch in batches: - input_ids = batchify_fn(batch) - self.input_handles[0].copy_from_cpu(input_ids) - self.predictor.run() - logits = paddle.to_tensor(self.output_handle.copy_to_cpu()) - probs = F.softmax(logits, axis=1) - idx = paddle.argmax(probs, axis=1).numpy() - idx = idx.tolist() - labels = [label_map[i] for i in idx] - results.extend(labels) - return results - - -if __name__ == "__main__": - # Define predictor to do prediction. - predictor = Predictor(args.model_file, args.params_file, args.device, args.max_seq_length) - - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - pad_token_id = vocab.to_indices("[PAD]") - tokenizer = JiebaTokenizer(vocab) - label_map = {0: "negative", 1: "neutral", 2: "positive"} - - # Firstly pre-processing prediction data and then do predict. - data = ["你再骂我我真的不跟你聊了", "你看看我附近有什么好吃的", "我喜欢画画也喜欢唱歌"] - - results = predictor.predict(data, tokenizer, label_map, batch_size=args.batch_size, pad_token_id=pad_token_id) - for idx, text in enumerate(data): - print("Data: {} \t Label: {}".format(text, results[idx])) diff --git a/examples/sentiment_analysis/textcnn/export_model.py b/examples/sentiment_analysis/textcnn/export_model.py deleted file mode 100644 index 0953a4002053..000000000000 --- a/examples/sentiment_analysis/textcnn/export_model.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import os - -import paddle -from paddlenlp.data import Vocab -from model import TextCNNModel - -# yapf: disable -parser = argparse.ArgumentParser(__doc__) -parser.add_argument("--vocab_path", type=str, default="./robot_chat_word_dict.txt", help="The path to vocabulary.") -parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu'], default="gpu", help="Select which device to train model, defaults to gpu.") -parser.add_argument("--params_path", type=str, default='./checkpoints/final.pdparams', help="The path of model parameter to be loaded.") -parser.add_argument("--output_path", type=str, default='./static_graph_params', help="The path of model parameter in static graph to be saved.") -args = parser.parse_args() -# yapf: enable - - -def main(): - # Load vocab. - if not os.path.exists(args.vocab_path): - raise RuntimeError("The vocab_path can not be found in the path %s" % args.vocab_path) - - vocab = Vocab.load_vocabulary(args.vocab_path) - label_map = {0: "negative", 1: "neutral", 2: "positive"} - - # Construct the newtork. - vocab_size = len(vocab) - num_classes = len(label_map) - pad_token_id = vocab.to_indices("[PAD]") - - model = TextCNNModel(vocab_size, num_classes, padding_idx=pad_token_id, ngram_filter_sizes=(1, 2, 3)) - - # Load model parameters. - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - model.eval() - - inputs = [paddle.static.InputSpec(shape=[None, None], dtype="int64")] - - model = paddle.jit.to_static(model, input_spec=inputs) - # Save in static graph model. - paddle.jit.save(model, args.output_path) - - -if __name__ == "__main__": - main() diff --git a/examples/sentiment_analysis/textcnn/model.py b/examples/sentiment_analysis/textcnn/model.py deleted file mode 100644 index 655f1e2b8492..000000000000 --- a/examples/sentiment_analysis/textcnn/model.py +++ /dev/null @@ -1,60 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn - -from paddlenlp.seq2vec import CNNEncoder - - -class TextCNNModel(nn.Layer): - """ - This class implements the Text Convolution Neural Network model. - At a high level, the model starts by embedding the tokens and running them through - a word embedding. Then, we encode these representations with a `CNNEncoder`. - The CNN has one convolution layer for each ngram filter size. Each convolution operation gives - out a vector of size num_filter. The number of times a convolution layer will be used - is `num_tokens - ngram_size + 1`. The corresponding maxpooling layer aggregates all these - outputs from the convolution layer and outputs the max. - Lastly, we take the output of the encoder to create a final representation, - which is passed through some feed-forward layers to output a logits (`output_layer`). - - """ - - def __init__( - self, - vocab_size, - num_classes, - emb_dim=128, - padding_idx=0, - num_filter=128, - ngram_filter_sizes=(1, 2, 3), - fc_hidden_size=96, - ): - super().__init__() - self.embedder = nn.Embedding(vocab_size, emb_dim, padding_idx=padding_idx) - self.encoder = CNNEncoder(emb_dim=emb_dim, num_filter=num_filter, ngram_filter_sizes=ngram_filter_sizes) - self.fc = nn.Linear(self.encoder.get_output_dim(), fc_hidden_size) - self.output_layer = nn.Linear(fc_hidden_size, num_classes) - - def forward(self, text): - # Shape: (batch_size, num_tokens, embedding_dim) - embedded_text = self.embedder(text) - # Shape: (batch_size, len(ngram_filter_sizes) * num_filter) - encoder_out = paddle.tanh(self.encoder(embedded_text)) - # Shape: (batch_size, fc_hidden_size) - fc_out = paddle.tanh(self.fc(encoder_out)) - # Shape: (batch_size, num_classes) - logits = self.output_layer(fc_out) - return logits diff --git a/examples/sentiment_analysis/textcnn/predict.py b/examples/sentiment_analysis/textcnn/predict.py deleted file mode 100644 index ba3dd2958149..000000000000 --- a/examples/sentiment_analysis/textcnn/predict.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse - -import paddle -import paddle.nn.functional as F -from paddlenlp.data import JiebaTokenizer, Pad, Vocab - -from model import TextCNNModel -from data import preprocess_prediction_data - -# yapf: disable -parser = argparse.ArgumentParser(__doc__) -parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu'], default="gpu", help="Select which device to train model, defaults to gpu.") -parser.add_argument("--batch_size", type=int, default=1, help="Total examples' number of a batch for training.") -parser.add_argument("--vocab_path", type=str, default="./robot_chat_word_dict.txt", help="The path to vocabulary.") -parser.add_argument("--params_path", type=str, default='./checkpoints/final.pdparams', help="The path of model parameter to be loaded.") -args = parser.parse_args() -# yapf: enable - - -def predict(model, data, label_map, batch_size=1, pad_token_id=0): - """ - Predicts the data labels. - - Args: - model (obj:`paddle.nn.Layer`): A model to classify texts. - data (obj:`list`): The processed data whose each element - is a `list` object, which contains - - - word_ids(obj:`list[int]`): The list of word ids. - label_map(obj:`dict`): The label id (key) to label str (value) map. - batch_size(obj:`int`, defaults to 1): The number of batch. - pad_token_id(obj:`int`, optional, defaults to 0): The pad token index. - - Returns: - results(obj:`dict`): All the predictions labels. - """ - - # Separates data into some batches. - batches = [data[idx : idx + batch_size] for idx in range(0, len(data), batch_size)] - batchify_fn = lambda samples, fn=Pad(axis=0, pad_val=pad_token_id): [data for data in fn(samples)] - - results = [] - model.eval() - for batch in batches: - texts = paddle.to_tensor(batchify_fn(batch)) - logits = model(texts) - probs = F.softmax(logits, axis=1) - idx = paddle.argmax(probs, axis=1).numpy() - idx = idx.tolist() - labels = [label_map[i] for i in idx] - results.extend(labels) - return results - - -if __name__ == "__main__": - paddle.set_device(args.device) - - # Load vocab. - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - label_map = {0: "negative", 1: "neutral", 2: "positive"} - - # Construct the newtork. - vocab_size = len(vocab) - num_classes = len(label_map) - pad_token_id = vocab.to_indices("[PAD]") - - model = TextCNNModel(vocab_size, num_classes, padding_idx=pad_token_id, ngram_filter_sizes=(1, 2, 3)) - - # Load model parameters. - state_dict = paddle.load(args.params_path) - model.set_dict(state_dict) - print("Loaded parameters from %s" % args.params_path) - - # Firstly pre-processing prediction data and then do predict. - data = ["你再骂我我真的不跟你聊了", "你看看我附近有什么好吃的", "我喜欢画画也喜欢唱歌"] - tokenizer = JiebaTokenizer(vocab) - examples = preprocess_prediction_data(data, tokenizer, pad_token_id) - - results = predict(model, examples, label_map=label_map, batch_size=args.batch_size, pad_token_id=pad_token_id) - for idx, text in enumerate(data): - print("Data: {} \t Label: {}".format(text, results[idx])) diff --git a/examples/sentiment_analysis/textcnn/train.py b/examples/sentiment_analysis/textcnn/train.py deleted file mode 100644 index e80d2180af75..000000000000 --- a/examples/sentiment_analysis/textcnn/train.py +++ /dev/null @@ -1,108 +0,0 @@ -# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License" -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from functools import partial -import argparse -import os -import random - -import numpy as np -import paddle -from paddlenlp.datasets import load_dataset -from paddlenlp.data import JiebaTokenizer, Pad, Stack, Tuple, Vocab - -from data import create_dataloader, convert_example, read_custom_data -from model import TextCNNModel - -# yapf: disable -parser = argparse.ArgumentParser(__doc__) -parser.add_argument("--epochs", type=int, default=10, help="Number of epoches for training.") -parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu'], default="gpu", help="Select which device to train model, defaults to gpu.") -parser.add_argument("--lr", type=float, default=5e-5, help="Learning rate used to train.") -parser.add_argument("--save_dir", type=str, default='checkpoints/', help="Directory to save model checkpoint") -parser.add_argument("--data_path", type=str, default='./RobotChat', help="The path of datasets to be loaded") -parser.add_argument("--batch_size", type=int, default=64, help="Total examples' number of a batch for training.") -parser.add_argument("--vocab_path", type=str, default="./robot_chat_word_dict.txt", help="The directory to dataset.") -parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.") -args = parser.parse_args() -# yapf: enable - - -def set_seed(seed=1000): - """Sets random seed.""" - random.seed(seed) - np.random.seed(seed) - paddle.seed(seed) - - -if __name__ == "__main__": - paddle.set_device(args.device) - set_seed() - - # Load vocab. - if not os.path.exists(args.vocab_path): - raise RuntimeError("The vocab_path can not be found in the path %s" % args.vocab_path) - - vocab = Vocab.load_vocabulary(args.vocab_path, unk_token="[UNK]", pad_token="[PAD]") - - # Load datasets. - dataset_names = ["train.tsv", "dev.tsv", "test.tsv"] - train_ds, dev_ds, test_ds = [ - load_dataset(read_custom_data, filename=os.path.join(args.data_path, dataset_name), lazy=False) - for dataset_name in dataset_names - ] - - tokenizer = JiebaTokenizer(vocab) - trans_fn = partial(convert_example, tokenizer=tokenizer) - batchify_fn = lambda samples, fn=Tuple( - Pad(axis=0, pad_val=vocab.token_to_idx.get("[PAD]", 0)), Stack(dtype="int64") # label - ): [data for data in fn(samples)] - train_loader = create_dataloader( - train_ds, batch_size=args.batch_size, mode="train", batchify_fn=batchify_fn, trans_fn=trans_fn - ) - dev_loader = create_dataloader( - dev_ds, batch_size=args.batch_size, mode="validation", batchify_fn=batchify_fn, trans_fn=trans_fn - ) - test_loader = create_dataloader( - test_ds, batch_size=args.batch_size, mode="test", batchify_fn=batchify_fn, trans_fn=trans_fn - ) - - label_map = {0: "negative", 1: "neutral", 2: "positive"} - vocab_size = len(vocab) - num_classes = len(label_map) - pad_token_id = vocab.to_indices("[PAD]") - - model = TextCNNModel(vocab_size, num_classes, padding_idx=pad_token_id, ngram_filter_sizes=(1, 2, 3)) - - if args.init_from_ckpt and os.path.isfile(args.init_from_ckpt): - state_dict = paddle.load(args.init_from_ckpt) - model.set_dict(state_dict) - - model = paddle.Model(model) - - optimizer = paddle.optimizer.Adam(parameters=model.parameters(), learning_rate=args.lr) - - # Define loss and metric. - criterion = paddle.nn.CrossEntropyLoss() - metric = paddle.metric.Accuracy() - - model.prepare(optimizer, criterion, metric) - - # Start training and evaluating. - callback = paddle.callbacks.ProgBarLogger(log_freq=10, verbose=3) - model.fit(train_loader, dev_loader, epochs=args.epochs, save_dir=args.save_dir, callbacks=callback) - - # Evaluate on test dataset - print("Start to evaluate on test dataset...") - model.evaluate(test_loader, log_freq=len(test_loader)) diff --git a/examples/simultaneous_translation/stacl/utils/__init__.py b/examples/simultaneous_translation/stacl/utils/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/examples/text_graph/erniesage/README.md b/examples/text_graph/erniesage/README.md deleted file mode 100644 index a25780be0586..000000000000 --- a/examples/text_graph/erniesage/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# 基于PaddleNLP的ErnieSage模型介绍 - -## 背景介绍 - -在很多工业应用中,往往出现如下图所示的一种特殊的图:Text Graph。顾名思义,图的节点属性由文本构成,而边的构建提供了结构信息。如搜索场景下的Text Graph,节点可由搜索词、网页标题、网页正文来表达,用户反馈和超链信息则可构成边关系。 -Text Graph - -**ErnieSage** 由飞桨PGL团队提出,是ERNIE SAmple aggreGatE的简称,该模型可以同时建模文本语义与图结构信息,有效提升 Text Graph 的应用效果。其中 [**ERNIE**](https://github.com/PaddlePaddle/ERNIE) 是百度推出的基于知识增强的持续学习语义理解框架。 - -**ErnieSage** 是 ERNIE 与 GraphSAGE 碰撞的结果,是 ERNIE SAmple aggreGatE 的简称,它的结构如下图所示,主要思想是通过 ERNIE 作为聚合函数(Aggregators),建模自身节点和邻居节点的语义与结构关系。ErnieSage 对于文本的建模是构建在邻居聚合的阶段,中心节点文本会与所有邻居节点文本进行拼接;然后通过预训练的 ERNIE 模型进行消息汇聚,捕捉中心节点以及邻居节点之间的相互关系;最后使用 ErnieSage 搭配独特的邻居互相看不见的 Attention Mask 和独立的 Position Embedding 体系,就可以轻松构建 TextGraph 中句子之间以及词之间的关系。 - -ERNIESage - -使用ID特征的GraphSAGE只能够建模图的结构信息,而单独的ERNIE只能处理文本信息。通过飞桨PGL搭建的图与文本的桥梁,**ErnieSage**能够很简单的把GraphSAGE以及ERNIE的优点结合一起。以下面TextGraph的场景,**ErnieSage**的效果能够比单独的ERNIE以及GraphSAGE模型都要好。 - -**ErnieSage**可以很轻松地在基于PaddleNLP构建基于Ernie的图神经网络,目前PaddleNLP提供了V2版本的ErnieSage模型: - -- **ErnieSage V2**: ERNIE 作用在text graph的边上; - -ERNIESage_v1_4 - -## 环境依赖 - -- pgl >= 2.1 -安装命令 `pip install pgl\>=2.1` - -## 数据准备 -示例数据```data.txt```中使用了NLPCC2016-DBQA的部分数据,格式为每行"query \t answer"。 -```text -NLPCC2016-DBQA 是由国际自然语言处理和中文计算会议 NLPCC 于 2016 年举办的评测任务,其目标是从候选中找到合适的文档作为问题的答案。[链接: http://tcci.ccf.org.cn/conference/2016/dldoc/evagline2.pdf] -``` - -## 如何运行 - -我们采用了[PaddlePaddle Fleet](https://github.com/PaddlePaddle/Fleet)作为我们的分布式训练框架,在```config/*.yaml```中,目前支持的[ERNIE](https://github.com/PaddlePaddle/ERNIE)预训练语义模型包括**ernie**以及**ernie_tiny**,通过config/erniesage_link_prediction.yaml中的ernie_name指定。 - - -```sh -# 数据预处理,建图 -python ./preprocessing/dump_graph.py --conf ./config/erniesage_link_prediction.yaml -# GPU多卡或单卡模式ErnieSage -python -m paddle.distributed.launch --gpus "0" link_prediction.py --conf ./config/erniesage_link_prediction.yaml -# 对图节点的embeding进行预测, 单卡或多卡 -python -m paddle.distributed.launch --gpus "0" link_prediction.py --conf ./config/erniesage_link_prediction.yaml --do_predict -``` - -## 超参数设置 - -- epochs: 训练的轮数 -- graph_data: 训练模型时用到的图结构数据,使用“text1 \t text"格式。 -- train_data: 训练时的边,与graph_data格式相同,一般可以直接用graph_data。 -- graph_work_path: 临时存储graph数据中间文件的目录。 -- samples: 采样邻居数 -- model_type: 模型类型,包括ErnieSageV2。 -- ernie_name: 热启模型类型,支持“ernie”和"ernie_tiny",后者速度更快,指定该参数后会自动从服务器下载预训练模型文件。 -- num_layers: 图神经网络层数。 -- hidden_size: 隐藏层大小。 -- batch_size: 训练时的batchsize。 -- infer_batch_size: 预测时batchsize。 diff --git a/examples/text_graph/erniesage/config/erniesage_link_prediction.yaml b/examples/text_graph/erniesage/config/erniesage_link_prediction.yaml deleted file mode 100644 index 970f5de365b7..000000000000 --- a/examples/text_graph/erniesage/config/erniesage_link_prediction.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Global Environment Settings - -# trainer config ------ -device: "gpu" # use cpu or gpu devices to train. -seed: 2020 - -task: "link_prediction" -model_name_or_path: "ernie-tiny" # ernie-tiny or ernie-1.0 avaiable -sample_workers: 1 -optimizer_type: "adam" -lr: 0.00005 -batch_size: 32 -CPU_NUM: 10 -epoch: 30 -log_per_step: 10 -save_per_step: 200 -output_path: "./output" - -# data config ------ -train_data: "./example_data/graph_data.txt" -graph_data: "./example_data/train_data.txt" -graph_work_path: "./graph_workdir" -input_type: "text" -encoding: "utf8" - -# model config ------ -samples: [10] -model_type: "ErnieSageV2" -max_seqlen: 40 -num_layers: 1 -hidden_size: 128 -final_fc: true -final_l2_norm: true -loss_type: "hinge" -margin: 0.1 -neg_type: "batch_neg" - -# infer config ------ -infer_model: "./output/last" -infer_batch_size: 128 diff --git a/examples/text_graph/erniesage/data/dataset.py b/examples/text_graph/erniesage/data/dataset.py deleted file mode 100644 index 2a3733851e63..000000000000 --- a/examples/text_graph/erniesage/data/dataset.py +++ /dev/null @@ -1,115 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os - -import numpy as np -import paddle -import pgl -from paddle.io import Dataset -from pgl.sampling import graphsage_sample - -__all__ = [ - "TrainData", - "PredictData", - "batch_fn", -] - - -class TrainData(Dataset): - def __init__(self, graph_work_path): - trainer_id = paddle.distributed.get_rank() - trainer_count = paddle.distributed.get_world_size() - print("trainer_id: %s, trainer_count: %s." % (trainer_id, trainer_count)) - - edges = np.load(os.path.join(graph_work_path, "train_data.npy"), allow_pickle=True) - # edges is bidirectional. - train_src = edges[trainer_id::trainer_count, 0] - train_dst = edges[trainer_id::trainer_count, 1] - returns = {"train_data": [train_src, train_dst]} - - if os.path.exists(os.path.join(graph_work_path, "neg_samples.npy")): - neg_samples = np.load(os.path.join(graph_work_path, "neg_samples.npy"), allow_pickle=True) - if neg_samples.size != 0: - train_negs = neg_samples[trainer_id::trainer_count] - returns["train_data"].append(train_negs) - print("Load train_data done.") - self.data = returns - - def __getitem__(self, index): - return [data[index] for data in self.data["train_data"]] - - def __len__(self): - return len(self.data["train_data"][0]) - - -class PredictData(Dataset): - def __init__(self, num_nodes): - trainer_id = paddle.distributed.get_rank() - trainer_count = paddle.distributed.get_world_size() - self.data = np.arange(trainer_id, num_nodes, trainer_count) - - def __getitem__(self, index): - return [self.data[index], self.data[index]] - - def __len__(self): - return len(self.data) - - -def batch_fn(batch_ex, samples, base_graph, term_ids): - batch_src = [] - batch_dst = [] - batch_neg = [] - for batch in batch_ex: - batch_src.append(batch[0]) - batch_dst.append(batch[1]) - if len(batch) == 3: # default neg samples - batch_neg.append(batch[2]) - - batch_src = np.array(batch_src, dtype="int64") - batch_dst = np.array(batch_dst, dtype="int64") - if len(batch_neg) > 0: - batch_neg = np.unique(np.concatenate(batch_neg)) - else: - batch_neg = batch_dst - - nodes = np.unique(np.concatenate([batch_src, batch_dst, batch_neg], 0)) - subgraphs = graphsage_sample(base_graph, nodes, samples) - - subgraph, sample_index, node_index = subgraphs[0] - from_reindex = {int(x): i for i, x in enumerate(sample_index)} - - term_ids = term_ids[sample_index].astype(np.int64) - - sub_src_idx = pgl.graph_kernel.map_nodes(batch_src, from_reindex) - sub_dst_idx = pgl.graph_kernel.map_nodes(batch_dst, from_reindex) - sub_neg_idx = pgl.graph_kernel.map_nodes(batch_neg, from_reindex) - - user_index = np.array(sub_src_idx, dtype="int64") - pos_item_index = np.array(sub_dst_idx, dtype="int64") - neg_item_index = np.array(sub_neg_idx, dtype="int64") - - user_real_index = np.array(batch_src, dtype="int64") - pos_item_real_index = np.array(batch_dst, dtype="int64") - - return ( - np.array([subgraph.num_nodes], dtype="int32"), - subgraph.edges.astype("int32"), - term_ids, - user_index, - pos_item_index, - neg_item_index, - user_real_index, - pos_item_real_index, - ) diff --git a/examples/text_graph/erniesage/data/graph_reader.py b/examples/text_graph/erniesage/data/graph_reader.py deleted file mode 100755 index ca82d5c78f66..000000000000 --- a/examples/text_graph/erniesage/data/graph_reader.py +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import pgl -from paddle.io import DataLoader - -__all__ = ["GraphDataLoader"] - - -class GraphDataLoader(object): - def __init__(self, dataset, batch_size=1, shuffle=True, num_workers=1, collate_fn=None, **kwargs): - self.loader = DataLoader( - dataset=dataset, - batch_size=batch_size, - shuffle=shuffle, - num_workers=num_workers, - collate_fn=collate_fn, - **kwargs, - ) - - def __iter__(self): - func = self.__callback__() - for data in self.loader(): - yield func(data) - - def __call__(self): - return self.__iter__() - - def __callback__(self): - """callback function, for recontruct a dict or graph.""" - - def construct(tensors): - """tensor list to ([graph_tensor, graph_tensor, ...], - other tensor) - """ - graph_num = 1 - start_len = 0 - data = [] - graph_list = [] - for graph in range(graph_num): - graph_list.append(pgl.Graph(num_nodes=tensors[start_len], edges=tensors[start_len + 1])) - start_len += 2 - - for i in range(start_len, len(tensors)): - data.append(tensors[i]) - return graph_list, data - - return construct diff --git a/examples/text_graph/erniesage/example_data/graph_data.txt b/examples/text_graph/erniesage/example_data/graph_data.txt deleted file mode 100644 index e9aead6c89fa..000000000000 --- a/examples/text_graph/erniesage/example_data/graph_data.txt +++ /dev/null @@ -1,1000 +0,0 @@ -黑缘粗角肖叶甲触角有多大? 体长卵形,棕红色;鞘翅棕黄或淡棕色,外缘和中缝黑色或黑褐色;触角基部3、4节棕黄,余节棕色。 -黑缘粗角肖叶甲触角有多大? 头部刻点粗大,分布不均匀,头顶刻点十分稀疏;触角基部的内侧有一个三角形光瘤,唇基前缘呈半圆形凹切。 -黑缘粗角肖叶甲触角有多大? 触角近于体长之半,第1节粗大,棒状,第2节短,椭圆形,3、4两节细长,稍短于第5节,第5节基细端粗,末端6节明显粗大。 -黑缘粗角肖叶甲触角有多大? 前胸背板横宽,宽约为长的两倍,侧缘敞出较宽,圆形,敞边与盘区之间有一条细纵沟;盘区刻点相当密,前半部刻点较大于后半部。 -黑缘粗角肖叶甲触角有多大? 小盾片舌形,光亮,末端圆钝。 -黑缘粗角肖叶甲触角有多大? 鞘翅刻点粗大,不规则排列,肩部之后的刻点更为粗大,具皱褶,近中缝的刻点较小,略呈纵行排列。 -黑缘粗角肖叶甲触角有多大? 前胸前侧片前缘直;前胸后侧片具粗大刻点。 -黑缘粗角肖叶甲触角有多大? 足粗壮;胫节具纵脊,外端角向外延伸,呈弯角状;爪具附齿。 -暮光闪闪的姐姐是谁? 暮光闪闪是一匹雌性独角兽,后来在神秘魔法的影响下变成了空角兽(公主),她是《我的小马驹:友情是魔法》(英文名:My Little Pony:Friendship is Magic)中的主角之一。 -暮光闪闪的姐姐是谁? 她是银甲闪闪(Shining Armor)的妹妹,同时也是韵律公主(Princess Cadance)的小姑子。 -暮光闪闪的姐姐是谁? 在该系列中,她与最好的朋友与助手斯派克(Spike)一起生活在小马镇(Ponyville)的金橡图书馆(Golden Oak Library),研究友谊的魔法。 -暮光闪闪的姐姐是谁? 在暮光闪闪成为天角兽之前(即S3E13前),常常给塞拉丝蒂娅公主(Princess Celestia)关于友谊的报告。[1] -暮光闪闪的姐姐是谁? 《我的小马驹:友谊是魔法》(英文名称:My Little Pony:Friendship is Magic)(简称MLP) -暮光闪闪的姐姐是谁? 动画讲述了一只名叫做暮光闪闪(Twilight Sparkle)的独角兽(在SE3E13 -暮光闪闪的姐姐是谁? My Little Pony:Friendship is Magic[2] -暮光闪闪的姐姐是谁? 后成为了天角兽),执行她的导师塞拉斯蒂娅公主(PrincessCelestia)的任务,在小马镇(Ponyville)学习关于友谊的知识。 -暮光闪闪的姐姐是谁? 她与另外五只小马,苹果杰克(Applejack)、瑞瑞(Rarity)、云宝黛西(Rainbow Dash)、小蝶(Fluttershy)与萍琪派(Pinkie Pie),成为了最要好的朋友。 -暮光闪闪的姐姐是谁? 每匹小马都分别代表了协律精华的6个元素:诚实,慷慨,忠诚,善良,欢笑,魔法,各自扮演着属于自己的重要角色。 -暮光闪闪的姐姐是谁? 此后,暮光闪闪(Twilight Sparkle)便与她认识的新朋友们开始了有趣的日常生活。 -暮光闪闪的姐姐是谁? 在动画中,随时可见她们在小马镇(Ponyville)的种种冒险、奇遇、日常等等。 -暮光闪闪的姐姐是谁? 同时,也在她们之间的互动和冲突中,寻找着最适合最合理的完美解决方案。 -暮光闪闪的姐姐是谁? “尽管小马国并不太平,六位主角之间也常常有这样那样的问题,但是他们之间的真情对待,使得这个童话世界已经成为不少人心中理想的世外桃源。” -暮光闪闪的姐姐是谁? 暮光闪闪在剧情刚开始的时候生活在中心城(Canterlot),后来在夏日 -暮光闪闪的姐姐是谁? 暮光闪闪与斯派克(Spike) -暮光闪闪的姐姐是谁? 庆典的时候被塞拉丝蒂娅公主派遣到小马镇执行检查夏日庆典的准备工作的任务。 -暮光闪闪的姐姐是谁? 在小马镇交到了朋友(即其余5个主角),并和她们一起使用协律精华(Elements of harmony)击败了梦魇之月。 -暮光闪闪的姐姐是谁? 并在塞拉丝蒂亚公主的许可下,留在小马镇继续研究友谊的魔法。 -暮光闪闪的姐姐是谁? 暮光闪闪的知识基本来自于书本,并且她相当不相信书本以外的“迷信”,因为这样她在S1E15里吃足了苦头。 -暮光闪闪的姐姐是谁? 在这之后,她也开始慢慢学会相信一些书本以外的东西。 -暮光闪闪的姐姐是谁? 暮光闪闪热爱学习,并且学习成绩相当好(从她可以立刻算出 -暮光闪闪的姐姐是谁? 的结果可以看 -暮光闪闪的姐姐是谁? 暮光闪闪的原型 -暮光闪闪的姐姐是谁? 出)。 -暮光闪闪的姐姐是谁? 相当敬爱自己的老师塞拉丝蒂亚公主甚至到了精神失常的地步。 -暮光闪闪的姐姐是谁? 在第二季中,曾因为无法交出关于友谊的报告而做出了疯狂的行为,后来被塞拉丝蒂亚公主制止,在这之后,暮光闪闪得到了塞拉丝蒂亚公主“不用定期交友谊报告”的许可。 -暮光闪闪的姐姐是谁? 于是暮光闪闪在后面的剧情中的主角地位越来越得不到明显的体现。 -暮光闪闪的姐姐是谁? 在SE3E13中,因为破解了白胡子星璇留下的神秘魔法而被加冕成为了天角兽(公主),被尊称为“闪闪公主”。 -暮光闪闪的姐姐是谁? 当小星座熊在小马镇引起恐慌的时候,暮光闪闪运用了自身强大的魔法将水库举起后装满牛奶,用牛奶将小星座熊安抚后,连着巨型奶瓶和小星座熊一起送回了小星座熊居住的山洞。 -我想知道红谷十二庭有哪些金融机构? 红谷十二庭是由汪氏集团旗下子公司江西尤金房地产开发有限公司携手城发投资共同开发的精品社区,项目占地面积约380亩,总建筑面积约41万平方米。 -我想知道红谷十二庭有哪些金融机构? 项目以建设人文型、生态型居住环境为规划目标;创造一个布局合理、功能齐全、交通便捷、绿意盎然、生活方便,有文化内涵的居住区。 -我想知道红谷十二庭有哪些金融机构? 金融机构:工商银行、建设银行、农业银行、中国银行红谷滩支行、商业银行红谷滩支行等 -我想知道红谷十二庭有哪些金融机构? 周边公园:沿乌砂河50米宽绿化带、乌砂河水岸公园、秋水广场、赣江市民公园 -我想知道红谷十二庭有哪些金融机构? 周边医院:新建县人民医院、开心人药店、中寰医院 -我想知道红谷十二庭有哪些金融机构? 周边学校:育新小学红谷滩校区、南师附小红谷滩校区、实验小学红谷滩校区中学:南昌二中红谷滩校区、南昌五中、新建二中、竞秀贵族学校 -我想知道红谷十二庭有哪些金融机构? 周边公共交通:112、204、211、219、222、227、238、501等20多辆公交车在本项目社区门前停靠 -我想知道红谷十二庭有哪些金融机构? 红谷十二庭处在南昌一江两城中的西城中心,位属红谷滩CBD文化公园中心——马兰圩中心组团,红谷滩中心区、红角洲、新建县三区交汇处,南临南期友好路、东接红谷滩中心区、西靠乌砂河水岸公园(50米宽,1000米长)。 -我想知道红谷十二庭有哪些金融机构? 交通便捷,景观资源丰富,生活配套设施齐全,出则繁华,入则幽静,是现代人居的理想地段。 -我想知道红谷十二庭有哪些金融机构? 红谷十二庭户型图 -苏琳最开始进入智通实业是担任什么职位? 现任广东智通人才连锁股份有限公司总裁,清华大学高级工商管理硕士。 -苏琳最开始进入智通实业是担任什么职位? 1994年,加入智通实业,从总经理秘书做起。 -苏琳最开始进入智通实业是担任什么职位? 1995年,智通实业决定进入人才服务行业,被启用去负责新公司的筹建及运营工作,在苏琳的努力下,智通人才智力开发有限公司成立。 -苏琳最开始进入智通实业是担任什么职位? 2003年,面对同城对手的激烈竞争,苏琳冷静对待,领导智通先后接管、并购了同城的腾龙、安达盛人才市场,,“品牌运作,连锁经营,差异制胜”成为苏琳屡屡制胜的法宝。 -苏琳最开始进入智通实业是担任什么职位? 2006年,苏琳先是将智通人才升级为“东莞市智通人才连锁有限公司”,一举成为广东省人才市场目前惟一的连锁机构,随后在东莞同时开设长安、松山湖、清溪等镇区分部,至此智通在东莞共有6个分部。 -苏琳最开始进入智通实业是担任什么职位? 一番大刀阔斧完成东莞布局后,苏琳确定下一个更为高远的目标——进军珠三角,向全国发展连锁机构。 -苏琳最开始进入智通实业是担任什么职位? 到2011年末,苏琳领导的智通人才已在珠三角的东莞、佛山、江门、中山等地,长三角的南京、宁波、合肥等地,中西部的南昌、长沙、武汉、重庆、西安等地设立了20多家连锁经营网点。 -苏琳最开始进入智通实业是担任什么职位? 除了财务副总裁之外,苏琳是智通人才核心管理高层当中唯一的女性,不管是要约采访的记者还是刚刚加入智通的员工,见到苏琳的第一面,都会有一种惊艳的感觉,“一位女企业家居然非常美丽和时尚?!” -苏琳最开始进入智通实业是担任什么职位? 智通管理高层的另外6位男性成员,有一次同时接受一家知名媒体采访时,共同表达了对自己老板的“爱慕”之情,苏琳听后莞尔一笑,指着在座的这几位高层说道“其实,我更爱他们!” -苏琳最开始进入智通实业是担任什么职位? 这种具有独特领导魅力的表述让这位记者唏嘘不已,同时由这样的一个细节让他感受到了智通管理团队的协作力量。 -谁知道黄沙中心小学的邮政编码是多少? 学校于1954年始建于棕树湾村,当时借用一间民房做教室,取名为“黄沙小学”,只有教师1人,学生8人。 -谁知道黄沙中心小学的邮政编码是多少? 1958年在大跃进精神的指导下,实行大集体,全乡集中办学,发展到12个班,300多学生,20名教职工。 -谁知道黄沙中心小学的邮政编码是多少? 1959年解散。 -谁知道黄沙中心小学的邮政编码是多少? 1959年下半年,在上级的扶持下,建了6间木房,搬到1960年学校所在地,有6名教师,3个班,60名学生。 -谁知道黄沙中心小学的邮政编码是多少? 1968年,开始招收一个初中班,“黄沙小学”改名为 “附小”。 -谁知道黄沙中心小学的邮政编码是多少? 当时已发展到5个班,8名教师,110多名学生。 -谁知道黄沙中心小学的邮政编码是多少? 增建土木结构教室两间。 -谁知道黄沙中心小学的邮政编码是多少? 1986年,初中、小学分开办学。 -谁知道黄沙中心小学的邮政编码是多少? 增建部分教师宿舍和教室,办学条件稍有改善,学校初具规模。 -谁知道黄沙中心小学的邮政编码是多少? 1996年,我校在市、县领导及希望工程主管部门的关怀下,决定改为“黄沙希望小学”并拨款32万元,新建一栋4层,12间教室的教学楼,教学条件大有改善。 -谁知道黄沙中心小学的邮政编码是多少? 当时发展到10个班,学生300多人,教职工19人,小学高级教师3人,一级教师7人,二级教师9人。 -谁知道黄沙中心小学的邮政编码是多少? 2003年下半年由于农村教育体制改革,撤销教育组,更名为“黄沙中心小学”。 -谁知道黄沙中心小学的邮政编码是多少? 学校现有在校生177人(含学前42人),设有学前至六年级共7个教学班。 -谁知道黄沙中心小学的邮政编码是多少? 有教师19人,其中大专以上学历11人,中师6人;小学高级教师14人,一级教师5人。 -谁知道黄沙中心小学的邮政编码是多少? 学校校园占地面积2050平方米,生均达15.29平方米,校舍建筑面积1645平方米,生均12.27平方米;设有教师办公室、自然实验、电教室(合二为一)、微机室、图书阅览室(合二为一)、体育室、广播室、少先队活动室。 -谁知道黄沙中心小学的邮政编码是多少? 广西壮族自治区桂林市临桂县黄沙瑶族乡黄沙街 邮编:541113[1] -伊藤实华的职业是什么? 伊藤实华(1984年3月25日-)是日本的女性声优。 -伊藤实华的职业是什么? THREE TREE所属,东京都出身,身长149cm,体重39kg,血型AB型。 -伊藤实华的职业是什么? ポルノグラフィティのLION(森男) -伊藤实华的职业是什么? 2000年 -伊藤实华的职业是什么? 犬夜叉(枫(少女时代)) -伊藤实华的职业是什么? 幻影死神(西亚梨沙) -伊藤实华的职业是什么? 2001年 -伊藤实华的职业是什么? NOIR(ロザリー) -伊藤实华的职业是什么? 2002年 -伊藤实华的职业是什么? 水瓶战记(柠檬) -伊藤实华的职业是什么? 返乡战士(エイファ) -伊藤实华的职业是什么? 2003年 -伊藤实华的职业是什么? 奇诺之旅(女子A(悲しい国)) -伊藤实华的职业是什么? 2004年 -伊藤实华的职业是什么? 爱你宝贝(坂下ミキ) -伊藤实华的职业是什么? Get Ride! アムドライバー(イヴァン・ニルギース幼少期) -伊藤实华的职业是什么? スクールランブル(花井春树(幼少时代)) -伊藤实华的职业是什么? 2005年 -伊藤实华的职业是什么? 光速蒙面侠21(虎吉) -伊藤实华的职业是什么? 搞笑漫画日和(男子トイレの精、パン美先生) -伊藤实华的职业是什么? 银牙伝说WEED(テル) -伊藤实华的职业是什么? 魔女的考验(真部カレン、守山太郎) -伊藤实华的职业是什么? BUZZER BEATER(レニー) -伊藤实华的职业是什么? 虫师(“眼福眼祸”さき、“草を踏む音”沢(幼少时代)) -伊藤实华的职业是什么? 2006年 -伊藤实华的职业是什么? 魔女之刃(娜梅) -伊藤实华的职业是什么? 反斗小王子(远藤レイラ) -伊藤实华的职业是什么? 搞笑漫画日和2(パン美先生、フグ子、ダンサー、ヤマトの妹、女性) -伊藤实华的职业是什么? 人造昆虫カブトボーグ V×V(ベネチアンの弟、东ルリ、园儿A) -伊藤实华的职业是什么? 2007年 -爆胎监测与安全控制系统英文是什么? 爆胎监测与安全控制系统(Blow-out Monitoring and Brake System),是吉利全球首创,并拥有自主知识产权及专利的一项安全技术。 -爆胎监测与安全控制系统英文是什么? 这项技术主要是出于防止高速爆胎所导致的车辆失控而设计。 -爆胎监测与安全控制系统英文是什么? BMBS爆胎监测与安全控制系统技术于2004年1月28日正式获得中国发明专利授权。 -爆胎监测与安全控制系统英文是什么? 2008年第一代BMBS系统正式与世人见面,BMBS汇集国内外汽车力学、控制学、人体生理学、电子信息学等方面的专家和工程技术人员经过一百余辆试验车累计行程超过五百万公里的可靠性验证,以确保产品的可靠性。 -爆胎监测与安全控制系统英文是什么? BMBS技术方案的核心即是采用智能化自动控制系统,弥补驾驶员生理局限,在爆胎后反应时间为0.5秒,替代驾驶员实施行车制动,保障行车安全。 -爆胎监测与安全控制系统英文是什么? BMBS系统由控制系统和显示系统两大部分组成,控制系统由BMBS开关、BMBS主机、BMBS分机、BMBS真空助力器四部分组成;显示系统由GPS显示、仪表指示灯、语言提示、制动双闪灯组成。 -爆胎监测与安全控制系统英文是什么? 当轮胎气压高于或低于限值时,控制器声光提示胎压异常。 -爆胎监测与安全控制系统英文是什么? 轮胎温度过高时,控制器发出信号提示轮胎温度过高。 -爆胎监测与安全控制系统英文是什么? 发射器电量不足时,控制器显示低电压报警。 -爆胎监测与安全控制系统英文是什么? 发射器受到干扰长期不发射信号时,控制器显示无信号报警。 -爆胎监测与安全控制系统英文是什么? 当汽车电门钥匙接通时,BMBS首先进入自检程序,检测系统各部分功能是否正常,如不正常,BMBS报警灯常亮。 -走读干部现象在哪里比较多? 走读干部一般是指县乡两级干部家住县城以上的城市,本人在县城或者乡镇工作,要么晚出早归,要么周一去单位上班、周五回家过周末。 -走读干部现象在哪里比较多? 对于这种现象,社会上的议论多是批评性的,认为这些干部脱离群众、作风漂浮、官僚主义,造成行政成本增加和腐败。 -走读干部现象在哪里比较多? 截至2014年10月,共有6484名“走读干部”在专项整治中被查处。 -走读干部现象在哪里比较多? 这是中央首次大规模集中处理这一长期遭诟病的干部作风问题。 -走读干部现象在哪里比较多? 干部“走读”问题主要在乡镇地区比较突出,城市地区则较少。 -走读干部现象在哪里比较多? 从历史成因和各地反映的情况来看,产生“走读”现象的主要原因大致有四种: -走读干部现象在哪里比较多? 现今绝大多数乡村都有通往乡镇和县城的石子公路甚至柏油公路,这无疑为农村干部的出行创造了便利条件,为“干部像候鸟,频往家里跑”创造了客观条件。 -走读干部现象在哪里比较多? 选调生、公务员队伍大多是学历较高的大学毕业生,曾在高校所在地的城市生活,不少人向往城市生活,他们不安心长期扎根基层,而是将基层当作跳板,因此他们往往成为“走读”的主力军。 -走读干部现象在哪里比较多? 公仆意识、服务意识淡化,是“走读”现象滋生的主观原因。 -走读干部现象在哪里比较多? 有些党员干部感到自己长期在基层工作,该为自己和家庭想想了。 -走读干部现象在哪里比较多? 于是,不深入群众认真调查研究、认真听取群众意见、认真解决群众的实际困难,也就不难理解了。 -走读干部现象在哪里比较多? 县级党政组织对乡镇领导干部管理的弱化和为基层服务不到位,导致“走读”问题得不到应有的制度约束,是“走读”问题滋长的组织原因。[2] -走读干部现象在哪里比较多? 近些年来,我国一些地方的“干部走读”现象较为普遍,社会上对此议走读干部论颇多。 -走读干部现象在哪里比较多? 所谓“干部走读”,一般是指县乡两级干部家住县城以上的城市,本人在县城或者乡镇工作,要么早出晚归,要么周一去单位上班、周五回家过周末。 -走读干部现象在哪里比较多? 对于这种现象,社会上的议论多是批评性的,认为这些干部脱离群众、作风漂浮、官僚主义,造成行政成本增加和腐败。 -走读干部现象在哪里比较多? 干部走读之所以成为“千夫所指”,是因为这种行为增加了行政成本。 -走读干部现象在哪里比较多? 从根子上说,干部走读是城乡发展不平衡的产物,“人往高处走,水往低处流”,有了更加舒适的生活环境,不管是为了自己生活条件改善也好,还是因为子女教育也好,农村人口向城镇转移,这是必然结果。 -走读干部现象在哪里比较多? “干部走读”的另一个重要原因,是干部人事制度改革。 -走读干部现象在哪里比较多? 目前公务员队伍“凡进必考”,考上公务员的大多是学历较高的大学毕业生,这些大学毕业生来自各个全国各地,一部分在本地结婚生子,沉淀下来;一部分把公务员作为跳板,到基层后或考研,或再参加省考、国考,或想办法调回原籍。 -走读干部现象在哪里比较多? 再加上一些下派干部、异地交流任职干部,构成了看似庞大的“走读”队伍。 -走读干部现象在哪里比较多? 那么,“干部走读”有哪些弊端呢? -走读干部现象在哪里比较多? 一是这些干部人在基层,心在城市,缺乏长期作战的思想,工作不安心。 -走读干部现象在哪里比较多? 周一来上班,周五回家转,对基层工作缺乏热情和感情;二是长期在省市直机关工作,对基层工作不熟悉不了解,工作不热心;三是长期走读,基层干群有工作难汇报,有困难难解决,群众不开心;四是干部来回走读,公车私驾,私费公报,把大量的经济负担转嫁给基层;五是对这些走读干部,基层管不了,上级监督难,节假日期间到哪里去、做什么事,基本处于失控和真空状态,各级组织和基层干群不放心。 -走读干部现象在哪里比较多? 特别需要引起警觉的是,由于少数走读干部有临时思想,满足于“当维持会长”,得过且过混日子,热衷于做一些急功近利、砸锅求铁的短期行为和政绩工程,不愿做打基础、管长远的实事好事,甚至怠政、疏政和懒于理政,影响了党和政府各项方针政策措施的落实,导致基层无政府主义、自由主义抬头,削弱了党和政府的领导,等到矛盾激化甚至不可收拾的时候,处理已是来之不及。 -走读干部现象在哪里比较多? 权利要与义务相等,不能只有义务而没有权利,或是只有权利没有义务。 -走读干部现象在哪里比较多? 如何真正彻底解决乡镇干部“走读”的现象呢? -走读干部现象在哪里比较多? 那就必须让乡镇基层干部义务与权利相等。 -走读干部现象在哪里比较多? 如果不能解决基层干部待遇等问题,即使干部住村,工作上也不会有什么进展的。 -走读干部现象在哪里比较多? 所以,在政治上关心,在生活上照顾,在待遇上提高。 -走读干部现象在哪里比较多? 如,提高基层干部的工资待遇,增加通讯、交通补助;帮助解决子女入学及老人赡养问题;提拔干部优先考虑基层干部;干部退休时的待遇至少不低于机关干部等等。 -化州市良光镇东岸小学学风是什么? 学校全体教职工爱岗敬业,团结拼搏,勇于开拓,大胆创新,进行教育教学改革,努力开辟第二课堂的教学路子,并开通了网络校校通的交流合作方式。 -化州市良光镇东岸小学学风是什么? 现学校教师正在为创建安全文明校园而努力。 -化州市良光镇东岸小学学风是什么? 东岸小学位置偏僻,地处贫穷落后,是良光镇最偏远的学校,学校,下辖分教点——东心埇小学,[1]?。 -化州市良光镇东岸小学学风是什么? 学校2011年有教师22人,学生231人。 -化州市良光镇东岸小学学风是什么? 小学高级教师8人,小学一级教师10人,未定级教师4人,大专学历的教师6人,其余的都具有中师学历。 -化州市良光镇东岸小学学风是什么? 全校共设12个班,学校课程按标准开设。 -化州市良光镇东岸小学学风是什么? 东岸小学原来是一所破旧不堪,教学质量非常差的薄弱学校。 -化州市良光镇东岸小学学风是什么? 近几年来,在各级政府、教育部门及社会各界热心人士鼎力支持下,学校领导大胆改革创新,致力提高教学质量和教师水平,并加大经费投入,大大改善了办学条件,使学校由差变好,实现了大跨越。 -化州市良光镇东岸小学学风是什么? 学校建设性方面。 -化州市良光镇东岸小学学风是什么? 东岸小学属于革命老区学校,始建于1980年,从东心埇村祠堂搬到这个校址,1990年建造一幢建筑面积为800平方米的南面教学楼, 1998年老促会支持从北面建造一幢1800平方米的教学大楼。 -化州市良光镇东岸小学学风是什么? 学校在管理方面表现方面颇具特色,实现了各项制度的日常化和规范化。 -化州市良光镇东岸小学学风是什么? 学校领导有较强的事业心和责任感,讲求民主与合作,勤政廉政,依法治校,树立了服务意识。 -化州市良光镇东岸小学学风是什么? 学校一贯实施“德育为先,以人为本”的教育方针,制定了“团结,律已,拼搏,创新”的校训。 -化州市良光镇东岸小学学风是什么? 教育风为“爱岗敬业,乐于奉献”,学风为“乐学,勤学,巧学,会学”。 -化州市良光镇东岸小学学风是什么? 校内营造了尊师重教的氛围,形成了良好的校风和学风。 -化州市良光镇东岸小学学风是什么? 教师们爱岗敬业,师德高尚,治学严谨,教研教改气氛浓厚,获得喜人的教研成果。 -化州市良光镇东岸小学学风是什么? 近几年来,教师撰写的教育教学论文共10篇获得县市级以上奖励,获了镇级以上奖励的有100人次。 -化州市良光镇东岸小学学风是什么? 学校德育工作成绩显著,多年被评为“安全事故为零”的学校,良光镇先进学校。 -化州市良光镇东岸小学学风是什么? 特别是教学质量大大提高了。 -化州市良光镇东岸小学学风是什么? 这些成绩得到了上级及群众的充分肯定。 -化州市良光镇东岸小学学风是什么? 1.学校环境欠美观有序,学校大门口及校道有待改造。 -化州市良光镇东岸小学学风是什么? 2.学校管理制度有待改进,部分教师业务水平有待提高。 -化州市良光镇东岸小学学风是什么? 3.教师宿舍、教室及学生宿舍欠缺。 -化州市良光镇东岸小学学风是什么? 4.运动场不够规范,各类体育器材及设施需要增加。 -化州市良光镇东岸小学学风是什么? 5.学生活动空间少,见识面窄,视野不够开阔。 -化州市良光镇东岸小学学风是什么? 1.努力营造和谐的教育教学新气氛。 -化州市良光镇东岸小学学风是什么? 建立科学的管理制度,坚持“与时俱进,以人为本”,真正实现领导对教师,教师对学生之间进行“德治与情治”;学校的人文环境做到“文明,和谐,清新”;德育环境做到“自尊,律已,律人”;心理环境做到“安全,谦虚,奋发”;交际环境做到“团结合作,真诚助人”;景物环境做到“宜人,有序。” -化州市良光镇东岸小学学风是什么? 营造学校与育人的新特色。 -我很好奇发射管的输出功率怎么样? 产生或放大高频功率的静电控制电子管,有时也称振荡管。 -我很好奇发射管的输出功率怎么样? 用于音频或开关电路中的发射管称调制管。 -我很好奇发射管的输出功率怎么样? 发射管是无线电广播、通信、电视发射设备和工业高频设备中的主要电子器件。 -我很好奇发射管的输出功率怎么样? 输出功率和工作频率是发射管的基本技术指标。 -我很好奇发射管的输出功率怎么样? 广播、通信和工业设备的发射管,工作频率一般在30兆赫以下,输出功率在1919年为2千瓦以下,1930年达300千瓦,70年代初已超过1000千瓦,效率高达80%以上。 -我很好奇发射管的输出功率怎么样? 发射管工作频率提高时,输出功率和效率都会降低,因此1936年首次实用的脉冲雷达工作频率仅28兆赫,80年代则已达 400兆赫以上。 -我很好奇发射管的输出功率怎么样? 40年代电视发射管的工作频率为数十兆赫,而80年代初,优良的电视发射管可在1000兆赫下工作,输出功率达20千瓦,效率为40%。 -我很好奇发射管的输出功率怎么样? 平面电极结构的小功率发射三极管可在更高的频率下工作。 -我很好奇发射管的输出功率怎么样? 发射管多采用同心圆筒电极结构。 -我很好奇发射管的输出功率怎么样? 阴极在最内层,向外依次为各个栅极和阳极。 -我很好奇发射管的输出功率怎么样? 图中,自左至右为阴极、第一栅、第二栅、栅极阴极组装件和装入阳极后的整个管子。 -我很好奇发射管的输出功率怎么样? 发射管 -我很好奇发射管的输出功率怎么样? 中小功率发射管多采用间热式氧化物阴极。 -我很好奇发射管的输出功率怎么样? 大功率发射管一般采用碳化钍钨丝阴极,有螺旋、直条或网笼等结构形式。 -我很好奇发射管的输出功率怎么样? 图为网笼式阴极。 -我很好奇发射管的输出功率怎么样? 栅极多用钼丝或钨丝绕制,或用钼片经电加工等方法制造。 -我很好奇发射管的输出功率怎么样? 栅极表面经镀金(或铂)或涂敷锆粉等处理,以降低栅极电子发射,使发射管稳定工作。 -我很好奇发射管的输出功率怎么样? 用气相沉积方法制造的石墨栅极,具有良好的性能。 -我很好奇发射管的输出功率怎么样? 发射管阳极直流输入功率转化为高频输出功率的部分约为75%,其余25%成为阳极热损耗,因此对发射管的阳极必须进行冷却。 -我很好奇发射管的输出功率怎么样? 中小功率发射管的阳极采取自然冷却方式,用镍、钼或石墨等材料制造,装在管壳之内,工作温度可达 600℃。 -我很好奇发射管的输出功率怎么样? 大功率发射管的阳极都用铜制成,并作为真空密封管壳的一部分,采用各种强制冷却方式。 -我很好奇发射管的输出功率怎么样? 各种冷却方式下每平方厘米阳极内表面的散热能力为:水冷100瓦;风冷30瓦;蒸发冷却250瓦;超蒸发冷却1000瓦以上,80年代已制成阳极损耗功率为1250千瓦的超蒸发冷却发射管。 -我很好奇发射管的输出功率怎么样? 发射管也常以冷却方式命名,如风冷发射管、水冷发射管和蒸发冷却发射管。 -我很好奇发射管的输出功率怎么样? 发射管管壳用玻璃或陶瓷制造。 -我很好奇发射管的输出功率怎么样? 小功率发射管内使用含钡的吸气剂;大功率发射管则采用锆、钛、钽等吸气材料,管内压强约为10帕量级。 -我很好奇发射管的输出功率怎么样? 发射管寿命取决于阴极发射电子的能力。 -我很好奇发射管的输出功率怎么样? 大功率发射管寿命最高记录可达8万小时。 -我很好奇发射管的输出功率怎么样? 发射四极管的放大作用和输出输入电路间的隔离效果优于三极管,应用最广。 -我很好奇发射管的输出功率怎么样? 工业高频振荡器普遍采用三极管。 -我很好奇发射管的输出功率怎么样? 五极管多用在小功率范围中。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 鲁能领秀城中央公园位于鲁能领秀城景观中轴之上,总占地161.55亩,总建筑面积约40万平米,容积率为2.70,由22栋小高层、高层组成;其绿地率高达35.2%,环境优美,产品更加注重品质化、人性化和自然生态化,是鲁能领秀城的生态人居典范。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 中央公园[1] 学区准现房,坐享鲁能领秀城成熟配套,成熟生活一步到位。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 经典板式小高层,103㎡2+1房仅22席,稀市推出,错过再无;92㎡经典两房、137㎡舒适三房压轴登场! -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 物业公司: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 济南凯瑞物业公司;深圳长城物业公司;北京盛世物业有限公司 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 绿化率: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 42% -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 容积率: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 2.70 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 暖气: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 集中供暖 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 楼座展示:中央公园由22栋小高层、高层组成,3、16、17号楼分别是11层小高层,18层和28层的高层。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 4号楼是23层,2梯3户。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 项目位置: -鬼青蛙在哪里有收录详情? 鬼青蛙这张卡可以从手卡把这张卡以外的1只水属性怪兽丢弃,从手卡特殊召唤。 -鬼青蛙在哪里有收录详情? 这张卡召唤·反转召唤·特殊召唤成功时,可以从自己的卡组·场上选1只水族·水属性·2星以下的怪兽送去墓地。 -鬼青蛙在哪里有收录详情? 此外,1回合1次,可以通过让自己场上1只怪兽回到手卡,这个回合通常召唤外加上只有1次,自己可以把「鬼青蛙」以外的1只名字带有「青蛙」的怪兽召唤。[1] -鬼青蛙在哪里有收录详情? 游戏王卡包收录详情 -鬼青蛙在哪里有收录详情? [09/09/18] -西湖区有多大? 西湖区是江西省南昌市市辖区。 -西湖区有多大? 为南昌市中心城区之一,有着2200多年历史,是一个物华天宝、人杰地灵的古老城区。 -西湖区有多大? 2004年南昌市老城区区划调整后,西湖区东起京九铁路线与青山湖区毗邻,南以洪城路东段、抚河路南段、象湖以及南隔堤为界与青云谱区、南昌县接壤,西凭赣江中心线与红谷滩新区交界,北沿中山路、北京西路与东湖区相连,所辖面积34.5平方公里,常住人口43万,管辖1个镇、10个街道办事处,设12个行政村、100个社区。 -西湖区有多大? (图)西湖区[南昌市] -西湖区有多大? 西湖原为汉代豫章群古太湖的一部分,唐贞元15年(公元799年)洪恩桥的架设将东太湖分隔成东西两部分,洪恩桥以西谓之西湖,西湖区由此而得名。 -西湖区有多大? 西湖区在1926年南昌设市后分别称第四、五部分,六、七部分。 -西湖区有多大? 1949年解放初期分别称第三、四区。 -西湖区有多大? 1955年分别称抚河区、西湖区。 -西湖区有多大? 1980年两区合并称西湖区。[1] -西湖区有多大? 辖:西湖街道、丁公路街道、广外街道、系马桩街道、绳金塔街道、朝阳洲街道、禾草街街道、十字街街道、瓦子角街道、三眼井街道、上海路街道、筷子巷街道、南站街道。[1] -西湖区有多大? 2002年9月,由原筷子巷街道和原禾草街街道合并设立南浦街道,原广外街道与瓦子角街道的一部分合并设立广润门街道。 -西湖区有多大? 2002年12月1日设立桃源街道。 -西湖区有多大? 2004年区划调整前的西湖区区域:东与青山湖区湖坊乡插花接壤;西临赣江与红谷滩新区隔江相望;南以建设路为界,和青云谱区毗邻;北连中山路,北京西路,与东湖区交界。[1] -西湖区有多大? 2002年9月,由原筷子巷街道和原禾草街街道合并设立南浦街道,原广外街道与瓦子角街道的一部分合并设立广润门街道。 -西湖区有多大? 2002年12月1日设立桃源街道。 -西湖区有多大? 2004年区划调整前的西湖区区域:东与青山湖区湖坊乡插花接壤;西临赣江与红谷滩新区隔江相望;南以建设路为界,和青云谱区毗邻;北连中山路,北京西路,与东湖区交界。 -西湖区有多大? 2004年9月7日,国务院批准(国函[2004]70号)调整南昌市市辖区部分行政区划:将西湖区朝阳洲街道的西船居委会划归东湖区管辖。 -西湖区有多大? 将青山湖区的桃花镇和湖坊镇的同盟村划归西湖区管辖。 -西湖区有多大? 将西湖区十字街街道的谷市街、洪城路、南关口、九四、新丰5个居委会,上海路街道的草珊瑚集团、南昌肠衣厂、电子计算机厂、江西涤纶厂、江地基础公司、曙光、商标彩印厂、南昌市染整厂、江南蓄电池厂、四机床厂、二进、国乐新村12个居委会,南站街道的解放西路东居委会划归青云谱区管辖。 -西湖区有多大? 将西湖区上海路街道的轻化所、洪钢、省人民检察院、电信城东分局、安康、省机械施工公司、省水利设计院、省安装公司、南方电动工具厂、江西橡胶厂、上海路北、南昌电池厂、东华计量所、南昌搪瓷厂、上海路新村、华安针织总厂、江西五金厂、三波电机厂、水文地质大队、二六○厂、省卫生学校、新世纪、上海路住宅区北、塔子桥北、南航、上海路住宅区南、沿河、南昌阀门厂28个居委会,丁公路街道的新魏路、半边街、师大南路、顺化门、岔道口东路、师大、广电厅、手表厂、鸿顺9个居委会,南站街道的工人新村北、工人新村南、商苑、洪都中大道、铁路第三、铁路第四、铁路第六7个居委会划归青山湖区管辖。 -西湖区有多大? 调整后,西湖区辖绳金塔、桃源、朝阳洲、广润门、南浦、西湖、系马桩、十字街、丁公路、南站10个街道和桃花镇,区人民政府驻孺子路。 -西湖区有多大? 调整前,西湖区面积31平方千米,人口52万。 -西湖区有多大? (图)西湖区[南昌市] -西湖区有多大? 西湖区位于江西省省会南昌市的中心地带,具有广阔的发展空间和庞大的消费群体,商贸旅游、娱乐服务业等到各个行业都蕴藏着无限商机,投资前景十分广阔。 -西湖区有多大? 不仅水、电价格低廉,劳动力资源丰富,人均工资和房产价格都比沿海城市低,城区拥有良好的人居环境、低廉的投资成本,巨大的发展潜力。 -西湖区有多大? 105、316、320国道和京九铁路贯穿全境,把南北东西交通连成一线;民航可与上海、北京、广州、深圳、厦门、温州等到地通航,并开通了南昌-新加坡第一条国际航线;水运依托赣江可直达长江各港口;邮电通讯便捷,程控电话、数字微波、图文传真进入国际通讯网络;商检、海关、口岸等涉外机构齐全;水、电、气供应充足。 -西湖区有多大? (图)西湖区[南昌市] -西湖区有多大? 西湖区,是江西省省会南昌市的中心城区,面积34.8平方公里,常住人口51.9万人,辖桃花镇、朝农管理处及10个街道,设13个行政村,116个社区居委会,20个家委会。[2] -西湖区有多大? 2005年11月16日,南昌市《关于同意西湖区桃花镇、桃源、十字街街道办事处行政区划进行调整的批复》 -西湖区有多大? 1、同意将桃花镇的三道闸居委会划归桃源街道办事处管辖。 -青藏虎耳草花期什么时候? 青藏虎耳草多年生草本,高4-11.5厘米,丛生。 -青藏虎耳草花期什么时候? 花期7-8月。 -青藏虎耳草花期什么时候? 分布于甘肃(祁连山地)、青海(黄南、海南、海北)和西藏(加查)。 -青藏虎耳草花期什么时候? 生于海拔3 700-4 250米的林下、高山草甸和高山碎石隙。[1] -青藏虎耳草花期什么时候? 多年生草本,高4-11.5厘米,丛生。 -青藏虎耳草花期什么时候? 茎不分枝,具褐色卷曲柔毛。 -青藏虎耳草花期什么时候? 基生叶具柄,叶片卵形、椭圆形至长圆形,长15-25毫米,宽4-8毫米,腹面无毛,背面和边缘具褐色卷曲柔毛,叶柄长1-3厘米,基部扩大,边缘具褐色卷曲柔毛;茎生叶卵形至椭圆形,长1.5-2厘米,向上渐变小。 -青藏虎耳草花期什么时候? 聚伞花序伞房状,具2-6花;花梗长5-19毫米,密被褐色卷曲柔毛;萼片在花期反曲,卵形至狭卵形,长2.5-4.2毫米,宽1.5-2毫米,先端钝,两面无毛,边缘具褐色卷曲柔毛,3-5脉于先端不汇合;花瓣腹面淡黄色且其中下部具红色斑点,背面紫红色,卵形、狭卵形至近长圆形,长2.5-5.2毫米,宽1.5-2.1毫米,先端钝,基部具长0.5-1毫米之爪,3-5(-7)脉,具2痂体;雄蕊长2-3.6毫米,花丝钻形;子房半下位,周围具环状花盘,花柱长1-1.5毫米。 -青藏虎耳草花期什么时候? 生于高山草甸、碎石间。 -青藏虎耳草花期什么时候? 分布青海、西藏、甘肃、四川等地。 -青藏虎耳草花期什么时候? [1] -青藏虎耳草花期什么时候? 顶峰虎耳草Saxifraga cacuminum Harry Sm. -青藏虎耳草花期什么时候? 对叶虎耳Saxifraga contraria Harry Sm. -青藏虎耳草花期什么时候? 狭瓣虎耳草Saxifraga pseudohirculus Engl. -青藏虎耳草花期什么时候? 唐古特虎耳草Saxifraga tangutica Engl. -青藏虎耳草花期什么时候? 宽叶虎耳草(变种)Saxifraga tangutica Engl. var. platyphylla (Harry Sm.) J. T. Pan -青藏虎耳草花期什么时候? 唐古特虎耳草(原变种)Saxifraga tangutica Engl. var. tangutica -青藏虎耳草花期什么时候? 西藏虎耳草Saxifraga tibetica Losinsk.[1] -青藏虎耳草花期什么时候? Saxifraga przewalskii Engl. in Bull. Acad. Sci. St. -Petersb. 29:115. 1883: Engl et Irmsch. in Bot. Jahrb. 48:580. f. 5E-H. 1912 et in Engl. Pflanzenr. 67(IV. 117): 107. f. 21 E-H. 1916; J. T. Pan in Acta Phytotax. Sin. 16(2): 16. 1978;中国高等植物图鉴补编2: 30. 1983; 西藏植物志 2: 483. 1985. [1] -生产一支欧文冲锋枪需要多少钱? 欧文冲锋枪 Owen Gun 1945年,在新不列颠手持欧文冲锋枪的澳大利亚士兵 类型 冲锋枪 原产国 ?澳大利亚 服役记录 服役期间 1941年-1960年代 用户 参见使用国 参与战役 第二次世界大战 马来亚紧急状态 朝鲜战争 越南战争 1964年罗德西亚布什战争 生产历史 研发者 伊夫林·欧文(Evelyn Owen) 研发日期 1931年-1939年 生产商 约翰·莱萨特工厂 利特高轻武器工厂 单位制造费用 $ 30/枝 生产日期 1941年-1945年 制造数量 45,000-50,000 枝 衍生型 Mk 1/42 Mk 1/43 Mk 2/43 基本规格 总重 空枪: Mk 1/42:4.24 千克(9.35 磅) Mk 1/43:3.99 千克(8.8 磅) Mk 2/43:3.47 千克(7.65 磅) 全长 806 毫米(31.73 英吋) 枪管长度 247 毫米(9.72 英吋) 弹药 制式:9 × 19 毫米 原型:.38/200 原型:.45 ACP 口径 9 × 19 毫米:9 毫米(.357 英吋) .38/200:9.65 毫米(.38 英吋) .45 ACP:11.43 毫米(.45 英吋) 枪管 1 根,膛线7 条,右旋 枪机种类 直接反冲作用 开放式枪机 发射速率 理论射速: Mk 1/42:700 发/分钟 Mk 1/43:680 发/分钟 Mk 2/43:600 发/分钟 实际射速:120 发/分钟 枪口初速 380-420 米/秒(1,246.72-1,377.95 英尺/秒) 有效射程 瞄具装定射程:91.44 米(100 码) 最大有效射程:123 米(134.51 码) 最大射程 200 米(218.72 码) 供弹方式 32/33 发可拆卸式弹匣 瞄准具型式 机械瞄具:向右偏置的觇孔式照门和片状准星 欧文冲锋枪(英语:Owen Gun,正式名称:Owen Machine Carbine,以下简称为“欧文枪”)是一枝由伊夫林·(埃沃)·欧文(英语:Evelyn (Evo) Owen)于1939年研制、澳大利亚的首枝冲锋枪,制式型发射9 × 19 毫米鲁格手枪子弹。 -生产一支欧文冲锋枪需要多少钱? 欧文冲锋枪是澳大利亚唯一设计和主要服役的二战冲锋枪,并从1943年由澳大利亚陆军所使用,直到1960年代中期。 -生产一支欧文冲锋枪需要多少钱? 由新南威尔士州卧龙岗市出身的欧文枪发明者,伊夫林·欧文,在24岁时于1939年7月向悉尼维多利亚军营的澳大利亚陆军军械官员展示了他所设计的.22 LR口径“卡宾机枪”原型枪。 -生产一支欧文冲锋枪需要多少钱? 该枪却被澳大利亚陆军所拒绝,因为澳大利亚陆军在当时没有承认冲锋枪的价值。 -生产一支欧文冲锋枪需要多少钱? 随着战争的爆发,欧文加入了澳大利亚军队,并且成为一名列兵。 -生产一支欧文冲锋枪需要多少钱? 1940年9月,欧文的邻居,文森特·沃德尔(英语:Vincent Wardell),看到欧文家楼梯后面搁著一个麻布袋,里面放著一枝欧文枪的原型枪。 -生产一支欧文冲锋枪需要多少钱? 而文森特·沃德尔是坎布拉港的大型钢制品厂莱萨特公司的经理,他向欧文的父亲表明了他对其儿子的粗心大意感到痛心,但无论如何仍然解释了这款武器的历史。 -生产一支欧文冲锋枪需要多少钱? 沃德尔对欧文枪的简洁的设计留下了深刻的印象。 -生产一支欧文冲锋枪需要多少钱? 沃德尔安排欧文转调到陆军发明部(英语:Army Inventions Board),并重新开始在枪上的工作。 -生产一支欧文冲锋枪需要多少钱? 军队仍然持续地从负面角度查看该武器,但同时政府开始采取越来越有利的观点。 -生产一支欧文冲锋枪需要多少钱? 该欧文枪原型配备了装在顶部的弹鼓,后来让位给装在顶部的弹匣使用。 -生产一支欧文冲锋枪需要多少钱? 口径的选择亦花了一些时间去解决。 -生产一支欧文冲锋枪需要多少钱? 由于陆军有大批量的柯尔特.45 ACP子弹,它们决定欧文枪需要采用这种口径。 -生产一支欧文冲锋枪需要多少钱? 直到在1941年9月19日官方举办试验时,约翰·莱萨特工厂制成了9 毫米、.38/200和.45 ACP三种口径版本。 -生产一支欧文冲锋枪需要多少钱? 而从美、英进口的斯登冲锋枪和汤普森冲锋枪在试验中作为基准使用。 -生产一支欧文冲锋枪需要多少钱? 作为测试的一部分,所有的枪支都浸没在泥浆里,并以沙土覆盖,以模拟他们将会被使用时最恶劣的环境。 -生产一支欧文冲锋枪需要多少钱? 欧文枪是唯一在这测试中这样对待以后仍可正常操作的冲锋枪。 -生产一支欧文冲锋枪需要多少钱? 虽然测试表现出欧文枪具有比汤普森冲锋枪和司登冲锋枪更优秀的可靠性,陆军没有对其口径作出决定。 -生产一支欧文冲锋枪需要多少钱? 结果它在上级政府干预以后,陆军才下令9 毫米的衍生型为正式口径,并在1941年11月20日正式被澳大利亚陆军采用。 -生产一支欧文冲锋枪需要多少钱? 在欧文枪的寿命期间,其可靠性在澳大利亚部队中赢得了“军人的至爱”(英语:Digger's Darling)的绰号,亦有人传言它受到美军高度青睐。 -生产一支欧文冲锋枪需要多少钱? 欧文枪是在1942年开始正式由坎布拉港和纽卡斯尔的约翰·莱萨特工厂投入生产,在生产高峰期每个星期生产800 支。 -生产一支欧文冲锋枪需要多少钱? 1942年3月至1943年2月之间,莱萨特生产了28,000 枝欧文枪。 -生产一支欧文冲锋枪需要多少钱? 然而,最初的一批弹药类型竟然是错误的,以至10,000 枝欧文枪无法提供弹药。 -生产一支欧文冲锋枪需要多少钱? 政府再一次推翻军方的官僚主义作风??,并让弹药通过其最后的生产阶段,以及运送到当时在新几内亚与日军战斗的澳大利亚部队的手中。 -生产一支欧文冲锋枪需要多少钱? 在1941年至1945年间生产了约50,000 枝欧文枪。 -生产一支欧文冲锋枪需要多少钱? 在战争期间,欧文枪的平均生产成本为$ 30。[1] -生产一支欧文冲锋枪需要多少钱? 虽然它是有点笨重,因为其可靠性,欧文枪在士兵当中变得非常流行。 -生产一支欧文冲锋枪需要多少钱? 它是如此成功,它也被新西兰、英国和美国订购。[2] -生产一支欧文冲锋枪需要多少钱? 欧文枪后来也被澳大利亚部队在朝鲜战争和越南战争,[3]特别是步兵组的侦察兵。 -生产一支欧文冲锋枪需要多少钱? 这仍然是一枝制式的澳大利亚陆军武器,直到1960年代中期,它被F1冲锋枪所取代。 -第二届中国光伏摄影大赛因为什么政策而开始的? 光伏发电不仅是全球能源科技和产业发展的重要方向,也是我国具有国际竞争优势的战略性新兴产业,是我国保障能源安全、治理环境污染、应对气候变化的战略性选择。 -第二届中国光伏摄影大赛因为什么政策而开始的? 2013年7月以来,国家出台了《关于促进光伏产业健康发展的若干意见》等一系列政策,大力推进分布式光伏发电的应用,光伏发电有望走进千家万户,融入百姓民生。 -第二届中国光伏摄影大赛因为什么政策而开始的? 大赛主办方以此为契机,开启了“第二届中国光伏摄影大赛”的征程。 -悬赏任务有哪些类型? 悬赏任务,威客网站上一种任务模式,由雇主在威客网站发布任务,提供一定数额的赏金,以吸引威客们参与。 -悬赏任务有哪些类型? 悬赏任务数额一般在几十到几千不等,但也有几万甚至几十万的任务。 -悬赏任务有哪些类型? 主要以提交的作品的质量好坏作为中标标准,当然其中也带有雇主的主观喜好,中标人数较少,多为一个或几个,因此竞争激烈。 -悬赏任务有哪些类型? 大型悬赏任务赏金数额巨大,中标者也较多,但参与人也很多,对于身有一技之长的威客来讲,悬赏任务十分适合。 -悬赏任务有哪些类型? 悬赏任务的类型主要包括:设计类、文案类、取名类、网站类、编程类、推广类等等。 -悬赏任务有哪些类型? 每一类所适合的威客人群不同,报酬的多少也不同,比如设计类的报酬就比较高,一般都几百到几千,而推广类的计件任务报酬比较少,一般也就几块钱,但花费的时间很少,技术要求也很低。 -悬赏任务有哪些类型? 1.注册—登陆 -悬赏任务有哪些类型? 2.点击“我要发悬赏”—按照发布流程及提示提交任务要求。 -悬赏任务有哪些类型? 悬赏模式选择->网站托管赏金模式。 -悬赏任务有哪些类型? 威客网站客服稍后会跟发布者联系确认任务要求。 -悬赏任务有哪些类型? 3.没有问题之后就可以预付赏金进行任务发布。 -悬赏任务有哪些类型? 4.会员参与并提交稿件。 -悬赏任务有哪些类型? 5.发布者需要跟会员互动(每个提交稿件的会员都可以),解决问题,完善稿件,初步筛选稿件。 -悬赏任务有哪些类型? 6.任务发布期结束,进入选稿期(在筛选的稿件中选择最后满意的) -悬赏任务有哪些类型? 7.发布者不满意现有稿件可选定一个会员修改至满意为止,或者加价延期重新开放任务进行征稿。 -悬赏任务有哪些类型? (重复第六步)没有问题后进入下一步。 -悬赏任务有哪些类型? 8:中标会员交源文件给发布者—发布者确认—任务结束—网站将赏金付给中标会员。 -悬赏任务有哪些类型? 1、任务发布者自由定价,自由确定悬赏时间,自由发布任务要求,自主确定中标会员和中标方案。 -悬赏任务有哪些类型? 2、任务发布者100%预付任务赏金,让竞标者坚信您的诚意和诚信。 -悬赏任务有哪些类型? 3、任务赏金分配原则:任务一经发布,网站收取20%发布费,中标会员获得赏金的80%。 -悬赏任务有哪些类型? 4、每个任务最终都会选定至少一个作品中标,至少一个竞标者获得赏金。 -悬赏任务有哪些类型? 5、任务发布者若未征集到满意作品,可以加价延期征集,也可让会员修改,会员也可以删除任务。 -悬赏任务有哪些类型? 6、任务发布者自己所在组织的任何人均不能以任何形式参加自己所发布的任务,一经发现则视为任务发布者委托威客网按照网站规则选稿。 -悬赏任务有哪些类型? 7、任务悬赏总金额低于100元(含100元)的任务,悬赏时间最多为7天。 -悬赏任务有哪些类型? 所有任务最长时间不超过30天(特殊任务除外),任务总金额不得低于50元。 -悬赏任务有哪些类型? 8、网赚类、注册类任务总金额不能低于300元人民币,计件任务每个稿件的平均单价不能低于1元人民币。 -悬赏任务有哪些类型? 9、延期任务只有3次加价机会,第1次加价不得低于任务金额的10%,第2次加价不得低于任务总金额的20%,第3次不得低于任务总金额的50%。 -悬赏任务有哪些类型? 每次延期不能超过15天,加价金额不低于50元,特殊任务可以适当加长。 -悬赏任务有哪些类型? 如果为计件任务,且不是网赚类任务,将免费延期,直至征集完规定数量的作品为止。 -悬赏任务有哪些类型? 10、如果威客以交接源文件要挟任务发布者,威客网将扣除威客相关信用值,并取消其中标资格,同时任务将免费延长相应的时间继续征集作品 。 -江湖令由哪些平台运营? 《江湖令》是以隋唐时期为背景的RPG角色扮演类网页游戏。 -江湖令由哪些平台运营? 集角色扮演、策略、冒险等多种游戏元素为一体,画面精美犹如客户端游戏,融合历史、江湖、武功、恩仇多种特色元素,是款不可多得的精品游戏大作。 -江湖令由哪些平台运营? 由ya247平台、91wan游戏平台、2918、4399游戏平台、37wan、6711、兄弟玩网页游戏平台,49you、Y8Y9平台、8090游戏等平台运营的,由07177游戏网发布媒体资讯的网页游戏。 -江湖令由哪些平台运营? 网页游戏《江湖令》由51游戏社区运营,是以隋唐时期为背景的RPG角色扮演类网页游戏。 -江湖令由哪些平台运营? 集角色扮演、策略、冒险等多种游戏元素为一体,画面精美犹如客户端游戏,融合历史、江湖、武功、恩仇多种特色元素,是款不可多得的精品游戏大作… -江湖令由哪些平台运营? 背景故事: -江湖令由哪些平台运营? 隋朝末年,隋炀帝暴政,天下民不聊生,义军四起。 -江湖令由哪些平台运营? 在这动荡的时代中,百姓生活苦不堪言,多少人流离失所,家破人亡。 -江湖令由哪些平台运营? 天下三大势力---飞羽营、上清宫、侠隐岛,也值此机会扩张势力,派出弟子出来行走江湖。 -江湖令由哪些平台运营? 你便是这些弟子中的普通一员,在这群雄并起的年代,你将如何选择自己的未来。 -江湖令由哪些平台运营? 所有的故事,便从瓦岗寨/江都大营开始…… -江湖令由哪些平台运营? 势力: -江湖令由哪些平台运营? ①、飞羽营:【外功、根骨】 -江湖令由哪些平台运营? 南北朝时期,由北方政权创立的一个民间军事团体,经过多年的发展,逐渐成为江湖一大势力。 -江湖令由哪些平台运营? ②、上清宫:【外功、身法】 -江湖令由哪些平台运营? 道家圣地,宫中弟子讲求清静无为,以一种隐世的方式修炼,但身在此乱世,亦也不能独善其身。 -江湖令由哪些平台运营? ③、侠隐岛:【根骨、内力】 -江湖令由哪些平台运营? 位于偏远海岛上的一个世家,岛内弟子大多武功高强,但从不进入江湖行走,适逢乱世,现今岛主也决意作一翻作为。 -江湖令由哪些平台运营? 两大阵营: -江湖令由哪些平台运营? 义军:隋唐末期,百姓生活苦不堪言,有多个有志之士组成义军,对抗当朝暴君,希望建立一个适合百姓安居乐业的天地。 -江湖令由哪些平台运营? 隋军:战争一起即天下打乱,隋军首先要镇压四起的义军,同时在内部慢慢改变现有的朝廷,让天下再次恢复到昔日的安定。 -江湖令由哪些平台运营? 一、宠物品质 -江湖令由哪些平台运营? 宠物的品质分为:灵兽,妖兽,仙兽,圣兽,神兽 -江湖令由哪些平台运营? 二、宠物获取途径 -江湖令由哪些平台运营? 完成任务奖励宠物(其他途径待定)。 -江湖令由哪些平台运营? 三、宠物融合 -江湖令由哪些平台运营? 1、在主界面下方的【宠/骑】按钮进入宠物界面,再点击【融合】即可进入融合界面进行融合,在融合界面可选择要融合的宠物进行融合 -江湖令由哪些平台运营? 2、融合后主宠的形态不变; -江湖令由哪些平台运营? 3、融合后宠物的成长,品质,技能,经验,成长经验,等级都继承成长高的宠物; -江湖令由哪些平台运营? 4、融合宠物技能冲突,则保留成长值高的宠物技能,如果不冲突则叠加在空余的技能位置。 -请问土耳其足球超级联赛是什么时候成立的? 土耳其足球超级联赛(土耳其文:Türkiye 1. Süper Futbol Ligi)是土耳其足球协会管理的职业足球联赛,通常简称“土超”,也是土耳其足球联赛中最高级别。 -请问土耳其足球超级联赛是什么时候成立的? 目前,土超联赛队伍共有18支。 -请问土耳其足球超级联赛是什么时候成立的? 土耳其足球超级联赛 -请问土耳其足球超级联赛是什么时候成立的? 运动项目 足球 -请问土耳其足球超级联赛是什么时候成立的? 成立年份 1959年 -请问土耳其足球超级联赛是什么时候成立的? 参赛队数 18队 -请问土耳其足球超级联赛是什么时候成立的? 国家 土耳其 -请问土耳其足球超级联赛是什么时候成立的? 现任冠军 费内巴切足球俱乐部(2010-2011) -请问土耳其足球超级联赛是什么时候成立的? 夺冠最多队伍 费内巴切足球俱乐部(18次) -请问土耳其足球超级联赛是什么时候成立的? 土耳其足球超级联赛(Türkiye 1. Süper Futbol Ligi)是土耳其足球协会管理的职业足球联赛,通常简称「土超」,也是土耳其足球联赛中最高级别。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛队伍共有18支。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛成立于1959年,成立之前土耳其国有多个地区性联赛。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛成立后便把各地方联赛制度统一起来。 -请问土耳其足球超级联赛是什么时候成立的? 一般土超联赛由八月开始至五月结束,12月至1月会有歇冬期。 -请问土耳其足球超级联赛是什么时候成立的? 十八支球队会互相对叠,各有主场和作客两部分,采计分制。 -请问土耳其足球超级联赛是什么时候成立的? 联赛枋最底的三支球队会降到土耳其足球甲级联赛作赛。 -请问土耳其足球超级联赛是什么时候成立的? 由2005-06年球季起,土超联赛的冠、亚军会取得参加欧洲联赛冠军杯的资格。 -请问土耳其足球超级联赛是什么时候成立的? 成立至今土超联赛乃由两支著名球会所垄断──加拉塔萨雷足球俱乐部和费内巴切足球俱乐部,截至2009-2010赛季,双方各赢得冠军均为17次。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛共有18支球队,采取双循环得分制,每场比赛胜方得3分,负方0分,平局双方各得1分。 -请问土耳其足球超级联赛是什么时候成立的? 如果两支球队积分相同,对战成绩好的排名靠前,其次按照净胜球来决定;如果有三支以上的球队分数相同,则按照以下标准来确定排名:1、几支队伍间对战的得分,2、几支队伍间对战的净胜球数,3、总净胜球数。 -请问土耳其足球超级联赛是什么时候成立的? 联赛第1名直接参加下个赛季冠军杯小组赛,第2名参加下个赛季冠军杯资格赛第三轮,第3名进入下个赛季欧洲联赛资格赛第三轮,第4名进入下个赛季欧洲联赛资格赛第二轮,最后三名降入下个赛季的土甲联赛。 -请问土耳其足球超级联赛是什么时候成立的? 该赛季的土耳其杯冠军可参加下个赛季欧洲联赛资格赛第四轮,如果冠军已获得冠军杯资格,则亚军可参加下个赛季欧洲联赛资格赛第四轮,否则名额递补给联赛。 -请问土耳其足球超级联赛是什么时候成立的? 2010年/2011年 费内巴切 -请问土耳其足球超级联赛是什么时候成立的? 2009年/2010年 布尔萨体育(又译贝莎) -请问土耳其足球超级联赛是什么时候成立的? 2008年/2009年 贝西克塔斯 -请问土耳其足球超级联赛是什么时候成立的? 2007年/2008年 加拉塔萨雷 -请问土耳其足球超级联赛是什么时候成立的? 2006年/2007年 费内巴切 -请问土耳其足球超级联赛是什么时候成立的? 2005年/2006年 加拉塔沙雷 -请问土耳其足球超级联赛是什么时候成立的? 2004年/2005年 费内巴切(又译费伦巴治) -请问土耳其足球超级联赛是什么时候成立的? 2003年/2004年 费内巴切 -cid 作Customer IDentity解时是什么意思? ? CID 是 Customer IDentity 的简称,简单来说就是手机的平台版本. CID紧跟IMEI存储在手机的OTP(One Time Programmable)芯片中. CID 后面的数字代表的是索尼爱立信手机软件保护版本号,新的CID不断被使用,以用来防止手机被非索尼爱立信官方的维修程序拿来解锁/刷机/篡改 -cid 作Customer IDentity解时是什么意思? ? CID 是 Customer IDentity 的简称,简单来说就是手机的平台版本. CID紧跟IMEI存储在手机的OTP(One Time Programmable)芯片中. CID 后面的数字代表的是索尼爱立信手机软件保护版本号,新的CID不断被使用,以用来防止手机被非索尼爱立信官方的维修程序拿来解锁/刷机/篡改 -cid 作Customer IDentity解时是什么意思? ? (英)刑事调查局,香港警察的重案组 -cid 作Customer IDentity解时是什么意思? ? Criminal Investigation Department -cid 作Customer IDentity解时是什么意思? ? 佩枪: -cid 作Customer IDentity解时是什么意思? ? 香港警察的CID(刑事侦缉队),各区重案组的探员装备短管点38左轮手枪,其特点是便于收藏,而且不容易卡壳,重量轻,其缺点是装弹量少,只有6发,而且换子弹较慢,威力也一般,如果碰上54式手枪或者M9手枪明显处于下风。 -cid 作Customer IDentity解时是什么意思? ? 香港警察的“刑事侦查”(Criminal Investigation Department)部门,早于1983年起已经不叫做C.I.D.的了,1983年香港警察队的重整架构,撤销了C.I.D. ( Criminal Investigation Dept.) “刑事侦缉处”,将“刑事侦查”部门归入去“行动处”内,是“行动处”内的一个分支部门,叫“刑事部”( Crime Wing )。 -cid 作Customer IDentity解时是什么意思? ? 再于90年代的一次警队重整架构,香港警队成立了新的「刑事及保安处」,再将“刑事侦查”部门归入目前的「刑事及保安处」的“处”级单位,是归入这个“处”下的一个部门,亦叫“刑事部” ( Crime Wing ),由一个助理警务处长(刑事)领导。 -cid 作Customer IDentity解时是什么意思? ? 但是时至今天,CID虽已经是一个老旧的名称,香港市民、甚至香港警察都是习惯性的沿用这个历史上的叫法 . -cid 作Customer IDentity解时是什么意思? ? CID格式是美国Adobe公司发表的最新字库格式,它具有易扩充、速度快、兼容性好、简便、灵活等特点,已成为国内开发中文字库的热点,也为用户使用字库提供质量更好,数量更多的字体。 -cid 作Customer IDentity解时是什么意思? ? CID (Character identifier)就是字符识别码,在组成方式上分成CIDFont,CMap表两部分。 -cid 作Customer IDentity解时是什么意思? ? CIDFont文件即总字符集,包括了一种特定语言中所有常用的字符,把这些字符排序,它们在总字符集中排列的次序号就是各个字符的CID标识码(Index);CMap(Character Map)表即字符映像文件,将字符的编码(Code)映像到字符的CID标识码(Index)。 -cid 作Customer IDentity解时是什么意思? ? CID字库完全针对大字符集市场设计,其基本过程为:先根据Code,在CMap表查到Index,然后在CIDFont文件找到相应的字形数据。 -本町位于什么地方? 本条目记述台湾日治时期,各都市之本町。 -本町位于什么地方? 为台湾日治时期台北市之行政区,共分一~四丁目,在表町之西。 -本町位于什么地方? 以现在的位置来看,本町位于现台北市中正区的西北角,约位于忠孝西路一段往西至台北邮局东侧。 -本町位于什么地方? 再向南至开封街一段,沿此路线向西至开封街一段60号,顺60号到汉口街一段向东到现在华南银行总行附近画一条直线到衡阳路。 -本町位于什么地方? 再向东至重庆南路一段,由重庆南路一段回到原点这个范围内。 -本町位于什么地方? 另外,重庆南路一段在当时名为“本町通”。 -本町位于什么地方? 此地方自日治时期起,就是繁华的商业地区,当时也有三和银行、台北专卖分局、日本石油等重要商业机构。 -本町位于什么地方? 其中,专卖分局是战后二二八事件的主要起始点。 -本町位于什么地方? 台湾贮蓄银行(一丁目) -本町位于什么地方? 三和银行(二丁目) -本町位于什么地方? 专卖局台北分局(三丁目) -本町位于什么地方? 日本石油(四丁目) -本町位于什么地方? 为台湾日治时期台南市之行政区。 -本町位于什么地方? 范围包括清代旧街名枋桥头前、枋桥头后、鞋、草花、天公埕、竹仔、下大埕、帽仔、武馆、统领巷、大井头、内宫后、内南町。 -本町位于什么地方? 为清代台南城最繁华的区域。 -本町位于什么地方? 台南公会堂 -本町位于什么地方? 北极殿 -本町位于什么地方? 开基武庙 -本町位于什么地方? 町名改正 -本町位于什么地方? 这是一个与台湾相关的小作品。 -本町位于什么地方? 你可以通过编辑或修订扩充其内容。 -《行走的观点:埃及》的条形码是多少? 出版社: 上海社会科学院出版社; 第1版 (2006年5月1日) -《行走的观点:埃及》的条形码是多少? 丛书名: 时代建筑视觉旅行丛书 -《行走的观点:埃及》的条形码是多少? 条形码: 9787806818640 -《行走的观点:埃及》的条形码是多少? 尺寸: 18 x 13.1 x 0.7 cm -《行走的观点:埃及》的条形码是多少? 重量: 181 g -《行走的观点:埃及》的条形码是多少? 漂浮在沙与海市蜃楼之上的金字塔曾经是否是你的一个梦。 -《行走的观点:埃及》的条形码是多少? 埃及,这片蕴蓄了5000年文明的土地,本书为你撩开它神秘的纱。 -《行走的观点:埃及》的条形码是多少? 诸神、金字塔、神庙、狮身人面像、法老、艳后吸引着我们的注意力;缠绵悱恻的象形文字、医学、雕刻等留给我们的文明,不断引发我们对古代文明的惊喜和赞叹。 -《行走的观点:埃及》的条形码是多少? 尼罗河畔的奇异之旅,数千年的古老文明,尽收在你的眼底…… -《行走的观点:埃及》的条形码是多少? 本书集历史、文化、地理等知识于一体,并以优美、流畅文笔,简明扼要地阐述了埃及的地理环境、政治经济、历史沿革、文化艺术,以大量富有艺术感染力的彩色照片,生动形象地展示了埃及最具特色的名胜古迹、风土人情和自然风光。 -《行走的观点:埃及》的条形码是多少? 古埃及历史 -老挝人民军的工兵部队有几个营? 老挝人民军前身为老挝爱国战线领导的“寮国战斗部队”(即“巴特寮”),始建于1949年1月20日,1965年10月改名为老挝人民解放军,1982年7月改称现名。 -老挝人民军的工兵部队有几个营? 最高领导机构是中央国防和治安委员会,朱马里·赛雅颂任主席,隆再·皮吉任国防部长。 -老挝人民军的工兵部队有几个营? 实行义务兵役制,服役期最少18个月。[1] -老挝人民军的工兵部队有几个营? ?老挝军队在老挝社会中有较好的地位和保障,工资待遇比地方政府工作人员略高。 -老挝人民军的工兵部队有几个营? 武装部队总兵力约6万人,其中陆军约5万人,主力部队编为5个步兵师;空军2000多人;海军(内河巡逻部队)1000多人;部队机关院校5000人。[1] -老挝人民军的工兵部队有几个营? 老挝人民军军旗 -老挝人民军的工兵部队有几个营? 1991年8月14日通过的《老挝人民民主共和国宪法》第11条规定:国家执行保卫国防和维护社会安宁的政策。 -老挝人民军的工兵部队有几个营? 全体公民和国防力量、治安力量必须发扬忠于祖国、忠于人民的精神,履行保卫革命成果、保卫人民生命财产及和平劳动的任务,积极参加国家建设事业。 -老挝人民军的工兵部队有几个营? 最高领导机构是中央国防和治安委员会。 -老挝人民军的工兵部队有几个营? 主席由老挝人民革命党中央委员会总书记兼任。 -老挝人民军的工兵部队有几个营? 老挝陆军成立最早,兵力最多,约有5万人。 -老挝人民军的工兵部队有几个营? 其中主力部队步兵师5个、7个独立团、30多个营、65个独立连。 -老挝人民军的工兵部队有几个营? 地方部队30余个营及县属部队。 -老挝人民军的工兵部队有几个营? 地面炮兵2个团,10多个营。 -老挝人民军的工兵部队有几个营? 高射炮兵1个团9个营。 -老挝人民军的工兵部队有几个营? 导弹部队2个营。 -老挝人民军的工兵部队有几个营? 装甲兵7个营。 -老挝人民军的工兵部队有几个营? 特工部队6个营。 -老挝人民军的工兵部队有几个营? 通讯部队9个营。 -老挝人民军的工兵部队有几个营? 工兵部队6个营。 -老挝人民军的工兵部队有几个营? 基建工程兵2个团13个营。 -老挝人民军的工兵部队有几个营? 运输部队7个营。 -老挝人民军的工兵部队有几个营? 陆军的装备基本是中国和前苏联援助的装备和部分从抗美战争中缴获的美式装备。 -老挝人民军的工兵部队有几个营? 老挝内河部队总兵力约1700人,装备有内河船艇110多艘,编成4个艇队。 -老挝人民军的工兵部队有几个营? 有芒宽、巴能、纳坎、他曲、南盖、巴色等8个基地。 -老挝人民军的工兵部队有几个营? 空军于1975年8月组建,现有2个团、11个飞行大队,总兵力约2000人。 -老挝人民军的工兵部队有几个营? 装备有各种飞机140架,其中主要由前苏联提供和从万象政权的皇家空军手中接管。 -老挝人民军的工兵部队有几个营? 随着军队建设质量的提高,老挝人民军对外军事合作步伐也日益扩大,近年来先后与俄罗斯、印度、马来西亚、越南、菲律宾等国拓展了军事交流与合作的内容。 -老挝人民军的工兵部队有几个营? 2003年1月,印度决定向老挝援助一批军事装备和物资,并承诺提供技术帮助。 -老挝人民军的工兵部队有几个营? 2003年6月,老挝向俄罗斯订购了一批新式防空武器;2003年4月,老挝与越南签署了越南帮助老挝培训军事指挥干部和特种部队以及完成军队通信系统改造等多项协议。 -《焚心之城》的主角是谁? 《焚心之城》[1] 为网络作家老子扛过枪创作的一部都市类小说,目前正在创世中文网连载中。 -《焚心之城》的主角是谁? 乡下大男孩薛城,是一个不甘于生活现状的混混,他混过、爱过、也深深地被伤害过。 -《焚心之城》的主角是谁? 本料此生当浑浑噩噩,拼搏街头。 -《焚心之城》的主角是谁? 高考的成绩却给了他一点渺茫的希望,二月后,大学如期吹响了他进城的号角。 -《焚心之城》的主角是谁? 繁华的都市,热血的人生,冷眼嘲笑中,他发誓再不做一个平常人! -《焚心之城》的主角是谁? 江北小城,黑河大地,他要行走过的每一个角落都有他的传说。 -《焚心之城》的主角是谁? 扯出一面旗,拉一帮兄弟,做男人,就要多一份担当,活一口傲气。 -《焚心之城》的主角是谁? (日期截止到2014年10月23日凌晨) -请问香港利丰集团是什么时候成立的? 香港利丰集团前身是广州的华资贸易 (1906 - 1949) ,利丰是香港历史最悠久的出口贸易商号之一。 -请问香港利丰集团是什么时候成立的? 于1906年,冯柏燎先生和李道明先生在广州创立了利丰贸易公司;是当时中国第一家华资的对外贸易出口商。 -请问香港利丰集团是什么时候成立的? 利丰于1906年创立,初时只从事瓷器及丝绸生意;一年之后,增添了其它的货品,包括竹器、藤器、玉石、象牙及其它手工艺品,包括烟花爆竹类别。 -请问香港利丰集团是什么时候成立的? 在早期的对外贸易,中国南方内河港因水深不足不能行驶远洋船,反之香港港口水深岸阔,占尽地利。 -请问香港利丰集团是什么时候成立的? 因此,在香港成立分公司的责任,落在冯柏燎先生的三子冯汉柱先生身上。 -请问香港利丰集团是什么时候成立的? 1937年12月28日,利丰(1937)有限公司正式在香港创立。 -请问香港利丰集团是什么时候成立的? 第二次世界大战期间,利丰暂停贸易业务。 -请问香港利丰集团是什么时候成立的? 1943年,随着创办人冯柏燎先生去世后,业务移交给冯氏家族第二代。 -请问香港利丰集团是什么时候成立的? 之后,向来不参与业务管理的合伙人李道明先生宣布退休,将所拥有的利丰股权全部卖给冯氏家族。 -请问香港利丰集团是什么时候成立的? 目前由哈佛冯家两兄弟William Fung , Victor Fung和CEO Bruce Rockowitz 管理。 -请问香港利丰集团是什么时候成立的? 截止到2012年,集团旗下有利亚﹝零售﹞有限公司、利和集团、利邦时装有限公司、利越时装有限公司、利丰贸易有限公司。 -请问香港利丰集团是什么时候成立的? 利亚(零售)连锁,业务包括大家所熟悉的:OK便利店、玩具〝反〞斗城和圣安娜饼屋;范围包括香港、台湾、新加坡、马来西亚、至中国大陆及东南亚其它市场逾600多家店 -请问香港利丰集团是什么时候成立的? 利和集团,IDS以专业物流服务为根基,为客户提供经销,物流,制造服务领域内的一系列服务项目。 -请问香港利丰集团是什么时候成立的? 业务网络覆盖大中华区,东盟,美国及英国,经营着90多个经销中心,在中国设有18个经销公司,10,000家现代经销门店。 -请问香港利丰集团是什么时候成立的? 利邦(上海)时装贸易有限公司为大中华区其中一家大型男士服装零售集团。 -请问香港利丰集团是什么时候成立的? 现在在中国大陆、香港、台湾和澳门收购经营11个包括Cerruti 1881,Gieves & Hawkes,Kent & curwen和D’urban 等中档到高档的男士服装品牌,全国有超过350间门店设于各一线城市之高级商场及百货公司。 -请问香港利丰集团是什么时候成立的? 利越(上海)服装商贸有限公司隶属于Branded Lifestyle,负责中国大陆地区LEO里奥(意大利)、GIBO捷宝(意大利)、UFFIZI古杰师(意大利)、OVVIO奥维路(意大利)、Roots绿适(加拿大,全球服装排名第四)品牌销售业务 -请问香港利丰集团是什么时候成立的? 利丰(贸易)1995年收购了英之杰采购服务,1999年收购太古贸易有限公司(Swire & Maclain) 和金巴莉有限公司(Camberley),2000年和2002年分别收购香港采购出口集团Colby Group及Janco Oversea Limited,大大扩张了在美国及欧洲的顾客群,自2008年经济危机起一直到现在,收购多家欧、美、印、非等地区的时尚品牌,如英国品牌Visage,仅2011年上半年6个月就完成26个品牌的收购。 -请问香港利丰集团是什么时候成立的? 2004年利丰与Levi Strauss & Co.签订特许经营协议 -请问香港利丰集团是什么时候成立的? 2005年利丰伙拍Daymon Worldwide为全球供应私有品牌和特许品牌 -请问香港利丰集团是什么时候成立的? 2006年收购Rossetti手袋业务及Oxford Womenswear Group 强化美国批发业务 -请问香港利丰集团是什么时候成立的? 2007年收购Tommy Hilfiher全球采购业务,收购CGroup、Peter Black International LTD、Regetta USA LLC和American Marketing Enterprice -请问香港利丰集团是什么时候成立的? 2008年收购Kent&Curwen全球特许经营权,收购Van Zeeland,Inc和Miles Fashion Group -请问香港利丰集团是什么时候成立的? 2009年收购加拿大休闲品牌Roots ,收购Wear Me Appearl,LLC。 -请问香港利丰集团是什么时候成立的? 与Hudson's Bay、Wolverine Worldwide Inc、Talbots、Liz Claiborne达成了采购协议 -请问香港利丰集团是什么时候成立的? 2010年收购Oxford apparel Visage Group LTD -请问香港利丰集团是什么时候成立的? 2011年一月收购土耳其Modium、美国女性时尚Beyond Productions,三月收购贸易公司Celissa 、玩具公司Techno Source USA, Inc.、卡通品牌产品TVMania和法国著名时装一线品牌Cerruti 1881,五月收购Loyaltex Apparel Ltd.、女装Hampshire Designers和英国彩妆Collection 2000,六月收购家私贸易Exim Designs Co., Ltd.,七月收购家庭旅行产业Union Rich USA, LLC和设计公司Lloyd Textile Fashion Company Limited,八月收购童装Fishman & Tobin和Crimzon Rose,九月收购家私贸易True Innovations, LLC、日用品企业Midway Enterprises和Wonderful World。 -请问香港利丰集团是什么时候成立的? 十二月与USPA – U.S. Polo Association签署授权协议。 -请问香港利丰集团是什么时候成立的? 利丰的精神:积极进取,不断认识并争取有利于客户和自身进步的机会;以行动为主导,对客户、供应商及职工的需求作出快速的决定。 -请问香港利丰集团是什么时候成立的? 利丰的最终目标:在产品采购、销售、流转的各环节建立全球性队伍提供多元化服务,利丰成员有效合作,共达目标。 -如何使魔兽变种akt不被查杀? Trojan/PSW.Moshou.akt“魔兽”变种akt是“魔兽”木马家族的最新成员之一,采用Delphi 6.0-7.0编写,并经过加壳处理。 -如何使魔兽变种akt不被查杀? “魔兽”变种akt运行后,自我复制到被感染计算机的指定目录下。 -如何使魔兽变种akt不被查杀? 修改注册表,实现木马开机自动运行。 -如何使魔兽变种akt不被查杀? 自我注入到被感染计算机的“explorer.exe”、“notepad.exe”等用户级权限的进程中加载运行,隐藏自我,防止被查杀。 -如何使魔兽变种akt不被查杀? 在后台秘密监视用户打开的窗口标题,盗取网络游戏《魔兽世界》玩家的游戏帐号、游戏密码、角色等级、装备信息、金钱数量等信息,并在后台将窃取到的玩家信息发送到骇客指定的远程服务器上,致使玩家游戏帐号、装备物品、金钱等丢失,给游戏玩家造成非常大的损失。 -丙种球蛋白能预防什么病情? 丙种球蛋白预防传染性肝炎,预防麻疹等病毒性疾病感染,治疗先天性丙种球蛋白缺乏症 ,与抗生素合并使用,可提高对某些严重细菌性和病毒性疾病感染的疗效。 -丙种球蛋白能预防什么病情? 中文简称:“丙球” -丙种球蛋白能预防什么病情? 英文名称:γ-globulin、gamma globulin -丙种球蛋白能预防什么病情? 【别名】 免疫血清球蛋白,普通免疫球蛋白,人血丙种球蛋白,丙种球蛋白,静脉注射用人免疫球蛋白(pH4) -丙种球蛋白能预防什么病情? 注:由于人血中的免疫球蛋白大多数为丙种球蛋白(γ-球蛋白),有时丙种球蛋白也被混称为“免疫球蛋白”(immunoglobulin) 。 -丙种球蛋白能预防什么病情? 冻干制剂应为白色或灰白色的疏松体,液体制剂和冻干制剂溶解后,溶液应为接近无色或淡黄色的澄明液体,微带乳光。 -丙种球蛋白能预防什么病情? 但不应含有异物或摇不散的沉淀。 -丙种球蛋白能预防什么病情? 注射丙种球蛋白是一种被动免疫疗法。 -丙种球蛋白能预防什么病情? 它是把免疫球蛋白内含有的大量抗体输给受者,使之从低或无免疫状态很快达到暂时免疫保护状态。 -丙种球蛋白能预防什么病情? 由于抗体与抗原相互作用起到直接中和毒素与杀死细菌和病毒。 -丙种球蛋白能预防什么病情? 因此免疫球蛋白制品对预防细菌、病毒性感染有一定的作用[1]。 -丙种球蛋白能预防什么病情? 人免疫球蛋白的生物半衰期为16~24天。 -丙种球蛋白能预防什么病情? 1、丙种球蛋白[2]含有健康人群血清所具有的各种抗体,因而有增强机体抵抗力以预防感染的作用。 -丙种球蛋白能预防什么病情? 2、主要治疗先天性丙种球蛋白缺乏症和免疫缺陷病 -丙种球蛋白能预防什么病情? 3、预防传染性肝炎,如甲型肝炎和乙型肝炎等。 -丙种球蛋白能预防什么病情? 4、用于麻疹、水痘、腮腺炎、带状疱疹等病毒感染和细菌感染的防治 -丙种球蛋白能预防什么病情? 5、也可用于哮喘、过敏性鼻炎、湿疹等内源性过敏性疾病。 -丙种球蛋白能预防什么病情? 6、与抗生素合并使用,可提高对某些严重细菌性和病毒性疾病感染的疗效。 -丙种球蛋白能预防什么病情? 7、川崎病,又称皮肤粘膜淋巴结综合征,常见于儿童,丙种球蛋白是主要的治疗药物。 -丙种球蛋白能预防什么病情? 1、对免疫球蛋白过敏或有其他严重过敏史者。 -丙种球蛋白能预防什么病情? 2、有IgA抗体的选择性IgA缺乏者。 -丙种球蛋白能预防什么病情? 3、发烧患者禁用或慎用。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (1997年9月1日浙江省第八届人民代表大会常务委员会第三十九次会议通过 1997年9月9日浙江省第八届人民代表大会常务委员会公告第六十九号公布自公布之日起施行) -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 为了保护人的生命和健康,发扬人道主义精神,促进社会发展与和平进步事业,根据《中华人民共和国红十字会法》,结合本省实际,制定本办法。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 本省县级以上按行政区域建立的红十字会,是中国红十字会的地方组织,是从事人道主义工作的社会救助团体,依法取得社会团体法人资格,设置工作机构,配备专职工作人员,依照《中国红十字会章程》独立自主地开展工作。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 全省性行业根据需要可以建立行业红十字会,配备专职或兼职工作人员。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 街道、乡(镇)、机关、团体、学校、企业、事业单位根据需要,可以依照《中国红十字会章程》建立红十字会的基层组织。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 上级红十字会指导下级红十字会的工作。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 县级以上地方红十字会指导所在行政区域行业红十字会和基层红十字会的工作。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 人民政府对红十字会给予支持和资助,保障红十字会依法履行职责,并对其活动进行监督;红十字会协助人民政府开展与其职责有关的活动。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 全社会都应当关心和支持红十字事业。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 本省公民和单位承认《中国红十字会章程》并缴纳会费的,可以自愿参加红十字会,成为红十字会的个人会员或团体会员。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 个人会员由本人申请,基层红十字会批准,发给会员证;团体会员由单位申请,县级以上红十字会批准,发给团体会员证。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 个人会员和团体会员应当遵守《中华人民共和国红十字会法》和《中国红十字会章程》,热心红十字事业,履行会员的义务,并享有会员的权利。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 县级以上红十字会理事会由会员代表大会民主选举产生。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 理事会民主选举产生会长和副会长;根据会长提名,决定秘书长、副秘书长人选。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 县级以上红十字会可以设名誉会长、名誉副会长和名誉理事,由同级红十字会理事会聘请。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 省、市(地)红十字会根据独立、平等、互相尊重的原则,发展同境外、国外地方红十字会和红新月会的友好往来和合作关系。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 红十字会履行下列职责: -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (一)宣传、贯彻《中华人民共和国红十字会法》和本办法; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (二)开展救灾的准备工作,筹措救灾款物;在自然灾害和突发事件中,对伤病人员和其他受害者进行救助; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (三)普及卫生救护和防病知识,进行初级卫生救护培训,对交通、电力、建筑、矿山等容易发生意外伤害的单位进行现场救护培训; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (四)组织群众参加现场救护; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (五)参与输血献血工作,推动无偿献血; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (六)开展红十字青少年活动; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (七)根据中国红十字会总会部署,参加国际人道主义救援工作; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (八)依照国际红十字和红新月运动的基本原则,完成同级人民政府和上级红十字会委托的有关事宜; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (九)《中华人民共和国红十宇会法》和《中国红十字会章程》规定的其他职责。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 第八条 红十字会经费的主要来源: -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (一)红十字会会员缴纳的会费; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (二)接受国内外组织和个人捐赠的款物; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (三)红十字会的动产、不动产以及兴办社会福利事业和经济实体的收入; -宝湖庭院绿化率多少? 建发·宝湖庭院位于银川市金凤区核心地带—正源南街与长城中路交汇处向东500米。 -宝湖庭院绿化率多少? 项目已于2012年4月开工建设,总占地约4.2万平方米,总建筑面积约11.2万平方米,容积率2.14,绿化率35%,预计可入住630户。 -宝湖庭院绿化率多少? “建发·宝湖庭院”是银川建发集团股份有限公司继“建发·宝湖湾”之后,在宝湖湖区的又一力作。 -宝湖庭院绿化率多少? 项目周边发展成熟,东有唐徕渠景观水道,西临银川市交通主干道正源街;南侧与宝湖湿地公园遥相呼应。 -宝湖庭院绿化率多少? “宝湖庭院”项目公共交通资源丰富:15路、21路、35路、38路、43路公交车贯穿银川市各地,出行便利。 -宝湖庭院绿化率多少? 距离新百良田购物广场约1公里,工人疗养院600米,宝湖公园1公里,唐徕渠景观水道500米。 -宝湖庭院绿化率多少? 项目位置优越,购物、餐饮、医疗、交通、休闲等生活资源丰富。[1] -宝湖庭院绿化率多少? 建发·宝湖庭院建筑及景观设置传承建发一贯“简约、大气”的风格:搂间距宽广,确保每一座楼宇视野开阔通透。 -宝湖庭院绿化率多少? 楼宇位置错落有置,外立面设计大气沉稳别致。 -宝湖庭院绿化率多少? 项目内部休闲绿地、景观小品点缀其中,道路及停车系统设计合理,停车及通行条件便利。 -宝湖庭院绿化率多少? 社区会所、幼儿园、活动室、医疗服务中心等生活配套一应俱全。 -宝湖庭院绿化率多少? 行政区域:金凤区 -大月兔(中秋艺术作品)的作者还有哪些代表作? 大月兔是荷兰“大黄鸭”之父弗洛伦泰因·霍夫曼打造的大型装置艺术作品,该作品首次亮相于台湾桃园大园乡海军基地,为了迎接中秋节的到来;在展览期间,海军基地也首次对外开放。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 霍夫曼觉得中国神话中捣杵的玉兔很有想象力,于是特别创作了“月兔”,这也是“月兔”新作第一次展出。[1] -大月兔(中秋艺术作品)的作者还有哪些代表作? ?2014年9月15日因工人施工不慎,遭火烧毁。[2] -大月兔(中秋艺术作品)的作者还有哪些代表作? “大月兔”外表采用的杜邦防水纸、会随风飘动,内部以木材加保丽龙框架支撑做成。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 兔毛用防水纸做成,材质完全防水,不怕日晒雨淋。[3 -大月兔(中秋艺术作品)的作者还有哪些代表作? -4] -大月兔(中秋艺术作品)的作者还有哪些代表作? 25米的“月兔”倚靠在机 -大月兔(中秋艺术作品)的作者还有哪些代表作? 堡上望着天空,像在思考又像赏月。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 月兔斜躺在机堡上,意在思考生命、边做白日梦,编织自己的故事。[3] -大月兔(中秋艺术作品)的作者还有哪些代表作? 台湾桃园大园乡海军基地也首度对外开放。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 428公顷的海军基地中,地景艺术节使用约40公顷,展场包括过去军机机堡、跑道等,由于这处基地过去警备森严,不对外开放,这次结合地景艺术展出,也可一窥过去是黑猫中队基地的神秘面纱。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 2014年9月2日,桃园县政府文化局举行“踩线团”,让 -大月兔(中秋艺术作品)的作者还有哪些代表作? 大月兔 -大月兔(中秋艺术作品)的作者还有哪些代表作? 各项地景艺术作品呈现在媒体眼中,虽然“月兔”仍在进行最后的细节赶工,但横躺在机堡上的“月兔”雏形已经完工。[5] -大月兔(中秋艺术作品)的作者还有哪些代表作? “这么大”、“好可爱呦”是不少踩线团成员对“月兔”的直觉;尤其在蓝天的衬托及前方绿草的组合下,呈现犹如真实版的爱丽丝梦游仙境。[6] -大月兔(中秋艺术作品)的作者还有哪些代表作? 霍夫曼的作品大月兔,“从平凡中,创作出不平凡的视觉”,创造出观赏者打从心中油然而生的幸福感,拉近观赏者的距离。[6] -大月兔(中秋艺术作品)的作者还有哪些代表作? 2014年9月15日早 -大月兔(中秋艺术作品)的作者还有哪些代表作? 上,施工人员要将月兔拆解,搬离海军基地草皮时,疑施工拆除的卡车,在拆除过程,故障起火,起火的卡车不慎延烧到兔子,造成兔子起火燃烧,消防队员即刻抢救,白色的大月兔立即变成焦黑的火烧兔。[7] -大月兔(中秋艺术作品)的作者还有哪些代表作? 桃园县府表示相当遗憾及难过,也不排除向包商求偿,也已将此事告知霍夫曼。[2] -大月兔(中秋艺术作品)的作者还有哪些代表作? ?[8] -大月兔(中秋艺术作品)的作者还有哪些代表作? 弗洛伦泰因·霍夫曼,荷兰艺术家,以在公共空间创作巨大造型 -大月兔(中秋艺术作品)的作者还有哪些代表作? 物的艺术项目见长。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 代表作品包括“胖猴子”(2010年在巴西圣保罗展出)、“大黄兔”(2011年在瑞典厄勒布鲁展出)、粉红猫(2014年5月在上海亮相)、大黄鸭(Rubber Duck)、月兔等。 -英国耆卫保险公司有多少保险客户? 英国耆卫保险公司(Old Mutual plc)成立于1845年,一直在伦敦证券交易所(伦敦证券交易所:OML)作第一上市,也是全球排名第32位(按营业收入排名)的保险公司(人寿/健康)。 -英国耆卫保险公司有多少保险客户? 公司是全球财富500强公司之一,也是被列入英国金融时报100指数的金融服务集团之一。 -英国耆卫保险公司有多少保险客户? Old Mutual 是一家国际金融服务公司,拥有近320万个保险客户,240万个银行储户,270,000个短期保险客户以及700,000个信托客户 -英国耆卫保险公司有多少保险客户? 英国耆卫保险公司(Old Mutual)是一家国际金融服务公司,总部设在伦敦,主要为全球客户提供长期储蓄的解决方案、资产管理、短期保险和金融服务等,目前业务遍及全球34个国家。[1] -英国耆卫保险公司有多少保险客户? 主要包括人寿保险,资产管理,银行等。 -英国耆卫保险公司有多少保险客户? 1845年,Old Mutual在好望角成立。 -英国耆卫保险公司有多少保险客户? 1870年,董事长Charles Bell设计了Old Mutual公司的标记。 -英国耆卫保险公司有多少保险客户? 1910年,南非从英联邦独立出来。 -英国耆卫保险公司有多少保险客户? Old Mutual的董事长John X. Merriman被选为国家总理。 -英国耆卫保险公司有多少保险客户? 1927年,Old Mutual在Harare成立它的第一个事务所。 -英国耆卫保险公司有多少保险客户? 1960年,Old Mutual在南非成立了Mutual Unit信托公司,用来管理公司的信托业务。 -英国耆卫保险公司有多少保险客户? 1970年,Old Mutual的收入超过100百万R。 -英国耆卫保险公司有多少保险客户? 1980年,Old Mutual成为南非第一大人寿保险公司,年收入达10亿R。 -英国耆卫保险公司有多少保险客户? 1991年,Old Mutual在美国财富周刊上评选的全球保险公司中名列第38位。 -英国耆卫保险公司有多少保险客户? 1995年,Old Mutual在美国波士顿建立投资顾问公司,同年、又在香港和Guernsey建立事务所。 -英国耆卫保险公司有多少保险客户? 作为一项加强与其母公司联系的举措,OMNIA公司(百慕大)荣幸的更名为Old Mutual 公司(百慕大) 。 -英国耆卫保险公司有多少保险客户? 这一新的名称和企业识别清晰地展示出公司成为其世界金融机构合作伙伴强有力支持的决心。 -英国耆卫保险公司有多少保险客户? 2003 年4月,该公司被Old Mutual plc公司收购,更名为Sage Life(百慕大)公司并闻名于世,公司为Old Mutual公司提供了一个新的销售渠道,补充了其现有的以美元计价的产品线和分销系统。 -英国耆卫保险公司有多少保险客户? 达到了一个重要里程碑是公司成功的一个例证: 2005年6月3日公司资产超过10亿美元成为公司的一个主要里程碑,也是公司成功的一个例证。 -英国耆卫保险公司有多少保险客户? Old Mutual (百慕大)为客户提供一系列的投资产品。 -英国耆卫保险公司有多少保险客户? 在其开放的结构下,客户除了能够参与由Old Mutual会员管理的方案外,还能够参与由一些世界顶尖投资机构提供的投资选择。 -英国耆卫保险公司有多少保险客户? 首席执行官John Clifford对此发表评论说:“过去的两年对于Old Mutual家族来说是稳固发展的两年,更名是迫在眉睫的事情。 -英国耆卫保险公司有多少保险客户? 通过采用其名字和形象上的相似,Old Mutual (百慕大)进一步强化了与母公司的联系。” -英国耆卫保险公司有多少保险客户? Clifford补充道:“我相信Old Mutual全球品牌认可度和Old Mutual(百慕大)产品专业知识的结合将在未来的日子里进一步推动公司的成功。” -英国耆卫保险公司有多少保险客户? 随着公司更名而来的是公司网站的全新改版,设计投资选择信息、陈述、销售方案、营销材料和公告板块。 -英国耆卫保险公司有多少保险客户? 在美国购买不到OMNIA投资产品,该产品也不向美国公民或居民以及百慕大居民提供。 -英国耆卫保险公司有多少保险客户? 这些产品不对任何要约未得到批准的区域中的任何人,以及进行此要约或询价为非法行为的个人构成要约或询价。 -英国耆卫保险公司有多少保险客户? 关于Old Mutual(百慕大)公司 -英国耆卫保险公司有多少保险客户? Old Mutual(百慕大)公司总部位于百慕大,公司面向非美国居民及公民以及非百慕大居民,通过遍布世界的各个市场的金融机构开发和销售保险和投资方案。 -英国耆卫保险公司有多少保险客户? 这些方案由Old Mutual(百慕大)公司直接做出,向投资者提供各种投资选择和战略,同时提供死亡和其他受益保证。 -谁知道北京的淡定哥做了什么? 尼日利亚足球队守门员恩耶马被封淡定哥,原因是2010年南非世界杯上1:2落后希腊队时,对方前锋已经突破到禁区,其仍头依门柱发呆,其从容淡定令人吃惊。 -谁知道北京的淡定哥做了什么? 淡定哥 -谁知道北京的淡定哥做了什么? 在2010年6月17日的世界杯赛场上,尼日利亚1比2不敌希腊队,但尼日利亚门将恩耶马(英文名:Vincent Enyeama)在赛场上的“淡定”表现令人惊奇。 -谁知道北京的淡定哥做了什么? 随后,网友将赛场照片发布于各大论坛,恩耶马迅速窜红,并被网友称为“淡定哥”。 -谁知道北京的淡定哥做了什么? 淡定哥 -谁知道北京的淡定哥做了什么? 从网友上传得照片中可以看到,“淡定哥”在面临对方前锋突袭至小禁区之时,还靠在球门柱上发呆,其“淡定”程度的确非一般人所能及。 -谁知道北京的淡定哥做了什么? 恩耶马是尼日利亚国家队的主力守门员,目前效力于以色列的特拉维夫哈普尔队。 -谁知道北京的淡定哥做了什么? 1999年,恩耶马在尼日利亚国内的伊波姆星队开始职业生涯,后辗转恩伊姆巴、Iwuanyanwu民族等队,从07年开始,他为特拉维夫效力。 -谁知道北京的淡定哥做了什么? 恩耶马的尼日利亚国脚生涯始于2002年,截至2010年1月底,他为国家队出场已超过50次。 -谁知道北京的淡定哥做了什么? 当地时间2011年1月4日,国际足球历史与统计协会(IFFHS)公布了2010年度世界最佳门将,恩耶马(尼日利亚,特拉维夫夏普尔)10票排第十一 -谁知道北京的淡定哥做了什么? 此词经国家语言资源监测与研究中心等机构专家审定入选2010年年度新词语,并收录到《中国语言生活状况报告》中。 -谁知道北京的淡定哥做了什么? 提示性释义:对遇事从容镇定、处变不惊的男性的戏称。 -谁知道北京的淡定哥做了什么? 例句:上海现“淡定哥”:百米外爆炸他仍专注垂钓(2010年10月20日腾讯网http://news.qq.com/a/20101020/000646.htm) -谁知道北京的淡定哥做了什么? 2011年度新人物 -谁知道北京的淡定哥做了什么? 1、淡定哥(北京) -谁知道北京的淡定哥做了什么? 7月24日傍晚,北京市出现大范围降雨天气,位于通州北苑路出现积水,公交车也难逃被淹。 -谁知道北京的淡定哥做了什么? 李欣摄图片来源:新华网一辆私家车深陷积水,车主索性盘坐在自己的汽车上抽烟等待救援。 -谁知道北京的淡定哥做了什么? 私家车主索性盘坐在自己的车上抽烟等待救援,被网友称“淡定哥” -谁知道北京的淡定哥做了什么? 2、淡定哥——林峰 -谁知道北京的淡定哥做了什么? 在2011年7月23日的动车追尾事故中,绍兴人杨峰(@杨峰特快)在事故中失去了5位亲人:怀孕7个月的妻子、未出世的孩子、岳母、妻姐和外甥女,他的岳父也在事故中受伤正在治疗。 -谁知道北京的淡定哥做了什么? 他披麻戴孝出现在事故现场,要求将家人的死因弄个明白。 -谁知道北京的淡定哥做了什么? 但在第一轮谈判过后,表示:“请原谅我,如果我再坚持,我将失去我最后的第六个亲人。” -谁知道北京的淡定哥做了什么? 如果他继续“纠缠”铁道部,他治疗中的岳父将会“被死亡”。 -谁知道北京的淡定哥做了什么? 很多博友就此批评杨峰,并讽刺其为“淡定哥”。 -071型船坞登陆舰的北约代号是什么? 071型船坞登陆舰(英语:Type 071 Amphibious Transport Dock,北约代号:Yuzhao-class,中文:玉昭级,或以首舰昆仑山号称之为昆仑山级船坞登陆舰),是中国人民解放军海军隶下的大型多功能两栖船坞登陆舰,可作为登陆艇的母舰,用以运送士兵、步兵战车、主战坦克等展开登陆作战,也可搭载两栖车辆,具备大型直升机起降甲板及操作设施。 -071型船坞登陆舰的北约代号是什么? 071型两栖登陆舰是中国首次建造的万吨级作战舰艇,亦为中国大型多功能两栖舰船的开山之作,也可以说是中国万吨级以上大型作战舰艇的试验之作,该舰的建造使中国海军的两栖舰船实力有了质的提升。 -071型船坞登陆舰的北约代号是什么? 在本世纪以前中国海军原有的两栖舰队以一 -071型船坞登陆舰的北约代号是什么? 早期071模型 -071型船坞登陆舰的北约代号是什么? 千至四千吨级登陆舰为主要骨干,这些舰艇吨位小、筹载量有限,直升机操作能力非常欠缺,舰上自卫武装普遍老旧,对于现代化两栖登陆作战可说有很多不足。 -071型船坞登陆舰的北约代号是什么? 为了应对新时期的国际国内形势,中国在本世纪初期紧急强化两栖作战能力,包括短时间内密集建造072、074系列登陆舰,同时也首度设计一种新型船坞登陆舰,型号为071。[1] -071型船坞登陆舰的北约代号是什么? 在两栖作战行动中,这些舰只不得不采取最危险的 -071型船坞登陆舰的北约代号是什么? 舾装中的昆仑山号 -071型船坞登陆舰的北约代号是什么? 敌前登陆方式实施两栖作战行动,必须与敌人预定阻击力量进行面对面的战斗,在台湾地区或者亚洲其他国家的沿海,几乎没有可用而不设防的海滩登陆地带,并且各国或者地区的陆军在战时,可能会很快控制这些易于登陆的海难和港口,这样就限制住了中国海军两栖登陆部队的实际登陆作战能力。 -071型船坞登陆舰的北约代号是什么? 071型登陆舰正是为了更快和更多样化的登陆作战而开发的新型登陆舰艇。[2] -071型船坞登陆舰的北约代号是什么? 071型两栖船坞登陆舰具有十分良好的整体隐身能力, -071型船坞登陆舰的北约代号是什么? 071型概念图 -071型船坞登陆舰的北约代号是什么? 该舰外部线条简洁干练,而且舰体外形下部外倾、上部带有一定角度的内倾,从而形成雷达隐身性能良好的菱形横剖面。 -071型船坞登陆舰的北约代号是什么? 舰体为高干舷平甲板型,长宽比较小,舰身宽满,采用大飞剪型舰首及楔形舰尾,舰的上层建筑位于舰体中间部位,后部是大型直升机甲板,适航性能非常突出。 -071型船坞登陆舰的北约代号是什么? 顶甲板上各类电子设备和武器系统布局十分简洁干净,各系统的突出物很少。 -071型船坞登陆舰的北约代号是什么? 该舰的两座烟囱实行左右分布式设置在舰体两侧,既考虑了隐身特点,也十分新颖。[3] -071型船坞登陆舰的北约代号是什么? 1号甲板及上层建筑物主要设置有指挥室、控 -071型船坞登陆舰的北约代号是什么? 舰尾俯视 -071型船坞登陆舰的北约代号是什么? 制舱、医疗救护舱及一些居住舱,其中医疗救护舱设置有完备的战场救护设施,可以在舰上为伤病员提供紧急手术和野战救护能力。 -071型船坞登陆舰的北约代号是什么? 2号甲板主要是舰员和部分登陆人员的居住舱、办公室及厨房。 -071型船坞登陆舰的北约代号是什么? 主甲板以下则是登陆舱,分前后两段,前段是装甲车辆储存舱,共两层,可以储存登陆装甲车辆和一些其它物资,在进出口处还设有一小型升降机,用于两层之间的移动装卸用。 -071型船坞登陆舰的北约代号是什么? 前段车辆储存舱外壁左右各设有一折叠式装载舱门,所有装载车辆在码头可通过该门直接装载或者登陆上岸。 -071型船坞登陆舰的北约代号是什么? 后段是一个巨型船坞登陆舱,总长约70米,主要用来停泊大小型气垫登陆艇、机械登陆艇或车辆人员登陆艇。[4] -071型船坞登陆舰的北约代号是什么? 自卫武装方面,舰艏设有一门PJ-26型76mm舰炮( -071型船坞登陆舰的北约代号是什么? 井冈山号舰首主炮 -071型船坞登陆舰的北约代号是什么? 俄罗斯AK-176M的中国仿制版,亦被054A采用) , 四具与052B/C相同的726-4 18联装干扰弹发射器分置于舰首两侧以及上层结构两侧,近迫防御则依赖四座布置于上层结构的AK-630 30mm防空机炮 。 -071型船坞登陆舰的北约代号是什么? 原本071模型的舰桥前方设有一座八联装海红-7短程防空导弹发射器,不过071首舰直到出海试航与2009年4月下旬的海上阅兵式中,都未装上此一武器。 -071型船坞登陆舰的北约代号是什么? 电子装备方面, 舰桥后方主桅杆顶配置一具363S型E/F频2D对空/平面搜索雷达 、一具Racal Decca RM-1290 I频导航雷达,后桅杆顶装备一具拥有球型外罩的364型(SR-64)X频2D对空/对海搜索雷达,此外还有一具LR-66C舰炮射控雷达、一具负责导引AK-630机炮的TR-47C型火炮射控雷达等。[5] -071型船坞登陆舰的北约代号是什么? 071型自卫武装布置 -071型船坞登陆舰的北约代号是什么? 071首舰昆仑山号于2006年6月开 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 竹溪县人大常委会办公室:承担人民代表大会会议、常委会会议、主任会议和常委会党组会议(简称“四会”)的筹备和服务工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责常委会组成人员视察活动的联系服务工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 受主任会议委托,拟定有关议案草案。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担常委会人事任免的具体工作,负责机关人事管理和离退休干部的管理与服务。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担县人大机关的行政事务和后勤保障工作,负责机关的安全保卫、文电处理、档案、保密、文印工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担县人大常委会同市人大常委会及乡镇人大的工作联系。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责信息反馈工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 了解宪法、法律、法规和本级人大及其常委会的决议、决定实施情况及常委会成员提出建议办理情况,及时向常委会和主任会议报告。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担人大宣传工作,负责人大常委会会议宣传的组织和联系。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 组织协调各专门工作委员会开展工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承办上级交办的其他工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 办公室下设五个科,即秘书科、调研科、人事任免科、综合科、老干部科。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 教科文卫工作委员会:负责人大教科文卫工作的日常联系、督办、信息收集反馈和业务指导工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责教科文卫方面法律法规贯彻和人大工作情况的宣传、调研工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担人大常委会教科文卫方面会议议题调查的组织联系和调研材料的起草工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担教科文卫方面规范性备案文件的初审工作,侧重对教科文卫行政执法个案监督业务承办工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责常委会组成人员和人大代表对教科文卫工作方面检查、视察的组织联系工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承办上级交办的其他工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 代表工作委员会:负责与县人大代表和上级人大代表的联系、情况收集交流工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责《代表法》的宣传贯彻和贯彻实施情况的调查研究工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责县人大代表法律法规和人民代表大会制度知识学习的组织和指导工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责常委会主任、副主任和委员走访联系人大代表的组织、联系工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责组织人大系统的干部培训。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责乡镇人大主席团工作的联系和指导。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责人大代表建议、批评和意见办理工作的联系和督办落实。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责人大代表开展活动的组织、联系工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承办上级交办的其他工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 财政经济工作委员会:负责人大财政经济工作的日常联系、督办、信息收集反馈和业务指导工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责财政经济方面法律法规贯彻和人大工作情况的宣传、调研工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 对国民经济计划和财政预算编制情况进行初审。 -我想知道武汉常住人口有多少? 武汉,简称“汉”,湖北省省会。 -我想知道武汉常住人口有多少? 它是武昌、汉口、汉阳三镇统称。 -我想知道武汉常住人口有多少? 世界第三大河长江及其最长支流汉江横贯市区,将武汉一分为三,形成武昌、汉口、汉阳,三镇跨江鼎立的格局。 -我想知道武汉常住人口有多少? 唐朝诗人李白在此写下“黄鹤楼中吹玉笛,江城五月落梅花”,因此武汉自古又称“江城”。 -我想知道武汉常住人口有多少? 武汉是中国15个副省级城市之一,全国七大中心城市之一,全市常住人口858万人。 -我想知道武汉常住人口有多少? 华中地区最大都市,华中金融中心、交通中心、文化中心,长江中下游特大城市。 -我想知道武汉常住人口有多少? 武汉城市圈的中心城市。 -我想知道武汉常住人口有多少? [3]武昌、汉口、汉阳三地被俗称武汉三镇。 -我想知道武汉常住人口有多少? 武汉西与仙桃市、洪湖市相接,东与鄂州市、黄石市接壤,南与咸宁市相连,北与孝感市相接,形似一只自西向东的蝴蝶形状。 -我想知道武汉常住人口有多少? 在中国经济地理圈内,武汉处于优越的中心位置是中国地理上的“心脏”,故被称为“九省通衢”之地。 -我想知道武汉常住人口有多少? 武汉市历史悠久,古有夏汭、鄂渚之名。 -我想知道武汉常住人口有多少? 武汉地区考古发现的历史可以上溯距今6000年的新石器时代,其考古发现有东湖放鹰台遗址的含有稻壳的红烧土、石斧、石锛以及鱼叉。 -我想知道武汉常住人口有多少? 市郊黄陂区境内的盘龙城遗址是距今约3500年前的商朝方国宫城,是迄今中国发现及保存最完整的商代古城之一。 -我想知道武汉常住人口有多少? 现代武汉的城市起源,是东汉末年的位于今汉阳的卻月城、鲁山城,和在今武昌蛇山的夏口城。 -我想知道武汉常住人口有多少? 东汉末年,地方军阀刘表派黄祖为江夏太守,将郡治设在位于今汉阳龟山的卻月城中。 -我想知道武汉常住人口有多少? 卻月城是武汉市区内已知的最早城堡。 -我想知道武汉常住人口有多少? 223年,东吴孙权在武昌蛇山修筑夏口城,同时在城内的黄鹄矶上修筑了一座瞭望塔——黄鹤楼。 -我想知道武汉常住人口有多少? 苏轼在《前赤壁赋》中说的“西望夏口,东望武昌”中的夏口就是指武汉(而当时的武昌则是今天的鄂州)。 -我想知道武汉常住人口有多少? 南朝时,夏口扩建为郢州,成为郢州的治所。 -我想知道武汉常住人口有多少? 隋置江夏县和汉阳县,分别以武昌,汉阳为治所。 -我想知道武汉常住人口有多少? 唐时江夏和汉阳分别升为鄂州和沔州的州治,成为长江沿岸的商业重镇。 -我想知道武汉常住人口有多少? 江城之称亦始于隋唐。 -我想知道武汉常住人口有多少? 两宋时武昌属鄂州,汉阳汉口属汉阳郡。 -我想知道武汉常住人口有多少? 经过发掘,武汉出土了大量唐朝墓葬,在武昌马房山和岳家咀出土了灰陶四神砖以及灰陶十二生肖俑等。 -我想知道武汉常住人口有多少? 宋代武汉的制瓷业发达。 -我想知道武汉常住人口有多少? 在市郊江夏区梁子湖旁发现了宋代瓷窑群100多座,烧制的瓷器品种很多,釉色以青白瓷为主。 -我想知道武汉常住人口有多少? 南宋诗人陆游在经过武昌时,写下“市邑雄富,列肆繁错,城外南市亦数里,虽钱塘、建康不能过,隐然一大都会也”来描写武昌的繁华。 -我想知道武汉常住人口有多少? 南宋抗金将领岳飞驻防鄂州(今武昌)8年,在此兴师北伐。 -我想知道武汉常住人口有多少? 元世祖至元十八年(1281年),武昌成为湖广行省的省治。 -我想知道武汉常住人口有多少? 这是武汉第一次成为一级行政单位(相当于现代的省一级)的治所。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 列夫·达维多维奇,托洛茨基是联共(布)党内和第三国际时期反对派的领导人,托派"第四国际"的创始人和领导人。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 列夫·达维多维奇·托洛茨基 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 列夫·达维多维奇·托洛茨基(俄国与国际历史上最重要的无产阶级革命家之一,二十世纪国际共产主义运动中最具争议的、也是备受污蔑的左翼反对派领袖,他以对古典马克思主义“不断革命论”的独创性发展闻名于世,第三共产国际和第四国际的主要缔造者之一(第三国际前三次代表大会的宣言执笔人)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 在1905年俄国革命中被工人群众推举为彼得堡苏维埃主席(而当时布尔什维克多数干部却还在讨论是否支持苏维埃,这些干部后来被赶回俄国的列宁痛击)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1917年革命托洛茨基率领“区联派”与列宁派联合,并再次被工人推举为彼得格勒苏维埃主席。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 对于十月革命这场20世纪最重大的社会革命,托洛茨基赢得了不朽的历史地位。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 后来成了托洛茨基死敌的斯大林,当时作为革命组织领导者之一却写道:“起义的一切实际组织工作是在彼得格勒苏维埃主席托洛茨基同志直接指挥之下完成的。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 我们可以确切地说,卫戍部队之迅速站在苏维埃方面来,革命军事委员会的工作之所以搞得这样好,党认为这首先要归功于托洛茨基同志。” -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? (值得一提的是,若干年后,当反托成为政治需要时,此类评价都从斯大林文章中删掉了。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? )甚至连后来狂热的斯大林派雅克·沙杜尔,当时却也写道:“托洛茨基在十月起义中居支配地位,是起义的钢铁灵魂。” -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? (苏汉诺夫《革命札记》第6卷P76。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? )不仅在起义中,而且在无产阶级政权的捍卫、巩固方面和国际共产主义革命方面,托洛茨基也作出了极其卓越的贡献(外交官-苏联国际革命政策的负责人、苏联红军缔造者以及共产国际缔造者)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 革命后若干年里,托洛茨基与列宁的画像时常双双并列挂在一起;十月革命之后到列宁病逝之前,布尔什维克历次全国代表大会上,代表大会发言结束均高呼口号:“我们的领袖列宁和托洛茨基万岁!” -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 在欧美共运中托洛茨基的威望非常高。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 后人常常认为托洛茨基只是一个知识分子文人,实际上他文武双全,而且谙熟军事指挥艺术,并且亲临战场。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 正是他作为十月革命的最高军事领袖(在十月革命期间他与士兵一起在战壕里作战),并且在1918年缔造并指挥苏联红军,是一个杰出的军事家(列宁曾对朋友说,除了托洛茨基,谁还能给我迅速地造成一支上百万人的强大军队? -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? )。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 在内战期间,他甚至坐装甲列车冒着枪林弹雨亲临战场指挥作战,差点挨炸死;当反革命军队进攻彼得堡时,当时的彼得堡领导人季诺维也夫吓得半死,托洛茨基却从容不迫指挥作战。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 同时托洛茨基又是一个高明的外交家,他曾强硬地要求英国政府释放因反战宣传被囚禁在英国的俄国流亡革命者,否则就不许英国公民离开俄国,连英国政府方面都觉得此举无懈可击;他并且把居高临下的法国到访者当场轰出他的办公室(革命前法国一直是俄国的头号债主与政治操纵者),却彬彬有礼地欢迎前来缓和冲突的法国大使;而在十月革命前夕,他对工人代表议会质询的答复既保守了即将起义的军事秘密,又鼓舞了革命者的战斗意志,同时严格遵循现代民主与公开原则,这些政治答复被波兰人多伊彻誉为“外交辞令的杰作”(伊·多伊彻的托氏传记<先知三部曲·武装的先知>第九章P335,第十一章P390)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 托洛茨基在国民经济管理与研究工作中颇有创造:是苏俄新经济政策的首先提议者以及社会主义计划经济的首先实践者。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1928年斯大林迟迟开始的计划经济实验,是对1923年以托洛茨基为首的左翼反对派经济纲领的拙劣剽窃和粗暴翻版。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 因为统治者的政策迟到,使得新经济政策到1928年已产生了一个威胁政权生存的农村资产阶级,而苏俄工人阶级国家不得不强力解决——而且是不得不借助已蜕化为官僚集团的强力来解决冲突——结果导致了1929年到30年代初的大饥荒和对农民的大量冤枉错杀。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 另外,他还对文学理论有很高的造诣,其著作<文学与革命>甚至影响了整整一代的国际左翼知识分子(包括中国的鲁迅、王实味等人)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 他在哈佛大学图书馆留下了100多卷的<托洛茨基全集>,其生动而真诚的自传和大量私人日记、信件,给人留下了研究人类生活各个方面的宝贵财富,更是追求社会进步与解放的历史道路上的重要知识库之一。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 托洛茨基1879年10月26日生于乌克兰赫尔松县富裕农民家庭,祖籍是犹太人。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 原姓布隆施泰因。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1896年开始参加工人运动。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1897年 ,参加建立南俄工人协会 ,反对沙皇专制制度。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1898年 在尼古拉也夫组织工人团体,被流放至西伯利亚。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1902年秋以署名托洛茨基之假护照逃到伦敦,参加V.I.列宁、G.V.普列汉诺夫等人主编的<火星报>的工作。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥,位于洞庭湖与长江交汇处,东接岳阳市区洞庭大道和107国道、京珠高速公路,西连省道306线,是国内目前最长的内河公路桥。 -谁知道洞庭湖大桥有多长? 路桥全长10173.82m,其中桥长5747.82m,桥宽20m,西双向四车道,是我国第一座三塔双索面斜拉大桥,亚洲首座不等高三塔双斜索面预应力混凝土漂浮体系斜拉桥。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥是我国最长的内河公路桥,大桥横跨东洞庭湖区,全长10174.2米,主桥梁长5747.8米。 -谁知道洞庭湖大桥有多长? 大桥的通车使湘、鄂间公路干线大为畅通,并为洞庭湖区运输抗洪抢险物资提供了一条快速通道该桥设计先进,新颖,造型美观,各项技求指标先进,且为首次在国内特大型桥梁中采用主塔斜拉桥结构体系。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥是湖区人民的造福桥,装点湘北门户的形象桥,对优化交通网络绪构,发展区域经济,保障防汛救灾,缩短鄂、豫、陕等省、市西部车辆南下的运距,拓展岳阳城区的主骨架,提升岳阳城市品位,增强城市辐射力,有着十分重要的意义。 -谁知道洞庭湖大桥有多长? 自1996年12月开工以来,共有10支施工队伍和两支监理队伍参与了大桥的建设。 -谁知道洞庭湖大桥有多长? 主桥桥面高52米(黄海),设计通航等级Ⅲ级。 -谁知道洞庭湖大桥有多长? 主桥桥型为不等高三塔、双索面空间索、全飘浮体系的预应力钢筋混凝土肋板梁式结构的斜拉桥,跨径为130+310+310+130米。 -谁知道洞庭湖大桥有多长? 索塔为双室宝石型断面,中塔高为125.684米,两边塔高为99.311米。 -谁知道洞庭湖大桥有多长? 三塔基础为3米和3.2米大直径钻孔灌注桩。 -谁知道洞庭湖大桥有多长? 引桥为连续梁桥,跨径20至50米,基础直径为1.8和2.5米钻孔灌注桩。 -谁知道洞庭湖大桥有多长? 该桥设计先进、新颖、造型美观,各项技求指标先进,且为首次在国内特大型桥梁中采用主塔斜拉桥结构体系,岳阳洞庭湖大桥是我国首次采用不等高三塔斜拉桥桥型的特大桥,设计先进,施工难度大位居亚洲之首,是湖南省桥梁界的一大科研项目。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥设计为三塔斜拉桥,空间双斜面索,主梁采用前支点挂篮施工,并按各种工况模拟挂篮受力进行现场试验,获得了大量有关挂篮受力性能和实际刚度的计算参数,作为施工控制参数。 -谁知道洞庭湖大桥有多长? 利用组合式模型单元,推导了斜拉桥分离式双肋平板主梁的单元刚度矩阵,并进行了岳阳洞庭湖大桥的空间受力分析,结果表明此种单元精度满足工程要求,同时在施工工艺方面也积累了成功经验。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥的通车使湘、鄂间公路干线大为畅通,并为洞庭湖区抗洪抢险物资运输提供了一条快速通道。 -谁知道洞庭湖大桥有多长? 湖大桥设计先进,造型美丽,科技含量高。 -谁知道洞庭湖大桥有多长? 洞庭大桥还是一道美丽的风景线,大桥沿岸风景与岳阳楼,君山岛、洞庭湖等风景名胜融为一体,交相辉映,成为世人了解岳阳的又一崭新窗口,也具有特别旅游资源。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥多塔斜拉桥新技术研究荣获国家科学技术进步二等奖、湖南省科学技术进步一等奖,并获第五届詹天佑大奖。 -谁知道洞庭湖大桥有多长? 大桥在中国土木工程学会2004年第16届年会上入选首届《中国十佳桥梁》,名列斜拉桥第二位。 -谁知道洞庭湖大桥有多长? 2001年荣获湖南省建设厅优秀设计一等奖,省优秀勘察一等奖。 -谁知道洞庭湖大桥有多长? 2003年荣获国家优秀工程设计金奖, "十佳学术活动"奖。 -天气预报员的布景师是谁? 芝加哥天气预报员大卫(尼古拉斯·凯奇),被他的粉丝们热爱,也被诅咒--这些人在天气不好的时候会迁怒于他,而大部分时候,大卫都是在预报坏天气。 -天气预报员的布景师是谁? ?不过,这也没什么,当一家国家早间新闻节目叫他去面试的时候,大卫的事业似乎又将再创新高。 -天气预报员的布景师是谁? 芝加哥天气预报员大卫(尼古拉斯·凯奇),被他的粉丝们热爱,也被诅咒--这些人在天气不好的时候会迁怒于他,而大部分时候,大卫都是在预报坏天气。 -天气预报员的布景师是谁? 不过,这也没什么,当一家国家早间新闻节目叫他去面试的时候,大卫的事业似乎又将再创新高。 -天气预报员的布景师是谁? 在电视节目上,大卫永远微笑,自信而光鲜,就像每一个成功的电视人一样,说起收入,他也绝对不落人后。 -天气预报员的布景师是谁? 不过,大卫的个人生活可就不那么如意了。 -天气预报员的布景师是谁? 与妻子劳伦(霍普·戴维斯)的离婚一直让他痛苦;儿子迈克吸大麻上瘾,正在进行戒毒,可戒毒顾问却对迈克有着异样的感情;女儿雪莉则体重惊人,总是愁眉苦脸、孤独寂寞;大卫的父亲罗伯特(迈克尔·凯恩),一个世界著名的小说家,虽然罗伯特不想再让大卫觉得负担过重,可正是他的名声让大卫的一生都仿佛处在他的阴影之下,更何况,罗伯特就快重病死了。 -天气预报员的布景师是谁? 和妻子的离婚、父亲的疾病、和孩子之间完全不和谐的关系,都让大卫每天头疼,而每次当他越想控制局面,一切就越加复杂。 -天气预报员的布景师是谁? 然而就在最后人们再也不会向他扔快餐,或许是因为他总是背着弓箭在大街上走。 -天气预报员的布景师是谁? 最后,面对那份高额工作的接受意味着又一个新生活的开始。 -天气预报员的布景师是谁? 也许,生活就像天气,想怎么样就怎么样,完全不可预料。 -天气预报员的布景师是谁? 导 演:戈尔·维宾斯基 Gore Verbinski -天气预报员的布景师是谁? 编 剧:Steve Conrad .....(written by) -天气预报员的布景师是谁? 演 员:尼古拉斯·凯奇 Nicolas Cage .....David Spritz -天气预报员的布景师是谁? 尼古拉斯·霍尔特 Nicholas Hoult .....Mike -天气预报员的布景师是谁? 迈克尔·凯恩 Michael Caine .....Robert Spritzel -天气预报员的布景师是谁? 杰蒙妮·德拉佩纳 Gemmenne de la Peña .....Shelly -天气预报员的布景师是谁? 霍普·戴维斯 Hope Davis .....Noreen -天气预报员的布景师是谁? 迈克尔·瑞斯玻利 Michael Rispoli .....Russ -天气预报员的布景师是谁? 原创音乐:James S. Levine .....(co-composer) (as James Levine) -天气预报员的布景师是谁? 汉斯·兹米尔 Hans Zimmer -天气预报员的布景师是谁? 摄 影:Phedon Papamichael -天气预报员的布景师是谁? 剪 辑:Craig Wood -天气预报员的布景师是谁? 选角导演:Denise Chamian -天气预报员的布景师是谁? 艺术指导:Tom Duffield -天气预报员的布景师是谁? 美术设计:Patrick M. Sullivan Jr. .....(as Patrick Sullivan) -天气预报员的布景师是谁? 布景师 :Rosemary Brandenburg -天气预报员的布景师是谁? 服装设计:Penny Rose -天气预报员的布景师是谁? 视觉特效:Charles Gibson -天气预报员的布景师是谁? David Sosalla .....Pacific Title & Art Studio -韩国国家男子足球队教练是谁? 韩国国家足球队,全名大韩民国足球国家代表队(???? ?? ?????),为韩国足球协会所于1928年成立,并于1948年加入国际足球协会。 -韩国国家男子足球队教练是谁? 韩国队自1986年世界杯开始,从未缺席任何一届决赛周。 -韩国国家男子足球队教练是谁? 在2002年世界杯,韩国在主场之利淘汰了葡萄牙、意大利及西班牙三支欧洲强队,最后夺得了殿军,是亚洲球队有史以来最好成绩。 -韩国国家男子足球队教练是谁? 在2010年世界杯,韩国也在首圈分组赛压倒希腊及尼日利亚出线次圈,再次晋身十六强,但以1-2败给乌拉圭出局。 -韩国国家男子足球队教练是谁? 北京时间2014年6月27日3时,巴西世界杯小组赛H组最后一轮赛事韩国对阵比利时,韩国队0-1不敌比利时,3场1平2负积1分垫底出局。 -韩国国家男子足球队教练是谁? 球队教练:洪明甫 -韩国国家男子足球队教练是谁? 韩国国家足球队,全名大韩民国足球国家代表队(韩国国家男子足球队???? ?? ?????),为韩国足球协会所于1928年成立,并于1948年加入国际足联。 -韩国国家男子足球队教练是谁? 韩国队是众多亚洲球队中,在世界杯表现最好,他们自1986年世界杯开始,从未缺席任何一届决赛周。 -韩国国家男子足球队教练是谁? 在2002年世界杯,韩国在主场之利淘汰了葡萄牙、意大利及西班牙三支欧洲强队,最后夺得了殿军,是亚洲球队有史以来最好成绩。 -韩国国家男子足球队教练是谁? 在2010年世界杯,韩国也在首圈分组赛压倒希腊及尼日利亚出线次圈,再次晋身十六强,但以1-2败给乌拉圭出局。 -韩国国家男子足球队教练是谁? 2014年世界杯外围赛,韩国在首轮分组赛以首名出线次轮分组赛,与伊朗、卡塔尔、乌兹别克以及黎巴嫩争逐两个直接出线决赛周资格,最后韩国仅以较佳的得失球差压倒乌兹别克,以小组次名取得2014年世界杯决赛周参赛资格,也是韩国连续八次晋身世界杯决赛周。 -韩国国家男子足球队教练是谁? 虽然韩国队在世界杯成绩为亚洲之冠,但在亚洲杯足球赛的成绩却远不及世界杯。 -韩国国家男子足球队教练是谁? 韩国只在首两届亚洲杯(1956年及1960年)夺冠,之后五十多年未能再度称霸亚洲杯,而自1992年更从未打入过决赛,与另一支东亚强队日本近二十年来四度在亚洲杯夺冠成强烈对比。[1] -韩国国家男子足球队教练是谁? 人物简介 -韩国国家男子足球队教练是谁? 车范根(1953年5月22日-)曾是大韩民国有名的锋线选手,他被欧洲媒体喻为亚洲最佳输出球员之一,他也被认为是世界最佳足球员之一。 -韩国国家男子足球队教练是谁? 他被国际足球史料与数据协会评选为20世纪亚洲最佳球员。 -韩国国家男子足球队教练是谁? 他在85-86赛季是德甲的最有价值球员,直到1999年为止他都是德甲外国球员入球纪录保持者。 -韩国国家男子足球队教练是谁? 德国的球迷一直没办法正确说出他名字的发音,所以球车范根(左)迷都以炸弹车(Cha Boom)称呼他。 -韩国国家男子足球队教练是谁? 这也代表了他强大的禁区得分能力。 -韩国国家男子足球队教练是谁? 职业生涯 -韩国国家男子足球队教练是谁? 车范根生于大韩民国京畿道的华城市,他在1971年于韩国空军俱乐部开始了他的足球员生涯;同年他入选了韩国19岁以下国家足球队(U-19)。 -韩国国家男子足球队教练是谁? 隔年他就加入了韩国国家足球队,他是有史以来加入国家队最年轻的球员。 -韩国国家男子足球队教练是谁? 车范根在27岁时前往德国发展,当时德甲被认为是世界上最好的足球联赛。 -韩国国家男子足球队教练是谁? 他在1978年12月加入了达姆施塔特,不过他在那里只待了不到一年就转到当时的德甲巨人法兰克福。 -韩国国家男子足球队教练是谁? 车范根很快在新俱乐部立足,他帮助球队赢得79-80赛季的欧洲足协杯。 -韩国国家男子足球队教练是谁? 在那个赛季过后,他成为德甲薪水第三高的球员,不过在1981年对上勒沃库森的一场比赛上,他的膝盖严重受伤,几乎毁了他的足球生涯。 -韩国国家男子足球队教练是谁? 在1983年车范根转投勒沃库森;他在这取得很高的成就,他成为85-86赛季德甲的最有价值球员,并且在1988年帮助球队拿下欧洲足协杯,也是他个人第二个欧洲足协杯。 -韩国国家男子足球队教练是谁? 他在决赛对垒西班牙人扮演追平比分的关键角色,而球会才在点球大战上胜出。 -韩国国家男子足球队教练是谁? 车范根在1989年退休,他在308场的德甲比赛中进了98球,一度是德甲外国球员的入球纪录。 -韩国国家男子足球队教练是谁? 执教生涯 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学,简称台湾科大、台科大或台科,是位于台湾台北市大安区的台湾第一所高等技职体系大专院校,现为台湾最知名的科技大学,校本部比邻国立台湾大学。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 该校已于2005年、2008年持续入选教育部的“发展国际一流大学及顶尖研究中心计划”。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? “国立”台湾工业技术学院成立于“民国”六十三年(1974)八月一日,为台湾地区第一所技术职业教育高等学府。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 建校之目的,在因应台湾地区经济与工业迅速发展之需求,以培养高级工程技术及管理人才为目标,同时建立完整之技术职业教育体系。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? “国立”台湾工业技术学院成立于“民国”六十三年(1974)八月一日,为台湾地区第一所技术职业教育高等学府。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 建校之目的,在因应台湾地区经济与工业迅速发展之需求,以培养高级工程技术及管理人才为目标,同时建立完整之技术职业教育体系。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 本校校地约44.5公顷,校本部位于台北市基隆路四段四十三号,。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 民国68年成立硕士班,民国71年成立博士班,现有大学部学生5,664人,研究生4,458人,专任教师451位。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 2001年在台湾地区教育部筹划之研究型大学(“国立”大学研究所基础教育重点改善计画)中,成为全台首批之9所大学之一 。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 自2005年更在“教育部”所推动“五年五百亿 顶尖大学”计划下,遴选为适合发展成“顶尖研究中心”的11所研究型大学之一。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学部设有二年制、四年制及工程在职人员进修班等三种学制;凡二专、三专及五专等专科学校以上之毕业生,皆可以报考本校大学部二年制,而高职、高中毕业生,可以报考本校大学部四年制。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 工业管理、电子工程、机械工程、营建工程及应用外语系等,则设有在职人员进修班学制,其招生对象为在职人员,利用夜间及暑假期间上课。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 凡在本校大学部修毕应修学分且成绩及格者皆授予学士学位。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学目前设有工程、电资、管理、设计、人文社会及精诚荣誉等六个学院,分别有机械、材料科学与工程、营建、化工、电子、电机、资工、工管、企管、资管、建筑、工商业设计、应用外语等13个系及校内招生之财务金融学士学位学程、科技管理学士学位学程;全校、工程、电资、管理、创意设计等五个不分系菁英班及光电研究所、管理研究所、财务金融研究所、科技管理研究所、管理学院MBA、数位学习教育研究所、医学工程研究所、自动化及控制研究所、工程技术研究所、专利研究所等独立研究所,此外尚有人文学科负责人文及社会类等课程之教学,通识学科负责法律、音乐、环保类等课程之教学,以及师资培育中心专以培养学生未来担任中等学校工、商、管理、设计等科之合格教师,合计23个独立系所、师资培育中心、人文学科及通识学科等教学单位。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学至今各系所毕业校友已达约56,456位,毕业生出路包含出国继续深造、在台深造以及投身于产业界。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 由于实作经验丰富,理论基础完备,工作态度认真,毕业校友担任政府要职、大学教授、大学校长及企业主管者众多,深受各界的肯定。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 工商业设计系副教授孙春望与硕一生全明远耗时两个月自制之三分钟动画短片“立体悲剧”。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 本片入选有“动画奥斯卡”之称的“ACM SIGGRAPH”国际动画展,并获得观众票选第一名,这也是台湾首次入选及获奖的短片。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 击败了好莱坞知名导演史蒂芬·史匹柏的“世界大战”、乔治卢卡斯的“星际大战三部曲”、梦工厂出品的动画“马达加斯加”、军机缠斗片“机战未来”及美国太空总署、柏克莱加州大学等好莱坞名片及顶尖学术单位制作的短片。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 2009年荣获有工业设计界奥斯卡奖之称的“德国iF设计大奖”国立台湾科技大学设计学院获得大学排名的全球第二,仅次于韩国三星美术设计学院“SADI”。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 总体排名 依据《泰晤士高等教育》(THES-QS)在2009年的世界大学排名调查,台科大排名全世界第351名,在台湾所有大学中排名第五,仅次于台大,清大,成大及阳明,并且是台湾唯一进入世界四百大名校的科技大学。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 依据在欧洲拥有广大声誉的“Eduniversal商学院排名网”2008年的资料,台湾有七所大学的商管学院被分别列入世界1000大商学院,其中台科大位在“卓越商学院”(EXCELLENT Business Schools,国内主要)之列,“推荐程度”(Recommendation Rate)为全台第四,仅次于台大、政大、中山,与交大并列。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 目前设有工程、电资、管理、设计、人文社会及精诚荣誉学院等六个学院。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 预计于竹北新校区设立产学合作学院及应用理学院。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●台湾建筑科技中心 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●智慧型机械人研究中心科技成果展示(15张) -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●台湾彩卷与博彩研究中心 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●电力电子技术研发中心 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●NCP-Taiwan办公室 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●资通安全研究与教学中心 -在日本,神道最初属于什么信仰? 神道又称天道,语出《易经》“大观在上,顺而巽,中正以观天下。 -在日本,神道最初属于什么信仰? 观,盥而不荐,有孚顒若,下观而化也。 -在日本,神道最初属于什么信仰? 观天之神道,而四时不忒,圣人以神道设教,而天下服矣”。 -在日本,神道最初属于什么信仰? 自汉以降,神道又指“墓前开道,建石柱以为标”。 -在日本,神道最初属于什么信仰? 在中医中,神道,经穴名。 -在日本,神道最初属于什么信仰? 出《针灸甲乙经》。 -在日本,神道最初属于什么信仰? 别名冲道。 -在日本,神道最初属于什么信仰? 属督脉。 -在日本,神道最初属于什么信仰? 宗教中,神道是日本的本土传统民族宗教,最初以自然崇拜为主,属于泛灵多神信仰(精灵崇拜),视自然界各种动植物为神祇。 -在日本,神道最初属于什么信仰? 神道又称天道,语出《易经》“大观在上,顺而巽,中正以观天下。 -在日本,神道最初属于什么信仰? 观,盥而不荐,有孚顒若,下观而化也。 -在日本,神道最初属于什么信仰? 观天之神道,而四时不忒,圣人以神道设教,而天下服矣”。 -在日本,神道最初属于什么信仰? 自汉以降,神道又指“墓前开道,建石柱以为标”。 -在日本,神道最初属于什么信仰? 在中医中,神道,经穴名。 -在日本,神道最初属于什么信仰? 出《针灸甲乙经》。 -在日本,神道最初属于什么信仰? 别名冲道。 -在日本,神道最初属于什么信仰? 属督脉。 -在日本,神道最初属于什么信仰? 宗教中,神道是日本的本土传统民族宗教,最初以自然崇拜为主,属于泛灵多神信仰(精灵崇拜),视自然界各种动植物为神祇。 -在日本,神道最初属于什么信仰? 谓鬼神赐福降灾神妙莫测之道。 -在日本,神道最初属于什么信仰? 《易·观》:“观天之神道,而四时不忒,圣人以神道设教,而天下服矣。” -在日本,神道最初属于什么信仰? 孔颖达 疏:“微妙无方,理不可知,目不可见,不知所以然而然,谓之神道。” -在日本,神道最初属于什么信仰? 《文选·王延寿<鲁灵光殿赋>》:“敷皇极以创业,协神道而大宁。” -在日本,神道最初属于什么信仰? 张载 注:“协和神明之道,而天下大宁。” -在日本,神道最初属于什么信仰? 南朝 梁 刘勰 《文心雕龙·正纬》:“夫神道阐幽,天命微显。” -在日本,神道最初属于什么信仰? 鲁迅 《中国小说史略》第五篇:“﹝ 干宝 ﹞尝感於其父婢死而再生,及其兄气绝复苏,自言见天神事,乃撰《搜神记》二十卷,以‘发明神道之不诬’。” -在日本,神道最初属于什么信仰? 神道设教 观卦里面蕴含着《易经》固有的诸如神道设教、用舍行藏、以德化民等思想,是孔子把这些思想发掘出来。 -在日本,神道最初属于什么信仰? 「据此是孔子见当时之人,惑于吉凶祸福,而卜筮之史,加以穿凿傅会,故演易系辞,明义理,切人事,借卜筮以教后人,所谓以神道设教,其所发明者,实即羲文之义理,而非别有义理,亦非羲文并无义理,至孔子始言义理也,当即朱子之言而小变之曰,易为卜筮作,实为义理作,伏羲文王之易,有占而无文,与今人用火珠林起课者相似,孔子加卦爻辞如签辞,纯以理言,实即羲文本意,则其说分明无误矣。」 -在日本,神道最初属于什么信仰? 孔子所发掘的《易经》思想与孔子在《论语》书中表现出来的思想完全一致。 -在日本,神道最初属于什么信仰? 《易传》的思想反映了孔子的思想,这个思想是《周易》的,也是孔子的。 -在日本,神道最初属于什么信仰? 在《周易》和孔子看来,神不是有意识的人格化的上帝。 -奥林匹克里昂获得了几连霸? 里昂 Lyon 全名 Olympique lyonnais 绰号 Les Gones、OL 成立 1950年 城市 法国,里昂 主场 热尔兰球场(Stade Gerland) 容纳人数 41,044人 主席 奥拉斯 主教练 雷米·加尔德 联赛 法国足球甲级联赛 2013–14 法甲,第 5 位 网站 官方网站 主场球衣 客场球衣 第三球衣 日尔兰体育场 奥林匹克里昂(Olympique lyonnais,简称:OL及Lyon,中文简称里昂)是一间位于法国东南部罗纳-阿尔卑斯区的里昂市的足球会,成立于1950年8月3日,前身为里昂·奥林匹克(Lyon Olympique)体育俱乐部其中一个分支的足球队,1889年离开体育俱乐部自立门户成立新俱乐部,但官方网站表示俱乐部于1950年正式成立。 -奥林匹克里昂获得了几连霸? 现时在法国足球甲级联赛比赛,俱乐部同时设立男子及女子足球队。 -奥林匹克里昂获得了几连霸? 里昂是首届法国足球甲级联赛成员之一,可惜名列第十五位而降落乙组,1951年以乙级联赛冠军获得创会后首次锦标。 -奥林匹克里昂获得了几连霸? 球队在法国足球史上没有取得辉煌成绩,比较优异的算是六十年代曾杀入欧洲杯赛冠军杯四强,及3度晋身法国杯决赛并2次成功获冠。 -奥林匹克里昂获得了几连霸? 直至九十年代末里昂由辛天尼带领,先连续取得联赛头三名,到2002年终于首次登上法国顶级联赛冠军宝座,同年勒冈(Paul Le Guen)接替执教法国国家足球队的辛天尼,他其后继续带领里昂保持气势,加上队中球员小儒尼尼奧、迪亚拉、克里斯蒂亞諾·馬克斯·戈麥斯、迈克尔·埃辛、西德尼·戈武及门将格雷戈里·库佩表现突出,2003年至2005年横扫3届联赛冠军,创下连续四年夺得联赛锦标,平了1960年代末圣艾蒂安及1990年代初马赛的四连冠纪录。 -奥林匹克里昂获得了几连霸? 2005年前利物浦主教练热拉尔·霍利尔重返法国担任新任主教练,并加入葡萄牙中场蒂亚戈,和前巴伦西亚前锋约翰·卡鲁。 -奥林匹克里昂获得了几连霸? 他亦成功带领里昂赢得一届法甲冠军。 -奥林匹克里昂获得了几连霸? 2007年里昂成为首支上市的法国足球俱乐部,招股价21至24.4欧元,发行370万股,集资8400万欧元[1]。 -奥林匹克里昂获得了几连霸? 2007年4月21日,联赛次名图卢兹二比三不敌雷恩,令处于榜首的里昂领先次席多达17分距离,里昂因此提前六轮联赛庆祝俱乐部连续第六年夺得联赛冠军,亦是欧洲五大联赛(英格兰、德国、西班牙、意大利及法国)历史上首支联赛六连冠队伍[2]。 -奥林匹克里昂获得了几连霸? 在2007-08年赛季,里昂再一次成功卫冕联赛锦标,达成七连霸伟业。 -奥林匹克里昂获得了几连霸? 不过在2008-09赛季,里昂排名法甲第三位,联赛冠军被波尔多所获得。 -奥林匹克里昂获得了几连霸? 于2010年4月,里昂以两回合3比2的比分于欧洲冠军联赛击败波尔多跻身四强,此乃里昂首次晋级此项顶级杯赛的四强阶段。 -奥林匹克里昂获得了几连霸? 粗体字为新加盟球员 -奥林匹克里昂获得了几连霸? 以下球员名单更新于2014年8月27日,球员编号参照 官方网站,夏季转会窗为6月9日至8月31日 -火柴人刺杀行动怎么才能过关? 移动鼠标控制瞄准,点击鼠标左键进行射击。 -火柴人刺杀行动怎么才能过关? 游戏加载完成后点击STARTGAME-然后点击STARTMISSION即可开始游戏。 -火柴人刺杀行动怎么才能过关? 这里不仅仅考验的是你的枪法而且最重要的是你的智慧,喜欢火柴人类型游戏的玩家可以进来小试身手。 -火柴人刺杀行动怎么才能过关? 控制瞄准,刺杀游戏中的目标人物即可过关哦。 -你知道2月14日西方情人节是因何起源的吗? 情人节(英语:Valentine's Day),情人节的起源有多个版本,其中一个说法是在公元三世纪,古罗马暴君为了征召更多士兵,禁止婚礼,一名叫瓦伦丁Valentine的修士不理禁令,秘密替人主持婚礼,结果被收监,最后处死。 -你知道2月14日西方情人节是因何起源的吗? 而他死的那天就是2月14日,为纪念Valentine的勇敢精神,人们将每年的2月14日定为Valentine的纪念日。 -你知道2月14日西方情人节是因何起源的吗? 因此成了后来的“情人节”。 -你知道2月14日西方情人节是因何起源的吗? 另外,据记载,教宗在公元496年废除牧神节,把2月14日定为圣瓦伦丁日,即是St.Valentine's Day,后来成为是西方的节日之一。 -你知道2月14日西方情人节是因何起源的吗? 中文名称:情人节 -你知道2月14日西方情人节是因何起源的吗? 外文名称:Valentine‘s Day -你知道2月14日西方情人节是因何起源的吗? 别名:情人节圣瓦伦丁节 -你知道2月14日西方情人节是因何起源的吗? 公历日期:2月14日 -你知道2月14日西方情人节是因何起源的吗? 起源时间:公元270年2月14日 -你知道2月14日西方情人节是因何起源的吗? 起源事件:人们为了纪念为情人做主而牺牲的瓦伦丁神父,把他遇害的那一天(2月14日)称为情人节。 -你知道2月14日西方情人节是因何起源的吗? 地区:欧美地区 -你知道2月14日西方情人节是因何起源的吗? 宗教:基督教 -你知道2月14日西方情人节是因何起源的吗? 其他信息:西方的传统节日之一。 -你知道2月14日西方情人节是因何起源的吗? 男女在这一天互送礼物(如贺卡和玫瑰花等)用以表达爱意或友好。 -你知道2月14日西方情人节是因何起源的吗? 据台湾“今日台湾人讨厌情人节新闻网”报道,西洋情人节即将来到,求职网进行“办公室恋情及情人节调查”发现,在目前全台上班族的感情状态中,有情人相伴的比率约5成5,4成5的上班族单身;较出乎意料的结果是,情人节以近3成(28%)的占比,登上最讨厌的节日第一名,端午节以24.3%居第二;农历年则以18.2%居第三;第四名是圣诞节,占12.4%。 -你知道2月14日西方情人节是因何起源的吗? 调查指出,情人节对单身族来说,不仅成为压力,也显得更加孤单,在情人节当天,单身的上班族有将近4成(39.1%)的人在家看电视度过,近两成(18.7%)上网聊天,有1成4(14.8%)的人,不畏满街闪光,勇气十足出门看电影,近1成(9.7%)的上班族选择留在公司加班;另外有 5.4%的人,会在情人节当天积极参加联谊,希望能改变自己的感情状态。 -你知道2月14日西方情人节是因何起源的吗? 情侣们在情人节当天,庆祝方式以吃浪漫大餐最多(37.1%),不过有近3成(27%)的情侣,在情人节当天不会特别庆祝情人节,且这个比率远比第三名的旅游(占比11.5%)高出1倍以上。 -你知道2月14日西方情人节是因何起源的吗? 在情人节当天庆祝的开销上,可以说是小资男女当道,选择1000元(新台币,下同)以内的上班族最多占33.1%,情人节当天的花费上班族的平均花费是2473元,大手笔花费上万元以上庆祝情人节的,占比只有2.5%。 -你知道2月14日西方情人节是因何起源的吗? 情人节的起源众说纷纭,而为纪念罗马教士瓦伦丁是其中一个普遍的说法。 -你知道2月14日西方情人节是因何起源的吗? 据《世界图书百科全书》(World Book Encyclopedia)数据指出:“在公元200年时期,罗马皇帝克劳狄二世禁止年轻男子结婚。 -你知道2月14日西方情人节是因何起源的吗? 他认为未婚男子可以成为更优良的士兵。 -你知道2月14日西方情人节是因何起源的吗? 一位名叫瓦伦丁的教士违反了皇帝的命令,秘密为年轻男子主持婚礼,引起皇帝不满,结果被收监,据说瓦伦丁于公元269年2月14日被处决。 -你知道2月14日西方情人节是因何起源的吗? 另外,据《天主教百科全书》(The Catholic情人节 Encyclopedia)指出,公元496年,教宗圣基拉西乌斯一世在公元第五世纪末叶废除了牧神节,把2月14日定为圣瓦伦丁日。” -你知道2月14日西方情人节是因何起源的吗? 这个节日现今以“圣瓦伦丁节”——亦即情人节的姿态盛行起来。 -你知道2月14日西方情人节是因何起源的吗? 但是在第2次梵蒂冈大公会议后,1969年的典礼改革上,整理了一堆在史实上不确定是否真实存在的人物以后,圣瓦伦丁日就被废除了。 -你知道2月14日西方情人节是因何起源的吗? 现在天主教圣人历已经没有圣瓦伦丁日(St. Valentine's Day)。 -你知道2月14日西方情人节是因何起源的吗? 根据《布卢姆尔的警句与寓言辞典》记载:“圣瓦伦丁是个罗马教士,由于援助受逼害的基督徒而身陷险境,后来他归信基督教,最后被处死,卒于二月十四日”古代庆祝情人节的习俗与瓦伦丁拉上关系,可能是纯属巧合而已。 -你知道2月14日西方情人节是因何起源的吗? 事实上,这个节日很可能与古罗马的牧神节或雀鸟交配的季节有关。 -你知道2月14日西方情人节是因何起源的吗? 情人节的特色是情侣互相馈赠礼物。 -你知道2月14日西方情人节是因何起源的吗? 时至今日,人们则喜欢以情人卡向爱人表达情意。 -防卫大学每年招收多少学生? 防卫大学的前身是保安大学。 -防卫大学每年招收多少学生? 防卫大学是日本自卫队培养陆、海、空三军初级军官的学校,被称为日军"军官的摇篮"。 -防卫大学每年招收多少学生? 防卫大学是日军的重点院校。 -防卫大学每年招收多少学生? 日本历届内阁首相都要到防卫大学视察"训示",并亲自向学生颁发毕业证书。 -防卫大学每年招收多少学生? 日军四分之一的军官、三分之一的将官从这里走出。 -防卫大学每年招收多少学生? 防卫大学毕业生已成为日军军官的中坚力量。 -防卫大学每年招收多少学生? 防卫大学每年从地方招收18岁至21岁的应届高中毕业生和同等学历的青年。 -防卫大学每年招收多少学生? 每年招生名额为530名。 -防卫大学每年招收多少学生? 1950年 8月,日本组建警察预备队,1952年改为保安队。 -防卫大学每年招收多少学生? 为了充实保安队干部队伍,提高干部军政素质,1953年4月成立了保安大学,校址设在三浦半岛的久里滨。 -防卫大学每年招收多少学生? 1954年7月1日保安厅改为防卫厅。 -防卫大学每年招收多少学生? 在保安队基础上,日本建立了陆、海、空三军自卫队,保安大学遂改名为防卫大学,1955年迁至三浦半岛东南方的小原台。 -防卫大学每年招收多少学生? 学校直属防卫厅领导。 -防卫大学每年招收多少学生? 防卫大学的教育方针是:要求学生德智体全面发展,倡导学生崇尚知识和正义,培养学生具有指挥各种部队的能力。 -防卫大学每年招收多少学生? 防卫大学每年招生名额为530名,其中陆军300名,海军100名,空军130名。 -防卫大学每年招收多少学生? 根据自卫队向妇女敞开军官大门的决定,防卫大学1992年首次招收女学员35名。 -防卫大学每年招收多少学生? 考试分两次进行。 -防卫大学每年招收多少学生? 第一次,每年11月份进行学科考试;第二次,12月份进行口试和体检。 -防卫大学每年招收多少学生? 学校按陆、海、空三军分别设大学本科班和理工科研究生班。 -防卫大学每年招收多少学生? 本科班学制4年,又分为理工和人文社会学两大科。 -防卫大学每年招收多少学生? 学员入学后先分科,530人中有460人专攻理科,70人专攻文科。 -防卫大学每年招收多少学生? 第1学年按专科学习一般大学课程和一般军事知识。 -防卫大学每年招收多少学生? 第2学年以后在军事上开始区分军种,学员分别学习陆、海、空军的专门课程。 -防卫大学每年招收多少学生? 文化课和军事课的比例是6:l。 -防卫大学每年招收多少学生? 文化课程有人文、社会、自然、外语、电气工程、机械工程、土木建筑工程、应用化学、应用物理、航空、航海等。 -防卫大学每年招收多少学生? 军事训练课每学年6周,按一年四季有比例地安排教学内容,对学生进行军事技术和体能训练。 -防卫大学每年招收多少学生? 理工科研究生班,每年招生1期,学制2年,每期招收90人,设电子工程、航空工程、兵器制造等7个专业,课程按一般大学硕士课程标准设置。 -防卫大学每年招收多少学生? 防卫大学的课程和训练都十分紧张。 -防卫大学每年招收多少学生? 近年来,为了增强防卫大学的吸引力,克服考生逐年减少的倾向广泛征集优秀人才,学校进行了一些改革,改变入学考试办法,各高中校长以内部呈报的形式向防卫大学推荐品学兼优的学生;减少学生入学考试科目,放宽对报考防卫大学的学生的视力要求;降低学分数(大约降低30学分);改善学生宿舍条件。 -防卫大学每年招收多少学生? 防卫大学的学生生活紧张而愉快。 -《威鲁贝鲁的物语》官网是什么? 10年前大战后,威鲁贝鲁国一致辛勤的保护着得来不易的和平,但是与邻国圣卡特拉斯国的关系却不断的紧张,战争即将爆发。 -《威鲁贝鲁的物语》官网是什么? 为了避免战争,威鲁贝鲁国王海特鲁王决定将自己最大的女儿公主莉塔嫁给圣卡特拉斯国的王子格鲁尼亚。 -《威鲁贝鲁的物语》官网是什么? 但是莉塔却刺伤了政治婚姻的对象格鲁尼亚王子逃了出去,这事激怒了圣卡特拉斯国的国王兰帕诺夫王,并下令14天之内抓到王女并执行公开处刑来谢罪,不然两国就要开战。 -《威鲁贝鲁的物语》官网是什么? 《威鲁贝鲁的物语~Sisters of Wellber~》 -《威鲁贝鲁的物语》官网是什么? (Sisters of Wellber) -《威鲁贝鲁的物语》官网是什么? 日文名 ウエルベールの物语 -《威鲁贝鲁的物语》官网是什么? 官方网站 http://www.avexmovie.jp/lineup/wellber/ -《威鲁贝鲁的物语》官网是什么? 为了回避发生战争这个最坏的结果,莉塔下定决心去中立国古利达姆。 diff --git a/examples/text_graph/erniesage/example_data/train_data.txt b/examples/text_graph/erniesage/example_data/train_data.txt deleted file mode 100644 index e9aead6c89fa..000000000000 --- a/examples/text_graph/erniesage/example_data/train_data.txt +++ /dev/null @@ -1,1000 +0,0 @@ -黑缘粗角肖叶甲触角有多大? 体长卵形,棕红色;鞘翅棕黄或淡棕色,外缘和中缝黑色或黑褐色;触角基部3、4节棕黄,余节棕色。 -黑缘粗角肖叶甲触角有多大? 头部刻点粗大,分布不均匀,头顶刻点十分稀疏;触角基部的内侧有一个三角形光瘤,唇基前缘呈半圆形凹切。 -黑缘粗角肖叶甲触角有多大? 触角近于体长之半,第1节粗大,棒状,第2节短,椭圆形,3、4两节细长,稍短于第5节,第5节基细端粗,末端6节明显粗大。 -黑缘粗角肖叶甲触角有多大? 前胸背板横宽,宽约为长的两倍,侧缘敞出较宽,圆形,敞边与盘区之间有一条细纵沟;盘区刻点相当密,前半部刻点较大于后半部。 -黑缘粗角肖叶甲触角有多大? 小盾片舌形,光亮,末端圆钝。 -黑缘粗角肖叶甲触角有多大? 鞘翅刻点粗大,不规则排列,肩部之后的刻点更为粗大,具皱褶,近中缝的刻点较小,略呈纵行排列。 -黑缘粗角肖叶甲触角有多大? 前胸前侧片前缘直;前胸后侧片具粗大刻点。 -黑缘粗角肖叶甲触角有多大? 足粗壮;胫节具纵脊,外端角向外延伸,呈弯角状;爪具附齿。 -暮光闪闪的姐姐是谁? 暮光闪闪是一匹雌性独角兽,后来在神秘魔法的影响下变成了空角兽(公主),她是《我的小马驹:友情是魔法》(英文名:My Little Pony:Friendship is Magic)中的主角之一。 -暮光闪闪的姐姐是谁? 她是银甲闪闪(Shining Armor)的妹妹,同时也是韵律公主(Princess Cadance)的小姑子。 -暮光闪闪的姐姐是谁? 在该系列中,她与最好的朋友与助手斯派克(Spike)一起生活在小马镇(Ponyville)的金橡图书馆(Golden Oak Library),研究友谊的魔法。 -暮光闪闪的姐姐是谁? 在暮光闪闪成为天角兽之前(即S3E13前),常常给塞拉丝蒂娅公主(Princess Celestia)关于友谊的报告。[1] -暮光闪闪的姐姐是谁? 《我的小马驹:友谊是魔法》(英文名称:My Little Pony:Friendship is Magic)(简称MLP) -暮光闪闪的姐姐是谁? 动画讲述了一只名叫做暮光闪闪(Twilight Sparkle)的独角兽(在SE3E13 -暮光闪闪的姐姐是谁? My Little Pony:Friendship is Magic[2] -暮光闪闪的姐姐是谁? 后成为了天角兽),执行她的导师塞拉斯蒂娅公主(PrincessCelestia)的任务,在小马镇(Ponyville)学习关于友谊的知识。 -暮光闪闪的姐姐是谁? 她与另外五只小马,苹果杰克(Applejack)、瑞瑞(Rarity)、云宝黛西(Rainbow Dash)、小蝶(Fluttershy)与萍琪派(Pinkie Pie),成为了最要好的朋友。 -暮光闪闪的姐姐是谁? 每匹小马都分别代表了协律精华的6个元素:诚实,慷慨,忠诚,善良,欢笑,魔法,各自扮演着属于自己的重要角色。 -暮光闪闪的姐姐是谁? 此后,暮光闪闪(Twilight Sparkle)便与她认识的新朋友们开始了有趣的日常生活。 -暮光闪闪的姐姐是谁? 在动画中,随时可见她们在小马镇(Ponyville)的种种冒险、奇遇、日常等等。 -暮光闪闪的姐姐是谁? 同时,也在她们之间的互动和冲突中,寻找着最适合最合理的完美解决方案。 -暮光闪闪的姐姐是谁? “尽管小马国并不太平,六位主角之间也常常有这样那样的问题,但是他们之间的真情对待,使得这个童话世界已经成为不少人心中理想的世外桃源。” -暮光闪闪的姐姐是谁? 暮光闪闪在剧情刚开始的时候生活在中心城(Canterlot),后来在夏日 -暮光闪闪的姐姐是谁? 暮光闪闪与斯派克(Spike) -暮光闪闪的姐姐是谁? 庆典的时候被塞拉丝蒂娅公主派遣到小马镇执行检查夏日庆典的准备工作的任务。 -暮光闪闪的姐姐是谁? 在小马镇交到了朋友(即其余5个主角),并和她们一起使用协律精华(Elements of harmony)击败了梦魇之月。 -暮光闪闪的姐姐是谁? 并在塞拉丝蒂亚公主的许可下,留在小马镇继续研究友谊的魔法。 -暮光闪闪的姐姐是谁? 暮光闪闪的知识基本来自于书本,并且她相当不相信书本以外的“迷信”,因为这样她在S1E15里吃足了苦头。 -暮光闪闪的姐姐是谁? 在这之后,她也开始慢慢学会相信一些书本以外的东西。 -暮光闪闪的姐姐是谁? 暮光闪闪热爱学习,并且学习成绩相当好(从她可以立刻算出 -暮光闪闪的姐姐是谁? 的结果可以看 -暮光闪闪的姐姐是谁? 暮光闪闪的原型 -暮光闪闪的姐姐是谁? 出)。 -暮光闪闪的姐姐是谁? 相当敬爱自己的老师塞拉丝蒂亚公主甚至到了精神失常的地步。 -暮光闪闪的姐姐是谁? 在第二季中,曾因为无法交出关于友谊的报告而做出了疯狂的行为,后来被塞拉丝蒂亚公主制止,在这之后,暮光闪闪得到了塞拉丝蒂亚公主“不用定期交友谊报告”的许可。 -暮光闪闪的姐姐是谁? 于是暮光闪闪在后面的剧情中的主角地位越来越得不到明显的体现。 -暮光闪闪的姐姐是谁? 在SE3E13中,因为破解了白胡子星璇留下的神秘魔法而被加冕成为了天角兽(公主),被尊称为“闪闪公主”。 -暮光闪闪的姐姐是谁? 当小星座熊在小马镇引起恐慌的时候,暮光闪闪运用了自身强大的魔法将水库举起后装满牛奶,用牛奶将小星座熊安抚后,连着巨型奶瓶和小星座熊一起送回了小星座熊居住的山洞。 -我想知道红谷十二庭有哪些金融机构? 红谷十二庭是由汪氏集团旗下子公司江西尤金房地产开发有限公司携手城发投资共同开发的精品社区,项目占地面积约380亩,总建筑面积约41万平方米。 -我想知道红谷十二庭有哪些金融机构? 项目以建设人文型、生态型居住环境为规划目标;创造一个布局合理、功能齐全、交通便捷、绿意盎然、生活方便,有文化内涵的居住区。 -我想知道红谷十二庭有哪些金融机构? 金融机构:工商银行、建设银行、农业银行、中国银行红谷滩支行、商业银行红谷滩支行等 -我想知道红谷十二庭有哪些金融机构? 周边公园:沿乌砂河50米宽绿化带、乌砂河水岸公园、秋水广场、赣江市民公园 -我想知道红谷十二庭有哪些金融机构? 周边医院:新建县人民医院、开心人药店、中寰医院 -我想知道红谷十二庭有哪些金融机构? 周边学校:育新小学红谷滩校区、南师附小红谷滩校区、实验小学红谷滩校区中学:南昌二中红谷滩校区、南昌五中、新建二中、竞秀贵族学校 -我想知道红谷十二庭有哪些金融机构? 周边公共交通:112、204、211、219、222、227、238、501等20多辆公交车在本项目社区门前停靠 -我想知道红谷十二庭有哪些金融机构? 红谷十二庭处在南昌一江两城中的西城中心,位属红谷滩CBD文化公园中心——马兰圩中心组团,红谷滩中心区、红角洲、新建县三区交汇处,南临南期友好路、东接红谷滩中心区、西靠乌砂河水岸公园(50米宽,1000米长)。 -我想知道红谷十二庭有哪些金融机构? 交通便捷,景观资源丰富,生活配套设施齐全,出则繁华,入则幽静,是现代人居的理想地段。 -我想知道红谷十二庭有哪些金融机构? 红谷十二庭户型图 -苏琳最开始进入智通实业是担任什么职位? 现任广东智通人才连锁股份有限公司总裁,清华大学高级工商管理硕士。 -苏琳最开始进入智通实业是担任什么职位? 1994年,加入智通实业,从总经理秘书做起。 -苏琳最开始进入智通实业是担任什么职位? 1995年,智通实业决定进入人才服务行业,被启用去负责新公司的筹建及运营工作,在苏琳的努力下,智通人才智力开发有限公司成立。 -苏琳最开始进入智通实业是担任什么职位? 2003年,面对同城对手的激烈竞争,苏琳冷静对待,领导智通先后接管、并购了同城的腾龙、安达盛人才市场,,“品牌运作,连锁经营,差异制胜”成为苏琳屡屡制胜的法宝。 -苏琳最开始进入智通实业是担任什么职位? 2006年,苏琳先是将智通人才升级为“东莞市智通人才连锁有限公司”,一举成为广东省人才市场目前惟一的连锁机构,随后在东莞同时开设长安、松山湖、清溪等镇区分部,至此智通在东莞共有6个分部。 -苏琳最开始进入智通实业是担任什么职位? 一番大刀阔斧完成东莞布局后,苏琳确定下一个更为高远的目标——进军珠三角,向全国发展连锁机构。 -苏琳最开始进入智通实业是担任什么职位? 到2011年末,苏琳领导的智通人才已在珠三角的东莞、佛山、江门、中山等地,长三角的南京、宁波、合肥等地,中西部的南昌、长沙、武汉、重庆、西安等地设立了20多家连锁经营网点。 -苏琳最开始进入智通实业是担任什么职位? 除了财务副总裁之外,苏琳是智通人才核心管理高层当中唯一的女性,不管是要约采访的记者还是刚刚加入智通的员工,见到苏琳的第一面,都会有一种惊艳的感觉,“一位女企业家居然非常美丽和时尚?!” -苏琳最开始进入智通实业是担任什么职位? 智通管理高层的另外6位男性成员,有一次同时接受一家知名媒体采访时,共同表达了对自己老板的“爱慕”之情,苏琳听后莞尔一笑,指着在座的这几位高层说道“其实,我更爱他们!” -苏琳最开始进入智通实业是担任什么职位? 这种具有独特领导魅力的表述让这位记者唏嘘不已,同时由这样的一个细节让他感受到了智通管理团队的协作力量。 -谁知道黄沙中心小学的邮政编码是多少? 学校于1954年始建于棕树湾村,当时借用一间民房做教室,取名为“黄沙小学”,只有教师1人,学生8人。 -谁知道黄沙中心小学的邮政编码是多少? 1958年在大跃进精神的指导下,实行大集体,全乡集中办学,发展到12个班,300多学生,20名教职工。 -谁知道黄沙中心小学的邮政编码是多少? 1959年解散。 -谁知道黄沙中心小学的邮政编码是多少? 1959年下半年,在上级的扶持下,建了6间木房,搬到1960年学校所在地,有6名教师,3个班,60名学生。 -谁知道黄沙中心小学的邮政编码是多少? 1968年,开始招收一个初中班,“黄沙小学”改名为 “附小”。 -谁知道黄沙中心小学的邮政编码是多少? 当时已发展到5个班,8名教师,110多名学生。 -谁知道黄沙中心小学的邮政编码是多少? 增建土木结构教室两间。 -谁知道黄沙中心小学的邮政编码是多少? 1986年,初中、小学分开办学。 -谁知道黄沙中心小学的邮政编码是多少? 增建部分教师宿舍和教室,办学条件稍有改善,学校初具规模。 -谁知道黄沙中心小学的邮政编码是多少? 1996年,我校在市、县领导及希望工程主管部门的关怀下,决定改为“黄沙希望小学”并拨款32万元,新建一栋4层,12间教室的教学楼,教学条件大有改善。 -谁知道黄沙中心小学的邮政编码是多少? 当时发展到10个班,学生300多人,教职工19人,小学高级教师3人,一级教师7人,二级教师9人。 -谁知道黄沙中心小学的邮政编码是多少? 2003年下半年由于农村教育体制改革,撤销教育组,更名为“黄沙中心小学”。 -谁知道黄沙中心小学的邮政编码是多少? 学校现有在校生177人(含学前42人),设有学前至六年级共7个教学班。 -谁知道黄沙中心小学的邮政编码是多少? 有教师19人,其中大专以上学历11人,中师6人;小学高级教师14人,一级教师5人。 -谁知道黄沙中心小学的邮政编码是多少? 学校校园占地面积2050平方米,生均达15.29平方米,校舍建筑面积1645平方米,生均12.27平方米;设有教师办公室、自然实验、电教室(合二为一)、微机室、图书阅览室(合二为一)、体育室、广播室、少先队活动室。 -谁知道黄沙中心小学的邮政编码是多少? 广西壮族自治区桂林市临桂县黄沙瑶族乡黄沙街 邮编:541113[1] -伊藤实华的职业是什么? 伊藤实华(1984年3月25日-)是日本的女性声优。 -伊藤实华的职业是什么? THREE TREE所属,东京都出身,身长149cm,体重39kg,血型AB型。 -伊藤实华的职业是什么? ポルノグラフィティのLION(森男) -伊藤实华的职业是什么? 2000年 -伊藤实华的职业是什么? 犬夜叉(枫(少女时代)) -伊藤实华的职业是什么? 幻影死神(西亚梨沙) -伊藤实华的职业是什么? 2001年 -伊藤实华的职业是什么? NOIR(ロザリー) -伊藤实华的职业是什么? 2002年 -伊藤实华的职业是什么? 水瓶战记(柠檬) -伊藤实华的职业是什么? 返乡战士(エイファ) -伊藤实华的职业是什么? 2003年 -伊藤实华的职业是什么? 奇诺之旅(女子A(悲しい国)) -伊藤实华的职业是什么? 2004年 -伊藤实华的职业是什么? 爱你宝贝(坂下ミキ) -伊藤实华的职业是什么? Get Ride! アムドライバー(イヴァン・ニルギース幼少期) -伊藤实华的职业是什么? スクールランブル(花井春树(幼少时代)) -伊藤实华的职业是什么? 2005年 -伊藤实华的职业是什么? 光速蒙面侠21(虎吉) -伊藤实华的职业是什么? 搞笑漫画日和(男子トイレの精、パン美先生) -伊藤实华的职业是什么? 银牙伝说WEED(テル) -伊藤实华的职业是什么? 魔女的考验(真部カレン、守山太郎) -伊藤实华的职业是什么? BUZZER BEATER(レニー) -伊藤实华的职业是什么? 虫师(“眼福眼祸”さき、“草を踏む音”沢(幼少时代)) -伊藤实华的职业是什么? 2006年 -伊藤实华的职业是什么? 魔女之刃(娜梅) -伊藤实华的职业是什么? 反斗小王子(远藤レイラ) -伊藤实华的职业是什么? 搞笑漫画日和2(パン美先生、フグ子、ダンサー、ヤマトの妹、女性) -伊藤实华的职业是什么? 人造昆虫カブトボーグ V×V(ベネチアンの弟、东ルリ、园儿A) -伊藤实华的职业是什么? 2007年 -爆胎监测与安全控制系统英文是什么? 爆胎监测与安全控制系统(Blow-out Monitoring and Brake System),是吉利全球首创,并拥有自主知识产权及专利的一项安全技术。 -爆胎监测与安全控制系统英文是什么? 这项技术主要是出于防止高速爆胎所导致的车辆失控而设计。 -爆胎监测与安全控制系统英文是什么? BMBS爆胎监测与安全控制系统技术于2004年1月28日正式获得中国发明专利授权。 -爆胎监测与安全控制系统英文是什么? 2008年第一代BMBS系统正式与世人见面,BMBS汇集国内外汽车力学、控制学、人体生理学、电子信息学等方面的专家和工程技术人员经过一百余辆试验车累计行程超过五百万公里的可靠性验证,以确保产品的可靠性。 -爆胎监测与安全控制系统英文是什么? BMBS技术方案的核心即是采用智能化自动控制系统,弥补驾驶员生理局限,在爆胎后反应时间为0.5秒,替代驾驶员实施行车制动,保障行车安全。 -爆胎监测与安全控制系统英文是什么? BMBS系统由控制系统和显示系统两大部分组成,控制系统由BMBS开关、BMBS主机、BMBS分机、BMBS真空助力器四部分组成;显示系统由GPS显示、仪表指示灯、语言提示、制动双闪灯组成。 -爆胎监测与安全控制系统英文是什么? 当轮胎气压高于或低于限值时,控制器声光提示胎压异常。 -爆胎监测与安全控制系统英文是什么? 轮胎温度过高时,控制器发出信号提示轮胎温度过高。 -爆胎监测与安全控制系统英文是什么? 发射器电量不足时,控制器显示低电压报警。 -爆胎监测与安全控制系统英文是什么? 发射器受到干扰长期不发射信号时,控制器显示无信号报警。 -爆胎监测与安全控制系统英文是什么? 当汽车电门钥匙接通时,BMBS首先进入自检程序,检测系统各部分功能是否正常,如不正常,BMBS报警灯常亮。 -走读干部现象在哪里比较多? 走读干部一般是指县乡两级干部家住县城以上的城市,本人在县城或者乡镇工作,要么晚出早归,要么周一去单位上班、周五回家过周末。 -走读干部现象在哪里比较多? 对于这种现象,社会上的议论多是批评性的,认为这些干部脱离群众、作风漂浮、官僚主义,造成行政成本增加和腐败。 -走读干部现象在哪里比较多? 截至2014年10月,共有6484名“走读干部”在专项整治中被查处。 -走读干部现象在哪里比较多? 这是中央首次大规模集中处理这一长期遭诟病的干部作风问题。 -走读干部现象在哪里比较多? 干部“走读”问题主要在乡镇地区比较突出,城市地区则较少。 -走读干部现象在哪里比较多? 从历史成因和各地反映的情况来看,产生“走读”现象的主要原因大致有四种: -走读干部现象在哪里比较多? 现今绝大多数乡村都有通往乡镇和县城的石子公路甚至柏油公路,这无疑为农村干部的出行创造了便利条件,为“干部像候鸟,频往家里跑”创造了客观条件。 -走读干部现象在哪里比较多? 选调生、公务员队伍大多是学历较高的大学毕业生,曾在高校所在地的城市生活,不少人向往城市生活,他们不安心长期扎根基层,而是将基层当作跳板,因此他们往往成为“走读”的主力军。 -走读干部现象在哪里比较多? 公仆意识、服务意识淡化,是“走读”现象滋生的主观原因。 -走读干部现象在哪里比较多? 有些党员干部感到自己长期在基层工作,该为自己和家庭想想了。 -走读干部现象在哪里比较多? 于是,不深入群众认真调查研究、认真听取群众意见、认真解决群众的实际困难,也就不难理解了。 -走读干部现象在哪里比较多? 县级党政组织对乡镇领导干部管理的弱化和为基层服务不到位,导致“走读”问题得不到应有的制度约束,是“走读”问题滋长的组织原因。[2] -走读干部现象在哪里比较多? 近些年来,我国一些地方的“干部走读”现象较为普遍,社会上对此议走读干部论颇多。 -走读干部现象在哪里比较多? 所谓“干部走读”,一般是指县乡两级干部家住县城以上的城市,本人在县城或者乡镇工作,要么早出晚归,要么周一去单位上班、周五回家过周末。 -走读干部现象在哪里比较多? 对于这种现象,社会上的议论多是批评性的,认为这些干部脱离群众、作风漂浮、官僚主义,造成行政成本增加和腐败。 -走读干部现象在哪里比较多? 干部走读之所以成为“千夫所指”,是因为这种行为增加了行政成本。 -走读干部现象在哪里比较多? 从根子上说,干部走读是城乡发展不平衡的产物,“人往高处走,水往低处流”,有了更加舒适的生活环境,不管是为了自己生活条件改善也好,还是因为子女教育也好,农村人口向城镇转移,这是必然结果。 -走读干部现象在哪里比较多? “干部走读”的另一个重要原因,是干部人事制度改革。 -走读干部现象在哪里比较多? 目前公务员队伍“凡进必考”,考上公务员的大多是学历较高的大学毕业生,这些大学毕业生来自各个全国各地,一部分在本地结婚生子,沉淀下来;一部分把公务员作为跳板,到基层后或考研,或再参加省考、国考,或想办法调回原籍。 -走读干部现象在哪里比较多? 再加上一些下派干部、异地交流任职干部,构成了看似庞大的“走读”队伍。 -走读干部现象在哪里比较多? 那么,“干部走读”有哪些弊端呢? -走读干部现象在哪里比较多? 一是这些干部人在基层,心在城市,缺乏长期作战的思想,工作不安心。 -走读干部现象在哪里比较多? 周一来上班,周五回家转,对基层工作缺乏热情和感情;二是长期在省市直机关工作,对基层工作不熟悉不了解,工作不热心;三是长期走读,基层干群有工作难汇报,有困难难解决,群众不开心;四是干部来回走读,公车私驾,私费公报,把大量的经济负担转嫁给基层;五是对这些走读干部,基层管不了,上级监督难,节假日期间到哪里去、做什么事,基本处于失控和真空状态,各级组织和基层干群不放心。 -走读干部现象在哪里比较多? 特别需要引起警觉的是,由于少数走读干部有临时思想,满足于“当维持会长”,得过且过混日子,热衷于做一些急功近利、砸锅求铁的短期行为和政绩工程,不愿做打基础、管长远的实事好事,甚至怠政、疏政和懒于理政,影响了党和政府各项方针政策措施的落实,导致基层无政府主义、自由主义抬头,削弱了党和政府的领导,等到矛盾激化甚至不可收拾的时候,处理已是来之不及。 -走读干部现象在哪里比较多? 权利要与义务相等,不能只有义务而没有权利,或是只有权利没有义务。 -走读干部现象在哪里比较多? 如何真正彻底解决乡镇干部“走读”的现象呢? -走读干部现象在哪里比较多? 那就必须让乡镇基层干部义务与权利相等。 -走读干部现象在哪里比较多? 如果不能解决基层干部待遇等问题,即使干部住村,工作上也不会有什么进展的。 -走读干部现象在哪里比较多? 所以,在政治上关心,在生活上照顾,在待遇上提高。 -走读干部现象在哪里比较多? 如,提高基层干部的工资待遇,增加通讯、交通补助;帮助解决子女入学及老人赡养问题;提拔干部优先考虑基层干部;干部退休时的待遇至少不低于机关干部等等。 -化州市良光镇东岸小学学风是什么? 学校全体教职工爱岗敬业,团结拼搏,勇于开拓,大胆创新,进行教育教学改革,努力开辟第二课堂的教学路子,并开通了网络校校通的交流合作方式。 -化州市良光镇东岸小学学风是什么? 现学校教师正在为创建安全文明校园而努力。 -化州市良光镇东岸小学学风是什么? 东岸小学位置偏僻,地处贫穷落后,是良光镇最偏远的学校,学校,下辖分教点——东心埇小学,[1]?。 -化州市良光镇东岸小学学风是什么? 学校2011年有教师22人,学生231人。 -化州市良光镇东岸小学学风是什么? 小学高级教师8人,小学一级教师10人,未定级教师4人,大专学历的教师6人,其余的都具有中师学历。 -化州市良光镇东岸小学学风是什么? 全校共设12个班,学校课程按标准开设。 -化州市良光镇东岸小学学风是什么? 东岸小学原来是一所破旧不堪,教学质量非常差的薄弱学校。 -化州市良光镇东岸小学学风是什么? 近几年来,在各级政府、教育部门及社会各界热心人士鼎力支持下,学校领导大胆改革创新,致力提高教学质量和教师水平,并加大经费投入,大大改善了办学条件,使学校由差变好,实现了大跨越。 -化州市良光镇东岸小学学风是什么? 学校建设性方面。 -化州市良光镇东岸小学学风是什么? 东岸小学属于革命老区学校,始建于1980年,从东心埇村祠堂搬到这个校址,1990年建造一幢建筑面积为800平方米的南面教学楼, 1998年老促会支持从北面建造一幢1800平方米的教学大楼。 -化州市良光镇东岸小学学风是什么? 学校在管理方面表现方面颇具特色,实现了各项制度的日常化和规范化。 -化州市良光镇东岸小学学风是什么? 学校领导有较强的事业心和责任感,讲求民主与合作,勤政廉政,依法治校,树立了服务意识。 -化州市良光镇东岸小学学风是什么? 学校一贯实施“德育为先,以人为本”的教育方针,制定了“团结,律已,拼搏,创新”的校训。 -化州市良光镇东岸小学学风是什么? 教育风为“爱岗敬业,乐于奉献”,学风为“乐学,勤学,巧学,会学”。 -化州市良光镇东岸小学学风是什么? 校内营造了尊师重教的氛围,形成了良好的校风和学风。 -化州市良光镇东岸小学学风是什么? 教师们爱岗敬业,师德高尚,治学严谨,教研教改气氛浓厚,获得喜人的教研成果。 -化州市良光镇东岸小学学风是什么? 近几年来,教师撰写的教育教学论文共10篇获得县市级以上奖励,获了镇级以上奖励的有100人次。 -化州市良光镇东岸小学学风是什么? 学校德育工作成绩显著,多年被评为“安全事故为零”的学校,良光镇先进学校。 -化州市良光镇东岸小学学风是什么? 特别是教学质量大大提高了。 -化州市良光镇东岸小学学风是什么? 这些成绩得到了上级及群众的充分肯定。 -化州市良光镇东岸小学学风是什么? 1.学校环境欠美观有序,学校大门口及校道有待改造。 -化州市良光镇东岸小学学风是什么? 2.学校管理制度有待改进,部分教师业务水平有待提高。 -化州市良光镇东岸小学学风是什么? 3.教师宿舍、教室及学生宿舍欠缺。 -化州市良光镇东岸小学学风是什么? 4.运动场不够规范,各类体育器材及设施需要增加。 -化州市良光镇东岸小学学风是什么? 5.学生活动空间少,见识面窄,视野不够开阔。 -化州市良光镇东岸小学学风是什么? 1.努力营造和谐的教育教学新气氛。 -化州市良光镇东岸小学学风是什么? 建立科学的管理制度,坚持“与时俱进,以人为本”,真正实现领导对教师,教师对学生之间进行“德治与情治”;学校的人文环境做到“文明,和谐,清新”;德育环境做到“自尊,律已,律人”;心理环境做到“安全,谦虚,奋发”;交际环境做到“团结合作,真诚助人”;景物环境做到“宜人,有序。” -化州市良光镇东岸小学学风是什么? 营造学校与育人的新特色。 -我很好奇发射管的输出功率怎么样? 产生或放大高频功率的静电控制电子管,有时也称振荡管。 -我很好奇发射管的输出功率怎么样? 用于音频或开关电路中的发射管称调制管。 -我很好奇发射管的输出功率怎么样? 发射管是无线电广播、通信、电视发射设备和工业高频设备中的主要电子器件。 -我很好奇发射管的输出功率怎么样? 输出功率和工作频率是发射管的基本技术指标。 -我很好奇发射管的输出功率怎么样? 广播、通信和工业设备的发射管,工作频率一般在30兆赫以下,输出功率在1919年为2千瓦以下,1930年达300千瓦,70年代初已超过1000千瓦,效率高达80%以上。 -我很好奇发射管的输出功率怎么样? 发射管工作频率提高时,输出功率和效率都会降低,因此1936年首次实用的脉冲雷达工作频率仅28兆赫,80年代则已达 400兆赫以上。 -我很好奇发射管的输出功率怎么样? 40年代电视发射管的工作频率为数十兆赫,而80年代初,优良的电视发射管可在1000兆赫下工作,输出功率达20千瓦,效率为40%。 -我很好奇发射管的输出功率怎么样? 平面电极结构的小功率发射三极管可在更高的频率下工作。 -我很好奇发射管的输出功率怎么样? 发射管多采用同心圆筒电极结构。 -我很好奇发射管的输出功率怎么样? 阴极在最内层,向外依次为各个栅极和阳极。 -我很好奇发射管的输出功率怎么样? 图中,自左至右为阴极、第一栅、第二栅、栅极阴极组装件和装入阳极后的整个管子。 -我很好奇发射管的输出功率怎么样? 发射管 -我很好奇发射管的输出功率怎么样? 中小功率发射管多采用间热式氧化物阴极。 -我很好奇发射管的输出功率怎么样? 大功率发射管一般采用碳化钍钨丝阴极,有螺旋、直条或网笼等结构形式。 -我很好奇发射管的输出功率怎么样? 图为网笼式阴极。 -我很好奇发射管的输出功率怎么样? 栅极多用钼丝或钨丝绕制,或用钼片经电加工等方法制造。 -我很好奇发射管的输出功率怎么样? 栅极表面经镀金(或铂)或涂敷锆粉等处理,以降低栅极电子发射,使发射管稳定工作。 -我很好奇发射管的输出功率怎么样? 用气相沉积方法制造的石墨栅极,具有良好的性能。 -我很好奇发射管的输出功率怎么样? 发射管阳极直流输入功率转化为高频输出功率的部分约为75%,其余25%成为阳极热损耗,因此对发射管的阳极必须进行冷却。 -我很好奇发射管的输出功率怎么样? 中小功率发射管的阳极采取自然冷却方式,用镍、钼或石墨等材料制造,装在管壳之内,工作温度可达 600℃。 -我很好奇发射管的输出功率怎么样? 大功率发射管的阳极都用铜制成,并作为真空密封管壳的一部分,采用各种强制冷却方式。 -我很好奇发射管的输出功率怎么样? 各种冷却方式下每平方厘米阳极内表面的散热能力为:水冷100瓦;风冷30瓦;蒸发冷却250瓦;超蒸发冷却1000瓦以上,80年代已制成阳极损耗功率为1250千瓦的超蒸发冷却发射管。 -我很好奇发射管的输出功率怎么样? 发射管也常以冷却方式命名,如风冷发射管、水冷发射管和蒸发冷却发射管。 -我很好奇发射管的输出功率怎么样? 发射管管壳用玻璃或陶瓷制造。 -我很好奇发射管的输出功率怎么样? 小功率发射管内使用含钡的吸气剂;大功率发射管则采用锆、钛、钽等吸气材料,管内压强约为10帕量级。 -我很好奇发射管的输出功率怎么样? 发射管寿命取决于阴极发射电子的能力。 -我很好奇发射管的输出功率怎么样? 大功率发射管寿命最高记录可达8万小时。 -我很好奇发射管的输出功率怎么样? 发射四极管的放大作用和输出输入电路间的隔离效果优于三极管,应用最广。 -我很好奇发射管的输出功率怎么样? 工业高频振荡器普遍采用三极管。 -我很好奇发射管的输出功率怎么样? 五极管多用在小功率范围中。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 鲁能领秀城中央公园位于鲁能领秀城景观中轴之上,总占地161.55亩,总建筑面积约40万平米,容积率为2.70,由22栋小高层、高层组成;其绿地率高达35.2%,环境优美,产品更加注重品质化、人性化和自然生态化,是鲁能领秀城的生态人居典范。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 中央公园[1] 学区准现房,坐享鲁能领秀城成熟配套,成熟生活一步到位。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 经典板式小高层,103㎡2+1房仅22席,稀市推出,错过再无;92㎡经典两房、137㎡舒适三房压轴登场! -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 物业公司: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 济南凯瑞物业公司;深圳长城物业公司;北京盛世物业有限公司 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 绿化率: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 42% -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 容积率: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 2.70 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 暖气: -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 集中供暖 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 楼座展示:中央公园由22栋小高层、高层组成,3、16、17号楼分别是11层小高层,18层和28层的高层。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 4号楼是23层,2梯3户。 -鲁能领秀城中央公园有23层,2梯3户的是几号楼? 项目位置: -鬼青蛙在哪里有收录详情? 鬼青蛙这张卡可以从手卡把这张卡以外的1只水属性怪兽丢弃,从手卡特殊召唤。 -鬼青蛙在哪里有收录详情? 这张卡召唤·反转召唤·特殊召唤成功时,可以从自己的卡组·场上选1只水族·水属性·2星以下的怪兽送去墓地。 -鬼青蛙在哪里有收录详情? 此外,1回合1次,可以通过让自己场上1只怪兽回到手卡,这个回合通常召唤外加上只有1次,自己可以把「鬼青蛙」以外的1只名字带有「青蛙」的怪兽召唤。[1] -鬼青蛙在哪里有收录详情? 游戏王卡包收录详情 -鬼青蛙在哪里有收录详情? [09/09/18] -西湖区有多大? 西湖区是江西省南昌市市辖区。 -西湖区有多大? 为南昌市中心城区之一,有着2200多年历史,是一个物华天宝、人杰地灵的古老城区。 -西湖区有多大? 2004年南昌市老城区区划调整后,西湖区东起京九铁路线与青山湖区毗邻,南以洪城路东段、抚河路南段、象湖以及南隔堤为界与青云谱区、南昌县接壤,西凭赣江中心线与红谷滩新区交界,北沿中山路、北京西路与东湖区相连,所辖面积34.5平方公里,常住人口43万,管辖1个镇、10个街道办事处,设12个行政村、100个社区。 -西湖区有多大? (图)西湖区[南昌市] -西湖区有多大? 西湖原为汉代豫章群古太湖的一部分,唐贞元15年(公元799年)洪恩桥的架设将东太湖分隔成东西两部分,洪恩桥以西谓之西湖,西湖区由此而得名。 -西湖区有多大? 西湖区在1926年南昌设市后分别称第四、五部分,六、七部分。 -西湖区有多大? 1949年解放初期分别称第三、四区。 -西湖区有多大? 1955年分别称抚河区、西湖区。 -西湖区有多大? 1980年两区合并称西湖区。[1] -西湖区有多大? 辖:西湖街道、丁公路街道、广外街道、系马桩街道、绳金塔街道、朝阳洲街道、禾草街街道、十字街街道、瓦子角街道、三眼井街道、上海路街道、筷子巷街道、南站街道。[1] -西湖区有多大? 2002年9月,由原筷子巷街道和原禾草街街道合并设立南浦街道,原广外街道与瓦子角街道的一部分合并设立广润门街道。 -西湖区有多大? 2002年12月1日设立桃源街道。 -西湖区有多大? 2004年区划调整前的西湖区区域:东与青山湖区湖坊乡插花接壤;西临赣江与红谷滩新区隔江相望;南以建设路为界,和青云谱区毗邻;北连中山路,北京西路,与东湖区交界。[1] -西湖区有多大? 2002年9月,由原筷子巷街道和原禾草街街道合并设立南浦街道,原广外街道与瓦子角街道的一部分合并设立广润门街道。 -西湖区有多大? 2002年12月1日设立桃源街道。 -西湖区有多大? 2004年区划调整前的西湖区区域:东与青山湖区湖坊乡插花接壤;西临赣江与红谷滩新区隔江相望;南以建设路为界,和青云谱区毗邻;北连中山路,北京西路,与东湖区交界。 -西湖区有多大? 2004年9月7日,国务院批准(国函[2004]70号)调整南昌市市辖区部分行政区划:将西湖区朝阳洲街道的西船居委会划归东湖区管辖。 -西湖区有多大? 将青山湖区的桃花镇和湖坊镇的同盟村划归西湖区管辖。 -西湖区有多大? 将西湖区十字街街道的谷市街、洪城路、南关口、九四、新丰5个居委会,上海路街道的草珊瑚集团、南昌肠衣厂、电子计算机厂、江西涤纶厂、江地基础公司、曙光、商标彩印厂、南昌市染整厂、江南蓄电池厂、四机床厂、二进、国乐新村12个居委会,南站街道的解放西路东居委会划归青云谱区管辖。 -西湖区有多大? 将西湖区上海路街道的轻化所、洪钢、省人民检察院、电信城东分局、安康、省机械施工公司、省水利设计院、省安装公司、南方电动工具厂、江西橡胶厂、上海路北、南昌电池厂、东华计量所、南昌搪瓷厂、上海路新村、华安针织总厂、江西五金厂、三波电机厂、水文地质大队、二六○厂、省卫生学校、新世纪、上海路住宅区北、塔子桥北、南航、上海路住宅区南、沿河、南昌阀门厂28个居委会,丁公路街道的新魏路、半边街、师大南路、顺化门、岔道口东路、师大、广电厅、手表厂、鸿顺9个居委会,南站街道的工人新村北、工人新村南、商苑、洪都中大道、铁路第三、铁路第四、铁路第六7个居委会划归青山湖区管辖。 -西湖区有多大? 调整后,西湖区辖绳金塔、桃源、朝阳洲、广润门、南浦、西湖、系马桩、十字街、丁公路、南站10个街道和桃花镇,区人民政府驻孺子路。 -西湖区有多大? 调整前,西湖区面积31平方千米,人口52万。 -西湖区有多大? (图)西湖区[南昌市] -西湖区有多大? 西湖区位于江西省省会南昌市的中心地带,具有广阔的发展空间和庞大的消费群体,商贸旅游、娱乐服务业等到各个行业都蕴藏着无限商机,投资前景十分广阔。 -西湖区有多大? 不仅水、电价格低廉,劳动力资源丰富,人均工资和房产价格都比沿海城市低,城区拥有良好的人居环境、低廉的投资成本,巨大的发展潜力。 -西湖区有多大? 105、316、320国道和京九铁路贯穿全境,把南北东西交通连成一线;民航可与上海、北京、广州、深圳、厦门、温州等到地通航,并开通了南昌-新加坡第一条国际航线;水运依托赣江可直达长江各港口;邮电通讯便捷,程控电话、数字微波、图文传真进入国际通讯网络;商检、海关、口岸等涉外机构齐全;水、电、气供应充足。 -西湖区有多大? (图)西湖区[南昌市] -西湖区有多大? 西湖区,是江西省省会南昌市的中心城区,面积34.8平方公里,常住人口51.9万人,辖桃花镇、朝农管理处及10个街道,设13个行政村,116个社区居委会,20个家委会。[2] -西湖区有多大? 2005年11月16日,南昌市《关于同意西湖区桃花镇、桃源、十字街街道办事处行政区划进行调整的批复》 -西湖区有多大? 1、同意将桃花镇的三道闸居委会划归桃源街道办事处管辖。 -青藏虎耳草花期什么时候? 青藏虎耳草多年生草本,高4-11.5厘米,丛生。 -青藏虎耳草花期什么时候? 花期7-8月。 -青藏虎耳草花期什么时候? 分布于甘肃(祁连山地)、青海(黄南、海南、海北)和西藏(加查)。 -青藏虎耳草花期什么时候? 生于海拔3 700-4 250米的林下、高山草甸和高山碎石隙。[1] -青藏虎耳草花期什么时候? 多年生草本,高4-11.5厘米,丛生。 -青藏虎耳草花期什么时候? 茎不分枝,具褐色卷曲柔毛。 -青藏虎耳草花期什么时候? 基生叶具柄,叶片卵形、椭圆形至长圆形,长15-25毫米,宽4-8毫米,腹面无毛,背面和边缘具褐色卷曲柔毛,叶柄长1-3厘米,基部扩大,边缘具褐色卷曲柔毛;茎生叶卵形至椭圆形,长1.5-2厘米,向上渐变小。 -青藏虎耳草花期什么时候? 聚伞花序伞房状,具2-6花;花梗长5-19毫米,密被褐色卷曲柔毛;萼片在花期反曲,卵形至狭卵形,长2.5-4.2毫米,宽1.5-2毫米,先端钝,两面无毛,边缘具褐色卷曲柔毛,3-5脉于先端不汇合;花瓣腹面淡黄色且其中下部具红色斑点,背面紫红色,卵形、狭卵形至近长圆形,长2.5-5.2毫米,宽1.5-2.1毫米,先端钝,基部具长0.5-1毫米之爪,3-5(-7)脉,具2痂体;雄蕊长2-3.6毫米,花丝钻形;子房半下位,周围具环状花盘,花柱长1-1.5毫米。 -青藏虎耳草花期什么时候? 生于高山草甸、碎石间。 -青藏虎耳草花期什么时候? 分布青海、西藏、甘肃、四川等地。 -青藏虎耳草花期什么时候? [1] -青藏虎耳草花期什么时候? 顶峰虎耳草Saxifraga cacuminum Harry Sm. -青藏虎耳草花期什么时候? 对叶虎耳Saxifraga contraria Harry Sm. -青藏虎耳草花期什么时候? 狭瓣虎耳草Saxifraga pseudohirculus Engl. -青藏虎耳草花期什么时候? 唐古特虎耳草Saxifraga tangutica Engl. -青藏虎耳草花期什么时候? 宽叶虎耳草(变种)Saxifraga tangutica Engl. var. platyphylla (Harry Sm.) J. T. Pan -青藏虎耳草花期什么时候? 唐古特虎耳草(原变种)Saxifraga tangutica Engl. var. tangutica -青藏虎耳草花期什么时候? 西藏虎耳草Saxifraga tibetica Losinsk.[1] -青藏虎耳草花期什么时候? Saxifraga przewalskii Engl. in Bull. Acad. Sci. St. -Petersb. 29:115. 1883: Engl et Irmsch. in Bot. Jahrb. 48:580. f. 5E-H. 1912 et in Engl. Pflanzenr. 67(IV. 117): 107. f. 21 E-H. 1916; J. T. Pan in Acta Phytotax. Sin. 16(2): 16. 1978;中国高等植物图鉴补编2: 30. 1983; 西藏植物志 2: 483. 1985. [1] -生产一支欧文冲锋枪需要多少钱? 欧文冲锋枪 Owen Gun 1945年,在新不列颠手持欧文冲锋枪的澳大利亚士兵 类型 冲锋枪 原产国 ?澳大利亚 服役记录 服役期间 1941年-1960年代 用户 参见使用国 参与战役 第二次世界大战 马来亚紧急状态 朝鲜战争 越南战争 1964年罗德西亚布什战争 生产历史 研发者 伊夫林·欧文(Evelyn Owen) 研发日期 1931年-1939年 生产商 约翰·莱萨特工厂 利特高轻武器工厂 单位制造费用 $ 30/枝 生产日期 1941年-1945年 制造数量 45,000-50,000 枝 衍生型 Mk 1/42 Mk 1/43 Mk 2/43 基本规格 总重 空枪: Mk 1/42:4.24 千克(9.35 磅) Mk 1/43:3.99 千克(8.8 磅) Mk 2/43:3.47 千克(7.65 磅) 全长 806 毫米(31.73 英吋) 枪管长度 247 毫米(9.72 英吋) 弹药 制式:9 × 19 毫米 原型:.38/200 原型:.45 ACP 口径 9 × 19 毫米:9 毫米(.357 英吋) .38/200:9.65 毫米(.38 英吋) .45 ACP:11.43 毫米(.45 英吋) 枪管 1 根,膛线7 条,右旋 枪机种类 直接反冲作用 开放式枪机 发射速率 理论射速: Mk 1/42:700 发/分钟 Mk 1/43:680 发/分钟 Mk 2/43:600 发/分钟 实际射速:120 发/分钟 枪口初速 380-420 米/秒(1,246.72-1,377.95 英尺/秒) 有效射程 瞄具装定射程:91.44 米(100 码) 最大有效射程:123 米(134.51 码) 最大射程 200 米(218.72 码) 供弹方式 32/33 发可拆卸式弹匣 瞄准具型式 机械瞄具:向右偏置的觇孔式照门和片状准星 欧文冲锋枪(英语:Owen Gun,正式名称:Owen Machine Carbine,以下简称为“欧文枪”)是一枝由伊夫林·(埃沃)·欧文(英语:Evelyn (Evo) Owen)于1939年研制、澳大利亚的首枝冲锋枪,制式型发射9 × 19 毫米鲁格手枪子弹。 -生产一支欧文冲锋枪需要多少钱? 欧文冲锋枪是澳大利亚唯一设计和主要服役的二战冲锋枪,并从1943年由澳大利亚陆军所使用,直到1960年代中期。 -生产一支欧文冲锋枪需要多少钱? 由新南威尔士州卧龙岗市出身的欧文枪发明者,伊夫林·欧文,在24岁时于1939年7月向悉尼维多利亚军营的澳大利亚陆军军械官员展示了他所设计的.22 LR口径“卡宾机枪”原型枪。 -生产一支欧文冲锋枪需要多少钱? 该枪却被澳大利亚陆军所拒绝,因为澳大利亚陆军在当时没有承认冲锋枪的价值。 -生产一支欧文冲锋枪需要多少钱? 随着战争的爆发,欧文加入了澳大利亚军队,并且成为一名列兵。 -生产一支欧文冲锋枪需要多少钱? 1940年9月,欧文的邻居,文森特·沃德尔(英语:Vincent Wardell),看到欧文家楼梯后面搁著一个麻布袋,里面放著一枝欧文枪的原型枪。 -生产一支欧文冲锋枪需要多少钱? 而文森特·沃德尔是坎布拉港的大型钢制品厂莱萨特公司的经理,他向欧文的父亲表明了他对其儿子的粗心大意感到痛心,但无论如何仍然解释了这款武器的历史。 -生产一支欧文冲锋枪需要多少钱? 沃德尔对欧文枪的简洁的设计留下了深刻的印象。 -生产一支欧文冲锋枪需要多少钱? 沃德尔安排欧文转调到陆军发明部(英语:Army Inventions Board),并重新开始在枪上的工作。 -生产一支欧文冲锋枪需要多少钱? 军队仍然持续地从负面角度查看该武器,但同时政府开始采取越来越有利的观点。 -生产一支欧文冲锋枪需要多少钱? 该欧文枪原型配备了装在顶部的弹鼓,后来让位给装在顶部的弹匣使用。 -生产一支欧文冲锋枪需要多少钱? 口径的选择亦花了一些时间去解决。 -生产一支欧文冲锋枪需要多少钱? 由于陆军有大批量的柯尔特.45 ACP子弹,它们决定欧文枪需要采用这种口径。 -生产一支欧文冲锋枪需要多少钱? 直到在1941年9月19日官方举办试验时,约翰·莱萨特工厂制成了9 毫米、.38/200和.45 ACP三种口径版本。 -生产一支欧文冲锋枪需要多少钱? 而从美、英进口的斯登冲锋枪和汤普森冲锋枪在试验中作为基准使用。 -生产一支欧文冲锋枪需要多少钱? 作为测试的一部分,所有的枪支都浸没在泥浆里,并以沙土覆盖,以模拟他们将会被使用时最恶劣的环境。 -生产一支欧文冲锋枪需要多少钱? 欧文枪是唯一在这测试中这样对待以后仍可正常操作的冲锋枪。 -生产一支欧文冲锋枪需要多少钱? 虽然测试表现出欧文枪具有比汤普森冲锋枪和司登冲锋枪更优秀的可靠性,陆军没有对其口径作出决定。 -生产一支欧文冲锋枪需要多少钱? 结果它在上级政府干预以后,陆军才下令9 毫米的衍生型为正式口径,并在1941年11月20日正式被澳大利亚陆军采用。 -生产一支欧文冲锋枪需要多少钱? 在欧文枪的寿命期间,其可靠性在澳大利亚部队中赢得了“军人的至爱”(英语:Digger's Darling)的绰号,亦有人传言它受到美军高度青睐。 -生产一支欧文冲锋枪需要多少钱? 欧文枪是在1942年开始正式由坎布拉港和纽卡斯尔的约翰·莱萨特工厂投入生产,在生产高峰期每个星期生产800 支。 -生产一支欧文冲锋枪需要多少钱? 1942年3月至1943年2月之间,莱萨特生产了28,000 枝欧文枪。 -生产一支欧文冲锋枪需要多少钱? 然而,最初的一批弹药类型竟然是错误的,以至10,000 枝欧文枪无法提供弹药。 -生产一支欧文冲锋枪需要多少钱? 政府再一次推翻军方的官僚主义作风??,并让弹药通过其最后的生产阶段,以及运送到当时在新几内亚与日军战斗的澳大利亚部队的手中。 -生产一支欧文冲锋枪需要多少钱? 在1941年至1945年间生产了约50,000 枝欧文枪。 -生产一支欧文冲锋枪需要多少钱? 在战争期间,欧文枪的平均生产成本为$ 30。[1] -生产一支欧文冲锋枪需要多少钱? 虽然它是有点笨重,因为其可靠性,欧文枪在士兵当中变得非常流行。 -生产一支欧文冲锋枪需要多少钱? 它是如此成功,它也被新西兰、英国和美国订购。[2] -生产一支欧文冲锋枪需要多少钱? 欧文枪后来也被澳大利亚部队在朝鲜战争和越南战争,[3]特别是步兵组的侦察兵。 -生产一支欧文冲锋枪需要多少钱? 这仍然是一枝制式的澳大利亚陆军武器,直到1960年代中期,它被F1冲锋枪所取代。 -第二届中国光伏摄影大赛因为什么政策而开始的? 光伏发电不仅是全球能源科技和产业发展的重要方向,也是我国具有国际竞争优势的战略性新兴产业,是我国保障能源安全、治理环境污染、应对气候变化的战略性选择。 -第二届中国光伏摄影大赛因为什么政策而开始的? 2013年7月以来,国家出台了《关于促进光伏产业健康发展的若干意见》等一系列政策,大力推进分布式光伏发电的应用,光伏发电有望走进千家万户,融入百姓民生。 -第二届中国光伏摄影大赛因为什么政策而开始的? 大赛主办方以此为契机,开启了“第二届中国光伏摄影大赛”的征程。 -悬赏任务有哪些类型? 悬赏任务,威客网站上一种任务模式,由雇主在威客网站发布任务,提供一定数额的赏金,以吸引威客们参与。 -悬赏任务有哪些类型? 悬赏任务数额一般在几十到几千不等,但也有几万甚至几十万的任务。 -悬赏任务有哪些类型? 主要以提交的作品的质量好坏作为中标标准,当然其中也带有雇主的主观喜好,中标人数较少,多为一个或几个,因此竞争激烈。 -悬赏任务有哪些类型? 大型悬赏任务赏金数额巨大,中标者也较多,但参与人也很多,对于身有一技之长的威客来讲,悬赏任务十分适合。 -悬赏任务有哪些类型? 悬赏任务的类型主要包括:设计类、文案类、取名类、网站类、编程类、推广类等等。 -悬赏任务有哪些类型? 每一类所适合的威客人群不同,报酬的多少也不同,比如设计类的报酬就比较高,一般都几百到几千,而推广类的计件任务报酬比较少,一般也就几块钱,但花费的时间很少,技术要求也很低。 -悬赏任务有哪些类型? 1.注册—登陆 -悬赏任务有哪些类型? 2.点击“我要发悬赏”—按照发布流程及提示提交任务要求。 -悬赏任务有哪些类型? 悬赏模式选择->网站托管赏金模式。 -悬赏任务有哪些类型? 威客网站客服稍后会跟发布者联系确认任务要求。 -悬赏任务有哪些类型? 3.没有问题之后就可以预付赏金进行任务发布。 -悬赏任务有哪些类型? 4.会员参与并提交稿件。 -悬赏任务有哪些类型? 5.发布者需要跟会员互动(每个提交稿件的会员都可以),解决问题,完善稿件,初步筛选稿件。 -悬赏任务有哪些类型? 6.任务发布期结束,进入选稿期(在筛选的稿件中选择最后满意的) -悬赏任务有哪些类型? 7.发布者不满意现有稿件可选定一个会员修改至满意为止,或者加价延期重新开放任务进行征稿。 -悬赏任务有哪些类型? (重复第六步)没有问题后进入下一步。 -悬赏任务有哪些类型? 8:中标会员交源文件给发布者—发布者确认—任务结束—网站将赏金付给中标会员。 -悬赏任务有哪些类型? 1、任务发布者自由定价,自由确定悬赏时间,自由发布任务要求,自主确定中标会员和中标方案。 -悬赏任务有哪些类型? 2、任务发布者100%预付任务赏金,让竞标者坚信您的诚意和诚信。 -悬赏任务有哪些类型? 3、任务赏金分配原则:任务一经发布,网站收取20%发布费,中标会员获得赏金的80%。 -悬赏任务有哪些类型? 4、每个任务最终都会选定至少一个作品中标,至少一个竞标者获得赏金。 -悬赏任务有哪些类型? 5、任务发布者若未征集到满意作品,可以加价延期征集,也可让会员修改,会员也可以删除任务。 -悬赏任务有哪些类型? 6、任务发布者自己所在组织的任何人均不能以任何形式参加自己所发布的任务,一经发现则视为任务发布者委托威客网按照网站规则选稿。 -悬赏任务有哪些类型? 7、任务悬赏总金额低于100元(含100元)的任务,悬赏时间最多为7天。 -悬赏任务有哪些类型? 所有任务最长时间不超过30天(特殊任务除外),任务总金额不得低于50元。 -悬赏任务有哪些类型? 8、网赚类、注册类任务总金额不能低于300元人民币,计件任务每个稿件的平均单价不能低于1元人民币。 -悬赏任务有哪些类型? 9、延期任务只有3次加价机会,第1次加价不得低于任务金额的10%,第2次加价不得低于任务总金额的20%,第3次不得低于任务总金额的50%。 -悬赏任务有哪些类型? 每次延期不能超过15天,加价金额不低于50元,特殊任务可以适当加长。 -悬赏任务有哪些类型? 如果为计件任务,且不是网赚类任务,将免费延期,直至征集完规定数量的作品为止。 -悬赏任务有哪些类型? 10、如果威客以交接源文件要挟任务发布者,威客网将扣除威客相关信用值,并取消其中标资格,同时任务将免费延长相应的时间继续征集作品 。 -江湖令由哪些平台运营? 《江湖令》是以隋唐时期为背景的RPG角色扮演类网页游戏。 -江湖令由哪些平台运营? 集角色扮演、策略、冒险等多种游戏元素为一体,画面精美犹如客户端游戏,融合历史、江湖、武功、恩仇多种特色元素,是款不可多得的精品游戏大作。 -江湖令由哪些平台运营? 由ya247平台、91wan游戏平台、2918、4399游戏平台、37wan、6711、兄弟玩网页游戏平台,49you、Y8Y9平台、8090游戏等平台运营的,由07177游戏网发布媒体资讯的网页游戏。 -江湖令由哪些平台运营? 网页游戏《江湖令》由51游戏社区运营,是以隋唐时期为背景的RPG角色扮演类网页游戏。 -江湖令由哪些平台运营? 集角色扮演、策略、冒险等多种游戏元素为一体,画面精美犹如客户端游戏,融合历史、江湖、武功、恩仇多种特色元素,是款不可多得的精品游戏大作… -江湖令由哪些平台运营? 背景故事: -江湖令由哪些平台运营? 隋朝末年,隋炀帝暴政,天下民不聊生,义军四起。 -江湖令由哪些平台运营? 在这动荡的时代中,百姓生活苦不堪言,多少人流离失所,家破人亡。 -江湖令由哪些平台运营? 天下三大势力---飞羽营、上清宫、侠隐岛,也值此机会扩张势力,派出弟子出来行走江湖。 -江湖令由哪些平台运营? 你便是这些弟子中的普通一员,在这群雄并起的年代,你将如何选择自己的未来。 -江湖令由哪些平台运营? 所有的故事,便从瓦岗寨/江都大营开始…… -江湖令由哪些平台运营? 势力: -江湖令由哪些平台运营? ①、飞羽营:【外功、根骨】 -江湖令由哪些平台运营? 南北朝时期,由北方政权创立的一个民间军事团体,经过多年的发展,逐渐成为江湖一大势力。 -江湖令由哪些平台运营? ②、上清宫:【外功、身法】 -江湖令由哪些平台运营? 道家圣地,宫中弟子讲求清静无为,以一种隐世的方式修炼,但身在此乱世,亦也不能独善其身。 -江湖令由哪些平台运营? ③、侠隐岛:【根骨、内力】 -江湖令由哪些平台运营? 位于偏远海岛上的一个世家,岛内弟子大多武功高强,但从不进入江湖行走,适逢乱世,现今岛主也决意作一翻作为。 -江湖令由哪些平台运营? 两大阵营: -江湖令由哪些平台运营? 义军:隋唐末期,百姓生活苦不堪言,有多个有志之士组成义军,对抗当朝暴君,希望建立一个适合百姓安居乐业的天地。 -江湖令由哪些平台运营? 隋军:战争一起即天下打乱,隋军首先要镇压四起的义军,同时在内部慢慢改变现有的朝廷,让天下再次恢复到昔日的安定。 -江湖令由哪些平台运营? 一、宠物品质 -江湖令由哪些平台运营? 宠物的品质分为:灵兽,妖兽,仙兽,圣兽,神兽 -江湖令由哪些平台运营? 二、宠物获取途径 -江湖令由哪些平台运营? 完成任务奖励宠物(其他途径待定)。 -江湖令由哪些平台运营? 三、宠物融合 -江湖令由哪些平台运营? 1、在主界面下方的【宠/骑】按钮进入宠物界面,再点击【融合】即可进入融合界面进行融合,在融合界面可选择要融合的宠物进行融合 -江湖令由哪些平台运营? 2、融合后主宠的形态不变; -江湖令由哪些平台运营? 3、融合后宠物的成长,品质,技能,经验,成长经验,等级都继承成长高的宠物; -江湖令由哪些平台运营? 4、融合宠物技能冲突,则保留成长值高的宠物技能,如果不冲突则叠加在空余的技能位置。 -请问土耳其足球超级联赛是什么时候成立的? 土耳其足球超级联赛(土耳其文:Türkiye 1. Süper Futbol Ligi)是土耳其足球协会管理的职业足球联赛,通常简称“土超”,也是土耳其足球联赛中最高级别。 -请问土耳其足球超级联赛是什么时候成立的? 目前,土超联赛队伍共有18支。 -请问土耳其足球超级联赛是什么时候成立的? 土耳其足球超级联赛 -请问土耳其足球超级联赛是什么时候成立的? 运动项目 足球 -请问土耳其足球超级联赛是什么时候成立的? 成立年份 1959年 -请问土耳其足球超级联赛是什么时候成立的? 参赛队数 18队 -请问土耳其足球超级联赛是什么时候成立的? 国家 土耳其 -请问土耳其足球超级联赛是什么时候成立的? 现任冠军 费内巴切足球俱乐部(2010-2011) -请问土耳其足球超级联赛是什么时候成立的? 夺冠最多队伍 费内巴切足球俱乐部(18次) -请问土耳其足球超级联赛是什么时候成立的? 土耳其足球超级联赛(Türkiye 1. Süper Futbol Ligi)是土耳其足球协会管理的职业足球联赛,通常简称「土超」,也是土耳其足球联赛中最高级别。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛队伍共有18支。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛成立于1959年,成立之前土耳其国有多个地区性联赛。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛成立后便把各地方联赛制度统一起来。 -请问土耳其足球超级联赛是什么时候成立的? 一般土超联赛由八月开始至五月结束,12月至1月会有歇冬期。 -请问土耳其足球超级联赛是什么时候成立的? 十八支球队会互相对叠,各有主场和作客两部分,采计分制。 -请问土耳其足球超级联赛是什么时候成立的? 联赛枋最底的三支球队会降到土耳其足球甲级联赛作赛。 -请问土耳其足球超级联赛是什么时候成立的? 由2005-06年球季起,土超联赛的冠、亚军会取得参加欧洲联赛冠军杯的资格。 -请问土耳其足球超级联赛是什么时候成立的? 成立至今土超联赛乃由两支著名球会所垄断──加拉塔萨雷足球俱乐部和费内巴切足球俱乐部,截至2009-2010赛季,双方各赢得冠军均为17次。 -请问土耳其足球超级联赛是什么时候成立的? 土超联赛共有18支球队,采取双循环得分制,每场比赛胜方得3分,负方0分,平局双方各得1分。 -请问土耳其足球超级联赛是什么时候成立的? 如果两支球队积分相同,对战成绩好的排名靠前,其次按照净胜球来决定;如果有三支以上的球队分数相同,则按照以下标准来确定排名:1、几支队伍间对战的得分,2、几支队伍间对战的净胜球数,3、总净胜球数。 -请问土耳其足球超级联赛是什么时候成立的? 联赛第1名直接参加下个赛季冠军杯小组赛,第2名参加下个赛季冠军杯资格赛第三轮,第3名进入下个赛季欧洲联赛资格赛第三轮,第4名进入下个赛季欧洲联赛资格赛第二轮,最后三名降入下个赛季的土甲联赛。 -请问土耳其足球超级联赛是什么时候成立的? 该赛季的土耳其杯冠军可参加下个赛季欧洲联赛资格赛第四轮,如果冠军已获得冠军杯资格,则亚军可参加下个赛季欧洲联赛资格赛第四轮,否则名额递补给联赛。 -请问土耳其足球超级联赛是什么时候成立的? 2010年/2011年 费内巴切 -请问土耳其足球超级联赛是什么时候成立的? 2009年/2010年 布尔萨体育(又译贝莎) -请问土耳其足球超级联赛是什么时候成立的? 2008年/2009年 贝西克塔斯 -请问土耳其足球超级联赛是什么时候成立的? 2007年/2008年 加拉塔萨雷 -请问土耳其足球超级联赛是什么时候成立的? 2006年/2007年 费内巴切 -请问土耳其足球超级联赛是什么时候成立的? 2005年/2006年 加拉塔沙雷 -请问土耳其足球超级联赛是什么时候成立的? 2004年/2005年 费内巴切(又译费伦巴治) -请问土耳其足球超级联赛是什么时候成立的? 2003年/2004年 费内巴切 -cid 作Customer IDentity解时是什么意思? ? CID 是 Customer IDentity 的简称,简单来说就是手机的平台版本. CID紧跟IMEI存储在手机的OTP(One Time Programmable)芯片中. CID 后面的数字代表的是索尼爱立信手机软件保护版本号,新的CID不断被使用,以用来防止手机被非索尼爱立信官方的维修程序拿来解锁/刷机/篡改 -cid 作Customer IDentity解时是什么意思? ? CID 是 Customer IDentity 的简称,简单来说就是手机的平台版本. CID紧跟IMEI存储在手机的OTP(One Time Programmable)芯片中. CID 后面的数字代表的是索尼爱立信手机软件保护版本号,新的CID不断被使用,以用来防止手机被非索尼爱立信官方的维修程序拿来解锁/刷机/篡改 -cid 作Customer IDentity解时是什么意思? ? (英)刑事调查局,香港警察的重案组 -cid 作Customer IDentity解时是什么意思? ? Criminal Investigation Department -cid 作Customer IDentity解时是什么意思? ? 佩枪: -cid 作Customer IDentity解时是什么意思? ? 香港警察的CID(刑事侦缉队),各区重案组的探员装备短管点38左轮手枪,其特点是便于收藏,而且不容易卡壳,重量轻,其缺点是装弹量少,只有6发,而且换子弹较慢,威力也一般,如果碰上54式手枪或者M9手枪明显处于下风。 -cid 作Customer IDentity解时是什么意思? ? 香港警察的“刑事侦查”(Criminal Investigation Department)部门,早于1983年起已经不叫做C.I.D.的了,1983年香港警察队的重整架构,撤销了C.I.D. ( Criminal Investigation Dept.) “刑事侦缉处”,将“刑事侦查”部门归入去“行动处”内,是“行动处”内的一个分支部门,叫“刑事部”( Crime Wing )。 -cid 作Customer IDentity解时是什么意思? ? 再于90年代的一次警队重整架构,香港警队成立了新的「刑事及保安处」,再将“刑事侦查”部门归入目前的「刑事及保安处」的“处”级单位,是归入这个“处”下的一个部门,亦叫“刑事部” ( Crime Wing ),由一个助理警务处长(刑事)领导。 -cid 作Customer IDentity解时是什么意思? ? 但是时至今天,CID虽已经是一个老旧的名称,香港市民、甚至香港警察都是习惯性的沿用这个历史上的叫法 . -cid 作Customer IDentity解时是什么意思? ? CID格式是美国Adobe公司发表的最新字库格式,它具有易扩充、速度快、兼容性好、简便、灵活等特点,已成为国内开发中文字库的热点,也为用户使用字库提供质量更好,数量更多的字体。 -cid 作Customer IDentity解时是什么意思? ? CID (Character identifier)就是字符识别码,在组成方式上分成CIDFont,CMap表两部分。 -cid 作Customer IDentity解时是什么意思? ? CIDFont文件即总字符集,包括了一种特定语言中所有常用的字符,把这些字符排序,它们在总字符集中排列的次序号就是各个字符的CID标识码(Index);CMap(Character Map)表即字符映像文件,将字符的编码(Code)映像到字符的CID标识码(Index)。 -cid 作Customer IDentity解时是什么意思? ? CID字库完全针对大字符集市场设计,其基本过程为:先根据Code,在CMap表查到Index,然后在CIDFont文件找到相应的字形数据。 -本町位于什么地方? 本条目记述台湾日治时期,各都市之本町。 -本町位于什么地方? 为台湾日治时期台北市之行政区,共分一~四丁目,在表町之西。 -本町位于什么地方? 以现在的位置来看,本町位于现台北市中正区的西北角,约位于忠孝西路一段往西至台北邮局东侧。 -本町位于什么地方? 再向南至开封街一段,沿此路线向西至开封街一段60号,顺60号到汉口街一段向东到现在华南银行总行附近画一条直线到衡阳路。 -本町位于什么地方? 再向东至重庆南路一段,由重庆南路一段回到原点这个范围内。 -本町位于什么地方? 另外,重庆南路一段在当时名为“本町通”。 -本町位于什么地方? 此地方自日治时期起,就是繁华的商业地区,当时也有三和银行、台北专卖分局、日本石油等重要商业机构。 -本町位于什么地方? 其中,专卖分局是战后二二八事件的主要起始点。 -本町位于什么地方? 台湾贮蓄银行(一丁目) -本町位于什么地方? 三和银行(二丁目) -本町位于什么地方? 专卖局台北分局(三丁目) -本町位于什么地方? 日本石油(四丁目) -本町位于什么地方? 为台湾日治时期台南市之行政区。 -本町位于什么地方? 范围包括清代旧街名枋桥头前、枋桥头后、鞋、草花、天公埕、竹仔、下大埕、帽仔、武馆、统领巷、大井头、内宫后、内南町。 -本町位于什么地方? 为清代台南城最繁华的区域。 -本町位于什么地方? 台南公会堂 -本町位于什么地方? 北极殿 -本町位于什么地方? 开基武庙 -本町位于什么地方? 町名改正 -本町位于什么地方? 这是一个与台湾相关的小作品。 -本町位于什么地方? 你可以通过编辑或修订扩充其内容。 -《行走的观点:埃及》的条形码是多少? 出版社: 上海社会科学院出版社; 第1版 (2006年5月1日) -《行走的观点:埃及》的条形码是多少? 丛书名: 时代建筑视觉旅行丛书 -《行走的观点:埃及》的条形码是多少? 条形码: 9787806818640 -《行走的观点:埃及》的条形码是多少? 尺寸: 18 x 13.1 x 0.7 cm -《行走的观点:埃及》的条形码是多少? 重量: 181 g -《行走的观点:埃及》的条形码是多少? 漂浮在沙与海市蜃楼之上的金字塔曾经是否是你的一个梦。 -《行走的观点:埃及》的条形码是多少? 埃及,这片蕴蓄了5000年文明的土地,本书为你撩开它神秘的纱。 -《行走的观点:埃及》的条形码是多少? 诸神、金字塔、神庙、狮身人面像、法老、艳后吸引着我们的注意力;缠绵悱恻的象形文字、医学、雕刻等留给我们的文明,不断引发我们对古代文明的惊喜和赞叹。 -《行走的观点:埃及》的条形码是多少? 尼罗河畔的奇异之旅,数千年的古老文明,尽收在你的眼底…… -《行走的观点:埃及》的条形码是多少? 本书集历史、文化、地理等知识于一体,并以优美、流畅文笔,简明扼要地阐述了埃及的地理环境、政治经济、历史沿革、文化艺术,以大量富有艺术感染力的彩色照片,生动形象地展示了埃及最具特色的名胜古迹、风土人情和自然风光。 -《行走的观点:埃及》的条形码是多少? 古埃及历史 -老挝人民军的工兵部队有几个营? 老挝人民军前身为老挝爱国战线领导的“寮国战斗部队”(即“巴特寮”),始建于1949年1月20日,1965年10月改名为老挝人民解放军,1982年7月改称现名。 -老挝人民军的工兵部队有几个营? 最高领导机构是中央国防和治安委员会,朱马里·赛雅颂任主席,隆再·皮吉任国防部长。 -老挝人民军的工兵部队有几个营? 实行义务兵役制,服役期最少18个月。[1] -老挝人民军的工兵部队有几个营? ?老挝军队在老挝社会中有较好的地位和保障,工资待遇比地方政府工作人员略高。 -老挝人民军的工兵部队有几个营? 武装部队总兵力约6万人,其中陆军约5万人,主力部队编为5个步兵师;空军2000多人;海军(内河巡逻部队)1000多人;部队机关院校5000人。[1] -老挝人民军的工兵部队有几个营? 老挝人民军军旗 -老挝人民军的工兵部队有几个营? 1991年8月14日通过的《老挝人民民主共和国宪法》第11条规定:国家执行保卫国防和维护社会安宁的政策。 -老挝人民军的工兵部队有几个营? 全体公民和国防力量、治安力量必须发扬忠于祖国、忠于人民的精神,履行保卫革命成果、保卫人民生命财产及和平劳动的任务,积极参加国家建设事业。 -老挝人民军的工兵部队有几个营? 最高领导机构是中央国防和治安委员会。 -老挝人民军的工兵部队有几个营? 主席由老挝人民革命党中央委员会总书记兼任。 -老挝人民军的工兵部队有几个营? 老挝陆军成立最早,兵力最多,约有5万人。 -老挝人民军的工兵部队有几个营? 其中主力部队步兵师5个、7个独立团、30多个营、65个独立连。 -老挝人民军的工兵部队有几个营? 地方部队30余个营及县属部队。 -老挝人民军的工兵部队有几个营? 地面炮兵2个团,10多个营。 -老挝人民军的工兵部队有几个营? 高射炮兵1个团9个营。 -老挝人民军的工兵部队有几个营? 导弹部队2个营。 -老挝人民军的工兵部队有几个营? 装甲兵7个营。 -老挝人民军的工兵部队有几个营? 特工部队6个营。 -老挝人民军的工兵部队有几个营? 通讯部队9个营。 -老挝人民军的工兵部队有几个营? 工兵部队6个营。 -老挝人民军的工兵部队有几个营? 基建工程兵2个团13个营。 -老挝人民军的工兵部队有几个营? 运输部队7个营。 -老挝人民军的工兵部队有几个营? 陆军的装备基本是中国和前苏联援助的装备和部分从抗美战争中缴获的美式装备。 -老挝人民军的工兵部队有几个营? 老挝内河部队总兵力约1700人,装备有内河船艇110多艘,编成4个艇队。 -老挝人民军的工兵部队有几个营? 有芒宽、巴能、纳坎、他曲、南盖、巴色等8个基地。 -老挝人民军的工兵部队有几个营? 空军于1975年8月组建,现有2个团、11个飞行大队,总兵力约2000人。 -老挝人民军的工兵部队有几个营? 装备有各种飞机140架,其中主要由前苏联提供和从万象政权的皇家空军手中接管。 -老挝人民军的工兵部队有几个营? 随着军队建设质量的提高,老挝人民军对外军事合作步伐也日益扩大,近年来先后与俄罗斯、印度、马来西亚、越南、菲律宾等国拓展了军事交流与合作的内容。 -老挝人民军的工兵部队有几个营? 2003年1月,印度决定向老挝援助一批军事装备和物资,并承诺提供技术帮助。 -老挝人民军的工兵部队有几个营? 2003年6月,老挝向俄罗斯订购了一批新式防空武器;2003年4月,老挝与越南签署了越南帮助老挝培训军事指挥干部和特种部队以及完成军队通信系统改造等多项协议。 -《焚心之城》的主角是谁? 《焚心之城》[1] 为网络作家老子扛过枪创作的一部都市类小说,目前正在创世中文网连载中。 -《焚心之城》的主角是谁? 乡下大男孩薛城,是一个不甘于生活现状的混混,他混过、爱过、也深深地被伤害过。 -《焚心之城》的主角是谁? 本料此生当浑浑噩噩,拼搏街头。 -《焚心之城》的主角是谁? 高考的成绩却给了他一点渺茫的希望,二月后,大学如期吹响了他进城的号角。 -《焚心之城》的主角是谁? 繁华的都市,热血的人生,冷眼嘲笑中,他发誓再不做一个平常人! -《焚心之城》的主角是谁? 江北小城,黑河大地,他要行走过的每一个角落都有他的传说。 -《焚心之城》的主角是谁? 扯出一面旗,拉一帮兄弟,做男人,就要多一份担当,活一口傲气。 -《焚心之城》的主角是谁? (日期截止到2014年10月23日凌晨) -请问香港利丰集团是什么时候成立的? 香港利丰集团前身是广州的华资贸易 (1906 - 1949) ,利丰是香港历史最悠久的出口贸易商号之一。 -请问香港利丰集团是什么时候成立的? 于1906年,冯柏燎先生和李道明先生在广州创立了利丰贸易公司;是当时中国第一家华资的对外贸易出口商。 -请问香港利丰集团是什么时候成立的? 利丰于1906年创立,初时只从事瓷器及丝绸生意;一年之后,增添了其它的货品,包括竹器、藤器、玉石、象牙及其它手工艺品,包括烟花爆竹类别。 -请问香港利丰集团是什么时候成立的? 在早期的对外贸易,中国南方内河港因水深不足不能行驶远洋船,反之香港港口水深岸阔,占尽地利。 -请问香港利丰集团是什么时候成立的? 因此,在香港成立分公司的责任,落在冯柏燎先生的三子冯汉柱先生身上。 -请问香港利丰集团是什么时候成立的? 1937年12月28日,利丰(1937)有限公司正式在香港创立。 -请问香港利丰集团是什么时候成立的? 第二次世界大战期间,利丰暂停贸易业务。 -请问香港利丰集团是什么时候成立的? 1943年,随着创办人冯柏燎先生去世后,业务移交给冯氏家族第二代。 -请问香港利丰集团是什么时候成立的? 之后,向来不参与业务管理的合伙人李道明先生宣布退休,将所拥有的利丰股权全部卖给冯氏家族。 -请问香港利丰集团是什么时候成立的? 目前由哈佛冯家两兄弟William Fung , Victor Fung和CEO Bruce Rockowitz 管理。 -请问香港利丰集团是什么时候成立的? 截止到2012年,集团旗下有利亚﹝零售﹞有限公司、利和集团、利邦时装有限公司、利越时装有限公司、利丰贸易有限公司。 -请问香港利丰集团是什么时候成立的? 利亚(零售)连锁,业务包括大家所熟悉的:OK便利店、玩具〝反〞斗城和圣安娜饼屋;范围包括香港、台湾、新加坡、马来西亚、至中国大陆及东南亚其它市场逾600多家店 -请问香港利丰集团是什么时候成立的? 利和集团,IDS以专业物流服务为根基,为客户提供经销,物流,制造服务领域内的一系列服务项目。 -请问香港利丰集团是什么时候成立的? 业务网络覆盖大中华区,东盟,美国及英国,经营着90多个经销中心,在中国设有18个经销公司,10,000家现代经销门店。 -请问香港利丰集团是什么时候成立的? 利邦(上海)时装贸易有限公司为大中华区其中一家大型男士服装零售集团。 -请问香港利丰集团是什么时候成立的? 现在在中国大陆、香港、台湾和澳门收购经营11个包括Cerruti 1881,Gieves & Hawkes,Kent & curwen和D’urban 等中档到高档的男士服装品牌,全国有超过350间门店设于各一线城市之高级商场及百货公司。 -请问香港利丰集团是什么时候成立的? 利越(上海)服装商贸有限公司隶属于Branded Lifestyle,负责中国大陆地区LEO里奥(意大利)、GIBO捷宝(意大利)、UFFIZI古杰师(意大利)、OVVIO奥维路(意大利)、Roots绿适(加拿大,全球服装排名第四)品牌销售业务 -请问香港利丰集团是什么时候成立的? 利丰(贸易)1995年收购了英之杰采购服务,1999年收购太古贸易有限公司(Swire & Maclain) 和金巴莉有限公司(Camberley),2000年和2002年分别收购香港采购出口集团Colby Group及Janco Oversea Limited,大大扩张了在美国及欧洲的顾客群,自2008年经济危机起一直到现在,收购多家欧、美、印、非等地区的时尚品牌,如英国品牌Visage,仅2011年上半年6个月就完成26个品牌的收购。 -请问香港利丰集团是什么时候成立的? 2004年利丰与Levi Strauss & Co.签订特许经营协议 -请问香港利丰集团是什么时候成立的? 2005年利丰伙拍Daymon Worldwide为全球供应私有品牌和特许品牌 -请问香港利丰集团是什么时候成立的? 2006年收购Rossetti手袋业务及Oxford Womenswear Group 强化美国批发业务 -请问香港利丰集团是什么时候成立的? 2007年收购Tommy Hilfiher全球采购业务,收购CGroup、Peter Black International LTD、Regetta USA LLC和American Marketing Enterprice -请问香港利丰集团是什么时候成立的? 2008年收购Kent&Curwen全球特许经营权,收购Van Zeeland,Inc和Miles Fashion Group -请问香港利丰集团是什么时候成立的? 2009年收购加拿大休闲品牌Roots ,收购Wear Me Appearl,LLC。 -请问香港利丰集团是什么时候成立的? 与Hudson's Bay、Wolverine Worldwide Inc、Talbots、Liz Claiborne达成了采购协议 -请问香港利丰集团是什么时候成立的? 2010年收购Oxford apparel Visage Group LTD -请问香港利丰集团是什么时候成立的? 2011年一月收购土耳其Modium、美国女性时尚Beyond Productions,三月收购贸易公司Celissa 、玩具公司Techno Source USA, Inc.、卡通品牌产品TVMania和法国著名时装一线品牌Cerruti 1881,五月收购Loyaltex Apparel Ltd.、女装Hampshire Designers和英国彩妆Collection 2000,六月收购家私贸易Exim Designs Co., Ltd.,七月收购家庭旅行产业Union Rich USA, LLC和设计公司Lloyd Textile Fashion Company Limited,八月收购童装Fishman & Tobin和Crimzon Rose,九月收购家私贸易True Innovations, LLC、日用品企业Midway Enterprises和Wonderful World。 -请问香港利丰集团是什么时候成立的? 十二月与USPA – U.S. Polo Association签署授权协议。 -请问香港利丰集团是什么时候成立的? 利丰的精神:积极进取,不断认识并争取有利于客户和自身进步的机会;以行动为主导,对客户、供应商及职工的需求作出快速的决定。 -请问香港利丰集团是什么时候成立的? 利丰的最终目标:在产品采购、销售、流转的各环节建立全球性队伍提供多元化服务,利丰成员有效合作,共达目标。 -如何使魔兽变种akt不被查杀? Trojan/PSW.Moshou.akt“魔兽”变种akt是“魔兽”木马家族的最新成员之一,采用Delphi 6.0-7.0编写,并经过加壳处理。 -如何使魔兽变种akt不被查杀? “魔兽”变种akt运行后,自我复制到被感染计算机的指定目录下。 -如何使魔兽变种akt不被查杀? 修改注册表,实现木马开机自动运行。 -如何使魔兽变种akt不被查杀? 自我注入到被感染计算机的“explorer.exe”、“notepad.exe”等用户级权限的进程中加载运行,隐藏自我,防止被查杀。 -如何使魔兽变种akt不被查杀? 在后台秘密监视用户打开的窗口标题,盗取网络游戏《魔兽世界》玩家的游戏帐号、游戏密码、角色等级、装备信息、金钱数量等信息,并在后台将窃取到的玩家信息发送到骇客指定的远程服务器上,致使玩家游戏帐号、装备物品、金钱等丢失,给游戏玩家造成非常大的损失。 -丙种球蛋白能预防什么病情? 丙种球蛋白预防传染性肝炎,预防麻疹等病毒性疾病感染,治疗先天性丙种球蛋白缺乏症 ,与抗生素合并使用,可提高对某些严重细菌性和病毒性疾病感染的疗效。 -丙种球蛋白能预防什么病情? 中文简称:“丙球” -丙种球蛋白能预防什么病情? 英文名称:γ-globulin、gamma globulin -丙种球蛋白能预防什么病情? 【别名】 免疫血清球蛋白,普通免疫球蛋白,人血丙种球蛋白,丙种球蛋白,静脉注射用人免疫球蛋白(pH4) -丙种球蛋白能预防什么病情? 注:由于人血中的免疫球蛋白大多数为丙种球蛋白(γ-球蛋白),有时丙种球蛋白也被混称为“免疫球蛋白”(immunoglobulin) 。 -丙种球蛋白能预防什么病情? 冻干制剂应为白色或灰白色的疏松体,液体制剂和冻干制剂溶解后,溶液应为接近无色或淡黄色的澄明液体,微带乳光。 -丙种球蛋白能预防什么病情? 但不应含有异物或摇不散的沉淀。 -丙种球蛋白能预防什么病情? 注射丙种球蛋白是一种被动免疫疗法。 -丙种球蛋白能预防什么病情? 它是把免疫球蛋白内含有的大量抗体输给受者,使之从低或无免疫状态很快达到暂时免疫保护状态。 -丙种球蛋白能预防什么病情? 由于抗体与抗原相互作用起到直接中和毒素与杀死细菌和病毒。 -丙种球蛋白能预防什么病情? 因此免疫球蛋白制品对预防细菌、病毒性感染有一定的作用[1]。 -丙种球蛋白能预防什么病情? 人免疫球蛋白的生物半衰期为16~24天。 -丙种球蛋白能预防什么病情? 1、丙种球蛋白[2]含有健康人群血清所具有的各种抗体,因而有增强机体抵抗力以预防感染的作用。 -丙种球蛋白能预防什么病情? 2、主要治疗先天性丙种球蛋白缺乏症和免疫缺陷病 -丙种球蛋白能预防什么病情? 3、预防传染性肝炎,如甲型肝炎和乙型肝炎等。 -丙种球蛋白能预防什么病情? 4、用于麻疹、水痘、腮腺炎、带状疱疹等病毒感染和细菌感染的防治 -丙种球蛋白能预防什么病情? 5、也可用于哮喘、过敏性鼻炎、湿疹等内源性过敏性疾病。 -丙种球蛋白能预防什么病情? 6、与抗生素合并使用,可提高对某些严重细菌性和病毒性疾病感染的疗效。 -丙种球蛋白能预防什么病情? 7、川崎病,又称皮肤粘膜淋巴结综合征,常见于儿童,丙种球蛋白是主要的治疗药物。 -丙种球蛋白能预防什么病情? 1、对免疫球蛋白过敏或有其他严重过敏史者。 -丙种球蛋白能预防什么病情? 2、有IgA抗体的选择性IgA缺乏者。 -丙种球蛋白能预防什么病情? 3、发烧患者禁用或慎用。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (1997年9月1日浙江省第八届人民代表大会常务委员会第三十九次会议通过 1997年9月9日浙江省第八届人民代表大会常务委员会公告第六十九号公布自公布之日起施行) -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 为了保护人的生命和健康,发扬人道主义精神,促进社会发展与和平进步事业,根据《中华人民共和国红十字会法》,结合本省实际,制定本办法。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 本省县级以上按行政区域建立的红十字会,是中国红十字会的地方组织,是从事人道主义工作的社会救助团体,依法取得社会团体法人资格,设置工作机构,配备专职工作人员,依照《中国红十字会章程》独立自主地开展工作。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 全省性行业根据需要可以建立行业红十字会,配备专职或兼职工作人员。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 街道、乡(镇)、机关、团体、学校、企业、事业单位根据需要,可以依照《中国红十字会章程》建立红十字会的基层组织。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 上级红十字会指导下级红十字会的工作。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 县级以上地方红十字会指导所在行政区域行业红十字会和基层红十字会的工作。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 人民政府对红十字会给予支持和资助,保障红十字会依法履行职责,并对其活动进行监督;红十字会协助人民政府开展与其职责有关的活动。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 全社会都应当关心和支持红十字事业。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 本省公民和单位承认《中国红十字会章程》并缴纳会费的,可以自愿参加红十字会,成为红十字会的个人会员或团体会员。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 个人会员由本人申请,基层红十字会批准,发给会员证;团体会员由单位申请,县级以上红十字会批准,发给团体会员证。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 个人会员和团体会员应当遵守《中华人民共和国红十字会法》和《中国红十字会章程》,热心红十字事业,履行会员的义务,并享有会员的权利。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 县级以上红十字会理事会由会员代表大会民主选举产生。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 理事会民主选举产生会长和副会长;根据会长提名,决定秘书长、副秘书长人选。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 县级以上红十字会可以设名誉会长、名誉副会长和名誉理事,由同级红十字会理事会聘请。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 省、市(地)红十字会根据独立、平等、互相尊重的原则,发展同境外、国外地方红十字会和红新月会的友好往来和合作关系。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 红十字会履行下列职责: -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (一)宣传、贯彻《中华人民共和国红十字会法》和本办法; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (二)开展救灾的准备工作,筹措救灾款物;在自然灾害和突发事件中,对伤病人员和其他受害者进行救助; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (三)普及卫生救护和防病知识,进行初级卫生救护培训,对交通、电力、建筑、矿山等容易发生意外伤害的单位进行现场救护培训; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (四)组织群众参加现场救护; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (五)参与输血献血工作,推动无偿献血; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (六)开展红十字青少年活动; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (七)根据中国红十字会总会部署,参加国际人道主义救援工作; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (八)依照国际红十字和红新月运动的基本原则,完成同级人民政府和上级红十字会委托的有关事宜; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (九)《中华人民共和国红十宇会法》和《中国红十字会章程》规定的其他职责。 -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? 第八条 红十字会经费的主要来源: -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (一)红十字会会员缴纳的会费; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (二)接受国内外组织和个人捐赠的款物; -浙江省实施《中华人民共和国红十字会法》办法在浙江省第八届人民代表大会常务委员会第几次会议通过的? (三)红十字会的动产、不动产以及兴办社会福利事业和经济实体的收入; -宝湖庭院绿化率多少? 建发·宝湖庭院位于银川市金凤区核心地带—正源南街与长城中路交汇处向东500米。 -宝湖庭院绿化率多少? 项目已于2012年4月开工建设,总占地约4.2万平方米,总建筑面积约11.2万平方米,容积率2.14,绿化率35%,预计可入住630户。 -宝湖庭院绿化率多少? “建发·宝湖庭院”是银川建发集团股份有限公司继“建发·宝湖湾”之后,在宝湖湖区的又一力作。 -宝湖庭院绿化率多少? 项目周边发展成熟,东有唐徕渠景观水道,西临银川市交通主干道正源街;南侧与宝湖湿地公园遥相呼应。 -宝湖庭院绿化率多少? “宝湖庭院”项目公共交通资源丰富:15路、21路、35路、38路、43路公交车贯穿银川市各地,出行便利。 -宝湖庭院绿化率多少? 距离新百良田购物广场约1公里,工人疗养院600米,宝湖公园1公里,唐徕渠景观水道500米。 -宝湖庭院绿化率多少? 项目位置优越,购物、餐饮、医疗、交通、休闲等生活资源丰富。[1] -宝湖庭院绿化率多少? 建发·宝湖庭院建筑及景观设置传承建发一贯“简约、大气”的风格:搂间距宽广,确保每一座楼宇视野开阔通透。 -宝湖庭院绿化率多少? 楼宇位置错落有置,外立面设计大气沉稳别致。 -宝湖庭院绿化率多少? 项目内部休闲绿地、景观小品点缀其中,道路及停车系统设计合理,停车及通行条件便利。 -宝湖庭院绿化率多少? 社区会所、幼儿园、活动室、医疗服务中心等生活配套一应俱全。 -宝湖庭院绿化率多少? 行政区域:金凤区 -大月兔(中秋艺术作品)的作者还有哪些代表作? 大月兔是荷兰“大黄鸭”之父弗洛伦泰因·霍夫曼打造的大型装置艺术作品,该作品首次亮相于台湾桃园大园乡海军基地,为了迎接中秋节的到来;在展览期间,海军基地也首次对外开放。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 霍夫曼觉得中国神话中捣杵的玉兔很有想象力,于是特别创作了“月兔”,这也是“月兔”新作第一次展出。[1] -大月兔(中秋艺术作品)的作者还有哪些代表作? ?2014年9月15日因工人施工不慎,遭火烧毁。[2] -大月兔(中秋艺术作品)的作者还有哪些代表作? “大月兔”外表采用的杜邦防水纸、会随风飘动,内部以木材加保丽龙框架支撑做成。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 兔毛用防水纸做成,材质完全防水,不怕日晒雨淋。[3 -大月兔(中秋艺术作品)的作者还有哪些代表作? -4] -大月兔(中秋艺术作品)的作者还有哪些代表作? 25米的“月兔”倚靠在机 -大月兔(中秋艺术作品)的作者还有哪些代表作? 堡上望着天空,像在思考又像赏月。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 月兔斜躺在机堡上,意在思考生命、边做白日梦,编织自己的故事。[3] -大月兔(中秋艺术作品)的作者还有哪些代表作? 台湾桃园大园乡海军基地也首度对外开放。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 428公顷的海军基地中,地景艺术节使用约40公顷,展场包括过去军机机堡、跑道等,由于这处基地过去警备森严,不对外开放,这次结合地景艺术展出,也可一窥过去是黑猫中队基地的神秘面纱。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 2014年9月2日,桃园县政府文化局举行“踩线团”,让 -大月兔(中秋艺术作品)的作者还有哪些代表作? 大月兔 -大月兔(中秋艺术作品)的作者还有哪些代表作? 各项地景艺术作品呈现在媒体眼中,虽然“月兔”仍在进行最后的细节赶工,但横躺在机堡上的“月兔”雏形已经完工。[5] -大月兔(中秋艺术作品)的作者还有哪些代表作? “这么大”、“好可爱呦”是不少踩线团成员对“月兔”的直觉;尤其在蓝天的衬托及前方绿草的组合下,呈现犹如真实版的爱丽丝梦游仙境。[6] -大月兔(中秋艺术作品)的作者还有哪些代表作? 霍夫曼的作品大月兔,“从平凡中,创作出不平凡的视觉”,创造出观赏者打从心中油然而生的幸福感,拉近观赏者的距离。[6] -大月兔(中秋艺术作品)的作者还有哪些代表作? 2014年9月15日早 -大月兔(中秋艺术作品)的作者还有哪些代表作? 上,施工人员要将月兔拆解,搬离海军基地草皮时,疑施工拆除的卡车,在拆除过程,故障起火,起火的卡车不慎延烧到兔子,造成兔子起火燃烧,消防队员即刻抢救,白色的大月兔立即变成焦黑的火烧兔。[7] -大月兔(中秋艺术作品)的作者还有哪些代表作? 桃园县府表示相当遗憾及难过,也不排除向包商求偿,也已将此事告知霍夫曼。[2] -大月兔(中秋艺术作品)的作者还有哪些代表作? ?[8] -大月兔(中秋艺术作品)的作者还有哪些代表作? 弗洛伦泰因·霍夫曼,荷兰艺术家,以在公共空间创作巨大造型 -大月兔(中秋艺术作品)的作者还有哪些代表作? 物的艺术项目见长。 -大月兔(中秋艺术作品)的作者还有哪些代表作? 代表作品包括“胖猴子”(2010年在巴西圣保罗展出)、“大黄兔”(2011年在瑞典厄勒布鲁展出)、粉红猫(2014年5月在上海亮相)、大黄鸭(Rubber Duck)、月兔等。 -英国耆卫保险公司有多少保险客户? 英国耆卫保险公司(Old Mutual plc)成立于1845年,一直在伦敦证券交易所(伦敦证券交易所:OML)作第一上市,也是全球排名第32位(按营业收入排名)的保险公司(人寿/健康)。 -英国耆卫保险公司有多少保险客户? 公司是全球财富500强公司之一,也是被列入英国金融时报100指数的金融服务集团之一。 -英国耆卫保险公司有多少保险客户? Old Mutual 是一家国际金融服务公司,拥有近320万个保险客户,240万个银行储户,270,000个短期保险客户以及700,000个信托客户 -英国耆卫保险公司有多少保险客户? 英国耆卫保险公司(Old Mutual)是一家国际金融服务公司,总部设在伦敦,主要为全球客户提供长期储蓄的解决方案、资产管理、短期保险和金融服务等,目前业务遍及全球34个国家。[1] -英国耆卫保险公司有多少保险客户? 主要包括人寿保险,资产管理,银行等。 -英国耆卫保险公司有多少保险客户? 1845年,Old Mutual在好望角成立。 -英国耆卫保险公司有多少保险客户? 1870年,董事长Charles Bell设计了Old Mutual公司的标记。 -英国耆卫保险公司有多少保险客户? 1910年,南非从英联邦独立出来。 -英国耆卫保险公司有多少保险客户? Old Mutual的董事长John X. Merriman被选为国家总理。 -英国耆卫保险公司有多少保险客户? 1927年,Old Mutual在Harare成立它的第一个事务所。 -英国耆卫保险公司有多少保险客户? 1960年,Old Mutual在南非成立了Mutual Unit信托公司,用来管理公司的信托业务。 -英国耆卫保险公司有多少保险客户? 1970年,Old Mutual的收入超过100百万R。 -英国耆卫保险公司有多少保险客户? 1980年,Old Mutual成为南非第一大人寿保险公司,年收入达10亿R。 -英国耆卫保险公司有多少保险客户? 1991年,Old Mutual在美国财富周刊上评选的全球保险公司中名列第38位。 -英国耆卫保险公司有多少保险客户? 1995年,Old Mutual在美国波士顿建立投资顾问公司,同年、又在香港和Guernsey建立事务所。 -英国耆卫保险公司有多少保险客户? 作为一项加强与其母公司联系的举措,OMNIA公司(百慕大)荣幸的更名为Old Mutual 公司(百慕大) 。 -英国耆卫保险公司有多少保险客户? 这一新的名称和企业识别清晰地展示出公司成为其世界金融机构合作伙伴强有力支持的决心。 -英国耆卫保险公司有多少保险客户? 2003 年4月,该公司被Old Mutual plc公司收购,更名为Sage Life(百慕大)公司并闻名于世,公司为Old Mutual公司提供了一个新的销售渠道,补充了其现有的以美元计价的产品线和分销系统。 -英国耆卫保险公司有多少保险客户? 达到了一个重要里程碑是公司成功的一个例证: 2005年6月3日公司资产超过10亿美元成为公司的一个主要里程碑,也是公司成功的一个例证。 -英国耆卫保险公司有多少保险客户? Old Mutual (百慕大)为客户提供一系列的投资产品。 -英国耆卫保险公司有多少保险客户? 在其开放的结构下,客户除了能够参与由Old Mutual会员管理的方案外,还能够参与由一些世界顶尖投资机构提供的投资选择。 -英国耆卫保险公司有多少保险客户? 首席执行官John Clifford对此发表评论说:“过去的两年对于Old Mutual家族来说是稳固发展的两年,更名是迫在眉睫的事情。 -英国耆卫保险公司有多少保险客户? 通过采用其名字和形象上的相似,Old Mutual (百慕大)进一步强化了与母公司的联系。” -英国耆卫保险公司有多少保险客户? Clifford补充道:“我相信Old Mutual全球品牌认可度和Old Mutual(百慕大)产品专业知识的结合将在未来的日子里进一步推动公司的成功。” -英国耆卫保险公司有多少保险客户? 随着公司更名而来的是公司网站的全新改版,设计投资选择信息、陈述、销售方案、营销材料和公告板块。 -英国耆卫保险公司有多少保险客户? 在美国购买不到OMNIA投资产品,该产品也不向美国公民或居民以及百慕大居民提供。 -英国耆卫保险公司有多少保险客户? 这些产品不对任何要约未得到批准的区域中的任何人,以及进行此要约或询价为非法行为的个人构成要约或询价。 -英国耆卫保险公司有多少保险客户? 关于Old Mutual(百慕大)公司 -英国耆卫保险公司有多少保险客户? Old Mutual(百慕大)公司总部位于百慕大,公司面向非美国居民及公民以及非百慕大居民,通过遍布世界的各个市场的金融机构开发和销售保险和投资方案。 -英国耆卫保险公司有多少保险客户? 这些方案由Old Mutual(百慕大)公司直接做出,向投资者提供各种投资选择和战略,同时提供死亡和其他受益保证。 -谁知道北京的淡定哥做了什么? 尼日利亚足球队守门员恩耶马被封淡定哥,原因是2010年南非世界杯上1:2落后希腊队时,对方前锋已经突破到禁区,其仍头依门柱发呆,其从容淡定令人吃惊。 -谁知道北京的淡定哥做了什么? 淡定哥 -谁知道北京的淡定哥做了什么? 在2010年6月17日的世界杯赛场上,尼日利亚1比2不敌希腊队,但尼日利亚门将恩耶马(英文名:Vincent Enyeama)在赛场上的“淡定”表现令人惊奇。 -谁知道北京的淡定哥做了什么? 随后,网友将赛场照片发布于各大论坛,恩耶马迅速窜红,并被网友称为“淡定哥”。 -谁知道北京的淡定哥做了什么? 淡定哥 -谁知道北京的淡定哥做了什么? 从网友上传得照片中可以看到,“淡定哥”在面临对方前锋突袭至小禁区之时,还靠在球门柱上发呆,其“淡定”程度的确非一般人所能及。 -谁知道北京的淡定哥做了什么? 恩耶马是尼日利亚国家队的主力守门员,目前效力于以色列的特拉维夫哈普尔队。 -谁知道北京的淡定哥做了什么? 1999年,恩耶马在尼日利亚国内的伊波姆星队开始职业生涯,后辗转恩伊姆巴、Iwuanyanwu民族等队,从07年开始,他为特拉维夫效力。 -谁知道北京的淡定哥做了什么? 恩耶马的尼日利亚国脚生涯始于2002年,截至2010年1月底,他为国家队出场已超过50次。 -谁知道北京的淡定哥做了什么? 当地时间2011年1月4日,国际足球历史与统计协会(IFFHS)公布了2010年度世界最佳门将,恩耶马(尼日利亚,特拉维夫夏普尔)10票排第十一 -谁知道北京的淡定哥做了什么? 此词经国家语言资源监测与研究中心等机构专家审定入选2010年年度新词语,并收录到《中国语言生活状况报告》中。 -谁知道北京的淡定哥做了什么? 提示性释义:对遇事从容镇定、处变不惊的男性的戏称。 -谁知道北京的淡定哥做了什么? 例句:上海现“淡定哥”:百米外爆炸他仍专注垂钓(2010年10月20日腾讯网http://news.qq.com/a/20101020/000646.htm) -谁知道北京的淡定哥做了什么? 2011年度新人物 -谁知道北京的淡定哥做了什么? 1、淡定哥(北京) -谁知道北京的淡定哥做了什么? 7月24日傍晚,北京市出现大范围降雨天气,位于通州北苑路出现积水,公交车也难逃被淹。 -谁知道北京的淡定哥做了什么? 李欣摄图片来源:新华网一辆私家车深陷积水,车主索性盘坐在自己的汽车上抽烟等待救援。 -谁知道北京的淡定哥做了什么? 私家车主索性盘坐在自己的车上抽烟等待救援,被网友称“淡定哥” -谁知道北京的淡定哥做了什么? 2、淡定哥——林峰 -谁知道北京的淡定哥做了什么? 在2011年7月23日的动车追尾事故中,绍兴人杨峰(@杨峰特快)在事故中失去了5位亲人:怀孕7个月的妻子、未出世的孩子、岳母、妻姐和外甥女,他的岳父也在事故中受伤正在治疗。 -谁知道北京的淡定哥做了什么? 他披麻戴孝出现在事故现场,要求将家人的死因弄个明白。 -谁知道北京的淡定哥做了什么? 但在第一轮谈判过后,表示:“请原谅我,如果我再坚持,我将失去我最后的第六个亲人。” -谁知道北京的淡定哥做了什么? 如果他继续“纠缠”铁道部,他治疗中的岳父将会“被死亡”。 -谁知道北京的淡定哥做了什么? 很多博友就此批评杨峰,并讽刺其为“淡定哥”。 -071型船坞登陆舰的北约代号是什么? 071型船坞登陆舰(英语:Type 071 Amphibious Transport Dock,北约代号:Yuzhao-class,中文:玉昭级,或以首舰昆仑山号称之为昆仑山级船坞登陆舰),是中国人民解放军海军隶下的大型多功能两栖船坞登陆舰,可作为登陆艇的母舰,用以运送士兵、步兵战车、主战坦克等展开登陆作战,也可搭载两栖车辆,具备大型直升机起降甲板及操作设施。 -071型船坞登陆舰的北约代号是什么? 071型两栖登陆舰是中国首次建造的万吨级作战舰艇,亦为中国大型多功能两栖舰船的开山之作,也可以说是中国万吨级以上大型作战舰艇的试验之作,该舰的建造使中国海军的两栖舰船实力有了质的提升。 -071型船坞登陆舰的北约代号是什么? 在本世纪以前中国海军原有的两栖舰队以一 -071型船坞登陆舰的北约代号是什么? 早期071模型 -071型船坞登陆舰的北约代号是什么? 千至四千吨级登陆舰为主要骨干,这些舰艇吨位小、筹载量有限,直升机操作能力非常欠缺,舰上自卫武装普遍老旧,对于现代化两栖登陆作战可说有很多不足。 -071型船坞登陆舰的北约代号是什么? 为了应对新时期的国际国内形势,中国在本世纪初期紧急强化两栖作战能力,包括短时间内密集建造072、074系列登陆舰,同时也首度设计一种新型船坞登陆舰,型号为071。[1] -071型船坞登陆舰的北约代号是什么? 在两栖作战行动中,这些舰只不得不采取最危险的 -071型船坞登陆舰的北约代号是什么? 舾装中的昆仑山号 -071型船坞登陆舰的北约代号是什么? 敌前登陆方式实施两栖作战行动,必须与敌人预定阻击力量进行面对面的战斗,在台湾地区或者亚洲其他国家的沿海,几乎没有可用而不设防的海滩登陆地带,并且各国或者地区的陆军在战时,可能会很快控制这些易于登陆的海难和港口,这样就限制住了中国海军两栖登陆部队的实际登陆作战能力。 -071型船坞登陆舰的北约代号是什么? 071型登陆舰正是为了更快和更多样化的登陆作战而开发的新型登陆舰艇。[2] -071型船坞登陆舰的北约代号是什么? 071型两栖船坞登陆舰具有十分良好的整体隐身能力, -071型船坞登陆舰的北约代号是什么? 071型概念图 -071型船坞登陆舰的北约代号是什么? 该舰外部线条简洁干练,而且舰体外形下部外倾、上部带有一定角度的内倾,从而形成雷达隐身性能良好的菱形横剖面。 -071型船坞登陆舰的北约代号是什么? 舰体为高干舷平甲板型,长宽比较小,舰身宽满,采用大飞剪型舰首及楔形舰尾,舰的上层建筑位于舰体中间部位,后部是大型直升机甲板,适航性能非常突出。 -071型船坞登陆舰的北约代号是什么? 顶甲板上各类电子设备和武器系统布局十分简洁干净,各系统的突出物很少。 -071型船坞登陆舰的北约代号是什么? 该舰的两座烟囱实行左右分布式设置在舰体两侧,既考虑了隐身特点,也十分新颖。[3] -071型船坞登陆舰的北约代号是什么? 1号甲板及上层建筑物主要设置有指挥室、控 -071型船坞登陆舰的北约代号是什么? 舰尾俯视 -071型船坞登陆舰的北约代号是什么? 制舱、医疗救护舱及一些居住舱,其中医疗救护舱设置有完备的战场救护设施,可以在舰上为伤病员提供紧急手术和野战救护能力。 -071型船坞登陆舰的北约代号是什么? 2号甲板主要是舰员和部分登陆人员的居住舱、办公室及厨房。 -071型船坞登陆舰的北约代号是什么? 主甲板以下则是登陆舱,分前后两段,前段是装甲车辆储存舱,共两层,可以储存登陆装甲车辆和一些其它物资,在进出口处还设有一小型升降机,用于两层之间的移动装卸用。 -071型船坞登陆舰的北约代号是什么? 前段车辆储存舱外壁左右各设有一折叠式装载舱门,所有装载车辆在码头可通过该门直接装载或者登陆上岸。 -071型船坞登陆舰的北约代号是什么? 后段是一个巨型船坞登陆舱,总长约70米,主要用来停泊大小型气垫登陆艇、机械登陆艇或车辆人员登陆艇。[4] -071型船坞登陆舰的北约代号是什么? 自卫武装方面,舰艏设有一门PJ-26型76mm舰炮( -071型船坞登陆舰的北约代号是什么? 井冈山号舰首主炮 -071型船坞登陆舰的北约代号是什么? 俄罗斯AK-176M的中国仿制版,亦被054A采用) , 四具与052B/C相同的726-4 18联装干扰弹发射器分置于舰首两侧以及上层结构两侧,近迫防御则依赖四座布置于上层结构的AK-630 30mm防空机炮 。 -071型船坞登陆舰的北约代号是什么? 原本071模型的舰桥前方设有一座八联装海红-7短程防空导弹发射器,不过071首舰直到出海试航与2009年4月下旬的海上阅兵式中,都未装上此一武器。 -071型船坞登陆舰的北约代号是什么? 电子装备方面, 舰桥后方主桅杆顶配置一具363S型E/F频2D对空/平面搜索雷达 、一具Racal Decca RM-1290 I频导航雷达,后桅杆顶装备一具拥有球型外罩的364型(SR-64)X频2D对空/对海搜索雷达,此外还有一具LR-66C舰炮射控雷达、一具负责导引AK-630机炮的TR-47C型火炮射控雷达等。[5] -071型船坞登陆舰的北约代号是什么? 071型自卫武装布置 -071型船坞登陆舰的北约代号是什么? 071首舰昆仑山号于2006年6月开 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 竹溪县人大常委会办公室:承担人民代表大会会议、常委会会议、主任会议和常委会党组会议(简称“四会”)的筹备和服务工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责常委会组成人员视察活动的联系服务工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 受主任会议委托,拟定有关议案草案。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担常委会人事任免的具体工作,负责机关人事管理和离退休干部的管理与服务。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担县人大机关的行政事务和后勤保障工作,负责机关的安全保卫、文电处理、档案、保密、文印工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担县人大常委会同市人大常委会及乡镇人大的工作联系。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责信息反馈工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 了解宪法、法律、法规和本级人大及其常委会的决议、决定实施情况及常委会成员提出建议办理情况,及时向常委会和主任会议报告。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担人大宣传工作,负责人大常委会会议宣传的组织和联系。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 组织协调各专门工作委员会开展工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承办上级交办的其他工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 办公室下设五个科,即秘书科、调研科、人事任免科、综合科、老干部科。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 教科文卫工作委员会:负责人大教科文卫工作的日常联系、督办、信息收集反馈和业务指导工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责教科文卫方面法律法规贯彻和人大工作情况的宣传、调研工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担人大常委会教科文卫方面会议议题调查的组织联系和调研材料的起草工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承担教科文卫方面规范性备案文件的初审工作,侧重对教科文卫行政执法个案监督业务承办工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责常委会组成人员和人大代表对教科文卫工作方面检查、视察的组织联系工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承办上级交办的其他工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 代表工作委员会:负责与县人大代表和上级人大代表的联系、情况收集交流工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责《代表法》的宣传贯彻和贯彻实施情况的调查研究工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责县人大代表法律法规和人民代表大会制度知识学习的组织和指导工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责常委会主任、副主任和委员走访联系人大代表的组织、联系工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责组织人大系统的干部培训。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责乡镇人大主席团工作的联系和指导。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责人大代表建议、批评和意见办理工作的联系和督办落实。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责人大代表开展活动的组织、联系工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 承办上级交办的其他工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 财政经济工作委员会:负责人大财政经济工作的日常联系、督办、信息收集反馈和业务指导工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 负责财政经济方面法律法规贯彻和人大工作情况的宣传、调研工作。 -我很好奇竹溪县人大常委会财政经济工作委员会是负责做什么的? 对国民经济计划和财政预算编制情况进行初审。 -我想知道武汉常住人口有多少? 武汉,简称“汉”,湖北省省会。 -我想知道武汉常住人口有多少? 它是武昌、汉口、汉阳三镇统称。 -我想知道武汉常住人口有多少? 世界第三大河长江及其最长支流汉江横贯市区,将武汉一分为三,形成武昌、汉口、汉阳,三镇跨江鼎立的格局。 -我想知道武汉常住人口有多少? 唐朝诗人李白在此写下“黄鹤楼中吹玉笛,江城五月落梅花”,因此武汉自古又称“江城”。 -我想知道武汉常住人口有多少? 武汉是中国15个副省级城市之一,全国七大中心城市之一,全市常住人口858万人。 -我想知道武汉常住人口有多少? 华中地区最大都市,华中金融中心、交通中心、文化中心,长江中下游特大城市。 -我想知道武汉常住人口有多少? 武汉城市圈的中心城市。 -我想知道武汉常住人口有多少? [3]武昌、汉口、汉阳三地被俗称武汉三镇。 -我想知道武汉常住人口有多少? 武汉西与仙桃市、洪湖市相接,东与鄂州市、黄石市接壤,南与咸宁市相连,北与孝感市相接,形似一只自西向东的蝴蝶形状。 -我想知道武汉常住人口有多少? 在中国经济地理圈内,武汉处于优越的中心位置是中国地理上的“心脏”,故被称为“九省通衢”之地。 -我想知道武汉常住人口有多少? 武汉市历史悠久,古有夏汭、鄂渚之名。 -我想知道武汉常住人口有多少? 武汉地区考古发现的历史可以上溯距今6000年的新石器时代,其考古发现有东湖放鹰台遗址的含有稻壳的红烧土、石斧、石锛以及鱼叉。 -我想知道武汉常住人口有多少? 市郊黄陂区境内的盘龙城遗址是距今约3500年前的商朝方国宫城,是迄今中国发现及保存最完整的商代古城之一。 -我想知道武汉常住人口有多少? 现代武汉的城市起源,是东汉末年的位于今汉阳的卻月城、鲁山城,和在今武昌蛇山的夏口城。 -我想知道武汉常住人口有多少? 东汉末年,地方军阀刘表派黄祖为江夏太守,将郡治设在位于今汉阳龟山的卻月城中。 -我想知道武汉常住人口有多少? 卻月城是武汉市区内已知的最早城堡。 -我想知道武汉常住人口有多少? 223年,东吴孙权在武昌蛇山修筑夏口城,同时在城内的黄鹄矶上修筑了一座瞭望塔——黄鹤楼。 -我想知道武汉常住人口有多少? 苏轼在《前赤壁赋》中说的“西望夏口,东望武昌”中的夏口就是指武汉(而当时的武昌则是今天的鄂州)。 -我想知道武汉常住人口有多少? 南朝时,夏口扩建为郢州,成为郢州的治所。 -我想知道武汉常住人口有多少? 隋置江夏县和汉阳县,分别以武昌,汉阳为治所。 -我想知道武汉常住人口有多少? 唐时江夏和汉阳分别升为鄂州和沔州的州治,成为长江沿岸的商业重镇。 -我想知道武汉常住人口有多少? 江城之称亦始于隋唐。 -我想知道武汉常住人口有多少? 两宋时武昌属鄂州,汉阳汉口属汉阳郡。 -我想知道武汉常住人口有多少? 经过发掘,武汉出土了大量唐朝墓葬,在武昌马房山和岳家咀出土了灰陶四神砖以及灰陶十二生肖俑等。 -我想知道武汉常住人口有多少? 宋代武汉的制瓷业发达。 -我想知道武汉常住人口有多少? 在市郊江夏区梁子湖旁发现了宋代瓷窑群100多座,烧制的瓷器品种很多,釉色以青白瓷为主。 -我想知道武汉常住人口有多少? 南宋诗人陆游在经过武昌时,写下“市邑雄富,列肆繁错,城外南市亦数里,虽钱塘、建康不能过,隐然一大都会也”来描写武昌的繁华。 -我想知道武汉常住人口有多少? 南宋抗金将领岳飞驻防鄂州(今武昌)8年,在此兴师北伐。 -我想知道武汉常住人口有多少? 元世祖至元十八年(1281年),武昌成为湖广行省的省治。 -我想知道武汉常住人口有多少? 这是武汉第一次成为一级行政单位(相当于现代的省一级)的治所。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 列夫·达维多维奇,托洛茨基是联共(布)党内和第三国际时期反对派的领导人,托派"第四国际"的创始人和领导人。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 列夫·达维多维奇·托洛茨基 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 列夫·达维多维奇·托洛茨基(俄国与国际历史上最重要的无产阶级革命家之一,二十世纪国际共产主义运动中最具争议的、也是备受污蔑的左翼反对派领袖,他以对古典马克思主义“不断革命论”的独创性发展闻名于世,第三共产国际和第四国际的主要缔造者之一(第三国际前三次代表大会的宣言执笔人)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 在1905年俄国革命中被工人群众推举为彼得堡苏维埃主席(而当时布尔什维克多数干部却还在讨论是否支持苏维埃,这些干部后来被赶回俄国的列宁痛击)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1917年革命托洛茨基率领“区联派”与列宁派联合,并再次被工人推举为彼得格勒苏维埃主席。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 对于十月革命这场20世纪最重大的社会革命,托洛茨基赢得了不朽的历史地位。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 后来成了托洛茨基死敌的斯大林,当时作为革命组织领导者之一却写道:“起义的一切实际组织工作是在彼得格勒苏维埃主席托洛茨基同志直接指挥之下完成的。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 我们可以确切地说,卫戍部队之迅速站在苏维埃方面来,革命军事委员会的工作之所以搞得这样好,党认为这首先要归功于托洛茨基同志。” -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? (值得一提的是,若干年后,当反托成为政治需要时,此类评价都从斯大林文章中删掉了。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? )甚至连后来狂热的斯大林派雅克·沙杜尔,当时却也写道:“托洛茨基在十月起义中居支配地位,是起义的钢铁灵魂。” -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? (苏汉诺夫《革命札记》第6卷P76。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? )不仅在起义中,而且在无产阶级政权的捍卫、巩固方面和国际共产主义革命方面,托洛茨基也作出了极其卓越的贡献(外交官-苏联国际革命政策的负责人、苏联红军缔造者以及共产国际缔造者)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 革命后若干年里,托洛茨基与列宁的画像时常双双并列挂在一起;十月革命之后到列宁病逝之前,布尔什维克历次全国代表大会上,代表大会发言结束均高呼口号:“我们的领袖列宁和托洛茨基万岁!” -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 在欧美共运中托洛茨基的威望非常高。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 后人常常认为托洛茨基只是一个知识分子文人,实际上他文武双全,而且谙熟军事指挥艺术,并且亲临战场。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 正是他作为十月革命的最高军事领袖(在十月革命期间他与士兵一起在战壕里作战),并且在1918年缔造并指挥苏联红军,是一个杰出的军事家(列宁曾对朋友说,除了托洛茨基,谁还能给我迅速地造成一支上百万人的强大军队? -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? )。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 在内战期间,他甚至坐装甲列车冒着枪林弹雨亲临战场指挥作战,差点挨炸死;当反革命军队进攻彼得堡时,当时的彼得堡领导人季诺维也夫吓得半死,托洛茨基却从容不迫指挥作战。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 同时托洛茨基又是一个高明的外交家,他曾强硬地要求英国政府释放因反战宣传被囚禁在英国的俄国流亡革命者,否则就不许英国公民离开俄国,连英国政府方面都觉得此举无懈可击;他并且把居高临下的法国到访者当场轰出他的办公室(革命前法国一直是俄国的头号债主与政治操纵者),却彬彬有礼地欢迎前来缓和冲突的法国大使;而在十月革命前夕,他对工人代表议会质询的答复既保守了即将起义的军事秘密,又鼓舞了革命者的战斗意志,同时严格遵循现代民主与公开原则,这些政治答复被波兰人多伊彻誉为“外交辞令的杰作”(伊·多伊彻的托氏传记<先知三部曲·武装的先知>第九章P335,第十一章P390)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 托洛茨基在国民经济管理与研究工作中颇有创造:是苏俄新经济政策的首先提议者以及社会主义计划经济的首先实践者。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1928年斯大林迟迟开始的计划经济实验,是对1923年以托洛茨基为首的左翼反对派经济纲领的拙劣剽窃和粗暴翻版。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 因为统治者的政策迟到,使得新经济政策到1928年已产生了一个威胁政权生存的农村资产阶级,而苏俄工人阶级国家不得不强力解决——而且是不得不借助已蜕化为官僚集团的强力来解决冲突——结果导致了1929年到30年代初的大饥荒和对农民的大量冤枉错杀。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 另外,他还对文学理论有很高的造诣,其著作<文学与革命>甚至影响了整整一代的国际左翼知识分子(包括中国的鲁迅、王实味等人)。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 他在哈佛大学图书馆留下了100多卷的<托洛茨基全集>,其生动而真诚的自传和大量私人日记、信件,给人留下了研究人类生活各个方面的宝贵财富,更是追求社会进步与解放的历史道路上的重要知识库之一。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 托洛茨基1879年10月26日生于乌克兰赫尔松县富裕农民家庭,祖籍是犹太人。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 原姓布隆施泰因。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1896年开始参加工人运动。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1897年 ,参加建立南俄工人协会 ,反对沙皇专制制度。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1898年 在尼古拉也夫组织工人团体,被流放至西伯利亚。 -列夫·达维多维奇·托洛茨基是什么时候开始参加工人运动的? 1902年秋以署名托洛茨基之假护照逃到伦敦,参加V.I.列宁、G.V.普列汉诺夫等人主编的<火星报>的工作。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥,位于洞庭湖与长江交汇处,东接岳阳市区洞庭大道和107国道、京珠高速公路,西连省道306线,是国内目前最长的内河公路桥。 -谁知道洞庭湖大桥有多长? 路桥全长10173.82m,其中桥长5747.82m,桥宽20m,西双向四车道,是我国第一座三塔双索面斜拉大桥,亚洲首座不等高三塔双斜索面预应力混凝土漂浮体系斜拉桥。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥是我国最长的内河公路桥,大桥横跨东洞庭湖区,全长10174.2米,主桥梁长5747.8米。 -谁知道洞庭湖大桥有多长? 大桥的通车使湘、鄂间公路干线大为畅通,并为洞庭湖区运输抗洪抢险物资提供了一条快速通道该桥设计先进,新颖,造型美观,各项技求指标先进,且为首次在国内特大型桥梁中采用主塔斜拉桥结构体系。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥是湖区人民的造福桥,装点湘北门户的形象桥,对优化交通网络绪构,发展区域经济,保障防汛救灾,缩短鄂、豫、陕等省、市西部车辆南下的运距,拓展岳阳城区的主骨架,提升岳阳城市品位,增强城市辐射力,有着十分重要的意义。 -谁知道洞庭湖大桥有多长? 自1996年12月开工以来,共有10支施工队伍和两支监理队伍参与了大桥的建设。 -谁知道洞庭湖大桥有多长? 主桥桥面高52米(黄海),设计通航等级Ⅲ级。 -谁知道洞庭湖大桥有多长? 主桥桥型为不等高三塔、双索面空间索、全飘浮体系的预应力钢筋混凝土肋板梁式结构的斜拉桥,跨径为130+310+310+130米。 -谁知道洞庭湖大桥有多长? 索塔为双室宝石型断面,中塔高为125.684米,两边塔高为99.311米。 -谁知道洞庭湖大桥有多长? 三塔基础为3米和3.2米大直径钻孔灌注桩。 -谁知道洞庭湖大桥有多长? 引桥为连续梁桥,跨径20至50米,基础直径为1.8和2.5米钻孔灌注桩。 -谁知道洞庭湖大桥有多长? 该桥设计先进、新颖、造型美观,各项技求指标先进,且为首次在国内特大型桥梁中采用主塔斜拉桥结构体系,岳阳洞庭湖大桥是我国首次采用不等高三塔斜拉桥桥型的特大桥,设计先进,施工难度大位居亚洲之首,是湖南省桥梁界的一大科研项目。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥设计为三塔斜拉桥,空间双斜面索,主梁采用前支点挂篮施工,并按各种工况模拟挂篮受力进行现场试验,获得了大量有关挂篮受力性能和实际刚度的计算参数,作为施工控制参数。 -谁知道洞庭湖大桥有多长? 利用组合式模型单元,推导了斜拉桥分离式双肋平板主梁的单元刚度矩阵,并进行了岳阳洞庭湖大桥的空间受力分析,结果表明此种单元精度满足工程要求,同时在施工工艺方面也积累了成功经验。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥的通车使湘、鄂间公路干线大为畅通,并为洞庭湖区抗洪抢险物资运输提供了一条快速通道。 -谁知道洞庭湖大桥有多长? 湖大桥设计先进,造型美丽,科技含量高。 -谁知道洞庭湖大桥有多长? 洞庭大桥还是一道美丽的风景线,大桥沿岸风景与岳阳楼,君山岛、洞庭湖等风景名胜融为一体,交相辉映,成为世人了解岳阳的又一崭新窗口,也具有特别旅游资源。 -谁知道洞庭湖大桥有多长? 洞庭湖大桥多塔斜拉桥新技术研究荣获国家科学技术进步二等奖、湖南省科学技术进步一等奖,并获第五届詹天佑大奖。 -谁知道洞庭湖大桥有多长? 大桥在中国土木工程学会2004年第16届年会上入选首届《中国十佳桥梁》,名列斜拉桥第二位。 -谁知道洞庭湖大桥有多长? 2001年荣获湖南省建设厅优秀设计一等奖,省优秀勘察一等奖。 -谁知道洞庭湖大桥有多长? 2003年荣获国家优秀工程设计金奖, "十佳学术活动"奖。 -天气预报员的布景师是谁? 芝加哥天气预报员大卫(尼古拉斯·凯奇),被他的粉丝们热爱,也被诅咒--这些人在天气不好的时候会迁怒于他,而大部分时候,大卫都是在预报坏天气。 -天气预报员的布景师是谁? ?不过,这也没什么,当一家国家早间新闻节目叫他去面试的时候,大卫的事业似乎又将再创新高。 -天气预报员的布景师是谁? 芝加哥天气预报员大卫(尼古拉斯·凯奇),被他的粉丝们热爱,也被诅咒--这些人在天气不好的时候会迁怒于他,而大部分时候,大卫都是在预报坏天气。 -天气预报员的布景师是谁? 不过,这也没什么,当一家国家早间新闻节目叫他去面试的时候,大卫的事业似乎又将再创新高。 -天气预报员的布景师是谁? 在电视节目上,大卫永远微笑,自信而光鲜,就像每一个成功的电视人一样,说起收入,他也绝对不落人后。 -天气预报员的布景师是谁? 不过,大卫的个人生活可就不那么如意了。 -天气预报员的布景师是谁? 与妻子劳伦(霍普·戴维斯)的离婚一直让他痛苦;儿子迈克吸大麻上瘾,正在进行戒毒,可戒毒顾问却对迈克有着异样的感情;女儿雪莉则体重惊人,总是愁眉苦脸、孤独寂寞;大卫的父亲罗伯特(迈克尔·凯恩),一个世界著名的小说家,虽然罗伯特不想再让大卫觉得负担过重,可正是他的名声让大卫的一生都仿佛处在他的阴影之下,更何况,罗伯特就快重病死了。 -天气预报员的布景师是谁? 和妻子的离婚、父亲的疾病、和孩子之间完全不和谐的关系,都让大卫每天头疼,而每次当他越想控制局面,一切就越加复杂。 -天气预报员的布景师是谁? 然而就在最后人们再也不会向他扔快餐,或许是因为他总是背着弓箭在大街上走。 -天气预报员的布景师是谁? 最后,面对那份高额工作的接受意味着又一个新生活的开始。 -天气预报员的布景师是谁? 也许,生活就像天气,想怎么样就怎么样,完全不可预料。 -天气预报员的布景师是谁? 导 演:戈尔·维宾斯基 Gore Verbinski -天气预报员的布景师是谁? 编 剧:Steve Conrad .....(written by) -天气预报员的布景师是谁? 演 员:尼古拉斯·凯奇 Nicolas Cage .....David Spritz -天气预报员的布景师是谁? 尼古拉斯·霍尔特 Nicholas Hoult .....Mike -天气预报员的布景师是谁? 迈克尔·凯恩 Michael Caine .....Robert Spritzel -天气预报员的布景师是谁? 杰蒙妮·德拉佩纳 Gemmenne de la Peña .....Shelly -天气预报员的布景师是谁? 霍普·戴维斯 Hope Davis .....Noreen -天气预报员的布景师是谁? 迈克尔·瑞斯玻利 Michael Rispoli .....Russ -天气预报员的布景师是谁? 原创音乐:James S. Levine .....(co-composer) (as James Levine) -天气预报员的布景师是谁? 汉斯·兹米尔 Hans Zimmer -天气预报员的布景师是谁? 摄 影:Phedon Papamichael -天气预报员的布景师是谁? 剪 辑:Craig Wood -天气预报员的布景师是谁? 选角导演:Denise Chamian -天气预报员的布景师是谁? 艺术指导:Tom Duffield -天气预报员的布景师是谁? 美术设计:Patrick M. Sullivan Jr. .....(as Patrick Sullivan) -天气预报员的布景师是谁? 布景师 :Rosemary Brandenburg -天气预报员的布景师是谁? 服装设计:Penny Rose -天气预报员的布景师是谁? 视觉特效:Charles Gibson -天气预报员的布景师是谁? David Sosalla .....Pacific Title & Art Studio -韩国国家男子足球队教练是谁? 韩国国家足球队,全名大韩民国足球国家代表队(???? ?? ?????),为韩国足球协会所于1928年成立,并于1948年加入国际足球协会。 -韩国国家男子足球队教练是谁? 韩国队自1986年世界杯开始,从未缺席任何一届决赛周。 -韩国国家男子足球队教练是谁? 在2002年世界杯,韩国在主场之利淘汰了葡萄牙、意大利及西班牙三支欧洲强队,最后夺得了殿军,是亚洲球队有史以来最好成绩。 -韩国国家男子足球队教练是谁? 在2010年世界杯,韩国也在首圈分组赛压倒希腊及尼日利亚出线次圈,再次晋身十六强,但以1-2败给乌拉圭出局。 -韩国国家男子足球队教练是谁? 北京时间2014年6月27日3时,巴西世界杯小组赛H组最后一轮赛事韩国对阵比利时,韩国队0-1不敌比利时,3场1平2负积1分垫底出局。 -韩国国家男子足球队教练是谁? 球队教练:洪明甫 -韩国国家男子足球队教练是谁? 韩国国家足球队,全名大韩民国足球国家代表队(韩国国家男子足球队???? ?? ?????),为韩国足球协会所于1928年成立,并于1948年加入国际足联。 -韩国国家男子足球队教练是谁? 韩国队是众多亚洲球队中,在世界杯表现最好,他们自1986年世界杯开始,从未缺席任何一届决赛周。 -韩国国家男子足球队教练是谁? 在2002年世界杯,韩国在主场之利淘汰了葡萄牙、意大利及西班牙三支欧洲强队,最后夺得了殿军,是亚洲球队有史以来最好成绩。 -韩国国家男子足球队教练是谁? 在2010年世界杯,韩国也在首圈分组赛压倒希腊及尼日利亚出线次圈,再次晋身十六强,但以1-2败给乌拉圭出局。 -韩国国家男子足球队教练是谁? 2014年世界杯外围赛,韩国在首轮分组赛以首名出线次轮分组赛,与伊朗、卡塔尔、乌兹别克以及黎巴嫩争逐两个直接出线决赛周资格,最后韩国仅以较佳的得失球差压倒乌兹别克,以小组次名取得2014年世界杯决赛周参赛资格,也是韩国连续八次晋身世界杯决赛周。 -韩国国家男子足球队教练是谁? 虽然韩国队在世界杯成绩为亚洲之冠,但在亚洲杯足球赛的成绩却远不及世界杯。 -韩国国家男子足球队教练是谁? 韩国只在首两届亚洲杯(1956年及1960年)夺冠,之后五十多年未能再度称霸亚洲杯,而自1992年更从未打入过决赛,与另一支东亚强队日本近二十年来四度在亚洲杯夺冠成强烈对比。[1] -韩国国家男子足球队教练是谁? 人物简介 -韩国国家男子足球队教练是谁? 车范根(1953年5月22日-)曾是大韩民国有名的锋线选手,他被欧洲媒体喻为亚洲最佳输出球员之一,他也被认为是世界最佳足球员之一。 -韩国国家男子足球队教练是谁? 他被国际足球史料与数据协会评选为20世纪亚洲最佳球员。 -韩国国家男子足球队教练是谁? 他在85-86赛季是德甲的最有价值球员,直到1999年为止他都是德甲外国球员入球纪录保持者。 -韩国国家男子足球队教练是谁? 德国的球迷一直没办法正确说出他名字的发音,所以球车范根(左)迷都以炸弹车(Cha Boom)称呼他。 -韩国国家男子足球队教练是谁? 这也代表了他强大的禁区得分能力。 -韩国国家男子足球队教练是谁? 职业生涯 -韩国国家男子足球队教练是谁? 车范根生于大韩民国京畿道的华城市,他在1971年于韩国空军俱乐部开始了他的足球员生涯;同年他入选了韩国19岁以下国家足球队(U-19)。 -韩国国家男子足球队教练是谁? 隔年他就加入了韩国国家足球队,他是有史以来加入国家队最年轻的球员。 -韩国国家男子足球队教练是谁? 车范根在27岁时前往德国发展,当时德甲被认为是世界上最好的足球联赛。 -韩国国家男子足球队教练是谁? 他在1978年12月加入了达姆施塔特,不过他在那里只待了不到一年就转到当时的德甲巨人法兰克福。 -韩国国家男子足球队教练是谁? 车范根很快在新俱乐部立足,他帮助球队赢得79-80赛季的欧洲足协杯。 -韩国国家男子足球队教练是谁? 在那个赛季过后,他成为德甲薪水第三高的球员,不过在1981年对上勒沃库森的一场比赛上,他的膝盖严重受伤,几乎毁了他的足球生涯。 -韩国国家男子足球队教练是谁? 在1983年车范根转投勒沃库森;他在这取得很高的成就,他成为85-86赛季德甲的最有价值球员,并且在1988年帮助球队拿下欧洲足协杯,也是他个人第二个欧洲足协杯。 -韩国国家男子足球队教练是谁? 他在决赛对垒西班牙人扮演追平比分的关键角色,而球会才在点球大战上胜出。 -韩国国家男子足球队教练是谁? 车范根在1989年退休,他在308场的德甲比赛中进了98球,一度是德甲外国球员的入球纪录。 -韩国国家男子足球队教练是谁? 执教生涯 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学,简称台湾科大、台科大或台科,是位于台湾台北市大安区的台湾第一所高等技职体系大专院校,现为台湾最知名的科技大学,校本部比邻国立台湾大学。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 该校已于2005年、2008年持续入选教育部的“发展国际一流大学及顶尖研究中心计划”。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? “国立”台湾工业技术学院成立于“民国”六十三年(1974)八月一日,为台湾地区第一所技术职业教育高等学府。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 建校之目的,在因应台湾地区经济与工业迅速发展之需求,以培养高级工程技术及管理人才为目标,同时建立完整之技术职业教育体系。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? “国立”台湾工业技术学院成立于“民国”六十三年(1974)八月一日,为台湾地区第一所技术职业教育高等学府。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 建校之目的,在因应台湾地区经济与工业迅速发展之需求,以培养高级工程技术及管理人才为目标,同时建立完整之技术职业教育体系。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 本校校地约44.5公顷,校本部位于台北市基隆路四段四十三号,。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 民国68年成立硕士班,民国71年成立博士班,现有大学部学生5,664人,研究生4,458人,专任教师451位。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 2001年在台湾地区教育部筹划之研究型大学(“国立”大学研究所基础教育重点改善计画)中,成为全台首批之9所大学之一 。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 自2005年更在“教育部”所推动“五年五百亿 顶尖大学”计划下,遴选为适合发展成“顶尖研究中心”的11所研究型大学之一。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学部设有二年制、四年制及工程在职人员进修班等三种学制;凡二专、三专及五专等专科学校以上之毕业生,皆可以报考本校大学部二年制,而高职、高中毕业生,可以报考本校大学部四年制。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 工业管理、电子工程、机械工程、营建工程及应用外语系等,则设有在职人员进修班学制,其招生对象为在职人员,利用夜间及暑假期间上课。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 凡在本校大学部修毕应修学分且成绩及格者皆授予学士学位。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学目前设有工程、电资、管理、设计、人文社会及精诚荣誉等六个学院,分别有机械、材料科学与工程、营建、化工、电子、电机、资工、工管、企管、资管、建筑、工商业设计、应用外语等13个系及校内招生之财务金融学士学位学程、科技管理学士学位学程;全校、工程、电资、管理、创意设计等五个不分系菁英班及光电研究所、管理研究所、财务金融研究所、科技管理研究所、管理学院MBA、数位学习教育研究所、医学工程研究所、自动化及控制研究所、工程技术研究所、专利研究所等独立研究所,此外尚有人文学科负责人文及社会类等课程之教学,通识学科负责法律、音乐、环保类等课程之教学,以及师资培育中心专以培养学生未来担任中等学校工、商、管理、设计等科之合格教师,合计23个独立系所、师资培育中心、人文学科及通识学科等教学单位。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 国立台湾科技大学至今各系所毕业校友已达约56,456位,毕业生出路包含出国继续深造、在台深造以及投身于产业界。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 由于实作经验丰富,理论基础完备,工作态度认真,毕业校友担任政府要职、大学教授、大学校长及企业主管者众多,深受各界的肯定。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 工商业设计系副教授孙春望与硕一生全明远耗时两个月自制之三分钟动画短片“立体悲剧”。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 本片入选有“动画奥斯卡”之称的“ACM SIGGRAPH”国际动画展,并获得观众票选第一名,这也是台湾首次入选及获奖的短片。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 击败了好莱坞知名导演史蒂芬·史匹柏的“世界大战”、乔治卢卡斯的“星际大战三部曲”、梦工厂出品的动画“马达加斯加”、军机缠斗片“机战未来”及美国太空总署、柏克莱加州大学等好莱坞名片及顶尖学术单位制作的短片。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 2009年荣获有工业设计界奥斯卡奖之称的“德国iF设计大奖”国立台湾科技大学设计学院获得大学排名的全球第二,仅次于韩国三星美术设计学院“SADI”。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 总体排名 依据《泰晤士高等教育》(THES-QS)在2009年的世界大学排名调查,台科大排名全世界第351名,在台湾所有大学中排名第五,仅次于台大,清大,成大及阳明,并且是台湾唯一进入世界四百大名校的科技大学。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 依据在欧洲拥有广大声誉的“Eduniversal商学院排名网”2008年的资料,台湾有七所大学的商管学院被分别列入世界1000大商学院,其中台科大位在“卓越商学院”(EXCELLENT Business Schools,国内主要)之列,“推荐程度”(Recommendation Rate)为全台第四,仅次于台大、政大、中山,与交大并列。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 目前设有工程、电资、管理、设计、人文社会及精诚荣誉学院等六个学院。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? 预计于竹北新校区设立产学合作学院及应用理学院。 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●台湾建筑科技中心 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●智慧型机械人研究中心科技成果展示(15张) -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●台湾彩卷与博彩研究中心 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●电力电子技术研发中心 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●NCP-Taiwan办公室 -国立台湾科技大学副教授自制的动画“立体悲剧”入选的“ACM SIGGRAPH”国际动画展还有什么别称? ●资通安全研究与教学中心 -在日本,神道最初属于什么信仰? 神道又称天道,语出《易经》“大观在上,顺而巽,中正以观天下。 -在日本,神道最初属于什么信仰? 观,盥而不荐,有孚顒若,下观而化也。 -在日本,神道最初属于什么信仰? 观天之神道,而四时不忒,圣人以神道设教,而天下服矣”。 -在日本,神道最初属于什么信仰? 自汉以降,神道又指“墓前开道,建石柱以为标”。 -在日本,神道最初属于什么信仰? 在中医中,神道,经穴名。 -在日本,神道最初属于什么信仰? 出《针灸甲乙经》。 -在日本,神道最初属于什么信仰? 别名冲道。 -在日本,神道最初属于什么信仰? 属督脉。 -在日本,神道最初属于什么信仰? 宗教中,神道是日本的本土传统民族宗教,最初以自然崇拜为主,属于泛灵多神信仰(精灵崇拜),视自然界各种动植物为神祇。 -在日本,神道最初属于什么信仰? 神道又称天道,语出《易经》“大观在上,顺而巽,中正以观天下。 -在日本,神道最初属于什么信仰? 观,盥而不荐,有孚顒若,下观而化也。 -在日本,神道最初属于什么信仰? 观天之神道,而四时不忒,圣人以神道设教,而天下服矣”。 -在日本,神道最初属于什么信仰? 自汉以降,神道又指“墓前开道,建石柱以为标”。 -在日本,神道最初属于什么信仰? 在中医中,神道,经穴名。 -在日本,神道最初属于什么信仰? 出《针灸甲乙经》。 -在日本,神道最初属于什么信仰? 别名冲道。 -在日本,神道最初属于什么信仰? 属督脉。 -在日本,神道最初属于什么信仰? 宗教中,神道是日本的本土传统民族宗教,最初以自然崇拜为主,属于泛灵多神信仰(精灵崇拜),视自然界各种动植物为神祇。 -在日本,神道最初属于什么信仰? 谓鬼神赐福降灾神妙莫测之道。 -在日本,神道最初属于什么信仰? 《易·观》:“观天之神道,而四时不忒,圣人以神道设教,而天下服矣。” -在日本,神道最初属于什么信仰? 孔颖达 疏:“微妙无方,理不可知,目不可见,不知所以然而然,谓之神道。” -在日本,神道最初属于什么信仰? 《文选·王延寿<鲁灵光殿赋>》:“敷皇极以创业,协神道而大宁。” -在日本,神道最初属于什么信仰? 张载 注:“协和神明之道,而天下大宁。” -在日本,神道最初属于什么信仰? 南朝 梁 刘勰 《文心雕龙·正纬》:“夫神道阐幽,天命微显。” -在日本,神道最初属于什么信仰? 鲁迅 《中国小说史略》第五篇:“﹝ 干宝 ﹞尝感於其父婢死而再生,及其兄气绝复苏,自言见天神事,乃撰《搜神记》二十卷,以‘发明神道之不诬’。” -在日本,神道最初属于什么信仰? 神道设教 观卦里面蕴含着《易经》固有的诸如神道设教、用舍行藏、以德化民等思想,是孔子把这些思想发掘出来。 -在日本,神道最初属于什么信仰? 「据此是孔子见当时之人,惑于吉凶祸福,而卜筮之史,加以穿凿傅会,故演易系辞,明义理,切人事,借卜筮以教后人,所谓以神道设教,其所发明者,实即羲文之义理,而非别有义理,亦非羲文并无义理,至孔子始言义理也,当即朱子之言而小变之曰,易为卜筮作,实为义理作,伏羲文王之易,有占而无文,与今人用火珠林起课者相似,孔子加卦爻辞如签辞,纯以理言,实即羲文本意,则其说分明无误矣。」 -在日本,神道最初属于什么信仰? 孔子所发掘的《易经》思想与孔子在《论语》书中表现出来的思想完全一致。 -在日本,神道最初属于什么信仰? 《易传》的思想反映了孔子的思想,这个思想是《周易》的,也是孔子的。 -在日本,神道最初属于什么信仰? 在《周易》和孔子看来,神不是有意识的人格化的上帝。 -奥林匹克里昂获得了几连霸? 里昂 Lyon 全名 Olympique lyonnais 绰号 Les Gones、OL 成立 1950年 城市 法国,里昂 主场 热尔兰球场(Stade Gerland) 容纳人数 41,044人 主席 奥拉斯 主教练 雷米·加尔德 联赛 法国足球甲级联赛 2013–14 法甲,第 5 位 网站 官方网站 主场球衣 客场球衣 第三球衣 日尔兰体育场 奥林匹克里昂(Olympique lyonnais,简称:OL及Lyon,中文简称里昂)是一间位于法国东南部罗纳-阿尔卑斯区的里昂市的足球会,成立于1950年8月3日,前身为里昂·奥林匹克(Lyon Olympique)体育俱乐部其中一个分支的足球队,1889年离开体育俱乐部自立门户成立新俱乐部,但官方网站表示俱乐部于1950年正式成立。 -奥林匹克里昂获得了几连霸? 现时在法国足球甲级联赛比赛,俱乐部同时设立男子及女子足球队。 -奥林匹克里昂获得了几连霸? 里昂是首届法国足球甲级联赛成员之一,可惜名列第十五位而降落乙组,1951年以乙级联赛冠军获得创会后首次锦标。 -奥林匹克里昂获得了几连霸? 球队在法国足球史上没有取得辉煌成绩,比较优异的算是六十年代曾杀入欧洲杯赛冠军杯四强,及3度晋身法国杯决赛并2次成功获冠。 -奥林匹克里昂获得了几连霸? 直至九十年代末里昂由辛天尼带领,先连续取得联赛头三名,到2002年终于首次登上法国顶级联赛冠军宝座,同年勒冈(Paul Le Guen)接替执教法国国家足球队的辛天尼,他其后继续带领里昂保持气势,加上队中球员小儒尼尼奧、迪亚拉、克里斯蒂亞諾·馬克斯·戈麥斯、迈克尔·埃辛、西德尼·戈武及门将格雷戈里·库佩表现突出,2003年至2005年横扫3届联赛冠军,创下连续四年夺得联赛锦标,平了1960年代末圣艾蒂安及1990年代初马赛的四连冠纪录。 -奥林匹克里昂获得了几连霸? 2005年前利物浦主教练热拉尔·霍利尔重返法国担任新任主教练,并加入葡萄牙中场蒂亚戈,和前巴伦西亚前锋约翰·卡鲁。 -奥林匹克里昂获得了几连霸? 他亦成功带领里昂赢得一届法甲冠军。 -奥林匹克里昂获得了几连霸? 2007年里昂成为首支上市的法国足球俱乐部,招股价21至24.4欧元,发行370万股,集资8400万欧元[1]。 -奥林匹克里昂获得了几连霸? 2007年4月21日,联赛次名图卢兹二比三不敌雷恩,令处于榜首的里昂领先次席多达17分距离,里昂因此提前六轮联赛庆祝俱乐部连续第六年夺得联赛冠军,亦是欧洲五大联赛(英格兰、德国、西班牙、意大利及法国)历史上首支联赛六连冠队伍[2]。 -奥林匹克里昂获得了几连霸? 在2007-08年赛季,里昂再一次成功卫冕联赛锦标,达成七连霸伟业。 -奥林匹克里昂获得了几连霸? 不过在2008-09赛季,里昂排名法甲第三位,联赛冠军被波尔多所获得。 -奥林匹克里昂获得了几连霸? 于2010年4月,里昂以两回合3比2的比分于欧洲冠军联赛击败波尔多跻身四强,此乃里昂首次晋级此项顶级杯赛的四强阶段。 -奥林匹克里昂获得了几连霸? 粗体字为新加盟球员 -奥林匹克里昂获得了几连霸? 以下球员名单更新于2014年8月27日,球员编号参照 官方网站,夏季转会窗为6月9日至8月31日 -火柴人刺杀行动怎么才能过关? 移动鼠标控制瞄准,点击鼠标左键进行射击。 -火柴人刺杀行动怎么才能过关? 游戏加载完成后点击STARTGAME-然后点击STARTMISSION即可开始游戏。 -火柴人刺杀行动怎么才能过关? 这里不仅仅考验的是你的枪法而且最重要的是你的智慧,喜欢火柴人类型游戏的玩家可以进来小试身手。 -火柴人刺杀行动怎么才能过关? 控制瞄准,刺杀游戏中的目标人物即可过关哦。 -你知道2月14日西方情人节是因何起源的吗? 情人节(英语:Valentine's Day),情人节的起源有多个版本,其中一个说法是在公元三世纪,古罗马暴君为了征召更多士兵,禁止婚礼,一名叫瓦伦丁Valentine的修士不理禁令,秘密替人主持婚礼,结果被收监,最后处死。 -你知道2月14日西方情人节是因何起源的吗? 而他死的那天就是2月14日,为纪念Valentine的勇敢精神,人们将每年的2月14日定为Valentine的纪念日。 -你知道2月14日西方情人节是因何起源的吗? 因此成了后来的“情人节”。 -你知道2月14日西方情人节是因何起源的吗? 另外,据记载,教宗在公元496年废除牧神节,把2月14日定为圣瓦伦丁日,即是St.Valentine's Day,后来成为是西方的节日之一。 -你知道2月14日西方情人节是因何起源的吗? 中文名称:情人节 -你知道2月14日西方情人节是因何起源的吗? 外文名称:Valentine‘s Day -你知道2月14日西方情人节是因何起源的吗? 别名:情人节圣瓦伦丁节 -你知道2月14日西方情人节是因何起源的吗? 公历日期:2月14日 -你知道2月14日西方情人节是因何起源的吗? 起源时间:公元270年2月14日 -你知道2月14日西方情人节是因何起源的吗? 起源事件:人们为了纪念为情人做主而牺牲的瓦伦丁神父,把他遇害的那一天(2月14日)称为情人节。 -你知道2月14日西方情人节是因何起源的吗? 地区:欧美地区 -你知道2月14日西方情人节是因何起源的吗? 宗教:基督教 -你知道2月14日西方情人节是因何起源的吗? 其他信息:西方的传统节日之一。 -你知道2月14日西方情人节是因何起源的吗? 男女在这一天互送礼物(如贺卡和玫瑰花等)用以表达爱意或友好。 -你知道2月14日西方情人节是因何起源的吗? 据台湾“今日台湾人讨厌情人节新闻网”报道,西洋情人节即将来到,求职网进行“办公室恋情及情人节调查”发现,在目前全台上班族的感情状态中,有情人相伴的比率约5成5,4成5的上班族单身;较出乎意料的结果是,情人节以近3成(28%)的占比,登上最讨厌的节日第一名,端午节以24.3%居第二;农历年则以18.2%居第三;第四名是圣诞节,占12.4%。 -你知道2月14日西方情人节是因何起源的吗? 调查指出,情人节对单身族来说,不仅成为压力,也显得更加孤单,在情人节当天,单身的上班族有将近4成(39.1%)的人在家看电视度过,近两成(18.7%)上网聊天,有1成4(14.8%)的人,不畏满街闪光,勇气十足出门看电影,近1成(9.7%)的上班族选择留在公司加班;另外有 5.4%的人,会在情人节当天积极参加联谊,希望能改变自己的感情状态。 -你知道2月14日西方情人节是因何起源的吗? 情侣们在情人节当天,庆祝方式以吃浪漫大餐最多(37.1%),不过有近3成(27%)的情侣,在情人节当天不会特别庆祝情人节,且这个比率远比第三名的旅游(占比11.5%)高出1倍以上。 -你知道2月14日西方情人节是因何起源的吗? 在情人节当天庆祝的开销上,可以说是小资男女当道,选择1000元(新台币,下同)以内的上班族最多占33.1%,情人节当天的花费上班族的平均花费是2473元,大手笔花费上万元以上庆祝情人节的,占比只有2.5%。 -你知道2月14日西方情人节是因何起源的吗? 情人节的起源众说纷纭,而为纪念罗马教士瓦伦丁是其中一个普遍的说法。 -你知道2月14日西方情人节是因何起源的吗? 据《世界图书百科全书》(World Book Encyclopedia)数据指出:“在公元200年时期,罗马皇帝克劳狄二世禁止年轻男子结婚。 -你知道2月14日西方情人节是因何起源的吗? 他认为未婚男子可以成为更优良的士兵。 -你知道2月14日西方情人节是因何起源的吗? 一位名叫瓦伦丁的教士违反了皇帝的命令,秘密为年轻男子主持婚礼,引起皇帝不满,结果被收监,据说瓦伦丁于公元269年2月14日被处决。 -你知道2月14日西方情人节是因何起源的吗? 另外,据《天主教百科全书》(The Catholic情人节 Encyclopedia)指出,公元496年,教宗圣基拉西乌斯一世在公元第五世纪末叶废除了牧神节,把2月14日定为圣瓦伦丁日。” -你知道2月14日西方情人节是因何起源的吗? 这个节日现今以“圣瓦伦丁节”——亦即情人节的姿态盛行起来。 -你知道2月14日西方情人节是因何起源的吗? 但是在第2次梵蒂冈大公会议后,1969年的典礼改革上,整理了一堆在史实上不确定是否真实存在的人物以后,圣瓦伦丁日就被废除了。 -你知道2月14日西方情人节是因何起源的吗? 现在天主教圣人历已经没有圣瓦伦丁日(St. Valentine's Day)。 -你知道2月14日西方情人节是因何起源的吗? 根据《布卢姆尔的警句与寓言辞典》记载:“圣瓦伦丁是个罗马教士,由于援助受逼害的基督徒而身陷险境,后来他归信基督教,最后被处死,卒于二月十四日”古代庆祝情人节的习俗与瓦伦丁拉上关系,可能是纯属巧合而已。 -你知道2月14日西方情人节是因何起源的吗? 事实上,这个节日很可能与古罗马的牧神节或雀鸟交配的季节有关。 -你知道2月14日西方情人节是因何起源的吗? 情人节的特色是情侣互相馈赠礼物。 -你知道2月14日西方情人节是因何起源的吗? 时至今日,人们则喜欢以情人卡向爱人表达情意。 -防卫大学每年招收多少学生? 防卫大学的前身是保安大学。 -防卫大学每年招收多少学生? 防卫大学是日本自卫队培养陆、海、空三军初级军官的学校,被称为日军"军官的摇篮"。 -防卫大学每年招收多少学生? 防卫大学是日军的重点院校。 -防卫大学每年招收多少学生? 日本历届内阁首相都要到防卫大学视察"训示",并亲自向学生颁发毕业证书。 -防卫大学每年招收多少学生? 日军四分之一的军官、三分之一的将官从这里走出。 -防卫大学每年招收多少学生? 防卫大学毕业生已成为日军军官的中坚力量。 -防卫大学每年招收多少学生? 防卫大学每年从地方招收18岁至21岁的应届高中毕业生和同等学历的青年。 -防卫大学每年招收多少学生? 每年招生名额为530名。 -防卫大学每年招收多少学生? 1950年 8月,日本组建警察预备队,1952年改为保安队。 -防卫大学每年招收多少学生? 为了充实保安队干部队伍,提高干部军政素质,1953年4月成立了保安大学,校址设在三浦半岛的久里滨。 -防卫大学每年招收多少学生? 1954年7月1日保安厅改为防卫厅。 -防卫大学每年招收多少学生? 在保安队基础上,日本建立了陆、海、空三军自卫队,保安大学遂改名为防卫大学,1955年迁至三浦半岛东南方的小原台。 -防卫大学每年招收多少学生? 学校直属防卫厅领导。 -防卫大学每年招收多少学生? 防卫大学的教育方针是:要求学生德智体全面发展,倡导学生崇尚知识和正义,培养学生具有指挥各种部队的能力。 -防卫大学每年招收多少学生? 防卫大学每年招生名额为530名,其中陆军300名,海军100名,空军130名。 -防卫大学每年招收多少学生? 根据自卫队向妇女敞开军官大门的决定,防卫大学1992年首次招收女学员35名。 -防卫大学每年招收多少学生? 考试分两次进行。 -防卫大学每年招收多少学生? 第一次,每年11月份进行学科考试;第二次,12月份进行口试和体检。 -防卫大学每年招收多少学生? 学校按陆、海、空三军分别设大学本科班和理工科研究生班。 -防卫大学每年招收多少学生? 本科班学制4年,又分为理工和人文社会学两大科。 -防卫大学每年招收多少学生? 学员入学后先分科,530人中有460人专攻理科,70人专攻文科。 -防卫大学每年招收多少学生? 第1学年按专科学习一般大学课程和一般军事知识。 -防卫大学每年招收多少学生? 第2学年以后在军事上开始区分军种,学员分别学习陆、海、空军的专门课程。 -防卫大学每年招收多少学生? 文化课和军事课的比例是6:l。 -防卫大学每年招收多少学生? 文化课程有人文、社会、自然、外语、电气工程、机械工程、土木建筑工程、应用化学、应用物理、航空、航海等。 -防卫大学每年招收多少学生? 军事训练课每学年6周,按一年四季有比例地安排教学内容,对学生进行军事技术和体能训练。 -防卫大学每年招收多少学生? 理工科研究生班,每年招生1期,学制2年,每期招收90人,设电子工程、航空工程、兵器制造等7个专业,课程按一般大学硕士课程标准设置。 -防卫大学每年招收多少学生? 防卫大学的课程和训练都十分紧张。 -防卫大学每年招收多少学生? 近年来,为了增强防卫大学的吸引力,克服考生逐年减少的倾向广泛征集优秀人才,学校进行了一些改革,改变入学考试办法,各高中校长以内部呈报的形式向防卫大学推荐品学兼优的学生;减少学生入学考试科目,放宽对报考防卫大学的学生的视力要求;降低学分数(大约降低30学分);改善学生宿舍条件。 -防卫大学每年招收多少学生? 防卫大学的学生生活紧张而愉快。 -《威鲁贝鲁的物语》官网是什么? 10年前大战后,威鲁贝鲁国一致辛勤的保护着得来不易的和平,但是与邻国圣卡特拉斯国的关系却不断的紧张,战争即将爆发。 -《威鲁贝鲁的物语》官网是什么? 为了避免战争,威鲁贝鲁国王海特鲁王决定将自己最大的女儿公主莉塔嫁给圣卡特拉斯国的王子格鲁尼亚。 -《威鲁贝鲁的物语》官网是什么? 但是莉塔却刺伤了政治婚姻的对象格鲁尼亚王子逃了出去,这事激怒了圣卡特拉斯国的国王兰帕诺夫王,并下令14天之内抓到王女并执行公开处刑来谢罪,不然两国就要开战。 -《威鲁贝鲁的物语》官网是什么? 《威鲁贝鲁的物语~Sisters of Wellber~》 -《威鲁贝鲁的物语》官网是什么? (Sisters of Wellber) -《威鲁贝鲁的物语》官网是什么? 日文名 ウエルベールの物语 -《威鲁贝鲁的物语》官网是什么? 官方网站 http://www.avexmovie.jp/lineup/wellber/ -《威鲁贝鲁的物语》官网是什么? 为了回避发生战争这个最坏的结果,莉塔下定决心去中立国古利达姆。 diff --git a/examples/text_graph/erniesage/link_prediction.py b/examples/text_graph/erniesage/link_prediction.py deleted file mode 100644 index 2ad8b2faecfa..000000000000 --- a/examples/text_graph/erniesage/link_prediction.py +++ /dev/null @@ -1,177 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import io -import os -import random -import time -from functools import partial - -import numpy as np -import paddle -import pgl -import yaml -from data import GraphDataLoader, PredictData, TrainData, batch_fn -from easydict import EasyDict as edict -from models import ErnieSageForLinkPrediction - -from paddlenlp.transformers import ErnieTinyTokenizer, ErnieTokenizer -from paddlenlp.utils.log import logger - -MODEL_CLASSES = { - "ernie-tiny": (ErnieSageForLinkPrediction, ErnieTinyTokenizer), - "ernie-1.0": (ErnieSageForLinkPrediction, ErnieTokenizer), -} - - -def set_seed(config): - random.seed(config.seed) - np.random.seed(config.seed) - paddle.seed(config.seed) - - -def load_data(graph_data_path): - base_graph = pgl.Graph.load(graph_data_path) - term_ids = np.load(os.path.join(graph_data_path, "term_ids.npy"), mmap_mode="r") - return base_graph, term_ids - - -def do_train(config): - paddle.set_device(config.device) - if paddle.distributed.get_world_size() > 1: - paddle.distributed.init_parallel_env() - set_seed(config) - - base_graph, term_ids = load_data(config.graph_work_path) - collate_fn = partial(batch_fn, samples=config.samples, base_graph=base_graph, term_ids=term_ids) - - # mode = "train" - train_ds = TrainData(config.graph_work_path) - - model_class, tokenizer_class = MODEL_CLASSES[config.model_name_or_path] - tokenizer = tokenizer_class.from_pretrained(config.model_name_or_path) - config.cls_token_id = tokenizer.cls_token_id - - model = model_class.from_pretrained(config.model_name_or_path, config_file=config) - model = paddle.DataParallel(model) - - train_loader = GraphDataLoader( - train_ds, batch_size=config.batch_size, shuffle=True, num_workers=config.sample_workers, collate_fn=collate_fn - ) - - optimizer = paddle.optimizer.Adam(learning_rate=config.lr, parameters=model.parameters()) - - rank = paddle.distributed.get_rank() - global_step = 0 - tic_train = time.time() - for epoch in range(config.epoch): - for step, (graphs, datas) in enumerate(train_loader): - global_step += 1 - loss, outputs = model(graphs, datas) - if global_step % config.log_per_step == 0: - logger.info( - "global step %d, epoch: %d, batch: %d, loss: %f, speed: %.2f step/s" - % (global_step, epoch, step, loss, config.log_per_step / (time.time() - tic_train)) - ) - tic_train = time.time() - loss.backward() - optimizer.step() - optimizer.clear_grad() - if global_step % config.save_per_step == 0: - if rank == 0: - output_dir = os.path.join(config.output_path, "model_%d" % global_step) - if not os.path.exists(output_dir): - os.makedirs(output_dir) - model._layers.save_pretrained(output_dir) - if rank == 0: - output_dir = os.path.join(config.output_path, "last") - if not os.path.exists(output_dir): - os.makedirs(output_dir) - model._layers.save_pretrained(output_dir) - - -def tostr(data_array): - return " ".join(["%.5lf" % d for d in data_array]) - - -@paddle.no_grad() -def do_predict(config): - paddle.set_device(config.device) - if paddle.distributed.get_world_size() > 1: - paddle.distributed.init_parallel_env() - set_seed(config) - - # mode = "predict" - num_nodes = int(np.load(os.path.join(config.graph_work_path, "num_nodes.npy"))) - - base_graph, term_ids = load_data(config.graph_work_path) - collate_fn = partial(batch_fn, samples=config.samples, base_graph=base_graph, term_ids=term_ids) - - model_class, tokenizer_class = MODEL_CLASSES[config.model_name_or_path] - tokenizer = tokenizer_class.from_pretrained(config.model_name_or_path) - config.cls_token_id = tokenizer.cls_token_id - - model = model_class.from_pretrained(config.infer_model, config_file=config) - - model = paddle.DataParallel(model) - predict_ds = PredictData(num_nodes) - - predict_loader = GraphDataLoader( - predict_ds, - batch_size=config.infer_batch_size, - shuffle=True, - num_workers=config.sample_workers, - collate_fn=collate_fn, - ) - - trainer_id = paddle.distributed.get_rank() - id2str = io.open(os.path.join(config.graph_work_path, "terms.txt"), encoding=config.encoding).readlines() - if not os.path.exists(config.output_path): - os.mkdir(config.output_path) - fout = io.open("%s/part-%s" % (config.output_path, trainer_id), "w", encoding="utf8") - - global_step = 0 - epoch = 0 - tic_train = time.time() - model.eval() - for step, (graphs, datas) in enumerate(predict_loader): - global_step += 1 - loss, outputs = model(graphs, datas) - for user_feat, user_real_index in zip(outputs[0].numpy(), outputs[3].numpy()): - sri = id2str[int(user_real_index)].strip("\n") - line = "{}\t{}\n".format(sri, tostr(user_feat)) - fout.write(line) - if global_step % config.log_per_step == 0: - logger.info( - "predict step %d, epoch: %d, batch: %d, loss: %f, speed: %.2f step/s" - % (global_step, epoch, step, loss, config.log_per_step / (time.time() - tic_train)) - ) - tic_train = time.time() - fout.close() - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="main") - parser.add_argument("--conf", type=str, default="./config.yaml") - parser.add_argument("--do_predict", action="store_true", default=False) - args = parser.parse_args() - config = edict(yaml.load(open(args.conf), Loader=yaml.FullLoader)) - - assert config.device in ["gpu", "cpu"], "Device should be gpu/cpu, but got %s." % config.device - logger.info(config) - if args.do_predict: - do_predict(config) - else: - do_train(config) diff --git a/examples/text_graph/erniesage/models/conv.py b/examples/text_graph/erniesage/models/conv.py deleted file mode 100644 index 8ec0c61d7b0a..000000000000 --- a/examples/text_graph/erniesage/models/conv.py +++ /dev/null @@ -1,174 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F - - -class GraphSageConv(nn.Layer): - """GraphSAGE is a general inductive framework that leverages node feature - information (e.g., text attributes) to efficiently generate node embeddings - for previously unseen data. - - Paper reference: - Hamilton, Will, Zhitao Ying, and Jure Leskovec. - "Inductive representation learning on large graphs." - Advances in neural information processing systems. 2017. - """ - - def __init__(self, input_size, hidden_size, learning_rate, aggr_func="sum"): - super(GraphSageConv, self).__init__() - assert aggr_func in [ - "sum", - "mean", - "max", - "min", - ], "Only support 'sum', 'mean', 'max', 'min' built-in receive function." - self.aggr_func = "reduce_%s" % aggr_func - - self.self_linear = nn.Linear( - input_size, hidden_size, weight_attr=paddle.ParamAttr(learning_rate=learning_rate) - ) - self.neigh_linear = nn.Linear( - input_size, hidden_size, weight_attr=paddle.ParamAttr(learning_rate=learning_rate) - ) - - def forward(self, graph, feature, act=None): - def _send_func(src_feat, dst_feat, edge_feat): - return {"msg": src_feat["h"]} - - def _recv_func(message): - return getattr(message, self.aggr_func)(message["msg"]) - - msg = graph.send(_send_func, src_feat={"h": feature}) - neigh_feature = graph.recv(reduce_func=_recv_func, msg=msg) - - self_feature = self.self_linear(feature) - neigh_feature = self.neigh_linear(neigh_feature) - output = self_feature + neigh_feature - if act is not None: - output = getattr(F, act)(output) - - output = F.normalize(output, axis=1) - return output - - -class ErnieSageV2Conv(nn.Layer): - """ErnieSage (abbreviation of ERNIE SAmple aggreGatE), a model proposed by the PGL team. - ErnieSageV2: Ernie is applied to the EDGE of the text graph. - """ - - def __init__(self, ernie, input_size, hidden_size, learning_rate, cls_token_id=1, aggr_func="sum"): - """ErnieSageV2: Ernie is applied to the EDGE of the text graph. - - Args: - ernie (nn.Layer): the ernie model. - input_size (int): input size of feature tensor. - hidden_size (int): hidden size of the Conv layers. - learning_rate (float): learning rate. - aggr_func (str): aggregate function. 'sum', 'mean', 'max' avaliable. - """ - super(ErnieSageV2Conv, self).__init__() - assert aggr_func in [ - "sum", - "mean", - "max", - "min", - ], "Only support 'sum', 'mean', 'max', 'min' built-in receive function." - self.aggr_func = "reduce_%s" % aggr_func - self.cls_token_id = cls_token_id - self.self_linear = nn.Linear( - input_size, hidden_size, weight_attr=paddle.ParamAttr(learning_rate=learning_rate) - ) - self.neigh_linear = nn.Linear( - input_size, hidden_size, weight_attr=paddle.ParamAttr(learning_rate=learning_rate) - ) - - self.ernie = ernie - - def ernie_send(self, src_feat, dst_feat, edge_feat): - """Apply ernie model on the edge. - - Args: - src_feat (Tensor Dict): src feature tensor dict. - dst_feat (Tensor Dict): dst feature tensor dict. - edge_feat (Tensor Dict): edge feature tensor dict. - - Returns: - Tensor Dict: tensor dict which use 'msg' as the key. - """ - # input_ids - cls = paddle.full(shape=[src_feat["term_ids"].shape[0], 1], dtype="int64", fill_value=self.cls_token_id) - src_ids = paddle.concat([cls, src_feat["term_ids"]], 1) - - dst_ids = dst_feat["term_ids"] - - # sent_ids - sent_ids = paddle.concat([paddle.zeros_like(src_ids), paddle.ones_like(dst_ids)], 1) - term_ids = paddle.concat([src_ids, dst_ids], 1) - - # build position_ids - input_mask = paddle.cast(term_ids > 0, "int64") - position_ids = paddle.cumsum(input_mask, axis=1) - 1 - - outputs = self.ernie(term_ids, sent_ids, position_ids) - feature = outputs[1] - return {"msg": feature} - - def send_recv(self, graph, term_ids): - """Message Passing of erniesage v2. - - Args: - graph (Graph): the Graph object. - feature (Tensor): the node feature tensor. - - Returns: - Tensor: the self and neighbor feature tensors. - """ - - def _recv_func(message): - return getattr(message, self.aggr_func)(message["msg"]) - - msg = graph.send(self.ernie_send, node_feat={"term_ids": term_ids}) - neigh_feature = graph.recv(reduce_func=_recv_func, msg=msg) - - cls = paddle.full(shape=[term_ids.shape[0], 1], dtype="int64", fill_value=self.cls_token_id) - term_ids = paddle.concat([cls, term_ids], 1) - term_ids.stop_gradient = True - outputs = self.ernie(term_ids, paddle.zeros_like(term_ids)) - self_feature = outputs[1] - - return self_feature, neigh_feature - - def forward(self, graph, term_ids, act="relu"): - """Forward funciton of Conv layer. - - Args: - graph (Graph): Graph object. - feature (Tensor): node feture. - act (str, optional): activation function. Defaults to 'relu'. - - Returns: - Tensor: feature after conv. - """ - - self_feature, neigh_feature = self.send_recv(graph, term_ids) - self_feature = self.self_linear(self_feature) - neigh_feature = self.neigh_linear(neigh_feature) - output = self_feature + neigh_feature - if act is not None: - output = getattr(F, act)(output) - output = F.normalize(output, axis=1) - return output diff --git a/examples/text_graph/erniesage/models/encoder.py b/examples/text_graph/erniesage/models/encoder.py deleted file mode 100644 index 9363beb43a45..000000000000 --- a/examples/text_graph/erniesage/models/encoder.py +++ /dev/null @@ -1,133 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F -from models.conv import ErnieSageV2Conv, GraphSageConv - - -class Encoder(nn.Layer): - """Base class - Chose different type ErnieSage class. - """ - - def __init__(self, config): - """init function - - Args: - config (Dict): all configs. - """ - super(Encoder, self).__init__() - self.config = config - # Don't add ernie to self, oterwise, there will be more copies of ernie weights - # self.ernie = ernie - - @classmethod - def factory(cls, config, ernie): - """Classmethod for ernie sage model. - - Args: - config (Dict): all configs. - ernie (nn.Layer): the ernie model. - - Raises: - ValueError: Invalid ernie sage model type. - - Returns: - Class: real model class. - """ - model_type = config.model_type - if model_type == "ErnieSageV2": - return ErnieSageV2Encoder(config, ernie) - else: - raise ValueError("Invalid ernie sage model type") - - def forward(self, *args, **kwargs): - raise NotImplementedError - - -class ErnieSageV2Encoder(Encoder): - def __init__(self, config, ernie): - """Ernie sage v2 encoder - - Args: - config (Dict): all config. - ernie (nn.Layer): the ernie model. - """ - super(ErnieSageV2Encoder, self).__init__(config) - # Don't add ernie to self, oterwise, there will be more copies of ernie weights - # self.ernie = ernie - self.convs = nn.LayerList() - fc_lr = self.config.lr / 0.001 - erniesage_conv = ErnieSageV2Conv( - ernie, - ernie.config["hidden_size"], - self.config.hidden_size, - learning_rate=fc_lr, - cls_token_id=self.config.cls_token_id, - aggr_func="sum", - ) - self.convs.append(erniesage_conv) - for i in range(1, self.config.num_layers): - layer = GraphSageConv( - self.config.hidden_size, self.config.hidden_size, learning_rate=fc_lr, aggr_func="sum" - ) - self.convs.append(layer) - - if self.config.final_fc: - self.linear = nn.Linear( - self.config.hidden_size, self.config.hidden_size, weight_attr=paddle.ParamAttr(learning_rate=fc_lr) - ) - - def take_final_feature(self, feature, index): - """Gather the final feature. - - Args: - feature (Tensor): the total featue tensor. - index (Tensor): the index to gather. - - Returns: - Tensor: final result tensor. - """ - feat = paddle.gather(feature, index) - if self.config.final_fc: - feat = self.linear(feat) - if self.config.final_l2_norm: - feat = F.normalize(feat, axis=1) - return feat - - def forward(self, graphs, term_ids, inputs): - """forward train function of the model. - - Args: - graphs (Graph List): list of graph tensors. - inputs (Tensor List): list of input tensors. - - Returns: - Tensor List: list of final feature tensors. - """ - # term_ids for ErnieSageConv is the raw feature. - feature = term_ids - for i in range(len(graphs), self.config.num_layers): - graphs.append(graphs[0]) - for i in range(0, self.config.num_layers): - if i == self.config.num_layers - 1 and i != 0: - act = None - else: - act = "leaky_relu" - feature = self.convs[i](graphs[i], feature, act) - - final_feats = [self.take_final_feature(feature, x) for x in inputs] - return final_feats diff --git a/examples/text_graph/erniesage/models/loss.py b/examples/text_graph/erniesage/models/loss.py deleted file mode 100644 index 3648c27821c1..000000000000 --- a/examples/text_graph/erniesage/models/loss.py +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -import paddle.nn as nn -import paddle.nn.functional as F - - -def LossFactory(config): - """Choose different type of loss by config - - Args: - config (Dict): config file. - - Raises: - ValueError: invalid loss type. - - Returns: - Class: the real class object. - """ - loss_type = config.loss_type - if loss_type == "hinge": - return HingeLoss(config.margin) - elif loss_type == "softmax_with_cross_entropy": - return SoftmaxWithCrossEntropy() - else: - raise ValueError("invalid loss type") - - -class SoftmaxWithCrossEntropy(nn.Layer): - """softmax with cross entropy loss""" - - def __init__(self, config): - super(SoftmaxWithCrossEntropy, self).__init__() - - def forward(self, logits, label): - return F.cross_entropy(logits, label, reduction="mean") - - -class HingeLoss(nn.Layer): - """Hinge Loss for the pos and neg.""" - - def __init__(self, margin): - super(HingeLoss, self).__init__() - self.margin = margin - - def forward(self, pos, neg): - """forward function - - Args: - pos (Tensor): pos score. - neg (Tensor): neg score. - - Returns: - Tensor: final hinge loss. - """ - loss = paddle.mean(F.relu(neg - pos + self.margin)) - return loss diff --git a/examples/text_graph/erniesage/models/model.py b/examples/text_graph/erniesage/models/model.py deleted file mode 100755 index 4884baacc860..000000000000 --- a/examples/text_graph/erniesage/models/model.py +++ /dev/null @@ -1,68 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import paddle -from models.encoder import Encoder -from models.loss import LossFactory - -from paddlenlp.transformers import ErnieModel, ErniePretrainedModel - -__all__ = ["ErnieSageForLinkPrediction"] - - -class ErnieSageForLinkPrediction(ErniePretrainedModel): - """ErnieSage for link prediction task.""" - - def __init__(self, config, config_file): - """Model which Based on the PaddleNLP PretrainedModel - - Note: - 1. the ernie must be the first argument. - 2. must set self.XX = ernie to load weights. - 3. the self.config keyword is taken by PretrainedModel class. - - Args: - ernie (nn.Layer): the submodule layer of ernie model. - config (Dict): the config file - """ - super(ErnieSageForLinkPrediction, self).__init__(config) - self.config_file = config_file - self.ernie = ErnieModel(config) - self.encoder = Encoder.factory(self.config_file, self.ernie) - self.loss_func = LossFactory(self.config_file) - - def forward(self, graphs, data): - """Forward function of link prediction task. - - Args: - graphs (Graph List): the Graph list. - data (Tensor List): other input of the model. - - Returns: - Tensor: loss and output tensors. - """ - term_ids, user_index, pos_item_index, neg_item_index, user_real_index, pos_item_real_index = data - # encoder model - outputs = self.encoder(graphs, term_ids, [user_index, pos_item_index, neg_item_index]) - user_feat, pos_item_feat, neg_item_feat = outputs - - # calc loss - if self.config_file.neg_type == "batch_neg": - neg_item_feat = pos_item_feat - - pos = paddle.sum(user_feat * pos_item_feat, -1, keepdim=True) # [B, 1] - neg = paddle.matmul(user_feat, neg_item_feat, transpose_y=True) # [B, B] - loss = self.loss_func(pos, neg) - # return loss, outputs - return loss, outputs + [user_real_index, pos_item_real_index] diff --git a/examples/text_graph/erniesage/preprocessing/dump_graph.py b/examples/text_graph/erniesage/preprocessing/dump_graph.py deleted file mode 100644 index d2de5674a63f..000000000000 --- a/examples/text_graph/erniesage/preprocessing/dump_graph.py +++ /dev/null @@ -1,154 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse -import io -import os -from functools import partial -from io import open - -import numpy as np -import pgl -import yaml -from easydict import EasyDict as edict -from pgl.graph_kernel import alias_sample_build_table -from pgl.utils.logger import log - -from paddlenlp.transformers import ErnieTinyTokenizer, ErnieTokenizer - -TOKENIZER_CLASSES = { - "ernie-tiny": ErnieTinyTokenizer, - "ernie-1.0": ErnieTokenizer, -} - - -def term2id(string, tokenizer, max_seqlen): - # string = string.split("\t")[1] - tokens = tokenizer._tokenize(string) - ids = tokenizer.convert_tokens_to_ids(tokens) - ids = ids[: max_seqlen - 1] - ids = ids + [tokenizer.sep_token_id] - ids = ids + [tokenizer.pad_token_id] * (max_seqlen - len(ids)) - return ids - - -def load_graph(config, str2id, term_file, terms, item_distribution): - edges = [] - with io.open(config.graph_data, encoding=config.encoding) as f: - for idx, line in enumerate(f): - if idx % 100000 == 0: - log.info("%s readed %s lines" % (config.graph_data, idx)) - slots = [] - for col_idx, col in enumerate(line.strip("\n").split("\t")): - s = col[: config.max_seqlen] - if s not in str2id: - str2id[s] = len(str2id) - term_file.write(str(col_idx) + "\t" + col + "\n") - item_distribution.append(0) - slots.append(str2id[s]) - - src = slots[0] - dst = slots[1] - edges.append((src, dst)) - edges.append((dst, src)) - item_distribution[dst] += 1 - edges = np.array(edges, dtype="int64") - return edges - - -def load_link_prediction_train_data(config, str2id, term_file, terms, item_distribution): - train_data = [] - neg_samples = [] - with io.open(config.train_data, encoding=config.encoding) as f: - for idx, line in enumerate(f): - if idx % 100000 == 0: - log.info("%s readed %s lines" % (config.train_data, idx)) - slots = [] - for col_idx, col in enumerate(line.strip("\n").split("\t")): - s = col[: config.max_seqlen] - if s not in str2id: - str2id[s] = len(str2id) - term_file.write(str(col_idx) + "\t" + col + "\n") - item_distribution.append(0) - slots.append(str2id[s]) - - src = slots[0] - dst = slots[1] - neg_samples.append(slots[2:]) - train_data.append((src, dst)) - train_data = np.array(train_data, dtype="int64") - np.save(os.path.join(config.graph_work_path, "train_data.npy"), train_data) - if len(neg_samples) != 0: - np.save(os.path.join(config.graph_work_path, "neg_samples.npy"), np.array(neg_samples)) - - -def dump_graph(config): - if not os.path.exists(config.graph_work_path): - os.makedirs(config.graph_work_path) - str2id = dict() - term_file = io.open(os.path.join(config.graph_work_path, "terms.txt"), "w", encoding=config.encoding) - terms = [] - item_distribution = [] - - edges = load_graph(config, str2id, term_file, terms, item_distribution) - if config.task == "link_prediction": - load_link_prediction_train_data(config, str2id, term_file, terms, item_distribution) - else: - raise ValueError - - term_file.close() - num_nodes = len(str2id) - str2id.clear() - - log.info("Building graph...") - graph = pgl.graph.Graph(num_nodes=num_nodes, edges=edges) - # indegree = graph.indegree() - graph.indegree() - graph.outdegree() - graph.dump(config.graph_work_path) - - # dump alias sample table - item_distribution = np.array(item_distribution) - item_distribution = np.sqrt(item_distribution) - distribution = 1.0 * item_distribution / item_distribution.sum() - alias, events = alias_sample_build_table(distribution) - np.save(os.path.join(config.graph_work_path, "alias.npy"), alias) - np.save(os.path.join(config.graph_work_path, "events.npy"), events) - log.info("End Build Graph") - - -def dump_node_feat(config): - log.info("Dump node feat starting...") - id2str = [ - line.strip("\n").split("\t")[-1] - for line in io.open(os.path.join(config.graph_work_path, "terms.txt"), encoding=config.encoding) - ] - # pool = multiprocessing.Pool() - - tokenizer_class = TOKENIZER_CLASSES[config.model_name_or_path] - tokenizer = tokenizer_class.from_pretrained(config.model_name_or_path) - fn = partial(term2id, tokenizer=tokenizer, max_seqlen=config.max_seqlen) - term_ids = [fn(x) for x in id2str] - - np.save(os.path.join(config.graph_work_path, "term_ids.npy"), np.array(term_ids, np.uint16)) - log.info("Dump node feat done.") - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="main") - parser.add_argument("--conf", type=str, default="./config.yaml") - args = parser.parse_args() - config = edict(yaml.load(open(args.conf), Loader=yaml.FullLoader)) - dump_graph(config) - dump_node_feat(config) diff --git a/examples/text_to_knowledge/README.md b/examples/text_to_knowledge/README.md deleted file mode 100644 index 39d41248a007..000000000000 --- a/examples/text_to_knowledge/README.md +++ /dev/null @@ -1,168 +0,0 @@ -# 解语(Text to Knowledge) - -[解语官网](https://www.paddlepaddle.org.cn/textToKnowledge) - -解语(Text to Knowledge)是首个覆盖中文全词类的知识库(百科知识树)及知识标注与挖掘框架,拥有可描述所有中文词汇的词类体系、中文知识标注工具集,以及更适用于中文挖掘任务的预训练语言模型。 - - -覆盖中文全词类的知识库和知识标注工具能够帮助你面对更加多元的应用场景,方便地融合自有知识体系,显著提升中文文本解析和挖掘效果,并能够更容易地利用知识增强机器学习模型效果。解语经过大规模工业应用验证,在实际业务中取得了良好的应用效果,适合通用领域中文文本理解任务。 - -image - - -**解语由以下三部分构成:** - -- [百科知识树(TermTree)](./termtree) :包括能够描述所有中文词汇的TermType词类体系,以及Term关系和属性值。 -- 中文知识标注工具集:包括[词类知识标注工具(WordTag)](./wordtag) 和[名词短语标注工具(NPTag)](./nptag),[适用于中文文本挖掘的预训练语言模型(ERNIE-CTM)](./ernie-ctm),为中文文本解析提供词类序列标注框架,结合百科知识树可实现定制化词类序列标注。 -- 中文知识挖掘方案:包括[知识模板挖掘工具](./wordtag-ie),旨在提供灵活可配置,可快速定制的中文知识挖掘方案。 - -**本次发布的解语开源试用版包括:** - -- 百科知识树(TermTree)V1.0试用版:包括简化版的TermType词类体系,和约100w的term集。 -- 中文词类知识标注工具(WordTag)V1.0版。 -- 名词短语标注工具(NPTag)V1.0版。 -- 中文预训练语言模型(ERNIE-CTM)V1.0版。 - - ----- - -## 解语的应用场景 - -解语可直接用于各类中文文本解析与挖掘任务,提升文本解析与挖掘精度;也可以作为中文文本特征生成器,为各类机器学习模型提供文本特征。 - -中文词类知识标注工具(WordTag)整合了传统中文解析的**分词**、**词性标注**、**命名实体识别**的能力,能够将任意中文句子解析为**完整的词类序列**。结合百科知识树(TermTree),可为应用提供一套通用的知识关联(term-linking)框架,方便应用适配关联自己的应用知识图谱,更好地将知识用于中文自然语言处理(NLP)任务。 - -![解语示例](doc/img/text_to_knowledge_example.png) - - -### 应用场景A:文本挖掘/解析模板生成与匹配 - -虽然近年来,深度学习模型尤其是预训练语言模型的广泛使用大幅提升了各项中文NLP任务效果,但在实际的工业应用中,单独使用深度学习模型往往达不到应用需求,还需要结合规则模型以提升精度以及解决恶劣case,如,知识图谱构建、query解析、语义一致性判定等应用。 - -在这些应用中,文本挖掘/解析模板是最常用的规则模型。WordTag包含了覆盖中文所有词汇的词类标注体系,在生成模板以及模板匹配上有着天然的优势。用户可以根据WordTag标注的样本词类序列,自动生成或配置更加丰富、精准的挖掘/解析模板,然后对目标文本使用WordTag标注,即可利用模板进行匹配,从而大大降低人工配置模板的代价,显著提升生产效率。 - -例如,输入文本:*美人鱼是周星驰执导的电影*,得到预测结果: - -```json -{ - "text": "美人鱼是周星驰执导的电影", - "items": [ - { - "item": "美人鱼", - "offset": 0, - "wordtag_label": "作品类_实体", - "length": 3, - "termid": "作品与出版物_eb_美人鱼" - }, - { - "item": "是", - "offset": 3, - "wordtag_label": "肯定词", - "length": 1, - "termid": "肯定否定词_cb_是" - }, - { - "item": "周星驰", - "offset": 4, - "wordtag_label": "人物类_实体", - "length": 3, - "termid": "人物_eb_周星驰" - }, - { - "item": "执导", - "offset": 7, - "wordtag_label": "场景事件", - "length": 2, - "termid": "场景事件_cb_执导" - }, - { - "item": "的", - "offset": 9, - "wordtag_label": "助词", - "length": 1, - "termid": "助词_cb_的" - }, - { - "item": "电影", - "offset": 10, - "wordtag_label": "作品类_概念", - "length": 2, - "termid": "影视作品_cb_电影" - } - ] -} -``` - -将上述标注结果中的词类序列取出,去除虚词、标点等与语义无关的词,可将抽取出的词类直接构造成为挖掘匹配模板: - -``` -[作品类_实体][肯定词|是][人物类_实体][场景事件|执导][作品类_概念|电影] -``` - -利用该模板,以及结合TermTree进行概念扩展,可以匹配出所有该句式的文本,例如: - -> 《狂人日记》是鲁迅创作的第一个短篇白话日记体小说 -> -> 《澳门风云》是王晶创作执导的合家欢贺岁喜剧赌片 -> -> 《千王之王2000》是一部王晶于1999年执导的喜剧电影 -> -> 《射雕英雄传》是金庸创作的长篇武侠小说 - -WordTag的标注结果中,区分了“人物类\_实体”和“人物类\_概念”,以及“作品类\_实体”和“作品类\_概念”,使得模板生成更为精准。同时,TermTree中也区分了命名实体词(eb: entity base)与非实体词(cb: concept base),这样,可以利用TermTree分别进行实体扩展(e.g., 周星驰->王晶)和概念扩展(e.g., 电影->小说),生成更加丰富多样的模板,支持更细化的应用场景。 - -### 应用场景B:词类知识增强的深度学习模型 - -词类特征同时也是一类重要的文本特征,可为原始文本token提供有效的边界信息、归组信息,减少样本中的噪音,防止模型过拟合;还可作为层次泛化特征,弥补统计共现特征的不足。 - -在深度学习模型应用中,可将WordTag产出的词类作为embedding特征,直接叠加到文本token上,作为深度学习模型的输入;在BERT等模型中,也可以将词类作为文本序列中的一部分,利用position id和可见性矩阵控制token和词类特征之间的可见性,作为深度学习模型的输入。 - -### 应用场景C:知识图谱关联(term-linking) - -随着知识图谱技术的普及和越来越多应用知识图谱数据的发布,如何利用知识提升NLP任务效果,成为近年来NLP研究的热点方向。文本与图谱知识结合的前提是将图谱中的实体准确link到文本上,这是知识图谱应用的一大难点。现有的方案多是基于某个特定图谱实现的,缺乏通用的图谱关联解决方案。我们尝试使用“**WordTag+TermTree**”提供一套通用的图谱关联(term-linking)技术框架。 - -**NOTE:** 为了避免歧义,我们 **用term统一指代图谱收录的各类实体、概念、术语**。 - -为了能够适配应用中的不同实体集(例如,不同的企业有不同的人物实体集合,不同的小说站有不同的小说实体集合),我们将term-linking拆分为两个步骤: - -- 第一步是基于词类的linking,主要解决“同名概念词/实体词”、“不同类的同名词”消歧问题,这一步只使用文本本身特征和词类特征,不使用图谱中的实体属性值(SPO)知识,从而支持切换不同应用图谱; -- 第二步是同类同名实体词的linking,主要解决同类下不同属性值的实体消歧问题,这一步需要使用实体词的SPO知识(一般用于实体特征表示计算,以及文本-实体相似度计算)。 - -“WordTag+TermTree”的开源版提供了第一步的解决示例,第二步由于依赖于特定图谱的SPO知识,暂时无法提供通用工具,未来可能提供通用解决方案。 - -### 应用场景D:文本分类和文本挖掘样本优化 - -工业NLP应用场景中,文本分类、文本挖掘是最常见的任务。虽然,预训练语言模型的技术进步大幅提升了小样本学习的效果,但要达到理想的工业应用效果,还是需要大规模高精度监督训练样本。 - -人工标注可以产出高精度小规模训练样本。半监督学习等技术可以帮助用户基于人工标准样本快速扩充样本规模,但无法保证样本精度。这种情况下,可以使用“WordTag+TermTree”辅助筛选和修正样本,提升样本精度,例如: - -- 使用WordTag产出样本模板,再利用TermTree进行泛化约束,筛选出高置信度的样本,或者过滤不合格的样本; - -- 利用词类关系检测类别与样本的一致性,比如,医疗类文本与“疾病损伤、药物、医疗卫生机构”等词类相关,可以利用TermTree知识筛选出该类别高置信度的样本。 - -此外,统计模型容易拟合高频term,导致在低频term上泛化效果不好,这时可以利用TermTree筛选样本,提升样本平衡性,从而提升模型泛化能力。 - -## 后续计划 - -1. 发布百科知识树(TermTree)正式版数据,建立知识共建社区,支持用户提交应用词表/应用图谱 & 定制化TermTree, [TermTree下载链接](https://kg-concept.bj.bcebos.com/TermTree/TermTree.V1.0.tar.gz); -2. 持续优化ERNIE-CTM预训练模型,支持多种参数规模模型发布,探索更好的适配中文解析挖掘任务的预训练模型; -3. 持续优化中文文本知识标注工具集,提供更加精准的知识标注服务;发布多粒度标注工具,支持更加丰富的应用场景。 - -## 在论文中引用解语 - -如果您的工作成果中使用了解语,请增加下述引用。我们非常乐于看到解语对您的工作带来帮助。 - -``` -@article{zhao2020TermTree, - title={TermTree and Knowledge Annotation Framework for Chinese Language Understanding}, - author={Zhao, Min and Qin, Huapeng and Zhang, Guoxin and Lyu, Yajuan and Zhu, Yong}, - technical report={Baidu, Inc. TR:2020-KG-TermTree}, - year={2020} -} -``` - - - -## 问题与反馈 - -解语在持续优化中,如果您有任何建议或问题,欢迎提交issue到Github。 diff --git a/examples/text_to_knowledge/doc/img/ernie_ctm_inputs.png b/examples/text_to_knowledge/doc/img/ernie_ctm_inputs.png deleted file mode 100644 index f5ec1073b759d83cd1b9e4aa1eeb70c09e4b697f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 671993 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¥< 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%0Dxf-^2d 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

X?m+>R&4`laN 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 z z%^L>3S^&EFO56)TH-GqkegWv_jiD?sx_Jxby9;^pxgcHszW~O9 zM>lWec=rOMn>QM=!06^Jlnab*{!n$H7-jxs*?Gg~`AgvcpRC~d=n{9p+b#0%SxXNe RUj%>c`|{uyz@8)D|1UeBhNS=i diff --git a/examples/text_to_knowledge/doc/img/ernie_ctm_model.png b/examples/text_to_knowledge/doc/img/ernie_ctm_model.png deleted file mode 100644 index 2d886e91f593140f1d0888d8cd987b2d33800408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143410 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

<=Pxfo2=$ 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%0D((VLjznD`6SdX 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�{zOJ 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

{zF~hlRiU z1VSquM;O`s3`Pbno5iDZ~s9UtTu+p_MbjyMqteV|*sbSE#cHX@Gv zQkhK{Fc4Bq75Tbl3W-`kIZ<#}>KPp0FHLPZ8poB>3Ws58$mhO?G~!a3&f@^7e$x$R z9Ghl{!pkJDaAZGceX{mx^!Q{biA}-_mS{uWo+^RPvzL?sDZ0^De*)+ zUUd3QxYFHGu*JW>HvWmtV^Lx`c}xmHd=?9jYHNGDk1!Wf=JMIHZURwnGg7sEpF5;Q z4nZ7=VL?@&U?g8c&Dx4qR&1B}Ed3<{&rQT@85aGkJ_U)91bNDy{Dne1e!p?tM*d}nX6>*$IUJ|s61Sy#*!1KQ>{9Fs*jS8ok@Tf2t zEi8C|SFnty7=4Waq@nikL%SM`N%?F-q5=FL(mY<`5!f&Y$~Q_xmh#|6nhyVzV}~?F`e- zm)BX;vReI02)g;Puomv#zef5quaMWvEiW=i@oTa_@(w!S1G38f-G@|~r#kVP*4^FR zd$Y;*D)qjP-p8cq#M_u+{0eH=TWuYagZqvJNe+O<6@z;S5sy?*^@4vEe zQyI#_&966%mOu6NVFu39n^!%lQIi^bhA6WnO-|KVv zj|wZ;$pW1H64uz7`T7s-@wd^&+6XKxEICER5^JM~w_~5kzxQYEjiFD5juAwE8s@un z_8PVytvmCWl`_5G5$Q%Gz$J4Alnhw%M6CwQE?yWr0yOVNe)`+46JEwvJn*&<6crV@ zseuGX3M z-*0=&v}Es@ObMXhzWGVJ0x5airp@Q&=HAR(x*e5ZNn>L;8ejSy6*SY^iDB%ws@3M# zIjKe3M)_dwibf_0a0NMEU|5qI-k9%wN7nm&_2(dKU;JEGvIR`=Um!QB`1t4M3kHV? zlP6R!eG9(bE04P=hd9STLP7hiy8Nw0a1h)IqZacO0q;fh>nY6q=PyD~3l^@C#;c9v z`EDCFqcu8Ragr>5W^zSGC2xU{;NaYqcs2bv%sZk|O&RPAC9#&pFzYb!pk_LfNoOIwIFM$o0gIObs{Ek?)*)X! z9C_g79iT{8%W~}+VANfJ4jCAAK8$g(5K+haizK(-m6Vh$gu?et@at2umPk2qvi*~8 zLFK!5HS0XV$$=Va1kiXDaVLrI6F4VI_-_hKU$sjaBxLQDx`M?^y2fU7_M^RFa9|v7 zlIZ@Mm7Cvy{)V+)vywJwNB(Ki)7FTK_RmXkn1;ky+Xl?n#!qMv8>kAPB0vWa?6nr3 z<0@K`071K^3)a^rtmIfO50KqnK{I6*DoQLp{NH{872qQ~4pOjn?Wu#8g+7EkR&)k* zbhM^^1I*Gq?}4j%gL0T@r*r`w8@Vm#8P(tFPPrLpd%>}q#@Qcv*$H9fcgznf>`Z)Ron(g9HJG}dz#>DB7;x%& zWf&$seQCfBWW6Ly|L6&^*pUiGL<~$Jgx_QW^XEpO7G}?75Nn{XANln0PK-Zc0KBfI z5Ot&txh!2TWqMpYY56X4w->i#l-vPZrF{B7D-n9P{Mz!nHhdibKwFMfm5tn_{h!0i z6QRqI-0u3o#jU%f+ueI@W25oom~RA}Gcy5Zsj9`D=?0R~&oKD2R)Oi)FCC$Mu_iO{ zA^ER8?8l4e?ijP(V7sJTY7-vD?%NW39CCePJq`4z%30d3^v`pHA)S4}5<-;1Y2i z9d}+WgJd7z!|CC*St_*g8H8TB&Ax2iK14j6H|D&93OIc#9)wTn0Jk1nc@4dbox7=j zCmlZhm!_gEHCYarBhK7R=Dku^mDYOr3En?F`_TUszyTtth9?6e{%Q1XtOi{eDo}2K z4Y=76sSQHH7D2z2fEUR$hPs8+QuW8AAE$ofRL%S1#sBvPqoWm(cGAC^b6)va(#sojRy2p2qfDEH# zXl9(*Y9jsu&Chw50~pEWzQ^{CU8<)!8A8`+zSkrKQ=hfiY&?5l@TKmUP7>n)HNgp^l`74uT7-ZbX>ZCW1~JSqTYJW^bw;SKx&1{qS1 zm1qO!_UEjDz^Ci!@RJEoU*Y4ifFyQq+3t7&XPMjLwgnpfW^#A?mfM^oMmN#W(}VSh z{{0)*f*&70fSTb3%u=8d|MVHUol0%haU&s|CHjm*@8b_~;Zp#+ z&M`@p$TcMRQ?xvPjEntSUp&qC;Ngt2qFOM;_bkky^_)fZ4{IYN`+JBJyX4Q104~G| zkM)e&hd<){CvZXTlIgR*;kLZE)^0J+<3*)LHaSsZpE}}+DJx_SE>6w+d5RN@`KMfx zE46SJ?J+3a?t?Tt8tDWWBFLX&5z14kfinoVVRHkFP<9i19m!Y?z%;izab|c> zLVxOqRjR=Nomdb|eN)8=dk0Ngn*NZ`qIRni_hF{1wy&Ql-K7`n&-uNv7ShNmakRid>Z@pETM2?MUj^!XbYi zJy35HIjwwSK~sPc_JSPdN0|oMaYmrMIN7O{8+H1> z-?z6cDPyjQ-XC%B`etvy2aom1!6H+fv`0HSa)_HyBPGRSd7!(SejI;_-n501s`l+w zU8RmMW$AZGW55wZ2eZ9bhFV%e>MF6R#qLOnhX+AOF`pioqM9K=<+X|A;7lK%7~!P@ zdIZQoHL*#5Q}VfNvjo3HiJ`yT&XBlvD3gu%9J4i$?mO@}`fTK2{#}_xozFTYA~5hQ zre}ecQZB~*Kb}YY1eJcOF6u{1^NisI?vEVRvv4Llyi02Ont*M~C-wmn>WfitXSu|` zm>7b!iO%`s@)JL4GcGzhcd5TcNF1?)w-+R1eDYLOyJFWriQ=tmMm-6MnfqBh>b8}c zO6c3hLWo|hJ+P+zC==#f<|;o~2w6#GUwV2^9>g9hxn}o~Ax(@oZ*oRd_ULLYgJg4X z?}g4)(eZd_eKf^JqIiVWf#24ISq$3m*uR8jAYZ_~SW0t{VtMMzFY~a!&3Qt&u%!Uv z6S5o5vylehVU3Vvi=$mlmPr{#8Rtt4nET3DH=hh`yg&x5q1` zLhI>L9%$psR997*Cv&GgIQv)12$o2E%qJUv_NbOzR#tXvWrRk}Q>X-O-KT(lD2-<2 zrwl61t(iMIyY7;l;J`V5e&J0*QUZU)&CMMUX#L&I1*BXZpPu*U+Fl%gF(8{B8bP4& z^PTTXMpW(T$sts3dek*>7WA4s5{8>-^EpGoTeq<1xPqWmvS&*Q-0sWWkH{<9$B`9ZOE?fc06QyDZt0~W5xHW7tZHA?ynlvkWg-k7&zWK zo6%$`zZI9IWnqyXvO}sErU3Wa%LPNTK~AXxIdU_ z4avZ;6&KGD4C#f@srwwb<{Ng%BM zkoFKU+PZSG2o(XWg5~ts%U!7PrKRK|n_84F&Z{NedlOZOxMuFlBt#)ZbdSM0kQn_< z6YPknAn9;Q_Jkt4S`w!jRgtRsdpjiyt- zZ6!tjeigjWELiTGxJ}nY5Lhv)xhk^SHXpi9@U3KoF(WOQH{M&>2#|xuh7JJ$vpoZD zbqk4zj>L0`9&_DF_C-E(F?!AP<&8yR3kVj@24F+qemWxftw4F3W44{Z93YnuUpvHXO+}a^DlRPB3h!>Z;lw>CQ5|iQ~o=+mo`68KtJlW z#Q6`VVH#gp2!lap_~nb6VfHX=_Nw0DEXKrGKK{Dv0_cp+T|r^LEAg(QaoWEDs^W_; z-12xrzrb4LiM*S^N4r!_+GYvw>j|;<4P2CX%58RK zhWj6=7E4c@7X@SaJb*6FsEwKMbQ4ealv^~xG=iqj+dkTlb(?s>`qY&L;@n2uln~G5?I@G_4Znvy4Y6^aP!>@qU5=7uT`WQ z#&d=MV9VY=Sp}`B38=NI!n~ozw#!};@o>0Z989Y7?J9%>G{Djvj+gwvH_D!O4WmrLOu!aLk7seltn0D%+Tfio!Eb4pJoJ z6GpoHg9JblIIdd75T1}1UhV!}_3aYL9^G*MmeZ)&ju?jWfru0r=@#*c)LZHB90h>YN0YRf`H_kMl z4f*88^l3R@E>WrMiqBbIA4Sz~cFi0`duY2Y@-7wxxGj)c_J2sMs*fG3O@Z7P{hs9D zy-@MJ%R|9GQ(yg{d;3Q_AQ$GuqF#zrP`CAOG|YBzY;k&EuCLFbrnb`ZI805bR##Ag zn}PhN^uN7)KiPoLCXcvytxWYPShJDwp-7isW`1@ zX;(dBHn$%NVBq3flyL6*$b5h7`MP%1Demp#n)4lo^f5TH-3GCLcZ@H?8uCJibF^!y z`@LQ@`On_r-YHtyTie~1J60y?8-nYCMDHe9+ce1bVmV@H z7(S_hIWAZ4)m{PkV%i36{qhKGRUAa}4WBh8XC|4=SBk^?{w>`QFHc(vE9Dk>@S8gd z6VDUU?P6f{@*c%1|FbpExv$vXH&)yig&H7~Z;n0`CMG798<^^pzsPtyQiaZ}J57`T zkL1tlM&w{V)1fErRB_EpAr34e6Z=MWfbesw)pGcUKZ z>vyu^b-nem8P98voOzEfS(=(7dOvBvQfVsA`U_Z?c!S{s_I{-d{ScY}y#>$ha~HW_ zh}oNkb!d0*4<=Z4%a5!5Ish6uN5Ar~_8C?0UFn9&Z@MVd0Us05=#+G(U8W`pA6Jad zQQT$R^#+xTOw8nifON{ZRn{~Jd{F`(tRUZPIuF~^ zgbwhNMsaZwVY10Ei8sGTss%d)ii+BRj%w-jbC+IFJ1^dj2w{JNBBAodG3s2uo!-yS zFTx-(Fbj3Xv^Dxll_|0AJ^^99P?iLi`0vP&$SMYYimTa zl^i=6`s@r@M6bXuiJJz)=V&yQfW!{+kdyQG2MUZJ%7~&3R&_&|lO!fU^bFSf)q9=Z zw>|BOtNufMdZk1~eHd~W*+XWOnrY27uIx=LT*~>r{m>wgj+WLX?u#okj1YgxkSQds zlMnH)Pf{}Cw8#GreYt_}(cu`grJS6c|F2dZG(RUDUK^{!4;MdLv8aT;-1OBC_71{a zmm!y?SZRv+e^Bd48Cf^BeW7mOS+Mz;TiZ8Zj^s#dNLhej%OiZnsX z6A36=D#%@WUQ)t%_o0DdUN$7fz?$`3e}3)Q{bnyB$QuhqPG7VDmz1QGl*U{;Tydn~ z%|56^bGR=5)aWWp6vxJ+e%SyrMQ+DQ>1|(evLl`dmxOn~$|o<@DWh5PekQ^57&Bsj7kKRYcrIT zo?37BgV{gIoB-gO4E8DAS4TCl(|Cv3>pbD?v^v9g_?tY$U?&A?-9&HTgU;Eohw+=z z%CI|oa^19-}_y7 zC}CyLEqabG*{STVcjCRTu_h`0&*Vdo9Gu|yI})CLpBZi30?~5s#9&n;0hSkaExsN- z#U}~lY#ZN4k3BNIEu@>rBr5s|-`|O{s)&0Y*~o>RC;0!(sb-4eD_3?5s~)TA3J!ej zx0MXUpILw7_NwUa((i+gPmC;?qS~=IN?0+wftl0UA8WqFA=yd6k5f@mVGN3)#UP_{ z;b|0@nqkA4vgmPvoc!#9(tXYjP5q`x?Ap>Zw}w|5!59sCD8{vIcV8^)=JG{!K0CPcpU%uZDFm61PX=deg^CJ4~nok*)bkJ)&_1yXV z-*Mg3UJR+7GY{My918!;tCon^Nc65ZfWH2+d-<$nF2bNr86hgHqEVFxfJ{Q=Rv;(o z;ZYGKL#D)HkYG1j^Ny0d=bDd62`SVI6avgi8bL*|aoei}0CN0cYtr}TY+L}zHwwV% z4IBEJ20rCpHzy2%r-YnK0N$KcG_gVZ#8u3f#!WDxIOVOu;obUHhg{t)E) z{(R1?>NzC8_h;2w*I)z)$jmfNSg!bk0qY;tGQ6T1CeQfnxU_YvW^EHM>uQO1X%K-} zmjp_bAG=QWxh$ggDX?@!BI}Vcg+;44g#wPHM zi(p19^1Nij=MikfG_I5voW zv6T0bTK&CZr~;G%qVda@FIQbHx9U^a|Jf^lRY*wpk3!lE0jNzCOL>DsK^dakk)B)+ zj&I$u=K=zS4{@z-FJqDCjfGa3KyA_Cu%q_rr+adW4;tTJW?YO^Y`C-J;A1|eJbyH+ zWWWdtS3(O53yfRaDHV{~5H24`XjWEs!^?GsPeAW74tOVoBCl65v@Go_Ja%LOhP7S~ zY7WcG6@4~gP)r8}P;_JMpFZ|*ng?XRg8;^VL5xGy6Hwbj6ij6v`iUUO;s>@i2#2RS zgXxPlmhAwd_5SNh%`73vUom>-H4@U;H`0-x2r7UZekV1U6~SMGJbfAKSg^SAqu&ba zEAqXq@5((eH@H6UWxaEvZFV}rm>^TLHX@0!7&cK_7ao06m75#rl@VQQS5_=q_@P5F zKz6^tYU=;#Hd>WXtTTqPnmq>RaT^7P-7`mIzh9pW`7#KHO|9ZN<2?;E*(`E{+@@>&o6 zIJkf0aO5#vqapf}>yOowZ!zf{<{xc_)Uf>`)DQ+BIky)aZMn(G z|K8i=^I`z?;Ky^}UKPfN-8BCOc1GXrw67gi8fb!v%@~>}i*{kU9kcUD6vo<2stuFT zv`DmbgYG%v%O9$q1B5Vg#e-;#^lb`gtx&!4bSYu2TvVhQj+VoTdi%;(*R?_)Z1r8V zY?wh7@*dAs2FsbmmSJ4U(PB=vF=57s@99^{&7dHQNpINbjx`0;9!D=!J$FTW0vMQ@jq zza|SR@6VD=c}+DFUgb!fz>%OSA(gK8*shMHTIQkw#mfGYL!|8dI}D8Wmz{@K8%$WgaT2zC!4>6 zPHozV|3Yt|U!%RlAWd!1W#dCtLGbn6;=*$OZ68)b>kyNIu*X^>KOwZG_( ztbhcNr%#D69z=*}Nc{2*u&9{}Pt~JCw}he;{g@a1ycR#*+ThQy-)58)%@Wi9$e+ok zlqp;uOo?mxvU)Y3=IXcC2A(#9K6iGxv)GH#yz=pLfQJ_UL?GT34?kKkD45pCiHIP8 z${7NxAPKgce=IeyvYk`8XGBusfV}Cg`gni2|Po_x0b$s!@o_@DEBRr$V z$Rx3SDl$_Bmpn`gHrxWw^NEJzR*QzFE`nK@LW>c<;^E;5^ncJULgeS?v#H9bnO?v6 z>l`WNIc8K?o|;R$F2s0^PfP@WO-#OlpPq2otLU`UNvnYnyq_nO8=GCj=tx>JmN08n*w~?NrJQ*`MdA5yL2|qZH3j z3Guwq7H}Z4N2eKj=U))+jx2rt*gJ!X_SaX#QWkJRXd*EK7M$qClwTM}iY}GaFX~i~ zh?KQE`A(4D*l9!Gc=%KU77Pw@Ov}7Lhf2?t;OH8+EWnpj>wR(|6|ghw4L4#^N2g4up1-{86I0WraUe|;qW z91-o_v)`6H#uQag6E~mDI+5W~2Z-w`@KDta;`Rj8`B~qEzCSTFbynU9@@X#Oww6pm zl*uXMy@ljcMx_)p5=5^C2#m~6Ta%zlPD1?bsU;V%397hqHlcgJPNm&eN26f7c^vmH zMG6s&Dglrc9qv*L7<5=zyo-Io1qzMmGkQ#oi-jnIqrjt~+MC<^w{ z#WK8pjF`2)KouU96Uv#v5{_bJU>zBO|3+#XHpRwt%*QNNM-9X$`c7BQznU36{Ly&? zJGPs1iDM~K7GEzGvkOM*mrIgaOQ+k#z3nJ)zMzo2>aCD#CjX%0lT>f{s(rEXrlzO! zH;0G2OC;~U?^|Ewb`JC=8gSlocK&W8bg+-LJrMTT2~%66lEOKx3b&Rct9 z90ps%&t64&uJ1?f6y5tjrrtU#syAH!mXMGdKE$hfq=^g#koLy1S)@1}SNf z4(U{4Xz31RXrw#e?f0DXuHT<5m|1%^v!Ca=@B6ww*VY)0|1o2hn7c84j>vsu84mbV zw^;3#U}=Iw_b|3)eQpG?@6|VFdX0XN!)tl10{*y%C>+{Ih;6m?aGd?in0(ZtVf<)U zLN!aBu}Xdt{(Lw^CxKDjmS+Cj;+WGKl2sYRqZgBc*TY2LOk`&b%*%hsxYFAk@y2Ck z8#!SuaiGUiMf!3ju$ntHcglm6(~bm{)9GdW9CTL>gz*FY`G8WNHo+6;a&TGggnj(H zp1*{W!rT#>%=TivIm7jjm)orEcv}E$YP-@}let-czGdqb`olSvVbdpllOCh!@0nMw z5j3)LPg1E+kFinqBWz-5_k$kh%;T^n&H$xWFSCcC(Yi2dcODILo>dC&BXr7|uWlJY zl$WCR4Aov{{>?r-US~Z16|yoi1%PTVK}HCq;d5>j`Pg=Q0E#I4CuR|t`34vR5VlgG zb_e@$Z*!fP*U3<4y%d#QDfvIp0r$z-uk6*#MWx8Bf+-*%cLE;sx76u5Xkwe-cLfm>`VQ1ZgJauK`s%D z6p?E8jv|jku4Zd*I^~>#@n9l(NK;HtT{hZI`&*h1@5dmBN|Myc&OtHA!r6v@9stOY z|JYBH)Egu!w&k1)oOuKO^$ZwaQllqymC`sO3J;*G+t$Mwkz{U*Hy?ux({%Iy$UN+by#MxmAYE-YH6l&Uom{dP6io3^JTmCE zS)m)PaZ%QJaZycwl*LWndGjUVxn<=l#QixtNAZ{mJn0?2F&11=*DkmVJreiF1RNRt+N>7iDRxYq*zCGc6-IW0ePh~J+PsCzjNCI-44BE~a&nRx zh}#gN9KHReLRZ#rIj!Gq^$N7J4U4idb+SK1{f>H^y5ogvR@_!H^h4?-s$O5%Zt|?< zuvu$*w$5kOp0B+hNM%eEj#U+4(~-%?h)rg;(Mx>x-g85MbEr+tpde&We%x?=<0{>` z_T#L*wQ*&%m}YxzbJb$O&WX(Zg44ktdGZ>hMst}etCoZTEmz)feW)bfm(I5d%*wXA zcr=pgS%r3Av~NcA>9~cOej*8U>j?@fhfB4fHHN~t5AarH#Kz0yM|IAOj0=-e56BFu zVClJ7?Hdt|2+1LqRj_e($ETIGR>xJ8fh^YGcmqFi@Dz{;IYky!Uh_sC+sHp=iRm=q_*$ZR*IZ7u6cPq zeiH>MJv(@CQCe&|+`mpR*+8R;7>#JtI(#3MI?zt>eLN=unTb_<%TN&$o!v@ik7ak( zxW6;`rPgw4>+S@}FmZHRdGa8x2JvpG*JSmVkVUpR_3~|my>ypRc53Fc1f5Ccp=0A& z)8OJ*j(xlLZ)=+A83LTT{ZMgrCzuWr9hAW?qq%@-M&pIthaw;*afL_8qMv zI1#v68-qAq(4fi=As|M%EKluJsxI9T|C4K-8Jdjxe&U;xr|kY%hOi7*Cxwvy!m_@` z4XZ+7y?9-bGAH*LH6&a;i}ybKF_lu@zBf3k2gr9(Z{HblUba}Xy^2h}SZlZ=GJJezJeE=3C@XH!FOWPM}>uR>+csCT`p;CBdn|HR)d=alm8OAf{97m9&@Pci&!L z{#KW!On(~0H(t2*()nINns#)up_uA&N8qn3U)XPMNply4gJ^QR(boF%fka3=`^pPG z`&_*p$!&)-iJP2;12Lz}db`((w;t%=#D~`qMK{mQSc-3Zu^(??5gepWIQI2M!3n*v zjY@H+H|P1&shQ?? zt+(56to3s3&66c%?FrpNV@Rcj0vBkHBkQ>R^R>MQT&lbD?qgp0>S zoRV!#a%DmhS=Q`2-(Y!9L5`bsV-ksa#-8$ko5xnEs_n{c0Q{*AR05!uK;p07nq{Xm zc&k`1u&5gQmu4afoFNgWubRyri31aQ`JiJGWf0jLm}ZkH#sJW6{PlSv{F`2!$N@(C zkpm4(%oJ?eG`bg5n8Zp9t;{U7IN2sya9D=6nv(tZ4jk!;(1vnW*kbHj25Ai+Cj^(C z$7=BT`=32(5W@;8)Nw+VH+gd9I2JX@JG4Mn6bVU0^>q#uKkzE($%VV-d8hGfTJvhT z)wL>M%A5d{OQxw!=Jpb9g5L>i22s@>QG^FoOz-u@7eKdw~U=+XPAgo_mHl*Ml@!IxhOI+apK|#_zn! zd+d~QJ0N-eP;^m@OzPlmrb2*YE^vIT1q$-7=k*Q35|yOJ9?}n_8K)SW5u)3mD@+g~ zl{-hj@x@~6Y0rR`^2yXr;SOdnL_VziQHs?l1vtLo2jVv44F0yWK?;5sxXR|x5fS!h z+huw-2S#80H1OXp{0f~475Ga`RBSsQmp~cC+ht!7^h$upTRWP_90!=u`(Dk{b=C&Y zq}#~xgqmV>+XNCxg5_mW04-levx+)Z6|$T+7py7lpT_Z8lX0g*Wg{uN$#9}T$r4cr z%2}ZhGmNaB#`DB0TA;2C+hDA~NAx;`jZ`5PqeE zjbu7(@~9*pz^}l8P=trs^0q3ld6p#@mvQjylos$S>Fgh$6m6asCVT*6X1xy5CigvX z_Qjy6UBaRGp5m4L%6kRw>919bJfUt?TajxGR>i(f(Lf~UC&MtT&q}lJ3nORHP+zBu zHCsd^F!XboFd8L2!O?{u53=##I?;sGR}vQwdNP7YezABO;8XFUk1eTu+7ocj28&Do z$t;9PD7^*Q3w`YAwziqsyF@0a=SYVbDdmQ1K3DRCyMfeAC$%vJU%BYNSZbm)?IS`NZRCn#>9 z0d*UGm530XXJG?5i|*uROmY)?0xjHfi^eK55ETb(#&PKldS?4pECZIR&QZt zlZ6zjhbEii9L#Goee}Oe7SsNo02Y3y|ElUz8bAO3l9jbQd61<^lN;uptY8rG$v`2} z*{9=ML4OZhv9A?3TtiUKIE|Pw-rMP&2>msAgPo1w579v+*H=kOD^M20 z)~&oB*_5^Mvk%38tzC}On&UQ;m?4k(tkg0lMhyv2><~W+!_dW4@;PK-@+&OdzC?fY zc^H*~?ZR6rhrDGK$<2R}sGKE z(0k0G4)gvPTXlmv>BzbF0JVdaxn(woj#x6!x2=sm56?Z+62&*%GWLMX(& z+PK~|BjLlO^4pZ*qE+Yex&)R^@22Ev-Rq^?4W*)5aphYwFA?p5I0sg1(uoU2&MyOe zY`1XO_@u78GwnURBzLONDF0?twDv)}>VZizVj0fq%=SJ#|=b#g@|w zYgUeIxj^pFZh@OTbuIwK^L-*(Udp83ngR0sQmymG_DpWlif(~nmRPSMKDP}C0hnL*$41!7?t=E=rij`~SR zykobZgnfVS2jxl9o8fFLLG72xvyXIFliX;;kTvIy-tXR*5AI+DApT?r6hUoNA}&f2 zcSo{-wJFAPAm--)V|dqy939}?p8$v>3?_jLvuXpw$^SCm~N z@99aZG>S#gNsmKvn3&_I&#D-=L$xUWZPZ+U!_SE03 zW(vSB6aYd_ULfAndbOkdvHoABIf=El{!{T45UlY1y8~aw*3n|l=#GK`;G=*8COV2A zHo&0uzIfR^Tq;vO;OTd(>8hW1&;IN&o(JC$J68bH&M(Ko5@!G&=tiUU5ZJL}oEz6ZH0e-JT(XY>8*h_^Ph*dB`!{)6!njD;w0#z}3P2+c*I_wAVV$lX&KKmGSMNVz z^;n=!SmGqRYGDq{JY8p$Ul^|SJYZ?|xX?~w1Lj8hepkOS@tR(^j<_X7EfM_xRrf1& zdtp@C5A=yjf+mV;jbeJK(wQ<(%-CD|Y9i8~z7+R51G$+Z<)bA5#ir`jVux?*<0quM zk|RhW@+~HI!nQjc1fGOjviv5Lq3Ow&pkO6LeGVD^4NW2Er6Obm=i2E8F~+lixqN4K zjb-bVtK`&_e8sapl$1>=A&Cl}8xK4b*zrnVKsw+!nRlV8*WpAq{+dDir{^DmPL&)( zo}0{7hzDlPvplkK4lrcI>(EtJmwu22y##|XYH-r^BUuprti6sVk=$6hwN}Pmx_IX7z7s0=(kT6uuz( zMHxmWF0BbhLQyb(Jke5$6o%Mk6IerrqFle}Yot1MWExgQoNkp_9(~8$p}Xf-6?tM; zV)|2H_oCpXAEyAzB zURMasN1t|O^0M`{W1e`$Xr-%rLWZmkRjCe}!cul@p85MQxB;s%LyfDP4*g^ucTRV)km&{eRUD*YE8 zIWa7A+K+NGe^l5)?(kU8;R&f=8ip!42|r}9MA$wik5d(qlD|o{+$olhnJepj1?*h$ zTnsoqR3W7^oNTY4V;^tNr%O_PtMrYqzc>k{AmXT%Uk&+%Edg@tq!OJ!lg%s5mhc}( zydpHu(M1)olZ7pOXG4>dc#3x7^%}bu)S?UuuqL3_I>BV6(mYmVyLA?{6GRt7xM-}t znS`T*Ph@Bc+I+W$g$T_TwJS^)sP)6vlnS(O#F3{HDm3A+bopCI!N|<&CI7fw{MPU{ zTDqI@*%J0Q3Y~gHwzsVmX}mJ^jI^3L#k2x%#8Yh-?U7EgW+aVKcj_jJT#?2q z5S=qEhh)OMa&`Uo6}TGMIbY8&tMPSYf{rS>eqN-^O9=g6CB{!Os$#T$1NAswSa<%J zB9kBn$@WKku*r>Z!M5(QpYDVw>!b-?qijntZ9EGl@~6c@ToK#&eI+j=QnvRjM*1h- zz!_mO57w02oP2ooFllq4@3w4}KxLKde5swsV5VaB-iP`3l-X-rCWt&1n zR3Djue1mKurv$Zr97G9dTsT%@w5s5bMiP3gA5%PL&(fH|stqhqfqH^ z=%rm*R6V%gRLl>j3zKbP%-bzUwi#)k3Kf|g^Us#(-r1)(V%Oiohpp=EG**Q!E*lJP%4P9%LaUt;Ks zz@2f-r~z@cQ)sZL45L2p);?}e|9xyLR;Dm9SKZd%_!&-|p-5sD>3H4}I0)r#hX6<=I1sPdD~)cLOoiG_`06X=8|fdW$Nyq# ztVsy6HNClC5|&2uY#y{83Pu&9j}YD8)f^yFvvJ`o=%p0hxqNN0}Kk9&0Fo?AW^i*!B7pA}{FNyTBk!U?XIH#tUf& z2F?foQI$WA74NRjlM-0nVJDe$dl!x=#{uH9MfGJSD_%9Dr2j-{)>5_X-DkH(_r%oQ-5DM z<_c@araZx5FPX&*t1d+jrxcFms=IGu?-34OA`*yG`n)PWu^?9rp`Z`xx7wTGC%mKE z&(f?VguFw1t76B-mEq_IyU9oekzsV>os26pI#p`@p&vH^kHu@U&hKRsrA7qkzg5;| zNZ}Gf2Uc-V7~P}Hr&`uPqFg#CVd!BdP54`^o#iV3 zVLlbQM>ixx9}0h3gP*|2nv*~c7Ly4G#YzY3JR=5ArDS+%Dk8&qWoL%VJOo+v4I|4* zRgvnk(h=S@($uo=g5O#b|HT0l*XG$Vj7kTDMn6kQ3Gql(U@i1B=l=*P5b&4DUSRos zCY&rD5d<&pKEq)&QrG@LjV_2};nEky{O^R$T_y)LKi?R8S)4=fBS&4~1z93Vo#lO&+r9 zDJWO%y@fu*Z}CVYx|;Ay7h)#zU<&=vVR*cTVMG?%xmM%9`PEh<0|P zcy8V3Q#g_>s|6u(uu}!)xptUsGhhEvs}qiB?pw8-BG6>PzJ4NFEq#d`ciwiy`mM_a zrk5=WB?Y8YEE#Q!x>}p!pGIb4$&C9B)<{5?_d@*W(Xt* z9eiZ5&hcR#%m*VF{Nb_V`ez1$FuG%oKH@VLIRpAZ84`)S6PY}JdM#iqWGNUXRb{9l zQ*7I@kTTmsL+$}&8HbcqauD4CIX#7@-4WYOvn{h(?pSw5=yOYjfZFl|$gVOi{ntefL!gWxo2oY(WfY z1Ic;C10>#F1FTHE_pEd4l+!o@>(d0QQ^}dah9S}a+g2qt$zb}au-m4WpMVLyvXOYW zGI!nuP;9tvk)oTRh(xS%lTKrm)R`F27yfvFJ1u|n5{>;9;Fdj;82e{I77|h>@mRQb z!|Kuhr|e+@;_H(D4EoawhQlXx!GJnd3(($x&M4e}fkC8%0c)S*==k}y`(mjnIc35s z`25NN8$AM$D19Vo)(DqslcJ01h%-YIzC-EOTv3VX(R%a_p7l@CPIp3Y?V)zY>QP1~ zd3^Y8o5^Fyl_|m0e_{LE!mHlvge!!{5=f~!*+?}}5Iw|yh5m;PRjwK$LOb5Sf0NhM z(g6@b`vjR)Of-GB4iaSPI_O>(s=N?(LPppwk@@_60_y~1M^HcpQ3y0zkDrq0X@m!W zo80zhMr@n-0In#R-6^nhkJ=Wj**Y`xAL9iAEzv=M{9(V6MJw{$$H=NuQvjm1lBeS3 z`(|PTH_8FjeA8!+o`S#g?Tt~tlF|-^ll-hZ7v)VwNKV{aOzZdm@;}5*5DXW^w=Vy; zF$Bo2(aJ~(6NY74KIG%7I7J-jKZZZss=a@Vd-A3_f+&H@NJJPgN6w#%RO>c7Z6pB7 z#;3~`>_-cf*LZ=0L_$@rCe(}{<`F?zhc=btD2Ws@)W||ql^ci|7*cCm>bmjl7C{9N4i33raHN`&lK0s|E%UyB%iD}v}BxI z9X7wo+;4|dfO#H89O5I*M3ff)ctu#rX@}q{B)xU9u}w?THd`Jndn04l(JcX1lYJHP zOR+}@%M!F1W(_mXYjujostD{6eyn3^Kdyz0e@M}=Mt`Ri>d#2nE|AX^6o%zpMg&vO zOTvJHUV`!ZQa&RQl|3WuVNxoRLAD-zn))#wRcizx}nJXVtZlis1+( zrt^*~;n$7((22*$x3EvqVoARmn1gB=KlWYh3uW*pajh4V@$!YpE0qK7$GDUv+DQSb z@YmiM59~!qJNj`NVb?xTXXM)AZKG};XB)3$7H;ztzMmIUlJnhP z9{X-EQ{y^{#9xSFoyS?j7ATbga$+iA&OiXh2wOK27^%9ynW8g^G9e)vZ{Pjpszcsj z-O*2=AM}WdLPFMlGRV$jsneqz?Rn?q+1DJgo?y#%I|7pU^y}~!K{~9+tBksANs@XQqkicT?#H!htTrj57 zmF<)Rw2I=oCURE?T39;=0`Z{c<$KHSt9F7U{R+$p(Ug*AA%j^F=2+#1%@cClQKj$v z7BlgjwDvG|xqt;02X*dwc_U6r!uAcTt+OB{Sf#dZBsdot+pB{PSnR=o9QJu1JdKF5 zzJ?~$ujlrmY_Gt)Wr^AytA`bRt^kPIyyi*hCT7-P?4=Nc3`|-k-A#W{Nx3WhqkV5= zL4{fau69!8p0D%D&Rpu$Qr}zAM^CiGguogX6EAP(Vj$LY8 z_>9-zIwC0Qk~X1gWd|Y}yq2lz{^SLA2TRngxeBR33o=(uxzO|8tJdsP zSHI29N;OqM7@swz1YR(QsLULT7r%8SG`4dY8K=0PW}@728JMBIc%8Ie7>`-yXMJo$ zFpwdhu`ljOKUn&bF+!KqcnU!gGG|gO$80Gy;{By%A@Pb`!b>fZ zWv%?iWvlFS*bAyI+Ph#zHd!tTe|4XOh;mYW7ZmiPS*z3!A2S5*?; z$#HXjd>g!~jtiB9O~HkWm0VxZto+}#JXS|PmgWo_e_!yQ^BF58^lIFXi3p(nixj|b zJL^Zs9-{n~+eEA~7T9UDzPnuvj5Ij_g9z_vE+E1)+y!WUJD);7{qvL51(5s+H4vku zmUKtXFi0V*<|cwGJ|pfgNfONa$3$ywY^9o=9f<-J&QAwVHIh?)<%w^s<<@DI`dqMt z%mNZS6~LLZu>!{)^*Ql;@*t5X zfNfC^`vuU~nXIb%g|R=q_>6}_f?GSUZW}TS1TQE9t~@melcMftJT-T&N^mvM0wx=% zoDxuL5Yt@W8Fg}*RZw(`v57g{byh>KC2295(THgww_Z~N{xBJ+adb z6$$VpfU|F9`|nkFtnOS~^sj*sv~&R*-Dn+XJXf8z|F^_UNynbKT^{3Yb>J96hw3@F z3?9%dPIP9D9ZcflMg+zT3-01uyr*Mi8E7~7^r21 zfW>^>(b%7G0;E)rxrjrM8nAj3D*visj@>>7Wdep_W`J6o7(*$vpvB`SqgscoC*wZJ zN^5cYUM}t?v&j|dDfD)A!~dEc!XT;ce=V)&&~y9_c#Be?OKoauPQ|fW{buxI&xGj? zGQDmb-$a{tcCca*DF=5p^l66yQc}u6U}0j&=~T=Aik~H*h@qCl%J*Uw2goGaGP^Z9 z&TTh00QK<+9?nxe^Cx)%TYtc>EoyT&*YfZe{?{Q1=F&=Qg zD`vlIH7~}^=2_e>w#aBOboYn+V2*rn1JGfJt*5uOtEAQfg$bTNs|F=*$kQS3gw)rf zP+V~~$(SY-GX(9-meh`;6~e?z#vM78mr|H(HWy3x8l6-a6vNpAod9a(g*I}Fbs0og zjT_HwekCKBuaPzDgGTJN9kfeB0=ipvVMh}A>I1rXz={2N$+4fh$br+SPB+%3XUlZQ z1vfrnwiH*I9zP|v7t|{@_Z^ga=j(BsEnaJTPN7c{qC~mx7YpV?XlX7Fn*wpcZVSiI~23}zJQAXXpK1sob94_d5Nt>@c?yj*npW?K(hpdQCQ?2|wkYXM*(upAb1 z*?wJLu5M!@?*BWXMlI_3An5*Kc*;e0gqorAHJEy-hW5( zfU3O^d;Gq3XlYsU=|NTM=CLvfgTtxXC@st9yq_8umwXQ&eXSs}AH+#qUeSG^%N$WZ^&sGNO@s}j>%kcZmZA>a&o6Y<0eaDfbjU=yQiDBj{> zKc~mr0ZOM7AT?~@UkSA<0e~hDdyzp`z)uuJmTUBWZsP6ZwI{U^Z4%c=;%gw>rVub7 z@Om7rA?~h-_Cqz30F2*1U^pU;$2>196w*)sW+D6L_2HabLG;Cw)j)v9I7q{|usj^X z74$)6${H(7&inoNUZv3^<1bl}v&W9~>)V_S=GL3I(|d)*FW$c-5o*A*mItyHCgrHn zs$5R{$03@?mBkDm0^FMUa(|f2C~@fG)%<00$_*O16x#oE&OEjkD9jbvF{@{?0MXxt z$kD7t5dHmZPd#YfUv2GD%<}{*{zVFhK9R>@J@XA_5SKZj+*aooct+R5wO)?Jp{$7n zPyhzm|4uxPaGD?ytTAWzvT9YJZkZm?aJy&stU*C#9;meixKV)AX5xxhiw!w&YEcc91H;ln?a1Nr(N;8|T^rpMYg9ZH zt3*fZ-|_m#Nuf?FM1(c-rW4@CS~3J1L_R&$72G$i?6Z6pcv=YHl!nTiy&+nC$OJ(( zqQ7<4_7;vyb=0Vj6zJ8L{c1~06$T_J&8L@$-lJ_d$#qKZ)^vBX9H6}ke8){2|Kx-u zJ%8mEfOatpq`RoCc4_p!T?d{O3A%toasw=r0RY62cTR98aiu}mQ#)Q*x4Isz-6V2D z*fpyHfeM!6ZkF{p#Q2l?Q{&hG`(h6%dNq6X*l{D^2I7AAU0bTd)qImaIF$ zg7WLXQsl{x%UH&n6+NME;{Lm79(s8WyRCproUh^K>^Hz|;S<<5Jqb3Q$(2(2BW_cD z`O0#iOJZe&b2yg;jC2crOpnJsX%M!7RgVN$ zWI*U}GT5r|3*Xk5JsA8qtX2#-?*U?!5-f)3gC5X39-Ex56ZVbxOn5_{Cjd$;mEB=` zU)@a7XL{XA=y3o26ScaBmj#EX%yA0Yr~dEp_5h>$Ur8h|r3R!||D%UKl2ibW_{4W{ zr>^t8vgmiMaG9xVpuUTF^N$q&Y@7~!02@vlmvf^O_o^2jGb8u+`V+~F3+8_L2P=d; z`?tocGczd9UlG7s=<5l9oFENGjQ~XAM`JI;89quzw9|9-?z{O zAicx*DI5iK&n)Q3Q=e`C1{gymgX7Yi3lLiMGbpTvL}b3E}K@Qf@%gZ+ZAL%fZZOrO`=FE8x7*>i7R%iYyAolxe{ykUz+ zQ%Z!8AZts+i{uLaIj<@Dx!x{+{y=5=M7RuSEESQ-VR!-@yr;qezkDmsfI?Kk_+JN% zjA$2#-^87dvXbfup;MvF#pfu%Rs|*KdngCB`LtUDhIyvX1cYip@SqWg)aJv25s3;n^TvL=)0Qf3Ggo_M-^)Ae6txRaf3J$hb5QTb(7rR z92XgxK@l$_mupx=AyO=MKIn(NnbxZ6zW%@=J- zxFH4+1A^nEO7N|}QJgMlzW79r)jg;2o@Z<#c=x@Qc>V(8Lcf;b93O=GJaz~BFgR}V zmypN6lAEEi05lA`ItfwEM)=0W7dpX6T9<2 z%{x@8KYVc@>(8T!{>HAK}XqNjZo z&PHwxoVAOL_xbU!34<6zI5TA+gKD0SSL+0_sGEuCk)KO^GW%a)oC1KZwB=!a76g7~ zX7F>H{1Cuc|0{{|54gb4Exz`z!U_nx`#j5ih42Vj*rXz`0UGQjY&EH_z?|A}5nQ-c0| z5NDLT2aTNY!nDFtApvjz($TFlwnJJ2`8F7mSaxs@yVX24eas2h8JK2wI5L%QVO2?S52x`WYhq)Gg3?!fm9Sw4YpJ;ot3b zT@$#_8$ZuTRTn*20-_E<@B8%Hl36NmHHh)NK61;E`V!<@2Qa9^SR!yI9qtLE00rX! z>Gc!h>d=r_^=Hu-xXOgo^3BbdP7pgFV+ccj2CO54&g{SN*?jxOAhdnQYFmW9n%)NS z#4dwP=NoW{Q-44_09tYzBu3T^pmwGtXRKvM*MgDCuvjRNz@e4-Srr_4Hu1uHEb9~z zG4*_e;^Rgs!-KBdn1eW#XB)r(T5*u^Bs^RC@Lg6km24Np1Qwj7+8rrYK3eDldWeUT z7@trbp%u4zo>G*5!0b51&DhqGvj}@WG^BY(>P2RRel7G;6RqV%p2XaO9N=J0H^VAT zim!!}DQ<7U!>k#qVUw6j-wea;Ws6F4rc)75y)gAX0lR+mXzfkHcH386233OaG~>--X#(&%i z0yBShc3o;-LKg44S{2LDdCuu?$f@Japo{4>xx#pJA!sh@&d7JUCCCDYuTLk@t=nH= z#&o{Im+~Usf`;cCFQ$dCH~z*t7ufD_Y^I-*93-Dp#;LqrajCV~bKJSzqbSvu@Gi)H z<;-MwzGgA4gKg3M$2Wn~MrHa9p|hdEtc|aeKMJ1u4u@2H_VzmUT^P{_2~)RwKZ5b0M{bsBu!y|xUWXYyYtJtf7#tMTm4 z^JV(Ry>b6-PgB3%r4z93eH?u0JHsXX>8QLwBUQEG=(`O_skUX|qI zB46L+gMaiq$D&&%d{@Uw`8Y4VKw;WY#9zdG!C|X1f(Nnr(_?@tSon$gVueby=P*I~ z;(~CkWR;KSZ@C?N%ie=xo-?Raot4mJ;Ik;pM&F@ay7UOBYur6O**VmT%Rl!Y8ER*xXc_E zy2UIpM|Llt7_-90PpsS^K2Wm_eT= zV1>6_u|Dk9g)PB42Ho#)=E~>Phegqd;{}?tJ$X+JHw%V?$H^%LZC`d^E#lA2ba8FW zb8OP%QHxB?y_kDF_he4;LCpz~v87Lo(UC@}mK0_664UbFKx0mR4mO89{GBswE`sA? zOX$)(@o5o|UOs$<{wnq{Kt3BHNNYZdJ9;-RF_j}M@)whm#<7IB;l&MHZpGF< zls3GQ}1_rW|w4|qP1rJo8~b1GMFP=y5RJkl~MANn&_?e~9* z&skgvSC<|+zxLaw-T&GZszO&NRuV$eoTyH^?*F4){??gK8mtRgjVg&{Tb zRDXLn2?PVNouRhHfMxy5)Aprsy94gV_UthrQa9b|7j5+z03}q-aEyI;VJl7QMw@Z{ zM)yw6^ce=^(^@NaYBx%AuR|!;*GKe*xMrS|M>6m3fR0Gq1&JZfhG@id2}&0X>}Jb# zA)lA^)U_mOM|OWq-mf$Hv`qEd@AjO+JzY=)MV;h@tE=p8CmXhTPR=d~?v(0W^yq9v(-2PT<D#Mxq=fb$13rZlbNe;sDSiD<5aKI*Enk1}j+}c6J1~ z!{UtK9=*-OzGPR!$EQKfSN`Qakx``jCN(NAYy(U9V%^MDD6JY!(}|94B$d5Q@p7Zh zKf23bl2S}*)5>rvmc+Tv(c!Kjqd&vcWpbj~ZO|i{V?Yp71vs=tEpUP^f<)OpQA>ZicR_yF2cpBzYOtbde!2p@zr!4xL zHsAMHKUXMdL==HW9bh}}7-F6jC00%q%qoKN$Z%*&hSRkT6qNj)zbVaei&VRbF6lE6 z^kliMcBob>v!5i>#>1lHu0AMVr3^&zF7%|0k^SU3kl#E$siv!xjwtdYHF|Xf*5n9PjBEEeT5#M!Q^mFdO<*F*bLD zX(1QRgDJBT|CFeO_})Cxj_)=@!-doij37Q4TzV$ncLkmQ>obu zE+Rh5{p;d5%5eNIhi#%yTSmBt22H7cFVZG9hPeyBh=DPMI8$AOPgMTESotSxddR$X z{&?#1<#uvh-`fZ~yL7_1HH}G^E0dq^(BJh9h52(A;~%6%=MtXkX8ZmgR@N6hGf>VD zud+1}Qx+Vh07oVk!2wAJ;(D^5@lC?^MSu4Q``PFsa(^7H)@H+2IbEWxx+K2dci=gv zp2TU^<0y?}frTn-tKMk5c-a%j(oG5U`l(ZQ{_Rva2Q=>n-0sU|H&P^h>f09g@$^8NbI1)(5=l$g7o# z1P<4!M;x+A}G1Tuc@8pvV z3I1!D*Po{pn8dQ6bT*~DmZ`+IjTvIisr3M&9$V7;9hZ?9^Ip+ik)4dB_&oJ$p^7Pt&cjF;U28mYo*>PsQKeU=lSrT8-Zy|GGmefam% zyRlwDse@9!QGbvDHz5YkT5D5ZuB>>nmm2&zHsK66)>S#lVHOoi^B5 zS4(c2Ab1;^vrHD-uKqu!&NHZ~FWmYn3Mx%NX$gd;fJleXiAae`6HyWA(uL4lfDn}~ zy(l0hG(rAIZ_=BDfOM1+Y7B(XA%qs%&HeDsdq17bWagaYIcN6Sd+oJ;k5Gd_CT!kcgUb$Ux{sw18*0V&kfq*(j3yT}wyr8Za?y>M$PibUH{sX7jf~P` zm^W5^1nl@AUv0!CWJa~9O#^8goGX!~4)tdvS5$Xg~f^?1y?V`8!{QL6i`o_QT56hMHN=MHd zp4F|dt}jNZ*EP|cIrSoZ824^$yr5LRv-aDyy}&IUZG+GnCp-qmdC-&Hdca@_5&_TTKnh*X+!#F{iaJTA0wMYX=D7)~s%+_023 zgVlGwv%32tNb#3zz-KAX=Ru}R!UxCS=vM|7;_b(U;9q0Wv@2IOJle(MvOmF^9RI2! z&L8vv*>Sq&xnMr9R6VeMg8IhDpN&NFkEt^UIM`{F?_N7m{ZKD?VAZ8%w7~qL!p9x=l>i<$#+;2TQA<}q#GDnOWjbGezNsH0sbGW+k?>4*h zB4@`#d!umQFx>afhuu%Qtzy{42R<@og$A!&yG+08@z|F9FY8wn9>_$K)u6~Lb;)zU z`syAK*sRF#+9^UhHie;JqAiinD)xn?#mM^JS~IGz19}Fe<3;1 zIObjY=RA^Ge9{^NU0fe&*yteiP!FGfg`Li{)1NqGQvt;Sl1ZLKd`rj9w-D8so&rT3 z4+qi}24PzJ4_Z0`NFev(b+FLmUy1@4dW#PDy%o;iiXY*o=(AJ~+br!QRW_*L{_K)hY&vG%m*+g<33$3Vl{%PNbD!CjprMfw0^WK>+@AEzKGhL=$0 z<*VM6OZK-mpPG%c&qnUu%*fM+gJC*mta-Oqt`5m<_2fm+ge!Y9^|B1HvZs+Ey{`D| z!(-=4VpOGh%)k_f)NHr=^((40r%wKBn2#}=lz-Q!b6Y)r@`DyX7NGn-STp4Op??nC z{HU4IQ(t={M&9G-z4XxYwch<&CDQftmZJ_MEl}abd%<{hEEgS)^jdxj-oG~_X8A)PsFrFD>bbr7sM%PdGXIQ=sWTZu5wHGG1ELdd z`ruXN!Esz@sklf?Py}{fg%_w154G+VS$(`~@WST`(_0FcuZ<_Yy%uvG#N(MK2xfSa z1frEgB&X$(Su8#Hx>G~Jcx@JXUuQ?4g>{52&soIYr!?9Yk%#_c@v13)Hl9o}g94UW zy%U!sw)m0pp3HEZlxF=%&z~Czt=2?&c2EAy2k8Z;z?DGq)y>W;Ps#VEcFf5)QML4> z-rskCxr>9kPIiD|9{XD5D?Gn-X{Cy+ydjgJ^!plUj~9Zr=DIW1ZCZ&+Ca9U~f!&qd9_QZjN(%pEU-R4g?icwcGlefoenW|y z?_LesV^!l=gCY~KLhT~QOf6@tKi|%s&zZ{D9!QitmyYB&I4`-{Co%VhOX)jeV1VFESFH%sjr`31q;Szl+l9ER?`Qli+B9k>)cGh6oGXlpJazMc6L3@=;+ zv^lr;=pMMJ4QEpHGup=0=YvTf;~H;z(-Q7A$VmH17dy6)ivRoU)mJ_z{L;-`;i~@5 z#m0J1wf^$AynfDf4ZW)sOzv-+Es|)cyW(G!z9oyZaW$GZpMO{NK(bue4yxVxEYfN- zZsfe%;iUO!g5PB8?{=ajfA7|uKekpL;hAv|PSuEYXC{mKR6qkSWnf+@5G`ob(w%+> zSs~x3M7CNBqG7GritPQ%-v5?1N&nWz?NXB!LCBv!+XC9H`{85^Jgz+RS0aDA$+TkW z*$vhsj)eykA;GhWxvMl}D5n3G7Qgd2iccnm@97qU+~=l-p~H>R+zsubQR;D}88au5yA0xI^PuxQkV zynW?q(_F*F525D_BcJ{2IQcDJMvgD=D}}C<7;`Xs{@mGYeMxtFtWobD=3r&oD!As? zt@u?JeLy%Db*u;eunhWj>-A{a;uECXYsnW7e_iIgJHyYjeUFnJ;}P@rRi{6i_BJwf z?@``mo}^lT-*i{di5hs;zA@|joEPbr%&!2U3}^{*NVX{J`#$sh+t|SMNb0QhOr<6^ zOEVd|FjjF`qWb8ZG1hfpHYud9<#tf&vHF2B{cgIh45~ZFVJK>_?=7pV?Z&kYpt@3m z{<76hXK>aoLuRIuvbQbCrY$_}{vE7%9a&!+6~TZ#clP&*!eCH61NbKWhxEglW03>im}{>+J}^eRNA-w4FtBCP zf2(o1o^iOF*19}4?xX(4%_tt1Gv%q)si3LrQ$a_0ulc%XIZqg}L?Gbnllh<$1wWPp zrE}3>+9Uh=(z1lOnBhw*S3xW>X#wgnk~`WXAya{Vp4WXlwz|PRejQ(m<8~x>f(fTn zUxiKu{$y&y7l(knnG7mPa20yK9gg=b^-`M*Oh?W;Djy*A*X+M#orlH618tE1dOHYo zK|3Ay1emcLGoVbKW_GiagId#p@UB z%gd%yhEw6Gm*KhUf7+?0R~_&anX&oiF@xTeeXM8}4Ts(P`fh~}XG1?V5xZ=oI<`qz*oPb*2=2N>|GkMwb!&~-kMcA0T#G6^(=_ZWVWF_RrV>H;c5}O*(CWTly*ug z%dC>&MQ`!tp{1CFFY8H$uI_d>8@ngpLvC>CFpUI}8JEJY84|_%htJ4j9*(>6Q*YA> zG!yN~H=3?r+zA2N#k3G3i7Fd#Ed6xH#YgwcKU^Q(+e!H+`Hz~^A~S$h4|97*;27EC z++n_3VA5vT!NmkgR*(Q9Jh%fCJaX-*M#(UvvngRs z#*Q7)mmb~nuUErT3Cg>e(0(n0Dz@|3Uv}KlaUbUxxt66_G%9%HOk`U`d$0DA>Cv3Q zKZ#t< zyE`*Mv4CpNS$mK`w&jB-gtEJbaTA$G}4MwS$aOlUg*B^X`( zo^JDT2C*F@bru?OGiRwYAch*X{FRkRGGe!*MZ|B}s1^^zN-pUFMvDWO@HYbl8)B=7 z(8{9NSdIZeU*?L`LJx=Tg$~k)U0o@DKHr@mKz!BT>p!oSTiW=wvidH~&(*&nMFzE*IszU*_?RY%8L4!?p~UWJ%f+ zji}v^y9r8{V8f?OrUj_bJEXV=o>|9NHoIz^IFSEB2+iatWM)`b%TJi`3 zj^S@uwrqyo#B13Rv0op2GffP5!J)%mHi=dr3+8>rdN&4|u<=^5KzY_Zs``Ge45{^t zmrh?I*WT?>r>{Zw`$y{4CLBH0w^*O!|46{>4ThN=8c zO|1M(eyZtnd702y5UySNKr5WD$^GoDg-E85m-GXzQBAW~s~^V(NU#Dj;Up_(`$-h5 zi=l`?x24O26NLv!SN?wOJ2K2kqyc<+8j<*@Y0AIc^mQhGVXmo2<~Fq4HneW>C6RP$^OKD0tNblL)z2i8sm#DO|e>`&QmE*-}`M;{i z6YKv>JZ>6|-HS<-jbMMtrRyYxTBxY`!MUHps_X*TU==oWX8-*vc#-i*$<=Xu6XrHa zn%<;A{Hu_O&x6wa*%fY_T%BnEz50XM@YLWL*bTd*O#RO-r`gAhI;xVVSwj`%y|l>v2@(sD(T`2cC!WpKXoxRFwKwNzljpi=#yIme+sB ze={EZxMn0?>v_+1Bucu_pEhKIIs)j`JO-UmEGX z`OtdvJVp-arv!7NH`rV!Pkp7{pYpszX!tUr>IpMr^4>bJ?4n@Q`3xxYZgGNw9HM9WQ z4E+}E>Z2a`bvIm@y8AjQROz7Cz0gs^shKhE8M_{p~WfC!*ncChS9H`eXFjeKkVi}1^DQSH7hYuhElwZ*4ON%R{ut~!L|SQLiq za7?H6^7bWB=6a6J;n@%PS~Yy4{-10Y5y8Ssqb{!JyURHpm=9kO2^0#Z9xe85p>ymjeP*@81gHiw-s~qwY24!-;@wW z3@^zkYnA6l6-+HE*G1U8hJaxQS3zrovOiHPV-B?}XVD7-t0HXa{F$-82gZr?v&{1Y zHk{io&doAb4f{45_APfm01zzGSB!Hyv*_VH=&G}v>SVflC9n5cdrv?`*;IX&$WNeI zirKm(y!Lc1QI{g|(>uqIqIQ@|GooTnRUZlO{@lDjFJ?H$~zsF)*3KzPes%Gu$;-chvhJTm2_L+rZg~1=$Q652k)`pbCqg&qGOH zP(Q=sTCJ&CbCOF(loH2&f&0k~mVwO5)iT%+g?59-N0P#&WK*uMRy8dmyL`=<@UvFj zi`6O9*ox3R)oJ|{`RLH}LDDs{3`uupFSy($B*rqn58NBCr7l8q_+A*geW^yyW@YEgPQe zh!3`i+sq!C33+LW*U)r1y;)sY0x^hkBYh0S#ldNtcxQ(}Zz;i2+j12^Ryj2}x-(){ zOOL;#{??B50wfbRkQ>^08zhJLgX)Mr9g$B3srA+T%56y)cEI3#`yjZlPR4ssuV{1#P56<9}E75%I2~vpJ?sI)_LQht>pPfXQ zswu+2s&isVnQ{dY*7iFf&X8rgaPGULUwz%+t`gq~@ml}ymQeT|QYcfA0U3rCo=BBJ zk8Tk?NjR0wP~Md{1nXM)5CI?B{f8GHA@xc!;lp$g`Asb~qH!%7Tqb1k;-O>`s%|jJ z-2=LEw4%Hi2^)e_vJt%LqeEooon=ePrA@7waio(mnyvD!`8`vsBp3%d0pba1davGR z&U3-KTr|ijJ4#ba)#x)+Mrfx9swp8KhIHCG(I}ZE30LqxQTQZV1hK(*Q|R%Bso&HQ zJcBW;Qs0CM{tAEBa4V`x_zspebgn}s>calY|q&5HhwWSQVPQ%XP|F|(KX#HB9!;0GMB@-scT<;wz3>7!J=CXERL?%dbQNqX>@lELyevAINgz+MZ5 zk?*pmgnekq>O$+gV4j&j>gMYC&C>%no=ayUvz2Rg*_ltDpIs5N*Jw|u<7Lyg;2R~G z-*>@u+!vm{`T28CXxodRwv^l7=gkj(WR?2)+}HGDEd8PJI&}(88FAacCiFR5x0nmS z^AR?e)-J!?Z8>CAn_Sgn$TRBnSJ$yMMROWYxg*8!2RWpbzt4 z#AQI3%X?&$nicu~0fS-w-1<#ABQKNx#RooY(Rdj5x82;t*D`R;ye04C?*~84$x_d) zlF+S)Eh8v~(c;2i@|9zUui7IXX^jfwNSzV9Lf|vTSU{6@_QM?It7=khIfYCq>x~2E z1@WKP+Ya7vtkGwm(Mo`3ZJiA<68b#3i;Fb4e-Qb_YW7xhEJ`ng217|e--)m z1Qn0gqY)0WeZ=-q=EX~^X91KeBmzWnF`D9q8Rzg@TWFHDz$5ka0!NVgu3md4Mc(Jp_|MLAkW@-qBEhS~G+wJ9e#sD;a z+P93|l?__|qPC`ggy%IjxSI#}|I@$8xP?qJse8_}P5w|%P+v3p@mQzAFYcE6!k6OK zm|jb;JwW<daB){xi!f}4vBL|MHe`7$q z^UhYI^uN<4X6kTHwljy{Wi)vL&0#aoCLtm21jK2`%g}`}CFa1pF^;4mpzHbvz~o&6 zpyye=ykUC%CHlLHfog4~j#&B@`RW3bVu!~|-X{l6PT0KQ=^yiF;x{w=3aNTDQJ-tP ztJc2;Z8KkT25S{BCX#sfGqS(QG~WDtAStzr4`a*wOChG+x!0mTgU8Crzcb#MUhEX{}uQ=h)57*N279 zrSwoM(*FjXMTL(dLCEQuwu2kYS*QE35R>$h?W(!qphfb#nQC5`RlVLTNt2-$MFW`Y z$KRfQo(dMwrK-XQTd-Fhr}eO|;9=jqHR0_Pb$m(G_C zhvlxwRxY-!J=%R|*R>~^V+pD6SH-iaYvhCM{k^a1&}O+-*#SIPEq^rzG1uPMZEesV zjH4Q4L3jBAF%X$5y8{{>xRrl6Gq5`SdojM7- zThaPr$Te-+%-n;vm#_o;9{7hyZQd8|3X zv>h-(?4p^;**$Oz!LDC;3s#)-z+0H-OWyX6?(boBBKb^SNnrdR4(k-D6657{d8H@Y z&jPQdEC4FLBy7xB-<(Lzi|Iek+`P{@uwnqSm(qmXhyPUtARJDp0jhlmgO*_;xc?6+ z=c7*A&Xe{AMI#V}29Zq4(>y+*jDIaM%r90Pl0W5_CH{(>xh=mL2lT8+wj4y237(~G z6W_lQr-!eO3-6D_)iU;)$w^u-(OV2{H**tYmkSV1%sU0K#E0q$8?hrSnD9YOh09W; z@L3PW!;tC5h*3xLP)kkWow+rZpo+6U*PK833K()M2Mp}`qBf+%elk}mF-pq)@FQDmr=Xj4rQ5L0oVZ6sUM`CN&2bT}eX^T>@e=G4{jJfJv zJf}*|LesO3ac%J&i7=@J-_B3P^nz*@QU6vy@)~mZo`Qn>uQbfb&&6Fl7SfO->OT4? z6u~KYT|A$VucasdD(X|?81CguvX$}Zb4@GQ?UItGcjV=y|7NlOy;b}6JO4+%Ux^=t zlJ~3@&R+Zb8w~l*b<5hlSvj5^R+>}_I^C?BuyjGy4Rd#wSoiSWfL2R`|Ha~BN7v|~ z-LDK48RKz}Wg-f?I1QvaY0{ivOe?k0K#n)lRi3#v*HnB1i`;RAN)ajRm~)0m%&T(s z>Xj}dN4tga&`wS!Q^pmKHfI<^?|%;Mj%HqZZ&Ri@4R{$-JYG2+*Y@Tyt#;WIWOs9Y zo7Rx}G^k*!C?AVU#Zv5Ax}N;}mJ*5Ji63K}@hEqi>YhuFp!st>)Z?r3*>e*`Hsv_n z)z;@aiuJKLIr%pQmGP_wN-)*#5@&|unlHRXYkR6dQMAW@(T!`QGTy^wX#!CKXpHu_ z$<>VuU|30)&ieeu@=U>C4AASb$l1+r&#;mk0aaYBt-E4-$qIkdiY%DW?os$o?uXF? zwM)EWSuD;~4qdb?ou$RC_7q@1?Od37oQ>m+7cLvDM04PzR z;=WH}Zw5hKU%hK#V^WCAv91^ln3@XT8^#Q2&5-Sudt)x{oQ@WDPj!j_pU-f1-O-Vf z;-xrjQGFi?hqi3b0EWK#f|~=LH|Qv%UsK!i_16P;J&UC0VRB~jS?E`2R>KZ(78>pG z(-n#RSdURh25r`vh^YV@-dJ^Ymc(f*GRViqinetKuJN<+OuYJG#wA92cv8!TaDkX( z#;4LJmv}NnnU4z%$hqxHm!~=7--sa!WpTQ`DexgDjm$rxI+$-BQZDT&^H3xGwAEYm%+2ZenBd!(szGm{-8dtw|ly2w6!h$_Xua(FR{u; zbas4=G3*p+>4kvcmNNSh?`N51n%`LYrPGZy;7#YKRRBM$mDWXYvtvK4 zbXC>YWdQl`wOscC^yi2}l&s_T1{wy=sJ2MFLuP6BhstG7D*#4nN+mTke&+@}o?`$M z%>(B&Kr#w@0eLbV%WA@9ZSc-=`h@!nz{lq)b%aEZO4rF_38Krc!6os|AH6K|b|}qu z@?XWTY_S<6Z%cY8dLl=?-6a@ckZ!AJSP%bf8Mf7@wwK_^NY|6(mWNtWF~zITck43w zjs|%l=D5XjMjY(Nx?>|Lu__tP=ObTL-wz1xC(V|87^p!N+xQ# zCxswlU$E}s;D%pS;vSTLPR75vsEbj(;W)sO5ME=Sl0;;#_>N-G_P67lf5NazL-400 zNq489yZ5GUjT4vyi$ged)6;1N!ULWx#5L6Klf=O5wQUh>e&e1Pz7}_J6hrqO+E|Tv zofiEm_*XHp!~JLS-1NMM6HJv^kR+VtV}|O&)%6M3UYCV^s}Rw=z}z7J0KWdJspdbT zhA~tPPuuwn(e&a-`ye;Aj5m}x)*7S^lEa;9RHc~3uG za54u?GE+}@%4X}zz|#%)VsM;0FwemH&Z($d2QOM7DnD}o1bR=-d)i~$cYBcvmb=^v z!0n@ENv=8*HHDxKP;6T3KVEz*>ZJZv{2mo)nYvq!B=_%nHCx%nIu+v2EI9)wgF?po z19ujHYP^1b`fRm+bGiE@KVbI!FI?w zg^d{mI=WDoi;%5)HdTfot*vWX9i#9T=fpc@FiHg?Xm;lnp2qUD0*_zV&6WnjspZ(5 z!P_nbb{zo>;rl;V2DjvRccL6?4;FBh9C65az1(mIq-vJH9t@SqkrI8m% ze7Du!^zIktAZ$QPC~9o&E?LIjiYtl=pEjB1j7fw>@g5-g*&AUH) zG*MXWbt~H)mF-hYmjut$1uMmU+H8bZ%P^|l`!tmK)U{=NyWOW{4v$*!kdN>W`S%+e z@EBmw{$bT`GwXOy4{{gqHpMyR&Jv$#ENJ?V4{_>94jqvs4Q8%Y8dHTX#OZU2Dc@1* zoEY+t^-=Ltox66CTt&FHCu_k6GpiN`d&oC`X86n7bV)4@=#zMP;>th)L7EhmMcUF+ znaU$b)QdL0wLIMV%Bx{8YO~sJ2MiJb2b4`UZahHTLk)lk*GbbrJ=7#9uuds52THi> zx70`?sxH;TBZBv4gEg(BCIibuls~TcFu`qf4CUw&8%)bp$?vB|{`z=%rEZm<5p-5D z){fPdTogCAZwg0(!h@Y?ncsI)_Pc=(QQ>NHajhjV(&)uvF{0lm-ElDwsQkW4nw?BBel z`Qy%F7PPH_ZaIVJWAuYhJW?Wgf4hBbr_{;r_8lwkDX+^m*|x9ITX2>Y!3=uGa;65x zT)h!;7hhL)^xQK`GY7YFp_TL_*JHma7;+nviy;JSpYa(2_B-U%!J0*41k4IfNS=SxR+!) z6V4y>BfW}7AUJfNuIY>C*5t?-7@Fps=|Yc4eIVd+ zFzY@1$`4EM;iBBpBLc|oE@`C7!QG$T)2MxJxjck(=6aes4qC4c_|`Dk$AMRM%q(cE z9b83XwO4d{onEVvx*|{aXSgq6pU%t%;0MXR(zFy?#=fb(0;bbPP`QJNRbma9IAuM( zbf4!n*0Nz=ZzZjxxTE#+3B%ly>xyZba>JRk~|Q?CG+ z;SLW~`-WZ`bN}0cFqLo9*7@{sVR3W5ZTnb>JSp?maaBu1s4_93=T?) zN_y)p>KwQf_+XS&7qPs7+S&8O=~_bfd>({+ZeOnyJ9yXC+pnYh9}nNj!{$0>eLVAWfxUMo z6>iyuZQ?)o!9;!;2pwAi1x62Mh%@S~3J?rVS6jo+lajC+5-Y)3$Jx7*)7Ir0CS?AA zq-%Czp8C}Kiu|Tzc=iMZ^yNuV;{248{p#r4#S+ZxzkE!LGo85Q;4JQ?h1(jTS4_{DWJN>|vsxSEzaL3Peq68M- zs~XC}ol@K|xX+`OZnf%-1~{C}8aS+qnQ@mD!Kg6|$j+lFm|U+dnf7{lx)Q6}Nr7 zp^#wGzRH8vyui^9o;M!Aw%F>Af=o8<)yoB8)ckH|K1FP}9Zr2qI64_lV9D@}jVl;* z*bm+|bA5xfPASPes~d)G1M0D;c>jx(cIHgdq>i7s+17|cu%}&jzyFBrMb&hVGiqUd zcwPprGw!)!)kX?PC~mh=-I#;Cv#*-|A$+=~c^+W5P@OT2m|&f%chx+=`lZd<1RuFT z6x4CwL9zY_5({I@)TQRPsBQ1&lX_CErqwi(S?yoCw0hTH*MAGaokrpn^_^oVKlAm8 zLsyqO*vp{hg&hUn2?}2s#D%_nH`PSGISb*2SftL6-j*h0x6K`7`b14x1N>GMzFN4# zI=_b2dKeG8O-{E@|LL!7Bh6HtRCu-rsRz#Pzd4CRpU9X@m6a8|PI;E#2PFScs0$>2 zE1UlH23np$galnoM5@xtBQ{_zniFXw zw}RdFh%2?8$!JRQL6L=9OIhFRn##7y?r(mUqPl@H<3ZehnmpkT`JY|CeT91PI2X9( z?X4n_#PKy{(pTc@%@2=qZ;AY$!{Wc#_Z1H4-#@%HJT|EWtF}v&IDT*{kXVTEYP{DFY5j!;^VRgmI-Y7MOsS3}I>|0DzFHzR_y?RtJ| zrH&(Gh=syBe=sYpJ1J%AjBJcA{*3pkk%t_v1O+b!W^EKS=6T zoA_E0F)m-sQX)Su2RNmu^|a;0;?QlB@hk+Pg*@#yL2h`hvH)fyX67jWb>jtD-|_}+ zgiNzD?&UiD)^~52@o0~1kp(eUU3OF4B%_%9TTUQlvuyeYV7d(!t7M)xwQpdJ?^1W& zK^K0yd+YvF-ajdSsZA%2;sx7fX1C{0w3?y<4#KIJ4%<+B7Z=y}Zu_4`ZqD@bHd%GA z{6L}R^1pw&d4I6Xy%8ESOZmWzsvM(DdJMV486qi=u*J*rV06mA-Jfy`@X72K#ugIv zJcdGP{dpK)&^DIyy9FOl?J$11x2PTGpfFc9dgUwY@pHSr=7nW$>aykHkH=uEBm}s( zx?L}l-O%=zclYy}cYgV}05{PeU)rJqR!-g~7@_3_J}p7oj$>eY2l3Z`IlWq%-lonY zHr>CCda_9J&P+z*wH>Iej|*2_t6uuGgKyXXenffxVdH@$v(+b&A62HF0bLho54-J9 zE><>2r=Ace7Wg)0efRD{R3L*H%O}uY)LDf4wFKOz%KZ5n3(Pwb_ihrdZC!U*sjH== zzWJx-qt4Jfd{EzFb|}cF6<1+(o^j-L#3g>y*;NWA=MMCX#}ptBn=ZKL$zLSvz1i-~sCoVu#(tD0Opw&pTr3R7I6A0$?0QbRy*%`6zqCAqRUp!#ATD_gFdu zh9^KIt=jRwOf2rUvT!Z^v+Y+!WTHvfYnipU3MG$#5q@ZWRC&&s!;Yz|GOu4tS4^ma zg1Bw;)i@Jv<+B}V`!vN9qv<9UC9-}?`h>mR>ocyuc}q2TS68@q@j{@Z`Ei^j=GrM#Ct7L_BvAKBXY*DM#kd!3(i!T1+Pd)>1^je}`Twy1 z7&8LD;gnBY^EFs(c${t|%$j_`w(TPIUrr@h^Kr^LbfX zN9U!D=(rzAGK~hiBWFq(Q8C}g*G3vri^VlgIV2lr(kimFfFR;f&pU)Z@GE^%0O#iyNbx}4#D{t-|P^VW$uV2_vD zq+i3OPmJ~aK4Nd=147?;*Y>0pA^Oy_Xt5k^-CVhd56VDkEJtb0T-(Oh`XWwstnI1z zS5w7jwLv(&k*#n+M)0ie&!WSaJu>%|$LF&}Z)$J(BOm{jAoYO>)5$~*QxNxxGQwz{~A_chdT zg=6K^OW!MFZp&xh_6T!k@eHoBGQ|l^=9`Dv+LS6}b-cNK36VO%6%4f0Dmzn&t};YpT2RDz&?k_>O53Vrp+0tW{t$GBBr8KOiD$0Z16ZND+AeM!D^7-xjELw5I7?B9i7yGP*ybiJABzFfW!n(u#v zr0_C%=(FeZ8)?@H0yiTnpkz8EPHs}bI?)iz#uOEYP6bh=Pznv#x)kVV7N8?Hn9|A4(7^g=_X zB5GV?Mr~3_k+aX;1a*`E!fq~MbT0B#p?>S zk0&@ynpiV*$_pHAYq1|LMx*_@qRr{)a9wv6qesLBvw)@&emC07Caz{eyUu%n20i$7EW=@kItK!x>O^OW-I82ze9#b69FKfP-v}ziA83~xfv#^XV z&4??5)6_i}lQqYK_Z z#Y$ogo2PBoI*i>^-X zM6=qae0RI*S!Z{2?-?}c9@bDXg$W5i$$s^zdFk8RIoAa<=Cp*z#R6NzUdC;|$1zQU zMpQw~uf4NEr*KBBfvAu_m*wrJWgUFzV#bwE7i}Q+{2AfIQ|ndS;LwNPzGi>ejl8v8 z!VMKC>K`kCf(C0$u#1lhv+?KqjGLCOZE-{}idT!93A%uj-41}OSW%}<^ID-S*Dx$Y z4J=O_nxozXMRwq*`#{>1#K0>QJPv;Bm%Oq8AD+5SkgFF_g1RO1FX`y42?`Rg`KULgI}(BeZ<>CtHl3;a zt5zMeA-^4^tUX@}Rhd%4!iHWIHD+z<&8K+!g#KkBrM2WKBwE;sBYtbtSC1dwG-I(O zFng;a?t^*iNYg%~49(BDT>SVx#&^?^PJi;YSyvyDpm8Rv4tGkBA(jz*l)un?!9G#g z484`^J;>t2=$&wWGM*)m&4JUddezD_>tjP3CltOj6UzS=f z{rNN*?sem*&O_Q9q_qmLA#-|V9q}^ZsV&sx;rNjb&qTO+W*SvZ@gEzUzDkfn6pTAX zQdM<_^G69}hqIIgO1cvFSqH0oA>i(vdQs1aP zdTkYP^u}z|ZjCO$EVC9qDqS}?jhFIUgnG+j$&)jLs?i#1cNp(rTZR$ap*c!qgK7%1e3S-f6{v=b^>#pEO*jky#!y&~pU1_eN@cwA30K)NC zdrQ&UB^V>MZfyco9iW&!7@x2PZA6_3!LI9i8!Z{`82Lu;v(aT?rUp@S#ZH&V#mst^4(?~qL4 z@IF-I+QtdfoiamD{rZrA_OpIf34Vk zaOU(b(?!KB@^lNfcl7X4W&t@n7Hx$F>NsZ>eEuVkVfO}|AmwMwr#-;0&|C{53NUZ` zd|7-Y1`KTvi06IS(0NGg%d$4#CA^E2XY~pXHXQ{24_)UO)>IbtdmTn`R6xcNqz|B? z(v%Wjf5Q2gvv?M@~KxopEK%^#=gmyFU zz4v+F_m)rjaGpHR+54P*_S$Rx{{N-KN_pBjaXB3`2=_;odbhkeC~n9X$!@ZUXTo@% z{nETy5fbyJB!B;ug&9lsbl#sm+E{Vu^$19h)}B1FEK#I4KGC8JywNu_sIykE`Q&vU z&xEW=qM2+nsW&J1kIB$W_Q5pe+&~-mgb}5bslm%a>+Q?Mt>m`$|3e>cB-W@h$sl?A znW1s|#)aBf2KNElooy9FQBH9l>y46e*K{N^*}1FKt| zGconhJV1;(P$g{k_Tsh1(+lwCk*;y+0ZmEOyOV4?;-z$T-^RX|or@#UN$)A3Mk7{LEG6d{mSE|kEQpr-`dAmRvWKwwX@~ssY z^%p{I(4RF3*JXUOOxjKjON5H)+<)i_JeL!vPUDP;spQ>A))8hnfiw|Buwxe`L76aG%~_Vv)Lz#JbCW zTm0{=*Z)d>{m-92&!`vDsJk738(SRL__~{muI;;w-KhumWp_js<<>t*p-;pWP9NfS z8&4!7Xjn0AJ1uiNb2F<{YkN;fhQH_ovsbPT?%6ZaQeT}LyAP%~&fiFjZQkvxuz@CL z^6~szw@hk=HF&h{kw26u0}02 zMr^_U0%#DS*~@V5J#$Qh(v?7a!@?pNqh*-2TrIpBfR|c#v(Ai!@Gz~79Sw48AM9~; zZqgfS6wgxMo_c03ZN?b&J%zO*z zEN(Op(lkBa(EUz9EICjbHAl8TaFvLb0JfpO-_cPY@Nt2|f#BXs>8S)LS6xQvRfK*)hM4x9`k8uD$s=`eWc@=TQit zs5U$CtYeH=n)otncm_M9@cxDp3SDZXNpauQT1>aR-Hd8-|sA^9|mN;PVol znO>)rzHgcBnt2+lD)NaA+@%#K-PhHPO}69PmF?5+iBE4QAMrem_-9)DO(&)daR(?Z z;er|Bz$>UYh^);O)e<~NR3?-cyRxltkO9c|bto}ON>bpvyM0Ymga*vH!tsB&?S5!y zL|v2~!$)~c;g;lt{R8|Rb)Pm}w&~+}VCl3^Oj%yf?bhTW$ULrFV#bR?`=u!L^>w5Y z;6c-g_b~DXYtuJFRzXPr6oFEamXvTE8C1G$`syzF9iW6$-IO2f8kCt|MgS*oJkJ{M z03$#f;_*p0&ZgO0o4@>!v7k1W8T>0`=;Gl}>#WfW`c;gA5nbS0dYe@hg5*%%dGMza|7l-*1U@K>V{T zk7Sxgjps^aZy^T!!bJD5`Q29uiIW8=Tlz*$jM?6GbluH&W=BpZ9`buhdi`N&hzyEW zmo{_xBX4p4U_08+ZQQhKsc-amYH$DbDQW$D^mAdoHb$hbSZ%-Zeyj?@Jke6(J3|EA zJhs8pO8(f1X;~Cf0F*SCEmmxIN<>{;u3tZy$bJ(>(bzK=;iVdLRP!5M3_9RAv-7=% zee+p$q8Ir+CcL3eSCmV@^P3!%7E4`CG(+Jr-kc!z<{}^?t?oT+!KujB>vubIQ_&Fj zXTRIsF!ejf@8gQ#nNeqcj+e9~-D|jPt$Rx?7J#(i{BGxAhRlt@4aStTtkkVuG76GJ zc$Iqhile+;e$B>cs3Ex4(Xo&v$e^u8>N^#YsGePyZlz*43GJ*)#2n(blCit~J-)WpIMvGPmOFoIwkr&Bfk_I2e&@W@NHgtORV zdgkGdv8V1Fn%TgGjKOpFGudyu?S3jmBy#B)Nxn$HU?XIZStu*o+_BhRlRMbO1lQF) zJT1r*EBDU>uSDuHnr|n;$P_6+yeKGD-yX(@*Taq?wwo{wVt;_F;8&kPi_f}vXT z>Z6T5Qop8T`Fho5mYc1uus=_|gL;wDg&q)rm6op-DD~p|73_ruGnN3SrG2N>A)&Ji5RGQ^>Q^245Ri%nH15s;W!yC1=Q5p7kq~xHS1Qf-4E(I>&vUq7XhL{Sw7A4 zdzl(A8r}?z3F%Ghfw5}wp3WoA@yVB^P`AgOFF4;1z)b<%FH!inJ18IvMiDM8pBv97 zeXk8s%d+)DwQszsl}0v|ue#8t_uH^(BG;NO=ft`10=8wh+jfJRFW0W$eCJb?yp!j* z%T|@!YFw{q$M^}SS!WZ0;^($99OcGK8n^t!-IDj27iyF8L#M@r&c z-B4+D7@nS@uds4J4P>(f;_gVqMvL+G{^II3m8$=v*gSEm{lHCD1Gp2E7U=!LYP`}V zB2{gSfv+M!^9T+5f%S)fVcuH~E-w9->Ka?*aZUpnksojUKJV23S$Qiy^Z9}N8TU6b zZDB9esUKA!3CEf^yba{xw77H8&YCCwERIt)dSttu)CJ>4j&Ii2$*((h*o9|lj_|F? zos*^l$bISUp$%1PH9^i(;oF$Ix~e3DaBB*0e{kCYER$aSxq6t&xjCe<+i_t z9HLYrb(i~Yp50%?u#9Tsxa-bT*J;a_2hYzN(t8V9n<+NP6rr$~^yb~BHqXv+xK1}F zk|MPV1hN)I{G@6WZrLfLD3I8HVo}#3VxMF56t@xiEX(-Sla8bF(g*LRaong`$09@A z8obKj<;-`3$+)bu-WwmRbDQ-Z)CQj%zXx(Bl(4E+>MV8tarYtyl8CadxzWIMbV;%*p-z#m$?MsQ6qRYw98T@%JEvTR==%`&QEdIcmEVqy(4^ zoH*JZIs3BKLf2jneDU0fPA8U>k?SA2-Dx89thR(ZGJxz*TfAjOYf=`X^>ZbR? zX0(?HU9X)4SPBWwsfy2J%P93Gb=1vX&?2@%VDnngLzJgkY+ID6;JP(dQD;0AOV?HwepR(_(VaSL`U2>n9KbUy za2t#nTGAp;1nHl#*fA5v!Qk|j&Hb0%rkIx$V5V9Aynjq1 zB%!C>RS`gUWq0$}pS6+iA@ynm3Vx|NsHwqPiX&AIwn?kbHZF3HMp~!kwTG@+q}l2% zq2?yzwz*a4ne6SDy(l7Tx~@F=o!qjtodv!va3f%5fZLu{G)*K#J;{x;WAm4-wXE=?z@19)VA@Ohhl%_zSF%C zt;va110&wzT-MaVoAvbcJ$w{(8omPI!nhIGes6+IgfqgL-qH+QGh8lEu5CvOck-fp zWT?38h_0$tO%UTzYifJ!ck6)Lh+GzCMTgozREVDX5Ft@mrm5u4*qiCR$0{Hz4EG*u(|o{3*iG53<~zWB6(0w+Z1ZYEW5U-}p{T?C=|e;V zQM{&W`##M#7n`BcFG$Q@+;$FAhEuDyp}&pC+N7y05hnH<(`ymQ20FWYaq+wl z|3K-JwXm%9=w`ilGsrEtX`0OT#Ok9EhH~{m;pOoVj9abb)}DI$xcbf`yNW(`TqOL* z4igz4gSJ<% zLpj`XJYMOrZ+*_Fh%>Zve?%?dYCz&>qm*5wqjf7`^B@wo=uA^2zC_4s)ywYgoorp5 z{K-~U-O;5j)M6P?%kKM|>$ZiP6I<8a(V}CWxK!WK@o&`ft5^OLD1rZaOHg;iG2d|raNq&$vos83x92p*ZPFqCI>)aJ4yz#axatP@3CnMfc#YY`2BX7nD zJGw*3>eq|hq0hY!yXGK?$mYI$rsm`X90u|tziIwic-vEI>|UmK?;(wfLqqlF?$0hX zgw);fcahFd0MO!u@9rm@A<0RF6rVA>x;{DthH}C;oAfV07J1F4aM0}TP@_1Th3IL$ zxU|~$2~%;noM(T;0<)S2Gw1KyA)T1uZQB^ zpvBt)2%J?7X(`2Zh?ThY`uJV33tGl;in6I@*0D3HX8||t%HiVE*WEPiv zNWRck-sf%$=guVi$p&akIkiq?$Ei(CCcVUFhWqY+cd*MAG2UC-I!b8YZEX+mTu;!! zdboVX-1{%A)~8<|=TwmqDtBDc|1V67A1vONe?XZs7Ypj_b*4V#)FTC?kfqfyY022hmi9;wj2Om5Yi)OG8&`!c^2~|j-fdU!bw@Odt zpnbu3N951hQ40wg8=c)czYvHbXJh#u~wK`j{^6wV2E!DoU?!>Da ztI;G%G&L(yO?7gKe7HxZazZMGZ~joJr@T-q)WywTWTaxd(SUdr-deA}M&QQ+m))s) zVupf1-D7l^6t8aLcf+Ch^AGJ@nvbUkzuQ|&G&bb7NP0i_?*l+zH}tzWUZ<*~2QF|~ zQn~fX_kI;LV%4~Jv)2(9x;KQx4Tn{~|Jaj_j|9HDPQ{;+j8|!RZu%IE3Q83+>yfi} z&g+DzZaYw1#CximUbkINt&8t-nX2Cisn;9N$00n>#Id4n3>o3$hansj;ZBaz0h-%> z8+zlhffHkNml#!lT4B>3NGzn6P-1%0%~FqbCu{GkPvJ)kdc)@HX0f*LfPpJY-~eq# zK8&>}5X9-af|5XkWjbQeP9R1<~Gpe;E8|6I&a<&zb`R*|}`p45>Vx>E?@<7|l>zIS|r9!(z2ZA{M1r`2M!pek7$n3D+?lMJNzdUIRa<~;xJJK?%ei$z5(5YLsq5^ zc1FmN7xhilLTh|aYI?^!rf90!2+B5-Q^gi9I*e_30|w`0w?Bs{$}RQOix*^BRIsFy zhiW6@b44CuSuc)Yo!z+kMpuS7RNR(!U+ePIB5t7yg~{-bQ^?(V5`iW?%N}D^HK}eo zYCK&{53j8>-d|+&fYUtUcQPohxu`zH_&q|rp)-se+E|tLpERj%yl9f%;RJy@p8uik zzaggo6F5C3{0pFH{vrIn4Z~ThAo-fd^=XBl8kH^H>Pxz>Aa@ci-CGJ_zw9wBjP>~s zXj-Q2cJBD;rLKhl5IgV90k7UmZ7FnR<8B9aEQaw;g@9}mZyR1KdB6*IO-r&DyicO7 zfmn{Q3(Yf>WR1iwwzRs9iqY}j;W(S8{CxL2Vqg9Xs1`@#v8F<$Dk@w;)jQzVUF6uxuL9mDQ-)5t?{p+2B6|T}mQX^X0K2aOD}A`&F^b>AM(4>~QgXsJ zmSI#Q^s(*Rs90hPotCql2Q(2h60#~P-CbUR?{A@p9wfn$3k+HkAqNS*?%lvkGrw7e>$P(_R zSGZc}5xa!C9^99K^H!8fD_Z0(ER$g^hT7`(T{ z79BSsU7dc%0Jc1q9}`86MTK>6MaVIB*z8ab4*|0K{&)9OIc~RwWYFk|>g9iz&^X=i zbA~0XUX#Tn_$h8gry0LawOLyzVe~1`LLdEJt~LG{1FnC!3eG0TPba8LEqP>b@3Q%k zNYA;Je{9k(5<+Yy0Vgj&S(Xn0d+XF~q_|B=&~@xheCh>y7OpwO2Y} z^|<&eiZOZ5GDUpfwN961LvszPkRQY7xnO|X1xi`N19Cjwh-~Kn6Ao(4CjQ1emHy)t zqiGF__N)Pao?(P#bSVL2f7}n?z|I>l-m#U`lR9Lz9|X*a@U&1FPto-~zKxG9#G0(- z*kgR+EB0o)Gr&S+P83ytSBHd#lE$LQsTk|ibYWo>Y%`ZIb+FZ3`=gZTlm_qEyE)C& z=^1$b;{-J>jyWz;bmj0oxiGHWR%sR#&+5wsl`3x@vW*X6rR8xoN76ZaiF6KGPDa@~ z7r@cFUSra}FsRe$T{v+!j6!{GTSK@!jS#K}=ZBb=ZUQIk13Y<8#IX+ym)@1)x7!c* zOVeKs$n+%aP9Gi!iD2t~n*6$B9O80eHM_}UMPmP9DH^ji$5ws8%@6FVuo;iFGqu$} z={#V;p|BPpFwf6?xygb}T{A8dZ51TfKU1*1_A&f;H1FStNXMDy~~s?c+K zyuNxp1y%v8iW`)B8r9eEbE<^PwlCt{YaqApEvS>XCI#b|wN7a6wcTfNi+JFXESAeq z`J^QwpCss%w!RuJxn0SA5#u`uZwb-v%Pkzd+P2CMk4(qAv$xv9ddcWr=n6$RZGfIF z9pl-2Iwrt)=N~6}deacAv8HN&1f>6WHaYIg_P=4CBi^$~Lm0U8W4%i~ZhhymNNllQ zQ9JK@Z6LJbY-a-YPlHPS@*ih?g*8r9y0Q3Hhoxw4YEbMP^dai7%YCowB~+Mz!HqpA z*uuZA7!;T3vM{z!m=%w0;Ljl|m*$n~I0;*3t-cM?Z{3t+gW5BR_n8*xv(vMl(Z^&i zFwXf6^eW)+I(V^yAE{7pl=0q-NDzO^EaxCV5d~V3bm&uc70^P|&)xb#eFL49be6?-!&lbLD>`Nn&*cbKOP$OPtH!1Zx zImGEdUg|;3=tS+zVe5*;SEPz*PdV+J?-Pkzd%7-nFeB#^!q9vr zr~5>tg#^fPX&j8n1Bn&OZ6gQMI7Y|s2);jjCy?$G6J7wjG1A7Y1_gj(Z%OB>A-s8d zSB>jEWGaK&S$gnS-rQ?#T3%IvEpMMZqEY8#n;g01`a7e#dLu0(P!Pl7QS+Jw&Y(Hs zSH*?SN!O+n0xZAGDf{CpY~xk>Yi9#Ct^+1_@V@jvV*rxzuMdI1?T`cQa{vFA1m(%| zM@TbnSA@GK37IJ7S7|4v8yUQ!xAJ+8Hd|$OPhCz=?%DV62iOZaxcndYE=E5(=B$2H zyzSRdQ309XEgcqBZn^MV6c(rsR6XUZ?oOf*p-0=@P0{P$DyXsY-;tSAf;7xZ*`;0g zc}&Pp39w8~6ueWfA`-YY+n?;3){_hDW51flzbs7$Mwd^5?gle=D&u*T4rmVn0?5}o>|E6iaoU;9j)hc|6LqkJQGvcm`k-36@B=C zN8yt^sdeJcTtl)wVIT!PWbiBm&|Q1a2WL2*AG)_rNDqqYlyc~eSZ2Df`0(1fsCK_a z-NmE_53`;!1%e|ID$%>IKA*UQyEkRP7F8&`l=<`^$mkAX2Wswc{qgcGx z!T}xxGbd<*(VXY^muGx`@uWua7aQNJWHpLl;5=^H+>>enQrPmVFkH#i$}emClpE7? zDHUl3(ulsEZI`+ZcSi@P&tvn~>*poNQTV@Tg&(_RG!~xL$$Q!%Xho=QtjgA`5=%i* zch}%`=5~RZH7ER@=kRpo{s+f4e@=NE=^nSA9za^=zB+rHslXzI?dQ(DJjh6lQqs9r zESFZ#tuH8j<|~Q-QMnI$EDbbz%vbnFrg*=-JWoSnCw!2uhA>`uZSO3nXJjtjJE3WQ#OC?k}Pu`q4@xE0N@s4uXdR%G3n_0#uYLL&fg=%0K71 zA8sX1*6ex5a85mq_h#j3;`}N29O1|D|ux4~7ZL4RtCOobEryG%9dS zb?U9)BW#Hb8t1RH5*bg_CVkB3h+!@}dzaVIL#FO(7Km7!r|cO;(i?x`xUXEpg}~=$ z5$&7yWt8`Gw>OS6?u+&vtjisSXvvMLw00kLhxcm7NxLBICJl3KY6}_e#?w)LR)sT2 zplW4`UZPPn!8UFq3oZYp;<|S)tJu~{27bv>n4e0BaG#z@I^HcEnrx_G(QT#WLjoWd ze4eO)SFG?A)i-RTtUwY$jrQLV^ui+n!N{!zh_56669Yoq3OSqDr@%WR)S>M`7 zuRcT46~>~}BGV|m+W{H9&o?5zon|r}LF(S=jMbsqZf0t7%n^G#1Y=wWyYR{>5#8=A zNagM{Z=^Y|)FrO?LeZj@Y*3+I&nt1}+^0_AfW~Lj#MPbYi4tHKpUV@M#4{lWMlkIO|1W3HJR`70haRxMxK3-#7+r#Gm#C!1P{ft}zL ztUJ@}vl4gONhip?(Tn^e%-u-(GMU30Rv$D84D3JwcINYYj+-gk8;)i6QY@r&8*^*c zx#ak`=lu6&Badh%8)6Qy0J5CO`nGaCc`EL}`V7P)aCH6vd)VjIlD9d zHX$6F{IN?LM&Zg@mhB26{W5eLn;n{|Tlyx-QAsZ|KipXB3tBICn)yILP9BY$?f&JE_lfqtV+G);#j)6>!dNfwz*}93bdc8UpS7CmWBvk?7K>$+*yDnkQq0{p zl8KLtXC~?M+kk*Gxj`#d!k>c*Z=BVWV;bnsa99`-r80pScj3IJP3sBA5U#C|hfK;Q zHTatNed_i2A2m3+-0YOT0C3A|Sg$yhsTPg|)&#JlduwBT)FLmm(GiS^MiHo{hUhyijRan9dY_<=>!Xr?JwghFDs-y~vIZTv@AbCc>;LSi0}U zy`4x9(=h*(N>1V8nq-{z!Ha+m%ZfoYQb`-MuwI**U8XHZ3Hj0d4jAFPGz$T14Xn-Rv)_<dEJuSiXjwfZ2iXnqpY zDJ|TDFcIr*t+L*jR%XrdkGO`&jMV~hZfhlw`=^s36OdBPSf`SKk&EnVzEe}8EhYt6VVGh(a6UH=(X*$QzOyXw zfTq7NZDr|rCzq5t9s5YlhFHo< zMXC_D2c+d|(7DPDhV_b6^$A5|@kQ>)pN7o<3z4_(b$#{Ki@7+HsSGKe^>i-j+{S>Q zMy+12xs%}?`~m_nKQS?Mt1dPg6B200vtBQbVtJiiw3qivvsT`Sb=NL=~+kSxN2q#agYNc$V#r z#?;xX>uaTNq2cQ715flO`1Klpnr(o>j&nOxbU!aELef~U6~HbzCU^O(<$m;QhOZ|H z0H#_|AHT`;CKXT)G!j4QQC2olACVd;l>$`aUGWCBiE%nz6_HcLCww>5pzQog9w&Ik zPgiHvN2=T`GC68Qx)0E7XWVB!Zpe6nU4@WtoMk>0vH+YnKtHk8{&{_K6Ro!^<c} zFNV|T!T*4QP`1?PJS^gnjf;~2!z^g?aFQ0RB#xI|E2f`k1T9-Gt24#bq?F3~WkO12$vFNzLUBEz=eYz%cP_LV8 zwj5d{9qe$)O<}>5M(0lTMr{QMI{DD(BR68kW7CdnicB8E&41!PEqE@-h8I?b*&e`0 z#_1!CLkaz{aD3$&i`v>mxvoU6Kl3EP( z)65X*?QW^`-hmpOP|px$YA+5?+$gL_7n;o7=ktc)_c>|qP01@i=Du*J5P5|A0g7Ya zB0Lp2``sLRUEIECdue&0aoJ!Zh|#+@pCMwL6Ofh26iRE<)Tq&P(?^Jo66q&L;pE~~ zjyqdi!b;Y;w$$C$52LPGJ9x1rt7!5S@Mf4k+N6R-hBO$pZYzv9FP@u!@LviM!3XkZ z*x~;n8h`cw6OG@{g`HlXeVEimln14qp21#!W=}nHYQscjO{6Xd_)LI$CVAN;7W(<- zIpG|EhO3}~(|mdMw^QZvVws6i@3p^K7RZY|OAOAIoHYwn))WIL21}oRDBAMSrB@fGk zGHOqww(zq-yE3PSO?2IamQu_%a3(HEy-RpqA@&5gab)HGC%F#!@DmK0 zJV@>I%;)Rh`cOA_XBYayopFWRC5^prYo`;5a zUMuMnu1hlhcIt(^SWaRv`uxM2@h2?S9BfoHMAjeTHg!M)T9CPmBWKbCOmyL=>yoBu za_XVZZoD&@fP|<_L({NodFhwVdh55!_S3`#I-S4;+TW5t%S)Fhj7E*~#B44IB}awm zd@G4$6=~JMOJ<}=UM9L`OFslv0~+%xJ(+WD@MsLm5{wBOYeBvZTk9?OGXYUR&fyvstaYXhzgJ2XBLYx<{X zmXEvstRtZJh9oMZGOvG2eku>T50LJ7>vKY|RUQy6H1lJmkYL#`V$Pi_-#l|_Tgbjq zLVYtac;ozR`OqWK>_YDub%BJa$J4$?jGuY_qiiX|tAhGUyLI)I%Y(wuj9#;Nye7!G z2?(t@9PrQ;(+0gn=9%a!3$MTOPqKcHny{Wu!ig{WXafAZHvKVg~6xZQR(egw9)F z4JBv2r+X0^R%3O3AxX$}fvJ<=FMv3vh-$aEdQ(DhiRA3D*i!e6%hCeJImwP4b$&@m z?^K7ie9rol51S^k^{SvffU}v-e9A$ID7iaZO5CFQ7|C`oU*IV4rQ!UX#{0PHDi zbJ5!8?O5wOZUJ1o5Zd!V=4pIJQ>qgpil#r!;}RHo*{>vZAu%maMi_DCdr z*u;U5j0H@8>suYMX)GabbeWR?K)MtbdV24o&?{T7C~Qv9!uj+l?%4bX^s5DaE9U&t zH6iCO+r9Ga&Yt#}BPOBp(zSUio$677`!jG)i;7I08DGkhxq+~!g<6)&JaRn^IVFHO z>9TyGb@qAqoQL63?mAHsbVGQino9GQ{WEA#5A*!e?6JLGS26V{{%Y5M*6?>}ZSa6Z zNACN4H5de(9HfD z;=WQ2J2z$Ul-MfcwXJ>+NcnGq?*Iq*b2eT8=L+{lIf-||`x?|4`LIgc^@njMEDGeM z&0Sg-ulW}I?675;fi{<u&<=&ANJvpv|xU&9GB`l{elX)Ay3%qE$%`|}?C6I8G#i{I=r zbH+<&z-h68lNUT8JCJwqwGexO+;fC&3wb2f!Sz1DC`gbvxDfx~9H|8A+JABW0$f3 z@78UZrF16Ts$#xSt6tr?zwhEmoBCfqV-{wF3X*PPH9zAp36j0b~jZ&&B_ zoD;6Q36LdRG$f{f*s{;T6=Vt>aV_ib<7TbHisQ}?imzRf?Fd*?7=I&RyeI6UFP0bb zLla>VgMXsZHMbO2Y#&wZvS9Eqi+D!Zb6G;>c)`pmjXz|r7FqpWQI}Y1ywM$m4OBC; z#9tdvEt=PipN&CWZ)X)5H=5Kw63z8b>Ao=6vvr;E!;U=jm-}D)CuKUHwf($?lr#xA z#`&%NjTxy}&hvI*v1d-^uGbQ%j(!8zakA)25k$Tj*^cTSy?03BTq?e4Oqi}1I zm02Xb*ljKkmctdEMiE}Wpr^KR1yYAJ*AmcK`)g(FA@Qaz&Dh(7kYbU&0PJwGoHQPp z(s_z06;areDD3f&_&g=z%ipaNi2_CfV$7qq?_FYgd^OIHzgkFo+8!^~8J!6ay~5B4 zrR9`bbD7c`gQ5=w0!sg>N9Kp8%RUpSwl22ye5($T<*7t#fnU|)C9Nr${Q>wVr%huD zrI3z74BIMlt8O^i*F)1Nb80m+{>Zo?W1e#ywG=w**1o zq?Rlg!feMSKImK}NB*G~Er_|bI^aHM<;aV!e)Cod-mk+$vh%ivoKnwCS)2+ctnP@D zXZ7Mg$^;X#t~m%tYsvDvQ1;$j-FfQz$X55YPCt=+?a$;zfgP*7@#p!M(%F9>=LW=m z5rpSZ9z1j%ECX}I!@6*PwYi}hivnK)25>w>$K!b#7GFkl{`H|k=hSyg8K$85)Lg^* zNgUez_D2bUJqvLTs`{4U>4QN`hVNJGGvU;;Q%t@w)??z^ef(Ff zXZ2>$&pLApzz-p)9bmj8YDTJ2t-z#pF}V$D1HM6~y95aC2n2D^7=Zs-$rAU=>QLDE zEU1@u>nXWT6(}r}I$ClacHFI7w^$&23#|tauwtH|i}5ZvDb{KjQPsmBIBL3Kx01#= zw^voZH@zIZ|82(cgnWrpBBj+#1U} zMS{7Il(O&C;l+n@E?I-jKN%wR6X!pirTZS)AAtS9XUiiOFVM9T*8$m|?ui4#%4Cye z2lWmH-D8F9&zCfe{yOQUS|I9!|6=$QG?2S7cxNe+cSGI69sdvF&LQ2DgO51JLKI|SFrDK)KA;>6>SSBLJt^4mK z)@np^x$oJHEMJs^OobiIGO5<%BA zypzq8!k8PEqMRbNE*;SN>5_~6wh-8T2{0PHWmzH+>`(H+|fh^HKep?5sLI zr=#+v)z4sVx-n$t1?jVL%E++N@;CLLe}tVh-Y<_Vj^TXEzTx5}rS}C`tjvn%d)kGwk4pZn zQ$0%W-DEs!zkaLL7tEK*Dmhu2=PK7|U)6yMz<$BKonxx+JHY2(0>55`!aP3)T}zaZ zoL2rRRR3ki3JMFm<*1cC64cFm5B<36rQtdtThN1jC>;Jneoo|RBk|2m+b2yC9JHQn zuXeP?5t;Kbv3`)$W8*JUv-nPOyy;r7L`?V>5x2LNJ43apQdkP0vM4h-Ofs795ezak zk-HeVenJ+I4fzd`puPWBe3_ji|LB=Hcx3W7DAPdih4H44&4|l`gz5FaX>^Xt=S)j9t2vVH#Q5cUbZf<_mVA zSUi(EROd2ig!{9PV+m(U8)fx{9ld{*pUGewIBO;RRBW^o$xNT3yOqYw;|{o*VqS8n ze#19t%=!g`9(PXc?NP^I?bV#K{fW%;m-vo`%DE3+Jv@a>^|zT8_%mrcLPkTXKcM+d zqSkX)7P3_56aO{a+wsi`dG?#W>DgZS+QsglUkwME(3wLkCi<5+?G@h?h&}%%ca--jfpXSL|Eg_^GWM5p8Pm-W87b+1?t7-7GXv;#a1YRSPpVs% zhYJtc9!_6*Q=UE#KzP>Xr1$?e|29Ie-p{Hw7QsTjn?m=uG!FN%0KgF(}eelyDa z&2Mo0#|NU9KOaJi7LZ6YXBSs8jX@D|LiN9`E5lF4w@665heX{5e|+||&MpCtOu1p~ zn{53!A@zO8kh%uJ2+mZdrBw8Py>{K=EzHx)=!j4m?k1zMz2mGf&mue1fcC3Pl#^wN zlE0kuHMJ#8(9VSJTma{ZTFvvtqV)lX*y4Env(uGTGyE_6i>Q;6^U}A9zGXoicu7zB zEYN)W)*yWId$bI10LV!q_xLP7Dc{<$1_F&n@|i~=cgf#vFDX9O%oil{C~o@x91-*BQcC-&EW_YXY8obap$V1Ft3FBkup#OCv; zVupI>5f6{ynPZQhyQ<%Ib$J$1XfR(_y!z?Sq_bN%!eZbV`G0@=q z{o5}3>XOpAgz%yfM7&eBxP#ct=1~yB8O|OMPNw6>72tF-i6yS@?W>vesgUP`AEmTT&X!&|5sSlv8QYona^tZyT zl7CRrv=@iE6&EH0OpFr{PD@)FeW#=~6xqe?hGK&rz@ox8S=emy>#B5GCcj>aQvaq| z0K@$nUZZmVYS3SrzO-a2#zc0L+s7+2anwuWm8*qkMCRIn!h2Y^Ti6D*ZCYC$eMW{4 zq{TfT)oV}mL-U=#w(ryuEK%6Tts%{YM6a<5U{L_P!R^`;n0sQxTTz(MluOu`i@R0Q z>WdG4lzVT%^Bi5u-#A8Z^4PCFR~7+_443TC*j{?~uc+9s3}7LQgt0o5+31;j-WWQt z%(+3K$=Al}O$~)aug?yDR<5ih`02&L8tsrs^qtNfYXfOoahjRu^zY$^-qV`x7Wjdp z82)V8z`k+@624itNuR_{6sBb&yYgqmWSF<&xIFB9A`(mct@L%gQG%0?ZF6s^Z>#t~ zoHF6m79@zyBJ)f@Utb%dWbJVpkpV~~8~(0}pt;(|B5Pue7K9KSi-VAqNBa}IVmpJK&Mn%68!d;a3X0y6-ZKdZ&_uhyEi-+|| z_$;3{;C$U5-i6hjxx&^YlFSS6NUopm@8$Wo&K__iKrcKhzKeXm2)(KqqE!gU|8i&Q zz==-Q1 zl8~LUWG6}XeI1fY_Jr(Pwj}#5TUo{uvSeh<&RAy{%h=xY>fWB`_j{hn`+nYkd_H5Y zxvuj%&tv@_-{U+>#JAsB*)E|v9E!8|7F?#6J15iZdsDdMMZPfN6z1DKwP7*gi&t&x zOhWV{Lf;f7TC&Gj^V|-k+|>wiA4^%p2@mxsQ*y7w$I+;lU5x7O>NK6amU){$gTaZl zBj@Q7V)y#;Sdqtb zss6W8`q7Wu`19aRJ+5_6JmpR}EW~?MI^{5UGsJu`Z|c~&uy`@ZC}8~yDZwI^Haf@$OyEpq#jf@Zh0RdLrVSIC08}!)EEL zAmK1qP)aUjo-E_5^J_{)*blANU?n>r z++;$=;S!6g2A00cn68=Yd2|S_c%IT2NGudXHQy#br!L&X#+37R39;yTOE|AEia?UI znIGFu%WyGVs06hsYGDzA?GwIMQ+oKcZFUimrapCtC-aEe1Feq(t@~#sdJjx=>&MiA5;-!;k zW$h5Mr&a$&Vgo;2g4>;AVU&++M|K3_X1%Qf^udzQrcJ5lZLm97{-ikbz{2D@E6 z6JjOpEjPWJr1j)NTN9aF!5%O2%eH{&Od^Tnb`z0Kq5+lDR-zjaUJQ^GX!Ef0!BiVF_P1q!atZe3dznU^XJgva5E zMk$^1O17oR7$T<5v#eYftsGvoc43O?ic0a^5=09MB@MnTXByNMv#hzFXO(F2+a?bR zMx{8%xoy6%auKNAo;AgwuK3zL2QTkrm`sO3;53zJRIw$hf@LbktjFy_54*Rl{IrPS z8!dB_?&@v-Oh>Sin_3w#$@JN%yu%21!9Ja+7k4lL=3&%Kz=)z(uQn|7iFYa|e z(ISa0dtKdmP290zcGQ)g=K1J2sShF+;RWkUy4px_Zg7a<_35U-;Qmg0%4<$D*F{`M zCj8TjY&dwHx>8+-UQe4bxW&Ea@kVJ@?c;xG=lX}={V#3J|M8!J#|{e`_fxmYIeoui z9NEnLFPpUd&o;1sZwiAx`Ab^64zH0nR_V5 zuz&gEjAM77p*b$%KmJ2m`wtB`|78ODg6bd&IfLWZ8}%YH@kJSM&5G80FCd<3Jsz~p z2&CuT`d^K3|9b}hyaZ--W9-vKLwzDc zQ#>wblq9w$1!l6I{dMuL7X^m=ITr7rY`=s5=&vj5G^7ppcQ=>;kzF|_JA@3e`Kf;1 zV4vVLmDTXqH3t}i_|GBOC}hhV{6~LXStlsA>(y(n(j(zQ30 zsib&s7|_+r7fg8vyFp8Z4ZYV|Dl@mD0o6ac@$VaD|L;#c6329L<2~On=KrJ3@xQL_ zUn7HF+>-o=KK{Mt$;>1#g6(9O45jABfp0GWjpdwg`v=4xHdF_jTf3UDd;;ozsdzu= zwY}&!uR9}JUw~o~104v0{;vPr z($Imryert6Uw7_~=Gl?mB^N5O<*L<{N_4gLCOD))yb7OVW7X)jJvb`S`B0PU)-&&Fi_WXcFbcqz-8wDe0O@M}gMiQ&hq7DiNnvfn&2;e}B3oT5dCCi(xx=wg44 zZn|6}@4t+Im<7rSr~{7`WN`iAlM~YEIemRTcOKFf+m%mbRLr}xGGwQWLJ@nLPEo37 z4t{$c(PO$7KVEAJ`;Ybe15BME_c7gxvuOI7^^&|CR&)8H)ebQ#Agk_ylyNcZBOc3R zPe>@~^*1WfQ#qor|J~~QUvxlMfx7$_L*@Nb`n+r;`omoRG!7G+qksLb^wMFdtx@N0 zAO7~kVLKF~ALy2v(^V`mT9-E~K_-t5cb~&L7+5|Cdq!v)|ai znXGftKkZBDp!LVGv~Z=fkO?^nNVL~qICO}Z={4?xe!F-@Z(Iv|=SW`MzbgNKx#6Fe zz^EXr*Ju)-9d+;@{dHyC!wa^cJM0A1MDyZ$C)}aDJ2IDFcdJ#C39>g<8Zj|jpto<$ z_A@#A2|s49&6R{@Pj(x0#etpQ594Qbtc7_d3~qY=kKWq-$jD}s5G5e}&#pWngB$jn zM(MqP`swO{D)g~`U%`V7^!XNQwwLOmKAy2Fz@^%L;X@U#zM%LJ^w*pI+gkj`f5Ofl z;W_2k)b|2S(f;b5)WKEyZ>d>@`3w$C3)ahke!ZNLWB96N-d-s3%Y;vH45np4)LB2M({V5@_kG&ISMRBh zq?K#6VUSeG+XMgTZ-Y@@cX8!szrAbqR=Z7&;z0SZ^WaHHjBHyuGA+Xi?_VEW`&OBK z23FknLT{A(egFRwWc|G!|J=O1?!pSxl`Kq{P4$DCUFtV#Hmb+orG}hk+U`eDeq5@Y zUzrxFbu;&H88FXG@6_}F4uG8!;w`^`T7$D$b7uad)cnVP!cHCGaXU39<8*L8`!6q5 zdj7E3LVo=U=!Ug+#i%EVLan&E99!C*?tQjd@_LV_HrB@NqdpGVW{M4)yMi{_YsliI zQK*ToFCp{VKZ5Wpnb#FQRenp*BZwt$UibgSq`?f1Fs(+Tir?jehHUm1yI`jwYCC+t zNhqV`Q*qFc@d7NjRr#Evji~2Vn}GzCtV{L0o*&eJQh&xQz5urn16``YvX=Wwb-Gu_wUak_9m|Rz9P9C^6F?nMn=p7>9_u|@5~?62u7d5WNV8E zRC%|35%TNR@b*Tp=58-|2)ooY+tzNo z{fIB}D?#sluuH1$6X*W^4S8Bc^3c)$`lnCLho|voZ^BCD8@A*w4Pux6d5`4OqjWsF z^iEDr1?_@^4MAtFpFQG@ZG@o?kugw9y*T0TODTHUYj@s2s6P>Lf(h=L?w>QCSL@}t zI3S?!HWgW=*k}Ft+Tx&)`^FOEIm`STD>YScYy*vX;k-0VuXpx==K6A9j?Py8T3fEd zQ@tuzJ74@1RSDb2!UVaJDT4rR<_V8qj7PqXJa1mZ-Cf}L<>V)afAObS&ag3n78_N& z!^*h*oY(V02Z$I+$9BMO5&ogxI}>)ma`0;z>>3Reo1fGe27xZ0=jO@}w28LF?wqnv z|46SNTHk|vZ+F=n^;SACcA(vg_!H-!NJe>{j5KapM&3KX+DiI#u-c;aTpFRAjUboj zF#W|pSZJiY{*?Rr!uN3ltHthgc?P%1Fgw7NYnsbUVuEy|dz&&e;?NbMum3^NXFNtF zb{_K#{q4<>L@gpB`S;QZ$QXVvH01+>=(lg{YoW{&v4EIxa10hnWuUWwq5^khB=o zdI8nJFUNT}fbb{H;I)-CqKuQc%!waXa@F(bZjB}`n}58_SEIvuRk%AtK-93C6QQVg zs;S06==to%8-&;UO*BPi%B+Wt_ja~8b9nPyK}uq>y;v3sWvN);6e5KL2z$Vy1tHhJ zXLcE#i%3i))$9b4>jPs@8PXaCB2{2b?p!NV|J+Z&a2>dN8*845AK z%P>0Kg>MWwU_VpvR$0Mn7E1@4X1h`+fWHbobNwN|@UkChHU&8q+1U?m%%%OtfxwbXlN|lkR_1ZP=Q4|W6VMZ2z zjT-}P_D$MyDpYprEFTdg`VTDnJ4B9>fTdt ze#`Ts-3L27OaL$_WNUQ>^>K7}$uag$dN-zrTc`BHH`F8vbhu;rLSdWnd`_8CHsm<< zK01T5*ea#5u&PySZui{|ml_%>@impebtiV>-cdj^d5=RCyYe2doYyxrf9)Z$0sj56 zDy+79TQf3A63B6&S;0Cs)dG|tW_&NMv5QJ@84<~?-6KGog204ETunqT(CGQY!XH5h zhARM%jDefLwsPhb3*S^2sb2X^F;PcCWr^imdiVGJ|I=*c6OINTUdB#WijFzqGoSMj zwS#|pD8on!$lOCouPgqWrpaV;nB6FHqY>=olzY!>q%SeqX0+xLZ=F)SFrU6Bwvmom z0{9C0YY$|HfY5VGG%*r4w;HuiX!JF`&(f0+o#j8}b%gGamk7RMCNVHY%CD)vz$Dds zf3E<93yr5_7`ia4%a!xF*p+&!GD7)1H%XulAG8WCCOn;IfV-}|hbI^jx22BBl8Gz# z(LP3JBMxS!j1JpW<267`Cs^=_^juoBRqgJ&9q9H&wXi1*VWQVD-#9nRGPs#{evnOo z7GcMLK3YxPf(+@-P2yIdSP}$W+>-XNgUm^v2IPX86orOQn);*;l*nk6XRLehC!g^>3gl~530_frgnj5Ob zLo|{j@hg?2m!7H~NEz=P^IY*|4uZA^3Rcq3aq0jooI#$)sqx`mi3k9Zy&GP$%0ISl z<6Qo@T(eUur5_`?9iFsvY4_%0Mx6D)_|>h*`^1IHr$p-f?iWtgoYQRsr%X+=6ImF&F8t{k1kwV z`N_{^$~?=g%7z7_X9w~OYBv{cyw9~o@!H^iB#L`9eIjFK04db+I7k{yg6R3)w(Ji7 z%Dx?`JWXM?0n^tsIP3cGKx^(_2eN?WA80*jho&Yd!c79s!vy39dULv(21uu>^#Kd) zYSKQOu)g@Qdwp7CvL$x`HTqqjHe8Q9uB8%`6HaA@0hfesa!ih82E+sr1 zZ}7KkzTnreHrF%gJ|I9Sm*=hK4*_VhfN02VC1Tn=8wBDG3o`|$JZ)l^{UM}=33SoG zsSml&=U@Q{!wXeh`aM_M&sC4ma%wd2p%`d@>vz<({dBYdY(U)5o25PhE#iGmO-=M{ z0b{`!kjV!_;1^cMF?!4HnhEB z!PXAGM8{KyfxYt}s}a}}(H^_(RQvCI{j?e12%Z7f3qIQ-L;fs(dBb?W{{=Ec*^K<1w zqn_7+Ny{lSEu0qvTMN<)JiZ$naX;(sIKUtSfTbvrrqO3th^F4Lcnr4kLdFg(2okkG zJ_3-Jw~)L@f0XETf4<}Z=T(=bA;ZF1C9%cR3Z7Q&m(ZTpUflRj?>z^|@G*mai(%oBHL&P5EDg= zX)V|>D9{c>c&nwK3b&@?P*6gp<-LoCLdzgNlP3QDB{HJp^bt@_mJdnt8F?6~r?z!}e29 z&X{4{?*E#PxOxB6wflrn3-4`Cm;l`C)2(jtjiKv;L$>t6^k{9FU!H=^gO%AmR^JJ(}A!e(y>18ckb6g z)V*f$VJ5*vKem{V&Wq$|^zko(oD<>R0JxHu5f6;()!jnQZO8dO?#+@uP>#9Gh}wgK zt9dE2L4XyWhBmC~;r-l^gg`)+gWs;Nc3ZD=@*J^sH_V}4f$5_I9$b4(JRtky+hS!y z;1EAu`U+fp9~nOoX;)A%n_ywyl7&D^Y?dT8OW2>^ErzCVm>1n_ehTg(zL5Lm)|9@Z0)#vuc}Ns65t`NTIIGzo?ssY#c<255>2)_$kcEw zZ4A2@EP#l>ZZ^d)1HZjo>z(tcoTwL7F+6#?xpoEMe*#zSf?glQ>e%@GR+}sO=xZ{) zgr{p2Sldsx&`?BT-aYq5$GSr8boA+uo?EznQ2FdR(hD$V2_?ktTJ&|Zjyv0LG_R_@ zk$VSl5oJpt8FMf_We{}me~&bXHvN2s#!~wwP3;|>YTJ>SL=PS)9^)5T2WXi*jSVop z<340evNR?!!XJSVCas0*Foq-%Pu2RkAY@E?&dBmF^pcqUbsan!{Z7>ON1fvcISt#9 z+P;Bq)0Wq)*k+c{H1Z4+R7h}?fmcPBlm{L|TQ+1bPjKpQa(-<2*1}}_qdu`4s~8Sb z0|>D)EJXkLL1sAn-jA)Bq|h)HnI?ea#|EQ7NdpEm@U&Y1bJ4yuPf1*C6Mlm6^9)h* z_YQ)FBm)Sdd_MQ%eg5wy9ve$`pf=k8crfUDr%u-2C7uej9R;bt8}{TbO`_NR8G|_; zXRvR+fZf}ut^IzP%b*6H3(QwE!rP0%saF*{V38*P+6stT-{X!sL3BMapwC zaoxjt`~r#nOUitvk3cx-_R>e2FYzMR_1)*v4G&wIv`xp^FhSrwjWV3C1HSr&PVu!B z7Z;j%j{iaIuwKCPY%DNY3H@5e945|g3b|t1JNje>WFE&dzAcVDfo98ag45mV2JXu7w3!tK=2Yo z+5BghhAJE;0GvaiUkf13MzF}I@@n_oQ@20fAhuX4$*bg!Em680Zw`u5s3eQ{K=nBY ze$y&^AeZ`)5)>DpZ4}E1m~0bJoiVSitgI{t#nGQI+nVq%FkDAUP;UGjNubC}V5zRY zbFf)|LZ0ohT2p(;K@B-1N(Aho^jF|MkQ?;u* zM0N|RyhQ0a`vc-fb=U6jzpKdqG~{2m0B$s})jh;{pmMg+0ffufQz01CGnIk?tSaah{|oKrB-P3LYcBxNP)WU+io1Dt4<>PHhEVDW zY8Fj$>{(K|5wJsTyp35+8wLAW}*BNI}M&Mpv`bB+OiRUY; zfp@yr|CLAK)n_ni3i8)3de|7QEb)DIsoG;B1j_rMOaP(=8gJpI=3x3|0FAgEYDYYq zmz<#n$$)NF?aF{i_h2@0NB@TsCD$K?yc&q{Of5^kY2b}EX1iDjYjf)RF+z~5x#3Hi zj?4tw04ftF**^-N#}OUE*EtA6Qc5~{gt(6W`EaYl&}#cqNeJ&&&O;>PSwIm0K!1wF zRkqJin!yL5_@a)Fs(=lIVzvfQBBuw7@_w{a=odCf^ZfqjY+(Lvm{ty^8bx&E zbT+4{1EnJgBVyyPav^w)=_7i+X2#{(>Jvp;~gBWue>$P<1LW{Pc7a9IU{o zsqbd`liRYZOB@mUS^*;0fr_5d?1MzE$?b=Et5$9jruvNPUo?*SF(p{KbN6CCk^W-zk{fs3C5%|2CuTO(@- z1SRMYr~{TnczK$5AzhLkX8YNKz4JHynuDZBi>I{m4R456sbw`}=hfV2K24(oYM)=r zf%H$5PlN<|?GhSc0G)8%9P@)RaER6HFXvk;Lzopk8O-x)?vVbnigwVC@5iceqwg z6Nn1owX;b&h6mgXHpSS}Ak7W}Tmv5Wwb`&zpd0hp@j%`t!9mL&LvIA}cXPCc!h@x? zgIR({QFT&O;-}R!6tp>l0Pk8fdZ_go8uvM`Y6PUK*u;%0c2Y_Pt&z!Jxk4@#w13{P z{6Q2ENZ>Ju31YW36@>zY`HyOscLL_Yw#Wm9yAR{6=v+qJ%%IvYV8Znq#xWDmZA8nU zh~I_afhWE;e|%f4{R1iiK#q@F!V4gG^0f<E}F% zqcw~qhuB;iqc%msdu)qYBdwK-afJ`=5#-Qj< zpuZH@bf{$G>*VzdPcn3PSaf6RV5@lftA-DX$%AVeB3=QcF^ECr8k6VBCy1=(`=igm zdw27zpTub>umaIcBdDxIlwLp6Crvz5^x^vP49zu0+`#<>FBjkW0THeOd23wLO-N7B zQ=hXgH&TeX#%f(L^=57PZ6Hqo1P|N}qCdr+C*x_&9IVL9&u>+&!qR>m8&4qS!>G)XIHlFa)U$`;uC|;jq4KY1)(Lg^uHo?y8I+{ zI&J)3eeFOJs`c$K4V!{2jeeY{GL&P2356IGQ2le@TT8B@e}y73g`D+-OpvGf677Lx z^TJ_>g1G>y7+pZ`+3K_JUcve+dtQX_lwt$G2Z$RQ{S}Cz3_y&J5AqJepFMO`^rm5V znjAh{EAF@r$k?z@>0>ip^9`T{LWO6O*{>;zjMKj;#VK8afP=RU>uLuH+h=8cY`j+E zuz=p5D}94Uze@Ng_1daf6(Tr5^r(_q;a@D{EW=N%MAj^ics}u`*iga%-BE_YYjX@# ztBpTDBj>XkC}!*A1L-srIaL9?t^foof)#nc$lU=l2a?nZkfa_YHA zdP5wm2Eh4Jk6!i|-8LR7x5EO0oDfn1u!DbcmO&T?rLiA7=06b+LgwE9b0N}bpqg{= zj3I~Cb*W-z{C#$A!1WGc7N|Z(f7MXZ6C7R@+!D@?s&ZQ$Ct=={REXv0$WTsVQt)#6 zMO6^+lahZt(_DRekP!X2WBG41x@Mh;jP);02F6@BYtjTKyFkUjR10)2qZbbe@km0; z1F9~pXC&|)C^RHy5uga7kK6}7R$`q{ewLSLT0}hB_?K@Db7&!6c%0+y|A8HX6nP)8 z90uGU`A$IfcPLZw{YkBD41}QoKtLxS#bcGf*e*0`xl$p{4DbW*63hx9kBsIF>;p27 z864Nlk|R0|70R>Md6%m|y$grZsLi{3FDV)uLe zH@CEOGEn)i?$QIZK0I4m(C;*tace&++C-~Tn0I$q775IJF;a@TmM-9zj$AFsk;rd4)RUo@ zT_8A~;>YwJx{t-G0v>C%wF8KxC767`;V6E*4;^f4buShHI>?}Gtr){Fl`t4*U@=A3 z*X5Eb@o2s~cJC;%7G#?x_`5lxxdrZ}qSP2{Y2Wj2M%b9rd;#-&oO+L+w~4M-g969d z!J+qfD=V4U$Ch*!F2u}}xMKh2CA=#kMWw7~SZJV**8 zR0vF!ONVheU#!LDr7qD7oJBR^Oy%dROW#B;L~QF?oy;sjw<9+O3#tHxwX56N0i0@n z|9R!Q?yQ3kn`Z(BMcOf!4Q zI|<~=(V|X|!;J(>3aWSe?r-@xEiO8gWO!qp*DF@6Tb|y~ng4u$EDs}r9t9^^-Oseb zSC+0L<1lT4&Ndn$x*qdS%RY8CZkR6yJ8Tioc_`PUoU~}Ud2T2SnfoTbs86D}OmWH& zWAe@fv>9ktSAxSo07Wc(Fk46h->d#D`~FTviJgUc9eC)s_aEa#g^;;@Og(p9gRLf* zQqmV6%4}4e4ODlS2W?W=X=n5Ngykijo*7musKM&w=SNHRfDh0!#1m|7vwZzS6OMeY zv81?U$->GTL@D~_YiGsmN$~gN+uSS$aUnrwA|C)RF%luTU6a0XLnIm49~q0JPkUoj z-pzhxgc5ZVGXguWCI6IBy^zt8tyY8GY60<_TsA_)!PIrXa=ce1_FfLrg%3 zjr2(bs-v$-`mW+6c;Rb15ZN5++J;bkbK{?&cF1=Sfd54D!Fh3)euCRjXHRxcX#fDc z((B!lzZAed$Bjm!`Am#E#W%j(AR}q40j>WH;4st0pEv}-Uju==&;0aqGk*a9Fj(;7 z{5<79p1O8=jL_&($OGEAF(^X*BpQN9WV8Vox77$HDL=|!h{t2j+=l>8(frlvF)Kh$ z#sa#Ss8!oOA9dW?MIQLG?~Xl+6R+iY21i z(EZKOVyL@BfrhTU4#h(s1Ci}(0beC=TzFCgM`rwM(kltTByi*zD(D-FQ-se#e4sTiu%ICjbV2< zM_A!)uL*-F9zA2g68cm(30liJM!+$EY|OZeQ>B1fZU+c!C{QGN-Fkcr1K!Bny{>bz z4zSNSpLcr0qjvy+`l@vTR1RO^#Pguk^9lt7(TOtK&BV4yL1YxsJlRDi4_BBH z1;PFZL{h?ZhK;V&y)Fbu1T4c|QCA!FLke@`^ZBH(%rhsT%?Y@sI7apt%njm~5z=r+| zpd)$5WrlH33*Wc!{@;1K8RRhw{!F=bj?N2J`wIy;CU(V>~5!KAX3Wn?|^d_ zVU|^NITN~x`tWlx3X-Exha}1y=w$|6p5VYZDT0YI2^AMy^xK870E`>FNW|&d%-fOV z+_aD}X46<#b?dBfIZjgEeP9LTohQvOE;uTu3(MqDgc$hE*qP_Jx(Yd(4_Vm~Ag4%c zZ%Epa+afdx)u<+QzLPN@T_5${2V)R>N0a}_zqr$Aa#cl%V@E z1x*SZ!7-O^e}9Xte?6ZDw^zb+LLIFfRxO-bDzL(R2(M`svpPxP7UsDDIMr1*5^jm0 zqMe^iffg-g-&xDrE&B&OX^J zdxy3{rh?w`fX%a6)V05ChgnB=Z+wos*1AQ1*OzvYc`DH&nLA}v#tUjxRTot;Q%Rid z>86?%W;Q4=7S~I*c;Lk)YkH zoyM{#zV*ibR#Kn@hg-NiiNWW$+@C{tP`l()mo_Rc8?1?}ezq%CEv8v(mvzCYd}a^r znzrW#FosuvnA64imr_d(SQ!C`d|RA=tYC-Q;#N5@1`bJqJANdK67$W7G!l(9w|8ac zROK=$+-%-GAr4C8x3}fBSvzMWU{e7SZ0MFo1fU4-2&QIu4MaIC*uxtYR9eZ4}7a6#DQ%TqBsHeOriTX6CuxQzJi z?-vcacmZsv(_J7O#ui^&MGb2ud)S-VPYuIyn)(usBGyx=p7A1imb~YfRWhp|hfyKI>hzfEZ8@=l%R4PPX=hAd+DkJ^?w_;4 z!6{6AB@QoAqoqV`N2*@!HTZd`6T*bULbeFssmumwbz2aV6by3?c6t!SztB(|6_y*J z43|6C9q_y|L|9Ge4GeQ}z$2)I1UlohvJV1EvN}6Ow96?6G;xj4*X zY$PvTOe(b9uiIdrG{>FBv(9{aCK%|LZaG;BqiLnz{#yD&jyYnE?J2>#<7v zq(FB+ii0H2Q-qf@XCS0%BfUtsV(gW7uBK9^4}B$Tdg>l&kzsH13{ZNqw@bN86j(d{06yY^n`wTg1@`WNso)uhOe_bIII;9qZ7Oj;3idy^id-B0;1 zB87SJzcn?4UGwE#ytqq_Io0}`Y1sS)o*~}pZQ9S7!}RxtXdK#mr6Q#0a!G7HpWjPE z*riC+KP5baH@T1dfEd7$O-ajEA9Hx%Vk@WBZ%#C5HT}yjL*Bp3d`@pqKQZY+5@M2q zxEb9LCBY1qk9FWu?in%6-BMNF>7&d`r{oah3dq|Mti%4iMz3H6sl19znR}^U)G7UG zrefDxkvzFs@m>vqmCsflv1hH?CVPhGPHGbU`dh*RT`*BpdB%LLHv$x8j9)cV#iM7>zG-2Hl~e0Ve(|W5x=4@?s$-`XO9P z=H{rD>mM?COfFD`YxD{|lXJ_|rRH%92S>m69$k=0db%zBrSSSjRm8Am5S0~$m65(M z)uQl*bZ^hgI@!8i7&fP9?kQ%RgpJU!d8P5;DX}y9F`5|B zR#L$TiVnHB8^f}(#&@cfVpx*C?q5QTHQ&5%JKBu59iDpb{zQ0c+3tIj%dxZzrm@ST z@3!3pZ)&ITqz1E(+I!!s472eU+8$FLzNMYY_51BDeSci%?#11!7!%A{+-WPGu_9Ya z!icA`tadU_Q+T12{#arJe@amIh`nOO1v=d64a}tcfWiqt(CqB>YnN#7S>Ar+T@H@t zz}%{G%edhY2OEIn5O!%y6JpjFO2VyPnl$pQH`_3rCn}~kS!v=(tq$dysNox{YrJI7RN}3KV}89Ew0j-6(zvaT?%o?$sz^8RJ%top;+~zDs#31HS|3@i zB3SNXD25kB3RYpccq=-k^)GQZyG%Od`YgZjXC9?dS#OS8P-b{H!2#1!%T%Mh9Jh&M zlma1BCOn+kpWR7(jGAZ4AO2~JJap%dTZ6x7utn;S3aOko?(Dp|PDSRWq}NoBLT63J zq-z=?ol*m8q=1DCV{fw(vCG_>V(69XEf`u=T{iYVXLZE%rDM~}Yk@*j&&|AhBPSJG zDNsP4(uC|Xm2V*;y|^gM14K}#Tn0EkPlz!r9c^K0n0m<)B5QgI(Ry))^`xv2PW-l( zy;81^Rm3pvrsyfQF?G6G*lScv+#0#x=|v_Ar{D3c8>ltES%#ddPB+ z*1Oc%Wfik7=OPuqe4D*5q60@h&oJZZ%$2r`S~{&-wtK55sjB3t22L*Vmgjm>-L7aK z9kl0_^k@>NT_iDA`rfdW_%=7q(k}GoUOKYTXVn2&T+-kNmn7IqlzzMaPV+H$8uQp| zp_Wdbzu=6z$FR$y`hS1?yBw*L?0QUeGG&03e5VHgl6#u!)|JNk*LSeV!Z~I-*!)yA zxMkL9s;gHTeZSwqQomJ$yME9Gv}rJ)yWsw>$93SI^4Kf;n(!yeW2dR=IUA)C91}e| zcJ9NE%6I zt8TBzgkLx{p0B)veNw9irX-unma2GBM1{=-U zSf6_bs{-D2O%@Bt?R`m^uF+Z?Oz|0=jU=s(l+?$H=#Rbb3ulV>=E)rq3DUp$EL~cv zubfkkyrcz}q+0Dp5VdM-fqtG~XpaJ5^DWBH6cgLFv3F{&FkQ}YYIt5KcRxS4n3qjo zBfu|uPPegsmtfL@YLx1{!}lclGyWBG09j(k!PguV{O>&`otIzsxpB86A97s3q6yu9rf79Y1ZMhdf zew<_99`1CDFaN?f-d?B1`X0hcpb!1rP~-Vnf|IT{_PlsH5}PkD<=rZYO|ArUq~LT? zBSPmhFH@=JW#0Hq`puX=S}JkQ$tZihSIBqsmqUAL8=ri?yJ3fn2p;z_6O}+`F-VQ@ zlJ?#W@SDmC;UVqoMU_-BZx`mcUe!rSyuwtRQ5jYxxyQj&n8D9Q`X#OWHI=`72n^jU z;rUQpsnIav_}uHBXO&^B%<3mD$vH{#<)8m%?k1ksSiezh!zY{NwO>_D&!Ead8g?(h zZwx=!Y{1o<>V^O@nVWBAQS|A%9Hgab$N(~Yq_K)wIz3ln2sdeRFSGm}4{3e6g9=@i zOgSayQY-h?3mtKfp*=@f<(CP ziD$A#4_1v;9Mb7G?|v$F6;5nr+IqU1MPi=xh^0JZNJC{Q;07K{V_goxK`kjPDc}&B zIpdrf{F1U;INCV>PP*&mq*ksm7zsvQPjXlquH~o5#{oosEsrV+zr#s7n&Ivv`n)ox zP|`ywA#x+d;MFM1w@YnM=Y+-`jfk+S973c+A@fXQ7Cm)X_e=gCq5+5a=Y}Gj76SaX z@kXjJ)!XFZi)q|=(J7v7_0lwenux^(+1h;ie$~bd@OsuiZMEKk2kZOG1e2{a(R9OOpRu8^0GHc&)Rb7a1Xgah7lp*XpJ+ zOo^X#u-#oV;IOF(jc5}@-oivy@wz<`1Q&`0Lw5pcYljF zk7cj-D3=KG9l}+4>+SHkyTi8h9vegJeLiZz=ThIgZllL)&*s^-tk$)qDXQ$DKQ_lf0NU-OdLa_6ARP zEB4|aPF8y|Hwxltkmm)Y3 zmr0Ln1o-50B!!{19Iy8d2oVtOBUUM+un2@XY z!4>u$H^dbNZ)u-j6nRml1h-F|MDo29`o=m$(^EQK*j|c(w;|>DqIuIPOy{xQb)OP^T0=XJYbRa! zq*^U}gXMdYs32O%vxyZQnRa0-YL9Q@^5mkip|dEnTO|Ma9Z&sMaQra0w(@=yPHwMl zy11)&EZW{{31!atJ!z*wggi+CwiSY(q!?hM!&ytPV^b2-4LU?~gLjmM{Lh)oiMQd4 z5-Q`WZf>zEeK0}PP&98m5V6#^W4CUU9PWi>4yh()&Db+>Wr{mp+SMYcc`i%2arkL^ zb(Rz|+ogYS7?s;?6nW%Z(K*396;!BZ-7_mQY2UoZAXBZRwIvaZQ#rwqgFw7lJ7X`x zfqFinU0%jIS`tak`C=7Bwt}Y!7youxioNSz@hIH)6`Q|l&>ZM zJsDLMA^|g6jdA?^y4W;DVQP2f?Z^)ge^2EbBNvssyi}Q|kS!!bRMW2Z+!cs~ZQTem z%&D5Fi^^ZUCTmkA{OPqSneV^;XO^oe<7N z8U0pl=5o``q-Uk!7R{qbYD#Qo^#z{Z^r4v*aaF!g+#)I&o4JuI4&_^s@Y{oWCt8*J zwzf}qvz0M_4>5U(*l1X**xU;ieR1tmsjkapev5K(;831}fuuor4K-?|ntS8iTJ~JH zy1`Us#Ds{;QjvpVbm5Q4?S~N-1YI}8lHcrhx0jvb)*d&C{iw=L6kBr19 z6Y;H#=<+w1kSgXp@DP;8xO@^P%5ROAZKQWY>fH>kpw}wm`jUt_qMQkH68D>%px>vx zcrkC~4l~^O!7S!?6j^QMwUc6Mk>j7roi-trCxjjhP5v$f!ix_Lg1nG3CF2Iq>pV3`JT zI(kbM`3dFfQP^FQq>9@ETgKgb1cgc(c7o&7YFN`0;gxXF*Tjg832`Ub1}B2M#_Y>r zb6^BHPD>xfITy98$d|d-xp;I=TjA>+q-{s!Ac(D!y1Y}FE_C#=^vF~`C5PK+6`npY=9PXvEzm}g13UJAW^tSb6k8X(qbHmM-U#YA#q5OL5JF~ZN;V9 zEy@_tpgnf;==$W{l-;*f3Zp?D5uTyCoTIOmX9HIml_-7Dm_2M$tlm2#3jv6#DotTSGpL0)w1nG+@FsPDZf@=|qnm5xU}t9y+N?{6u6e1*og zy3h=jO>TJdzUuM!a3w4bjTYJ>B0^d7)Xi+Y<#pu5Zh9yVx9v^A?5z_eB58Y3zF_&L}F zGX-OJB;n>C`~B7f;kSnW4_)sW)zsF$dv8TxBM2%eD9wVD4N?W9i->?A*ft<7G)1Hd zp#?}HA|TRxO`;;8A|NdoNTJ~Hx?ug|V>XJWD!MY0+Nh@U0<@7f-wle&}lJWajGdQ|g_hseRs z&yM~3Dn1uLvGuC4`GD`{DvPY7s^Ye1)lhk*vi39(NZt&r(2Sv&0CLC!}Q! zZ9j8vq2py7EmQvtlXv^VZ=$o_u7Y%Mu@M>4_yn*LVSK3&R_I-sh?7F}Z;Tk+cvQ@!A>8n7yp4x6P=BwApf8~o3d9NC^f z{uc#8(@)TCp*W)rzTy(y%Cjfyrt-ovNEV0Xk-rB8ionI?U-$-){)u02zKGX-=y*r` zqYhY|EJhEIw9;PU6yCP_UgG#adP=sjqwJCTnd~IKnP30&-T$XK(k}T6@QPv_DzVwh zaYuqrZ6H2K*LKC_vVd{u+@E{;5;4D$VhbWFu}0@5*r%H-pjVG1Zd=dvk3lP~a%fkT zH!eK`F#oD$-1!xuK%)GmAhEOaD=A3#N}oUjPkb!5u5PdS?)dBBw~34^mD+t|kMbgI z{pBs)XV>^azxV|9LTy_)zLVQP5^tAcb@)t`48Hcv@9sp#^637p0IB_gm-X{_ds1L- zch1nnd;yVs6XR+)^X5CmxfP--D@Q^wRiu@ayOIpKmJ-Pj8rW@P(n+GR+e5;7Id+>C zD)E&(pd-37kfhuF*HCdQwzKXaGxhY+e&ufSrJ(wgDX$|6~Qn$osRK6M58w4*2L?+=1eXFz{Hhan?6G7JT@ zFe|{F9#n7Cjhy!>GAFXAUfW=_1lNs>is}flpp&!@p;h{b?5cZO^PiOjI6=;R!9%j7 zr~I*02jOK{Y#gora`-_0;(hR+Ha&>~)kjI(#kv#AEz$xKrMQ26o+fcj%hvJ1`#D%5 zQg`4tD%jAhWw$9h{B{~qq_MSDE$5oRQ0WDYAO%lD#~48Y574XrN)%jCGMjtOxwp-l z>&#M1@n*KTS;cF4BrzV_F=A4XQo$6VwDX(nffQYK1RDCOcY^85)(dH{;a?u z)WfmtC2rG{r2Ii`{|>DM2r`g%-FXDlPT8l`n?V;^K8bOGR1V*7@xA+|7^S7l-Wh6X z^Ihn7PSSm)OG*a-MG6on{^I*IAE~}|bBoVMC0&X=n=&!U=|U*rl{F*MVSAi8J@ zwgiZX(|Vk*axJR75fGJ@8HQ*C^K&H(NPdD9&VHJ8-#NGC9^`aYfY|+SXqv~RD-OO& zRaS0W(w*moxul+1z5CR+)MCA9#BBfTI@jrEoru7qZMS1FY5K1uLq9&{uKmk`-aRiO z<5ouJcXK08^PQFk5I4H$=eUqdMq}#1V9;@~Q#au~f)We@kS%J%vH5(8ZqDa9FrvK% z4k7$XlGz4=)OF;^>?%pR>ff1$B8@9<6!~RMQTG40^69>C`Sk!_QB;vps_RlZroyM- z_DF0x030j2CA`HObb@J*OxFZXKa*ETx~jBnSY6OC23aQeU9shgP#s7EK8_vo`wY3M zbCw?g6!VHUXZEztX(0uarcLPM8pmQAB zo4Dy&y;k}f0+x$vg260DMrs!MeU?K^Xc=-rgzT|hkoT}}22W(9P!zx_T+g<4q0qkfEkPi} zI%P4P?tt>k<36$`v4a#}JnQ;Mg_^`y_3|VK(`^d9uFajl9;D^H(B7<{6`^GOya?BR zrQ%>Dk|s7SWOmM(KhAL+`W`4ss)BmOu+m*m&CS0>y}8T~*rW8R70E zF@U_IZ8p`V*`7b!=16K8nRSq$n}7WGeGp)C)k^j3??!!03Ev7OMSl-`sm~4`Q9$)s z&s4q**SFbz`Y*`}^FiNtJ9&lCT$@H(tR!a?{TM0_m@9$xAw9ouCtfGUVoi zb+;)>Zh#pygZ=*367n$;&sXE8V6lxk)Q=C#V&MGuBquOq{wPZ~o%B;QiS+PvF$lIU zqv3UFqt!MrlY5~$F`Q$&f&zITt+(}xU(;_fQzNR%9)_8`pSRT5<{_Op5c4ae?bUyx zGRU&*pkPsj2vPOJ5!uOES%wc5Mo<45?grwjTh|vR7>#}OND?I$>Z-=U;y5y_*y-`j z5yEH?Ke5~?yRAe_SuQOuEW#k04)!hqOZ9gt(dYu}@iW3V$_|~RWB-LLJHgm+I0MYB)Y&q*1@RzJz?9TFL{R|ZYFSlzlT~?dP)d@?V)6^@7b5mel!2Ujz>8qi<&(kswtKrlP&ZE_3{qsRy z+r+`Kf$Z`m`SE5+$vFX?olcn_bx+Zuobs7d;;c3tQO;0Fr=tK&zn%>cfKAfRv5W2&eT^J>pcx z9*PVU=<#sVC`i`l_Ax2Pkx$L6|IRAwcGE2_!ZkBxz|!mkXq`?ONq|rKIORbO44A%|@=af4@&~QV9D!(mV)M?2w6TVKFMt!_|mrejj~i z^m+t2XAR749>Bg4abVB94oh*HHU$k>Et8Jcc&6>DM zMS;YFUSXq_!;y`8m?x4?sXNTSskaN#>CKIgvImow8g8(@2@{S{|9@SR&pFv6$urr= zQwu8pb9VDThc#E4@2Fgqcy%Ep{|xJgJff7XKSE%h^ccP3;!{DrR~n-L63g+>Ajr!B zBZ+}O>SJM7#_@;h8gG!+zjeEoPTb$ukU*<~QlX$Lp8NV`%s!*ib#5cw-@O9WcB1&{ zS_2MmkZpBwXSJMwbigw|VnrF*IXAY6Poh`Q^#@fRD$OKEv9kE@bqU<*onN9Zb60~L z%WSw#?hItbcGe<^LCZWFAV+&Z?zh$@A!(JJ=B&7HK4(hD{P_asls2;JRBnI3_+nc* z=E!qEuF_1Z&!(Qh1Ca9U#N1j(lKt?Qjn!Tuyfq%9jaA}N=`Q>p`;`{<4MU!L-&l?s zFJ50>=N_$XT{v+Qx}2|T&-D6xnJH(!+)};l;{&o{5pCXdHCSZfIG#-@N6cY=tJD#r^TIdD9)UWq=m19$XiGNNRMNx2T@AU)R_1chGC$_{^CNa{GFkpV)d(!UPr98wtpgVIGmEh<=P!tgQp-QLnMZzL))wI-d{Xt4Mu7fW<>$pcH zhjDrD#=lTt1c-B#P!84&jX~gj`6!G?3ii%Q2Un)GWVJMeZCK3Kfy%Ig)dkBXKI8j z>H1m$4!ZWpi|hlOMga+nJUs1{rTKGoD;kW&|L8d5v9{A2CzCdy|ytV;LuQ|dBIX-7Rd3tts zFFV9es%W;U*N<6yv%m_{ys$h)j;lLN@0%a{k{5tojnMGFgF<%;Ff%=tr;h)WXpKs4 z-j^YpH-EU%F;NbU=!IRRzYc)_FuNxvFIlB(L_E6qcx$7cB}T;u<9urghglc0USEXB z8pC&%R=Yk$&OL9O^mW?F{cI@LyoICh2l0bO`EeSwc}%LuntgmbQ?ug-{R>D7Z@0Nk zeTNcKCCAHFc_$g8ko(mW&SmjOHEOBHyT-oJm`v8j)`jMmSGdWvN zy^4L5wIH$;_2u2zUvC=TmyFTXkA1fl#u?1T2uYaxpJYm7@VH&kOp?joy}@%^So&>D z(B+CjRLPPGo2^m)?;i*27T=J@I)e6%9n(9gy&-epTNK84s0=5kGg`~SZ|Ayez%#Fm zWemQXx#9VHUmwPjnAI9vgFtLlG3a2)XVxeZwdb+jO6LnWygb-!3j112T_Cbc)x; zL~%&z$s|R`o}iEEQjzfBDNj&cI+=b)f6IHsOuA-WnRl}J)p@c#Z#12~_i8R(&buv4E=#zpXB_>QL06axL~?JS z-Cv((TfG8*X^sCAo>%pGrlHPCzkaaRL}%8<9|DcPuQR*2$l{N;lQmCGcO5K-9r=?S z%O%tGIjEawfT_%7l-t77$T-JsD>kWfGhPxFPSy+}6Oiiv`3x51>UHqO(-tzN*Xfo)?- z#thyZ@>BF3-n7^0EBf8jSnc)P>+@)if`-pQVI66cj1K+ZaetlHF22YPw{^x1avuB| z%*r{MepdmDs18Lrst`IsNG)d2iUsl{nX{y1j}%Y!>D;h#E|#NkI#T zr{=Sh=@thC(UD;dRvQIAaJt!Ccx2O ziM5bVwlxMgiQ)RnI?e=zZ?g#feX3Z_#KPN%$bN@tmJ>;r^KIGTcL#!{1iJ$-chWJ< z4yU(G#s!|@D~Dy^Ui$``xGi%4wV05{z6^BT#rUK+4@LQQ5qHYpP**Tw_ABiM-%d<|wvC znk44SfnWZ_eWk}5s1A`>hwFHI&NBq7SnCfER2z!afGX6C=z4D5w6V|x zfIPIR?|UhiI4(^GA?@T~;F%jf+qx@|Aq-6zq1JRXw6PY`8`FuI4)@hhL4O%Y|g8o zVslx0@?I`NVDebdmhYF*uVT%uy@+>IL6t79w2*HB|v?_=1*p%FEU z)TE>R?zOefqmJzU4Hq@HNq#?doaihmN=Bq&9HpsEb#%|AsXA`|-bJS>A|lq!hJ-N< zo?(l%n#1?fEpn0$+vBb$!geqDG5pE3FlDh^1M4}QWv5A)v%ztWb88FAim3~}Q&NVS zB=cxUdHJG_$^-kO>-HQB&N9{Ob4rJU@Su;L(q%atZG*M}MV!NJRJ~L<*wy`cE7x<# z)(x_lm{8dII6?9f@B(~`7YMS@$(?EA<6w}@)|7O4fc+XIi?w|L6=D0zn#dh*RPlZ~ z77<$2>~P)5E8a+Z&6FIa3n8a^*!$4{#~~%4Lw{{cq>z0z2=SuzzU@vmFg8Iv%?Y~S zzgNOc@{zDSw#nH@uM%|L3*vxcwW$e{mcMsKN{8C0x_Al}cKDt6z9ZXG<8_O}bvPK5 z0rK`HKuJ+Zjd2U0MK(Nibxq|*#pPLMGGvx%12FUQMczFc`azK789o?`8*F!Y^KWUR z7;>Uu?R&G;b-4HiD)PXk!Oy3lIM?$>;HIRdd9uM_;KsbuaSW=axGWbcVss2XpTpa6 zcqPKN4iJJfZTeFOARJTHMzaZ~=`nsQB#fRq#ZBw`s?y%}nWsTjQN3WUBbwR3r#+YD zGg%MJ-|NSsVgOLT`h^0~p3lumg-5>O{KyCw^V&A*s}|h8-2l6QW6W$UoG91kx8u17 z1fO4QN9+e4T1kY@eNUCeL2Uh-Zm1btjsk2!CQLhdaR<>T=S*t@rm5!TIZ5v<8^HRk zfqt`nQb0YGIh;!`GLsg~({S`2f1DI@?OEM1rG!659&c+~F`u#@Y znB*k!$j(lFZDfx-)$W*5`c*9n{q4Gsxyeg7u)c<7x#3R8&3UrX)B}R)w?8UJ&8_S$ zP~7l@M3Yt&VN7~`1i@mU+ik`l9_udsd~E6HKYIfh5ij{xlD@Okc}o;BT7r+L=4ct~ z52qf0cT#qT^D8i;({gNbk#2k+oL~DTHE__=ri8E!a>s0IYE#nnKGz;i4+djt9%do< zKqvwS5C8mpIA*#`B6RO_V9z-s6$IJf+3;<8qP-!RUBlA7e=Oab4e*Hjz|oZFW|Lju z?}KA<->tJ$4G&ZiX6TIWAuRifNN(C}Z|~E*?+YL*dVy4vgUZM}=q_q#Jzp^!A5NUT z1(_QGL{JCdyOeejazCq6W&Dp(YcL4>6`inV(Df?{H=*=UJfdpwoeq_L;C3EZc7S>@ z%qatyBv!YdLr%SDO1J^RPzloub$H*Z2{NUGhyd*hCUVSYp08Vm*6;oFx^Aud68r%_ z$he~9bm@w;By{JHHkEz9aYppJ{;u0&_k1L~E}2mvTmMiAeducES(F)|I3&Z`IePmb z^8Yj|PR>@`;M0vf9kCN>Q~$3O^B+z!fBApNG~;ZZT*`4G+g{Pp<@U;j*nD}lqp~_^ zu<6Fu;hm(LjbnXHc(2uGQ4P}Yus0RNJt_z>8<h{pgvdrborrfXNmFK*hs zh^5shfq>cNZ6=!&K?67KgM5C`zc9nb`gk7>s?#h4lLEIh)T~C-JJX&f@7eo-fy^m_ z!?#76poOZ_ct$m!_!_e_-}zA|#h{^k({cLPH#(_PXMdUd82@SGZK-DO_)XNVx1-uk zWe^KJC~$FO>bU1&coRaup5z^GHM-yQbbKqIf?NQy$w7PV4ERdOV}gzpsB3{Uq;v}% z!|@ce1_aR$41?g!!r|l7wb*H90=wRvzD0I4sDHIs?wIUU2pF$zAo5WjYV_0&_o?`g z>kC5_DFb)Cu(x{rskvdugVNB#;TqsRy82E7WRF!9F_CBXiF~VaA;ubY)1*q_v=uzWaWv&$g_zA^cu?9hunaeuRKiskU z)XefsBnj*tZwWYVh!140wk9@c%zAXgiAtEQ89jndQz2n6c%}uWVueCtZWk6Dn?)Q% zzo3Un^HnYaY}TfTX}JA(jRq#LECPRCw13RlBT)@M;i!f+0F9q44c=g|dLEMtE6|yX zycK#t0euB_nC$5vZpTAyRW@?`5EBMXGusf(bdBVe>2L(*@puJkrq~>l*Vz*SmL=pP zLK`p>l^{nbTKI@coH_0VO6P>mBupDvN>1nyv_P-~CLM@)*Kd8i&X`2H;0EkF+V+{S z&iHao^J#ydaqfWEt=;-nqEoP^kbK~pXO*vuWL2C7-fI_PP%={((Q36EPAdo+lvB%c zlg|iI?CkN-X(CR%^XeNpmz?QkLal~9RI8^RNmWEWpI&1|>ZTX4Sh*Y2)mnUcyQYpL z+D^hGtPiz!8I1@#h~thywH^;lSLbzdy+b*32A}NPZwNOa?EAm5YyiEpf(CVJ&@M3~ z`XNXBv3#(A9a)S{2i{Xtz>cIcfN>kFEcYaeRclZpS)mDyjYGq z4nV;-Yz`T^dW8J(8i=M7v&DgvQ0sJzVB{N+7Il+nPa!r#CZ(D6IL%~IheL#JyVV_u z3ortYU(G=(+>=>0OlY&tLwjXKo4`W0u(5IIkf|_79kIqI9WzS~4U{9wv;}W4{X{-7 zk0U(#r%TjLv|;#ENM82pzW=je^K(Lw;#V6>vr;O3Yp&>BXA#SBJRi-Xwll0ut{>%tuumTqumYU(L!%6 zOrM5?`cIEJn)_&&bTqefsVcQ|XuGIUjSP+l5}P^@GZ{u~x2CP5c?q{fW-grS9b)On zVg(bS=P|pz$aGE)&_%sh1;Izt|1_a1!t)9N2F23`nC-d-6=4Zwzr*fnmlR8|3L2Jl zW{El)oQEmoE9RzEqrl$S%pFleH(Zl^wO|afN>xim$D}zCy z#gH}bgh4EHa1Fw-KU~`&FnLOzAO1~Gza8=G?o&ysv{%+-09IjRO0Tqz@W=L#;;Lxy z-TCK-dots`a5qI*d2E>)HdzZ7aw;Up0~?!8*FiJHVDQHf56mr}98^|rF#&it!frDi zk%4$>&vn77UIh9%*;(9((l_2^eFjC73O2 zOG9W1Y<4?z!;ce~+V8sP3h6-hZ55xH4D+FoA}4tIH|#LgOzpw9jS`%|pcK*VhA!=D zchSP9x()l2%cP)S``d2iMRhr9!|vFkdY>!QNYrVc9$LTE-gQJ*trD|x8qr5`#I_KZ z!~GD-HUQS&VQGFPGqKpEPFW~*e@!o7=AijSb;9>Yo|1Q9TmVxt0?piPxvNH+VTm z7VCP!uM@uxplNiOeK4Eg;%BbY;6!3Oa5=Ia&5iUW_7xmE#ef$5BR_<`{a0K4d}l6w z#`XEnZKPifxd~$ZU)k_~XU2?Uvq%|u=ruMQCt!`u%mwEKjXfW}HEfaopQ_?pY&U{E zHX>#Zr5c$2+Qu>HUly>nyTeNG;ib}Z7>4D?d*AlPyhz2K#2l&q+PzzA-|0>d&W&_q z)GK_LtUYE^g{l@+b+}lG5kL#<)k^-eUMl%DPFm8y_=&})>`-RN1fB$N zwzK-@{F8SYWmaZ#Cy{IQ=@KGq%~HdBW{*cwC7QNqd+QW%#ei63_AP5&sdurf!YBF{;5*ZOFV`B>)#aZ(f)Dx0VV*_^sP zI=5%IS%2R6pSADdfCnV>KIG#y@lQJAxiR}^3+|+b4yr)o(-lL?z1q_^hw@$;6@pvh&Gg8flh~me~~V)*{qq?-{A0>}3TbbTt1ht`gsN(Op{G24@a{S&SL@<1(eLqNmpfni(Gc-oDVOwS?D z*gwA?rqO9rACk8-{aEwRqhAZcD`ss<5xRJ2tL-`cV7)}@N2x!39wZFi@Mklj-y{8@ zfz&HPlc0}Ob&-eUxvBZ*$71x`K==_CSkJ$jq2-+{d-3%L@~ zad|J-7tVa7a8Kp6K=OT8b2xqFPBn951}L=?*x1EL@Mm zhCaL;kXdkx+C|4-hBpfg|2eE5x0fW_Q7+fm2A86$_)s$LCQ_VB{<+QzyRKp}#in6q zqz+qQNT5}qX0f|-ZsE~rBUDP}kB)9C5ejmmh*3@w=D)K?Y=IL9Nl{!XZ!0;930c#m zsJz>G&cC2@2DcF1?S{XJZt<2oKes@?*McCeIL39~jmW;66^4k5(v%d)eNR==S}4EO zJtDY-T1&T-Z7e~!`wUiwuEi4l3an=!_?lg~`Pb)P0KjO2Kqn&n>!-va= zdTG9xxyp$0<3?_~B+ZuFo(rEwJvtuDsva7_gA8=7#&f2ZUJS-9OJf?r8;m6S&o@uP zmQmX(@u#MQ%=A8o0JzuDRf)Zo0^zEjw4_c(=yr}r#w_a`?4@IGJUxIDC&Gi?=I07W>GzE74r zeQwy(0Hfk4IdPKp?xFK#w<6;O;N{(WGiuu^#;ewQ;j~;$%6`%s01yxpp;iG;rh7e{ zB$E0MnBEcsIJrdDWuZWM)xn4k;F9{~i{j6*N{Ag?W3LtB+GnZb{O~nTHGG6p=!?(l zFCTHMFV|-(yp7j^Nw#NuE-PWP8?Wc_NoZT*jU%SCWUxmUELF2Ev;JX-#koC)9Kzsk zgbXeqsANTL&`_Re{KQ&w}$X8Oi4Kr z2t(~-^JkG!yE~dq9^Os71^3`BEC^7~$=9`9q1O#NJiBy?zR;QNmv;@MwxI-UQwdA7 z{KR1=n*S{hr3++y0yY2>Bem?j%|$+<+p2&042ojqb2bufP6FHY=EV=Di%jq^i6&-r z;J$&uRM92)ea+uh;w!4e!3S+#?smhhJ-UR4?^&{^=@I_!@oHtb(UvtrpStwZ*F4n>3jrlo@lt78&-^YZ6|4~YzHEA`(M#&8hxi@B^1)|U#eg!<8AxQ5WaIqxz8C!c)tiAJr|j_N zx5NFjiKv}Qd$a_F^M1p^M7Zk8vbV{6@F3_jXwFP^{W1;9Uzcv07*pt_0ine7p< z8*g8Sg``W~40jd4#U%YOQiroJn_dgKuj)_8k>A^XaMi8b zm365q4u6>k80|~D;$C*Y?i22g%J{UuK+ZrX1FgH_;$vCR&=F;KUj=k>(SQJI-+qFsv#PIu=?mN{0& zej<5K3f2*O*6i0BZzO6iaaiDVU(i&Pij`9j#TX;WgDSqz7cHEC0dY$D9x~gX2%Y~E zjvjCeXV)|_VoUOJ;(h-)_&DrxZo~_FhS&^^w$W|i269?m6rVi09U$XYo)WzxZqGNS z%wiaZI1DACoL>_20IQRK96Hhz?kJ%R8_iglgVt#pN;pESK!%5Noh|JNF*4 z)!}hyM%GN|LCtoZaQ}fG^HloqRZbgqLe!SgfxGVc_g8@vF&#y%g-(lSed%n@)aJ8+8S3=9MN#aC zWr(Y;9g1%S1h@YKkjNrt`{%n)@#Ky^mlkl*;q()Nyk5Vez0e(A54I>*b1E`6bb?>+ z*Zy{_5ES7(&*R4T@r(=qXP*XO_j9Tt6@A&h1;iLNCLH-NQ!drPj%^{a z3&|??Be-78T6Qdy#`;Dm>InwNg^YHBYzp+JudgI{2swHTlxyTv$9YhiZ6#9d(8g-)nQ(Kz1qpfL1&ai!H2qjVu{a?u4?Ot!OhfNz)7 z;tKVUQIXY)zIKS7)mi3-9!eqv!z=rYChGe%Mq+!*Fcz#xs@&XSC($PrK zQLqVZZdAoGZn#fguhT~ypk$SW4aS|~OD6B)P^70WPtj+0^Tt*t)i_rc;+JEGcA^OR zx8%nwWt>fjd!wgukhA)^0ZM_zL|;AXpsvi}&0D(imdlO7R1FgnAIum%bYkI_tE^bm z-U(w3Ei!9WLD70C`M%H*x^M{c!HEpF%P(1n0$ZY0>J>x?5o}p zf&3ZY0X0ySt>HQcx0OBWX3Z<&-GpGn5daOtQmYzJV+3*fvJf>8YFju_v|1Z*sJM#= zQ3BtkT4-QNfT=Lyn)&M)A# z?r^~7JO^%AQUx6#0f(uwa>I9?3RbJriFlx~#if<=fCBl=Q@a5iQ{ie0ZSE1f^CDg<%9P)I`I=4;9X+v$ z?J7*HfQt8a>ET&}_adu?_~C~>%Z58b&&~ClWg?cXktLOXvf zc~FFR_wd97z-&SH{NzdeRJ;{BOEK|E=jJ(Y2bt5ZO4@r#VylW~94D*Ncm}%k8c7=5 ziun~6<{qUiz_O;?lLCjI3z)py>PYq8&y~95_vPR&(w0&{wWTgO+B~sUtI`i}G!^pU$x$oC*3pKnb zGVlgEZ6~|$O-xF|Sn>G*gRM{Uv8jT;Po$vegNP~;=fyRwI*%;dNyZqE#_@M z0uySua>FqEgj7q}%Y470wWphDIq8H0d)kti!puIY)I@o;T=s*l^7#oTQv-*U_of!l zZ>4EmG?Nj31Ll8Vo|EzWl`a(0mbHdAZ593?_!n4a)xQ-zzPun9J^eAa_>5D=&o%86 z-{f9OT<$IjIgqkH{TC}Z9(YYFcw1~QQ%p$bv`N7Jhp(ZAWH=-P>6h^N)Hlid=PRY& zm_f866+0e$vLieYyp=p#9Pr5jN~&kX?KRxQnVkftEnmnjpqEUiy}gBRA>@53qg_$? zH^ovp#Prl)Fnsqz#Ee*wg(^+_@jV5Rj{+qKk18=Kh3;!wAnBDtP$kxv*I0$#yEY|Q z=zRMm%kJllDCN7n40A4&sbAf;=C-iCq?>~lZy!T1)NUPA)B?}1 zl%_gMuNm$D>lVj*+>XLdU7;RrV#xbxk_o%n$BhA&=#QBP6w<56`zwMH(<{W@`;lwl z=lpUpzvuU21Jb^{HDJLM(>Mie7e^dMe)pa$CB7vps)?tjKgphSEf4%NuGCMx(1@O| zi6v9Xh?8%4EKl#FZ+8Q(MFwt*^)aa=--o^2$GT_9F*8#K!o5W=kU46}L^XlNwDeV} zjr42-jAyTD@NWZ|1he<8>9N}pW@7ouy&R-ugw$8FvnjSEpEgHCveUdl2Y$ZYJn%|Y zuvEysb6!FPrccf#NQa*q>R%i>Ksy)ezC3DlkZQ0H;o*8!q-+)NNKQKd{b?JL?U$C! zI|Dze7Ik&-!x?XP2wD{cHV1jq3FRrCAzj(^AnUut`zeqi8s zOf%+fh3k_O`jf8l!NtS(_)rK5_kDfuNX~`>h{Lp3$YEhI;pV@-fW|gz$soMc{ zy;b^YfnT7gIpx(DVd$F!E|l|~1vz-rj$d0;1>C%{(0aalq5jh0qq3?^e#TVO%$kGxqGIH zmVv;hp!adLg{Ch)*5Jr8%PRb3Ii$1lnI78O$&Kkb_x)Jv?xP8*5%-TF%PE<|2uz^i z(E`b)FIvc591Og_dWDx`ps<9s*%7$BOI`WuSatvL(8*G43U92NCV9`oIoSY$wvPq9 z`I&$qb||Vz<`OT>dX>vsK%`E8h9@j_54j4b?IkXb^>p6AF~ZWTuY2z1{v2Pu6eki( z3iE`Eu3XjqY=!48kCag;aH))@Uw_Ulk;IC--O)@N{)m+t604`QKMw|(n8mf&YNhti zWQiTna_DJ6d*inOpc(M<4)eEPD=_ED8>6O6I|&3lg%-FeVe@jfZYqgF{5sQcmnuJ^ zW$;mE%>+1e_gtl*q2(84U*#Mcm%JFV_eL%sHZuo#PwKvTObl-qb0YT!Gi(^@A%3nw z!`+cG=H*fJqOL$*rluc5-b;-bf=wK}k^1o^b4eXh3Jr=Z(0ypY^lYF2kENVt&o^$5 za1Uj1D`Z~e*OTUPZJ9D#x~N_ zGVsYgDVKw6QCMy;qxYXn`Rz$Yxi%L{&cH(pOdTFv@@SE8GhSfu&>iz>tSSs4lg1}8 z0`Z^LSOcgW3pJ;Ml!=jb-kC21pT}^emF<>FHC9Mgzs&O7E^T5h*nh4jU>7;sAoDi8 z9?*+lz5Fgfl}K@l~mZp)i~`Xq79Zy#yxbUwf5l6KSGb*mTJVit_W8_ zQdR|kFh;s)6vcX9) zX3FckZxbm(B&w5%2$h9j4N<>sq^dOQtbei3*vicPhRrS2yQ&woO@CMqd~I%& z5=zsY>QIr{nR@7| zDNXx{8hA%=Rs?4EO+pqhe_RcKUzM0_-xG|&*+SU^&HQ7XjX+L4_E0mE+E47Nk84`Y zJ>BbK-`Ik80ZP#N&4E{^*}3tBQ2q0AMloiGSq{=I10q$QrAS^xPD|*um0v2+fPN3v zHW_++!KA?}yF6pFE;a3Jz0a=;757WW?08 zpD-svD$8yeKRbPTFB5D*Y7Qb4P)M}joN--J2OY3%U3jvVGI)YN?VWl4owSIZ%BAOF zAN0bhnX}Q?v5~0VfAErxfw?$@0bG zC0YtT!nUj5{5V%mhhgZ}A(3ytzTk|Sf|M2%WF>LJ=2U;DFn>Q&c*8kPsyy5UZO*v> zUD;R*k+=@hi%mcv5|XF3^S$*Nqxf_D7gJ7+j-G}To^8rHuis0)|Hau`K(*CvYr~X6 zDN-m9tVnQo*I>m9lnM^P3PlP<8Y~c;;#SxGEDNeYXm?=wN>8b)M-?pKVoqy)X^C z&GS7HbW;#guSq!3>NaHudZyjFct>yN)WAHo4(5}qzV~a~fT^lIW3skylEid}PZ}-- zW-bI}q+DL~XH8q@&{uci(kPpBTbJX6#gn(d5-Muw00RMfsS-^(P0^ z&{>sX;8(MAQh3bB#$H^-j40U{c(C4O=f-@?DQy#wQ>W0^m@wpAZaCB-%Ncbq2|Tzx z*Vx?%F&XGWENqvy^Nk{}B2_&?;f-5x+D$uP%?*W-r$&Ie0A+d*_%uR04}7cs45ZJ< zxs%MNba4NvII8-9gXM@zIsq=29AaY4uJO#)TZ-&{z+`4}W+Gp{**}V5h@zSA8~Hh0 zeDFmN<8{1{LI21J8tR+lLRpw!(%(IxERaP79R^~VIG@$Lo5%rd= zox06!e*QHf5X8`78>lrsRFB~V&(4gp9kBPJKsJe8gP3hNWtAQoW(5uz47uo$H)WN+ zM7?_;O8AlHqDRT4DXzfMx~Kk^M2{Fsrbz>!k5&44B@zbx47VETqGjm>9crwQc!z+a zmOC3WlnH3+i4cIBq(jYDEvm>2pkS&>2`?|BHzv2p$POvX-n&(gy06j|U$8zJiXz*s zdpIq_V$-3ixI16n7MyVO%Zt3b6R=ZeN{4%rn2qeO=@@KyG?nkZLb0FP;F45@Povq! zMPOqvndu=eH3U}RNXm!edWMcZ0lj)5yw)>)(zvdOW>3qO$E2x?L&T z_fhST)4d0dSt<7FK){fgVsr;Cj6Uba5FNEBIk~plke5VqbsW00+1|Q**_SbkrvQ_u zuU+!XU!Qo?ERZ2iV4Pk9O@$^%J&@gYuoQr**d`^T@a3O?e_UCSO1F{vOQ`f9+u!7q z&zRg+W^~qJ76#6}c!HfZByDuE;;(fA1nO0e>LkHOBsbgbpL9ppp8yl`FR_YNQ&n7s zP4D#pjWik+txT6n!`$i#~dDU4_# zTs|ex%d-Me41Jo%jSG{%96?1mW!$NH42tQE9Y7%@d_UuQ^e19(k?)M^#}jUWBf+^b z`JGhOzgv&EN=*n-5e+Ny$7g#M(1yun{oxaR*XUlVUh}m>Z!Q$x3w^;<_yhNZ!rLbw zDVET8Q(MRoKhQ@s@AXjU$6JFQXIae5b&{6gXHyi$K)^KMr(#2(cX^KRJ#I1rCdomm zs6v40#7xSo@jcVIeDg)OCRL8+*TypkC@d&`cum<=1|XzHh}TDw+2eM!GmcQ#7`ho7 z#V{z&D4z`#Bf7-1=Z+itg#-SYqN zZ=;*JD+Mnn3N@Zk;iIX^){O+Go%<@XquvoBn=U`gxQ`RV$TLm#ZpN2enFRp2x>v;k z8Es?!_2>4MR3mfyTLfsgEZNxu37(MLn~;^}hLc+>-4k%To*nDSDR4ZvT{mKP*8paW(#>I+V@h0*XpM&Rq9JgoSS%gk05w_l<`AC)Z%8)Nqf{r zF*c}&8+x)73=0^3?$YC2W|VU8Gg(u!&}ra>T_mWxqU7VQzTzp{n`>c8cYlE0XKUQZ zL8P)(4)m9--9%V6*GQ~*gS0M$!mU%=c!L*7V3B_B_w299iUe@mH>%TK+B>~=n=Q_|FM%-S!R)klrKu zFCRByu$kNA6wM&u=VafnPhTzjvAl2of}oYpHu%xD<^gx~*YE*5SJ|kTZGpW?)dfQF%OmdM zjVr9&Dn-#W+_KoY{bMNo+%C{4irt30+5I@a87$*)HWY``C#MIsTa`M>xd{UD9asdi zv^k}@Tp4a0w?7$CzcIaqQ;$};MdSO|jM2z50rQ#PeQ2(X;5F{)?G-p>zLzhJ3h&0X zCCKdWl--kEcVS8qK8$8+lkh~-*GGr)tmso`SFGHQF^$R{Yci-cMwwbzuNt-V7q7#; z`k*3xQ#a?GOoe^JJ;(P1rXy61N)|7q4S8|finWFaukRP*wLcQgUg!f#*A&|#YzyNC zY(s5M7bclt5W;)GW)0J@k?V74AF?M-VsWd+JAnrDG4#qw$8SakS;TB5&XlcN&bid% zNI=vY4yvNxiu0=5U7^F>3tiI1xx2p%JrPdn3cp?21NdZ^u4yeg{va1t9fL{ZQQrUB z8X56xcgJ;KRithOXk?IIOPX5P`bx9_v4$`S@mqY*?~_@;Xcx z%Xxi}QN}alyb_uPo~r9@ih!f4y`6~dy*mn4-c~ymRtj9D%2ogX)dt-`gh;Yt(Y74; zWmt`Ej^2xYNSK=bysKgCaAf$(xQPF!*Vi3Jv|r`JhqY{1A0Bu5I&Ob)HS3SIM!?>^ zqW&3|;`h@PTzhvFV^V~Haj^6vV`O37-_D6>Q+WmN+eGf=h4+W4#A&W+<&T)O&AV@e zrckA>aoJ7sou>Ko&O}2hcq?%So#RK>NWogf1n7cDW?w;Zd-w-JV(wQ6-5%${9CNHE3`k7G23fswWgA5)*;5d!7gyG# zNAe$lRk2=e@L^F-1KAKR&t};t(@VXTmbRP6PWawv<-GS zjN-)3POe{_OSD0=n z`3qX@U&yuhYJq*MSc~95K5xxe4lgQ< zmF8|e*1X{E-vnWhoJ`nX1~;)ZM5L$r%O`6MRG;{(ihAa307un)?7i_+dxgQtcmow0X zlIz1wr4sXT@uwF)b9@yy+wlzlmxzGqJ61m8pASqsY(pPo ze+UX#Qb|a%2`EJPz60>Ke0k__y$QV5Sjx7M=DBL4y~tpm)E9KW5Sbbs_?;-YkImTe z!VQRay`80QxC!n9JYCnlWliJVX8S?nhjVHBIfPV$sCUp|lZ=~nPdzrdRvH`!TgSH6^dE16TIUp|Q-f8TDjl6bvK(PfsD5;X?JukjpQra|GB7jA` zQw&Y^bF9Axn&H@xbEB?9Ai{wJe<;fO%CuvQ(rY&i$Y|-8@xmd|axefSlFwV2g8_b& zAH~~x-xk~@=0;&TqVnzH!?zE6hG=_I6P-)TV^w>pNHhZ8d@Nw>UiO;171JFDTWuo~X5hdmAJrD|kR0C3 za;~JDYCyD}CSWl!z0Y2OX{6hv1py+y+Nm%{u;V|?)uLPwAbU=7Gsh;y^``pY&S zX)NzIo*}6SR>+%b!pIP=>VOw-Hjs;ZVSEo%IxTf7BeMl^8+X6mW|vZ;?z`^hH*F|1 z03^%TrmR1-DQaOd9Mrs&11zJs%d=%^Io&mhDmcvzvCPp%O3s>D)ABNtn#UY{r6cBK zVytcIbcroLbdyw=16}K|LXH5Ri+NZdPZpAWMzyfw2;=(!G&G;Hu=HIN8e@vE<)wgs- z<(~(9ocr;=_0v4Nm;a1Ab;-1tp+xK+gd;C_uAx4BpReHAQFl=UDQL#Cr#h zgcqU`ZpO7wMP{F;T$!vPjyiV)-R0toq@F>{e<_Y>jLhU4yIgv@?i5{AKr5)E0m zD{9U59s#Sd!-CxV#oWJ?9<_AnF}^!)yR~OyKGLTVNYopkjy)zU?;t7`nxw#;$6B{jyCOjr~w(*27T9S(P zkc|6;-#}duoOQ`)`@v#AfeH>XYmE#)Z(TW4-Lyv7M1k~?BI^}QXXUznge(x@ zRX_IX$2)%MDgx)C0hWuy28@NtlfT0$a`MhUys*G!3`5g{bJB$ z?`M@yMZ8&7(J7povzVL{uqe1YG8Llk6J)QRN5uh7kAMqudH*LX0Knm+?> zrC@W2)su>j)viLXcDfz}QesF2;st89sc&y{#0j$@Srbx;CVQT}n+?!WcM6Z8Fw85N z3Wi(dWNP(Z>*be5;UjNSD7_Z6@pE10x09 z7tip=6SvvIs_@U0^Eu#(Q{Hw^mm{*vFm0_qAK3Bdg(P*|(Tq_WidhXj7cyMIYu44p za$P6W^`GXiqCep{S5{2`%!kPuIDw-7$m9<7$@SB(0ZCUIlhqM-xmcBFB~MGB7Y{ru#`dwD#}Il&UV!y#i* zPJjIFpq;St4{t%cJ$A_cz(x3zR*e*U4{|ddej3jvHD-FyF;U~yPP~-O4`yln1!QKY z$vJ11;`!#+o3ugX4_0}vXmdg5Sgn3#s%qy&&J3F<5(Mgq*N#t`+1qo6Gqx`8XK=m& zf?E0+J2PHCzKSYkLG{gN*UkC(=$|@*$ntPC3;s*uCwI0Br;9ZM0)*sT3qEp}zx-y^ zBNOUp0C4=H=ohqX?tl z3GpAd%T}Rqn|M&i4gQ>fFp}a3`ak5NhD51y8&7(iZYrBCL5C|>lqvDg`HXV2+dZ*& z({4_izgqgR3OGG&)Uaw}wQVDY+(mT&VK-x{Nw<7Eb-qWX=_0`RP;0!_ow&ZPSYa^C z3*GD85vUAl6kNswb-8VOaq2CTaUgdNuPv}1n{%u?k`x4Gf=0>IT<{IkTVoa4k)&<#Vjjy zp8ZG&(OO=7;{HL*Gezn?TFFK_*WXS#hfbzu$K+f&#JR8p<3irfmQQ^qZwf0|ZTuNS z_2GH^A0H2$9a0}=V>i!de-U^nPk&Z6c&sGl^rnrLI_6HtHjl&!^l1-ilOIl^WS15t z9{{)FucJ-j;MIP{eS2{2{ zeX{8C`2Mlq^Ky+yaU_)eA$1c;(JfsuD}n;}4en$JwBKa7!`v z^kH_jd5Ya6&M3u#2FY5PiV{clyC$J&$=TH7jYXCq0sWC4N=lo8Er9 z;de6;Isz82<(gXTf7MZEjO zhbMiqb>GRCR`66grq@VM(umrQqQk9=FV2+fm*bNrggxiIhD7w34hl!EuXO0NW| zW-WEnTqtj=gR>D=Gb^%DLKH(Pzz(TOoYJo8KwA$glf@PeM=`=y)Rl?h_|0z~d19%D zxq@yeqoGCUhwhrv75@{IllL?IkIj)dw%&2)F7db&qZc4-w(mQivYe>|g|m&u~S zr5{nGJ^A7n3W2<_Hh}a<6+bFR5lKF_WtN`>UdCmsQFhti@@Gg5^4poDA5wl>(OvBl zm8TFJ`$QRCklC-BhGn}!xE5t`GG4d=%+ALm%&8Yt&pggB)^O%@k2#yIvr&A<8vL&XOky_2%xpdFRqsE@1g0?*94Y3-2M)tP{CU~Pt()q zIVY8*QaT(cUtWrtp%dQUs=fSl&=CK~K$IwNX9Wb!)L@ssEwvY1thBVu(4rH2WRDu8 zargh=!>|t+Gv~z8Q6gxlFXe=x|N; z90`Le@A)Q*fllsjDooT%!n(ub!Bz>6&xP)ymU#t*B_rwNmV=0p0#{<6X3Cr#{P`t= zm(X3x^Y2WwWnU;t$^;B=fV8?VX=yLdI>rc*HA;LvH}~9R@0A`MQgc8A6IsRr zC&EX1#n2z|vhxgMp#b+T+KoET+WzdLy2qiO;{f0EX{#4G?_Qu7=rEgnpwpgdyReaf z$!u%ln!7B*3R?2RVD?iysTb@q^pJ;O%4Pga^i|~+U-e^UF9Vf`)4WjYg;di(yn*L! z0Iw&&lNjpenoi2vkB@0BMpi`XIegP&di8rexJ zNqQAs+CZ`rpH4#=n3gYZ0k^bWT?mNAGXTP+R*e_g$3ZhqjVBopO$II;?4d6wMnp18 zxdrk+qXZG8ML}yW^*j|(Cg~T&(QTC&($pDuK}L{GR7d>csSk_OX`NO0qihSS|w#$k%?^5kZ1HlXv6l`8>NvvLg31NVAWC4qWHk2ic;HAYc!SHFStY~ zVn*_c)<1(4wewCd`u*ywC|8uHQ8cG%W%||(YUyUmFwg2JUf#IFwAbfX`}VcWqHNNJ z_oJG^{n>PDtP^gJeEfXy%&k6l}ge$x%|3MV>8cnmb(BYHsP4l7Q_H#i44E z4Gj&3yXnewtkWu6FkB_DpXMaqIql=|(J_=G*ir~Bexe+mp{)u#0_Wp3$D#{>qVD}N zCfjM?^B*g;hgjq%z$7l42#C*RX7@@o5Nt~BezbYT;T+%@&9$6x)u~!ZE!iqC<@FK( zIj(s(L~%aoVnzB`R!P6}@#(`Wuwbg^yJ_O68L~D-Wg(h+;#>mnn#ufmBQwDIW_hx&9L8PqP@?_-zNu_P_g(4s`-(@+a*w|UdAr~sE?kg zjCMa#w--!MS#ts1Bsd)&*>k-NSL@+gp%L~E%|$?{g#svc)+KbO7)O*=yC0gRn)gG z5_#xXgDt@&jQ07Yqf1*N(%AX;>B-@}klg*{AWJq2b-z>&xe$w>0N2X(OpKOr4Lf7m znA&O}_Ol3vZ^>42fwqC91EWD51bDdQIGUx8xGR~kn2cUnMh75%N#Gs;fHRhTn*9)w zrt>rjJsW||%mwp}AOqe>0($}dE$SWNKk<`ZCM#R+f3gL#HpQ(^`D7Y+4Y%wF$` zStEE3RfRj85^AO2;t)7TZy=Nz?q7}WEax1i(XAx6Zx}_Xk|qUoAQQfGN2oKtsD5dm z7>#>e%fUkWmaLzRRMLo%V74Wg-UKIl52ZJkoeIkFjG}ll6r5uo~XPDfE!<>T`J^@+f*cpbVL zv_Y~#LfCQy6Rh+EU*;&3@@9$U5-Fl(+MX(;(y{fkX{ah`)^K5yU-D?@sRtMbxa6y! z8?uv?lzH*|c$Di1;iRQ}FpwoluJ}&0=2Zn&VsZf+f^(+IIzEU@k$KpmIr0&JboPP% zak&++Lqx{^ahO(1;tV78AB+jpkK_pwHDt;5RAGuffv<2?yoy8z`htEYK4%@(^oeiJ zUnLyKgk;s#gfdpSv)Ze?5XB3l;MUUo^5?rgg461gEcmyNgF5da6J+0$pnUCo?|HVl zNtc>^ba_sVt0)&W$@kb~P+8ql!q+(09?BX;tV%P8A@dXgHe)(Y-}9@02O&Xp;ua&M(bU0W&s zE7$t$kJU-FaCxBOai%+Vi$WO=y9OJw!ds8*;}QN+Z(*X#sg_bmhX1UM$HUnCUrJqX?q`n{u>D%{yn<7U>BU(al!bX?P+LCUPD3eO! zub@1@K$eD6zy{DfpJqLmbe28JqNnUv2omn`}RQRL&*=b6x z)!X0lJ+be;H7<=zkr}eWwVIM^F~s`##`3MsQ4?jiMqc{WK_N*K{$w(jnkn&Fue{)N zEbFXRTAW`C_au2ErVl!Mhv{n9nhY;-#jOB>T2w zsx-d%9J(You|Do96v6si%Zq2fR|NPIN&vJ^MCinN%e!xLM${qcUvMOJ`F7fT(=bkQ zQuJr2y#4`yteTK-1!x@p<6>Afb^M-8ZB;~a^EB9bNch<(*JZ*fvr$it*kv%$s|6m* zHw9d?&N^eO9;~2KXV}d7Lg`IEk2gMjPT*;AueF(3_{n`Wwb&{qH#PwIj2Q$S9l*YB&-k}3hOZ?m~b&$LC^F9Cbd z+luxjV)YI8j^Xl-Ljv=m%&o$BosL59M`~z~{Yer35Vf5uOx%iYbv8);XN_D`EcbBQ zGhM^9QW1$End-`wH;p<?1;TZTxm1OT?RsOMKq`_&F?)J&Ram9L&|AZ| z9W=C^os_ulT%2D_tkoCL=A1Rp^b9Hy zkj=BIl~F_yb9#lF5b9hm>Thjautqfz7T69q3%8#Um{y~sk660~JY^>^VXqGCh^`zB zB*fu8udBIL0X9g5lk#J{EEj1m5$8I#wU@v-@ooRqpW9y32d$_0Qr=`?ViE)3LsmYhAr%fE;7Px!a-qR` zYsPh|Q{Vb_krz3AUkVQR1-0z9r&nZ~{ud@GnyF6r981#~zQncRC(ZGGA{(XI zcH4Y}7TYpy;sOhVMXWBZ7cK{AsQ=+H5dJ(>LMTZIZ^t zHp-JK!EBKA=!4%w;teel-~SHQ{#e8R2l{D63T`6-0BvGn8Be*wu$5 zY!d^blGkQzyY5eQsubz0?~T;k%gZ9eQIF*Y50z32AIPdoBospl4`OT~CCN_2aW+E~ z19PV-N1hBOrdDz$v3#YCm9k00dV;B;Pm6N=-q(}oL|-Vq77hbqQTAG2?<6r4vS<|s z12PlWnhEI=x98mD%1{dSsY=i5 z=$Ep=urw-?GsVQ|&PcTy5&OhQ+5q(|N2Ln^+d6idr)sO*Em-W1rlKu~$Xqei=qVER27Ax}I+ z;kFL+HKow#C@CUW&P~v^$;EL#98j~SvPL6Jf`}a(>@t^P1TAl;$!!6Q(~eqcUwcLySC0(Fff2he(R_ypXp53Z{*?xHxQ ztWux13H!^9Rw>{~SrW&mdgV2w2pIs_#*--RUy3R$wY$B4e3BgIGVI=#Zf6a(jl6PL z{Wj|F9NSVuzYr;K6}iHNo08$lcUia)1^l+nhRDws+5}d0C0>XfUaA0c958f0y%Il1 zjRmQ$u++Mg2}EXDD2=#4AQ|V$DjQJKu_I=|7DrNtNwbx&9N1yFP5}iaMVBobTpdHb zb9m}SQdAnYMtWd2A~ZHsuc91QF#HOJk0Td4rU}CYlKsbA4n6%ZWl|&1`R_XNw~5`W zj-Ye!DEhA0@Mb^b7q%yNDL>nuhN@SJWFx=;Q1aF8RnMqu%EnRD@(k}gHT|gGar)uj zV&BnZUAsNS!y`*B{bZ~-1O;>c7QHLOV*cGu)RtXzTgw##SHEouzO~*G_w%^y z9%9^wc*{+XK}F9=hPZPX}5NX%BsSy0NvJLuxIi zzsKA*^|y(|iQ7-#kcC)jiYKKz4#H6AGC=QBYr%gMPzI~_Kz?v#m^tML-0jEOLb08k zt>C(Mx1va{=iu2+>otx)tB;8{$!)#&Mk?_hx+f&Rw>x_5p6V1N(*JC@Mbz_Z%0fmw zR)uaG4_EwKN9+b6I)FU-iBvGvm^P5&1BGw@r^o?iCWZd~?ipTo(}>Z|y|juJ6=1dntUi)jccf%2*|DZQ(S)GW|I?<8Y5D zih)~DSpc>^YfF@}6zDzENGV!PoqrL4xG=v4d+XH5U`N{0bd%(*#stY9lN{wXvXq); zxW4`}{D?JfM(b9@!^XQoj#376<8oDR;p!Ga7x<93J|F9}_MwZq%p(X$VEc_ARi>G1 z;Su@CjMFk(4R2xi)h9xv@I`bneMBE&>jUd}J18sa&p-6WNP<@hj~ndeeMqdiK&~ph z9wnEE?oj=7&SR1LPP6H46+()Jn<%JgIh5@@FGwEl22F@A&RjWo)py$P3R8>){ z#xE%E(e8&OCkMl~^xr6k-uC`H+_P`Q?Y*2^p6+k@mUWm^`pRagNDu1Y?oe#&ln;x9 z4NwY?Q~TDl7cnkbC>m7B-YvWq7>H}@di53oTmB|qqW%{85jfzMbY7A{L=!~0?00NizWA3V@|Xlr6D(}Q7yD$3(50-T`4pVnO@1C=+`0C=%381=qK`d3bEc2U7i<1)~L{C z$PxxmEJ8n1(uJ`sOwRylqYuWxxUEo^1DBki_*L)O7v22E-k4_I;SZ)IL2EW7%*9nV zfJT3G1fVFcyNm_tq?*iljg=7Nha1Gcp(HuOIT!JZX!5FR4VmO6VGSua!;ob zXfbVZBi`6%WQKhwezWV6!lB7%#b3iNhs6q)gxE%Q?k&wV4^S(I|9#*^jjMeRgTK0& zcxzymZ0>)x>G8Lu*eL!c&a%d}$eo`&6&Ri_iQn8&C%ocXK3B=9)#S|@lsb?ONC#V> ztcD1rq0(nJLC?c}Q+t4tK%i^{!$?OJyYjnVBXsx%pXhOprtO;S)+yz}>*v!%fD}g@ zPTaSe0dL#?bbvz=pLQpg@>&*%UO1p*D1mc5R{#wMY|-K6pLJ!q*!DqT`ni-uwVJ|F z#!uBM3q=(#s93&p;_HCf`ZSlgHDZGvv31m$PF~N>jZUqjopTBw>)5gWb|ia`vxaMb z%HTNf*c)`&ccw zIRf=uCgU-uR`h;}*u#+h5x&v*uLhSUf>Va4s*{k5V_LL@J+np8CDC#ttl2ShREQXv7edp+{cXE&^5oHVvv)wz z_2gIg;fjH%ZemH_`-A}%XEw_4`nLm))j#d*3eMP`OII}}yyh>Fz zD-YXkxNwqy0S+{O?v{v=o6cqL(jfKRG2G2QyUM;338=hCq z^0}dQnHPMxN@dejQgJ}ljKK~buU|4^-YT8ij@6%b_JDy-AVM4SBh!Ei&=x+uMdBI!fdjNoXrN2ZwpGVzdl$zsHwQAV{l=|f`d=| zGOnu{>@;lOYeO-*8&|`AQA>q9Y#VD^?75OuqgtKzcV@X1_&n_Ivy0165I zIAk2X_<4&diM;~9q>U=Mda>k$P(TVe9sblbH4kC^R#fviHhts#_OAS|< zhudKs>`~8aF-a<;$!`dPZLgjR<5y5DIW9f?FxF}YHr`S{X+mBw7iJ>F5W5eJZRD2d zVT1S|FUuF1rH38o{iX%*v%IESLTSX@nz#4e=$q_@D5#6ama8Cs&h!YkxML0RPH$8h z=A~BFBoK$_*GTz$5MFHjXIz$h2@8H}-HV2aZ+ysV6Lr>BlE1qIeG@74G&zjFS1@id z{5tXlm+b6b?#a<>4w-yJTFL9>1#p+dJ|=|<+>5vwLf_?L(rFALZjiikWpzEK9m^i? zc#v*!N=axrv3K$T&mpxc67J=Qv_WXUuplaWcaQqd*gh?=s@h0XkwuCdFip$Nq2$2T z`9PO;=+}qoxKfc-ZH=!F?ce_ynQ9tmw<;YGJ3^C`7WHJwWCFGWTn|kChhwr7$ zEHm_LXYuEm^>s}$(D-aXLC|1lzOTbH$F8l4#dwRIlf-@p;j=} zoBH-SEPZk#_gur8KjI)`!?`R1&P()bBNM80JKb$M(svKFiX=sorwxk4yyf7X{rMUl zW@ju!)q?L>>)Ur+UY5K6vCREcLoaGENXDuh#nNu^u*bB_Z~N3U_nOD6G}(d<-|Hu0D+?M_Zo)0ftk7MkQ-+pXQdWPfLD5aI3ewe|t*u2qs@?0~1PZ zTg#4yTge*dE?>6VY()2NMAwlX_oTE zSe)1JiKV#89|VkAlcNVJXR67CUR~5ibmgDQlM*81G#|La!Mnwh>h4En%qEr)cgpf7 zj}wHvN_eNY&{pM2g;QIp2ntP3qM);^-Bto5*`)n1p>m!RnwTLI52y&`abSYUj$Y1s zO+}mNDBrT#B(Zy4l!RmhJ(Bz4+2ZJwzl1ks-0?dq`bDbI-@)#C)RIqqt8ZGZE}HYC zn!4&E-Fe*%Gj7%jAx*?NmF;Zu(A~5(1943-+NiPGXef$=ckDrhgdawxw5*9RxAtVX zeyyAR!=P`SKezBJ-VaMYTTUDypY1AQm#t({9mjj9uWY6=ORg5z->m>6AsEAO)%K?pR#=yNIE6!Waztc@zD={woKPGNOH~ zK?h~x=|_%rW?Dc^S@(Wc(%_gXXYn4BQ^St%Ve3}EX%3lEJ6e$(vjf7Cq~J2>{CsO9 zos%41*-22)hs$OYbMuh`xqBA6T=RC8P8QKT9*1(lqU4ddOP_DjC7^@-SA z3V9yG57R%rq-=%aUo9-jP8U#6CcLWMZIxKCu8QV4o$SQ5a-tNd+)nO!8XMcw&ilrp zgHq)uSPNgCHip6ZAr(-eLXx|%CU;V$3bNp2RNH7D?xKorlK?1w%Iz5El%iz&I@}Z4| zDjrv}tadsM14>j!bK4O8M>}Z}o&!9Z-2K%)CBNwRovkIXI)ELYtI5t4a{vA9=3j{N z|6S=4Q5?|YLcur)tX>K1@#UMc)B{H0WL*tr9tTNL-M;hM10kHv7p^eOdm3Fs^ogL*H)JxyY<{trSzF$-#K{T|3lH+L+?n71wf)P}*LjpJ{?~n#ZHnI%{;LDQ z_3>uEq4>3~oY>vAn!JPWuwm8kpK~VVX(QKtJ#u{<81{62Q!|TSG$%Uc`UY+Hb9NIL z((+_atE=;f-LC@L=hLT!gc3SQeLC1#(|1Nj@T~`DTK`o`|I2gj_e8iG#Isz}2Ztn! zr%o9lNJ!o5^Rr^PG<5x>ig&T2jI=zJ%)s1uQ>`VBcJ4u3kg-g_#jmg@v?*aEz@=&X zGq1n2*j^ls{cYvbSaIocU2`(_e|hb}k9 z;^}kuSLv*k*Xn_zUqGHJJj=Uwe=*`;9jLuH6MHMmT}S$6uVyk&F?b?BoFT&;Ll_(@ zAbO(o`fKqa?1x=wxBXTItK6qUE&C;kB3&&fQIiZeWW+?}TigB;zMSJp+P`OT_A-d- z_uc$@_+Q_Z|Lxg*P7IZg8HSDRKo`SmZ8rz2dp!~6%bS8Ux1ICo0EZQ?Uo=VA>DLb- zRw_mJ|D60r$lu5~EV&-Nvl2|A!&A}XmhrLk0QcH1`_q)im?GXcZHdL&#r5AVf9*&v z8NnBNbH|R|Vw-jciT_&Q=aEt%W|HBTJNxtXU6akyOwZZfg}i!2D+=;Vc-G54maRyK zuoPsS;gFJV|Hmx5&fh@s#u#k$grW5`^Rz!{ZO)tjX8!u?T=qYe$9QlL+SUgC&iC6) zkI?@cRpJD+O7dO|!|#X2qLHupcdIC*d0G4iD$w3a&EK*J8*Vl zB$oPNadPJ~_S<9m_T8UJcQAP|+JtD6|}RZ znkMQCJ&nR~SXINtdq?Mbz?(ezQsT2b)FO z6^Kj7^{qf^NoaZNt15=lzpN|&I^X@jlrLd>i+Iqtn|FOjE)XTk^u1OI?4Uf}9$aS{ zV-(o+Pop}Al6qscI!V2fZ?R1ms&8I~F>-1_W@tOvA69#!x8UMT1KG2??&cLT5Z*onQo0XvN%7kYA{_m#>dFBL9QN{wf;_NY4*pC?l{`nzEMJ?f+WjmVl z!SU(Sr+IsO7|8MP&+x@j2YW)>CTIv zKEU}$?U)Y!52f$ift{U7MvDC0{Q_gtx@CIi&TagSt+`0FU9c^pQfGF@n_pMVWBVm8 zF7D3V#j-&ZCEu6SR1Pp0oa*=e`F}JJ*u+SA-KUHc3SvSAkdhiSc&$N;W8JJ#H`w?L@S9M!CcOIedG5@mp z9PlrT{LdvZHbM6}ZnKYS^55tN$9N=oUlvbh&Qcy73NottPTfLaUkc$Np`o+YEzZkr zW}~tv(M2!P*S^!d`-k0M;^9VOn;TUZ5QC&%;QyQHP|w>-oi4-WZ#yVa#`SmA?*@NT zQULKD-EeUZfe|AMW%=aIoTA(>74y*!b1fRKw2=S7?tk;0fBqzJ?&-FVEn&KE77|ux zVmYoD`JS{i?cDOG<{*YC>B|=Yy`0aR;73m;(04ayy|gad7@{!G*>KH&RPfyd+gxR` z%J~aF@7xyYzpDLPDer(VO~A&barIFg$DFsi$dk5~Bv1?NM~*qH&KMGdY7}@v`q!@f z`@jFv$G?9Om;sP%Sr1`gI0_BZ{#{Te51in0i5;hH;Ga17)hC;ws-O^1U0p5fpvCgf zzL^CU5LGPI$vhc}{ikdH$Blfc_n_u_Wj#**K<{Gpb<=D$96~##T4%n38y{zf9UZ)fAW10dkKUHZSCg!JRK?E z`Qrwqj~NUmM_+tnoxW+I-HeZ12k4U)>kKN)oA&GHH7RT2{$a&WhV2c+qcK02{&U9o zyIH@GdR;7fo?$>xGs3k?u=_h7Odw6n^S~6N0{i35AZV+0yv!v|52Bjmf9KPn!!Y;~ zaWeM@BSJw1jGg+s{lUKt-+!?Dt5D9MGPjW7?_ltIuN=KrWuVISX%BD-m9F7n*_A9Kimn#32o#&&q3 zH-`4C0dY4h4tHJe-ND2LYck)@x9L6eGt=GN1Z;Q8pHCk7aYfow*-pn||K~{hXC?o= zOXq>`)5fR-1O(_8{a(o!(EYNDD;?|Z8yUkmaV;C(M+hGX1QH&2bbNC1X;^Gp(ot3F zA2#_jG2jgC9QBE<%aKp+K^En|wS{`aC?R3s@9*z0SNj9wBnAt^dX*(Vc>4w3^gXEh zEy&nAb$)4%Z5}l~qxf%r_J4EpKp!3y!jM{Qm)iM;#_b)))%DFb>fFZU>HneZyW^>D z|NkQrLS>Y#yP^nXZ<;E5?@{(R_91(e+$bu^-kFDUtaFTGm5@D;gJa8f?Bm#eZ+E#r z^clbJ{ZEg|an5zF>ouRx=k+Yjejb!Uj$%3e8IEY!~p zo0wR1_2e0rUfi5X3#VaWfo5ghc*`L86o}?d0~PJjLaQq{&GCJ8_nj9y($#y7XlGNK zOz*7!zK{R@CFas<_DhNMK50c@H8d4VcLxchqTYY{l+n|pz6S&>kJ*t3aaGcIPmh;&B{PYg9k>q;E{ic={byd|5Ed@o~w}c))yK{HW*^V*r0r5>?@ev)h zrhgK&Ja{`0O2y?=_Eyd70~Km&c{@HyJO>yy4O!r6B`SUN@L?opdt+k(@fWCJr7pK_@ePfJBmeA4JVkG4 z)1JtG@_c!SpFe+2!@w|Ctk6xTus$AkP^5X|oSKhfRqsK*(v|oA<#Q`3)$j1>+J08bW0>eM3z9gDCV`9 z4?K}HV%+H{114_}SA=9JTY?_$Nc?jDqwVaWIIIugw*9K4q@Tn zVB^4Mw-g2!^y-ymU;eYFii*8Wkz8=g&OZQe$oVqh@a(5O_K*BISoB`LhF5Q~Xx9Yr`;O(tM`{UBZ1zoxzlmEK~Ske&sU-99S z=0-l`yoCr>4Y#nym3a0z8t3ZbLwY)gI6_Ywc6W6N0AbwS({p|*&R(-SLji8l&Z3YY z23OH`eE)0FW(0f{y^|I}WyiCEOd9oVqvWdXIS3C-yh7(4P-$TX7PNgHRJPmY-E5Cf z@0Gl2u#tA;nExvv9fds0bA;lWOr86s4-%a3^Mdxa-WkTOzP$IxX|RJ_VQn+j*|Qx$ z?C;6Z;0nUg9EE%w8I9Qs9CWz*w%Exm!cFU*5;Aj>A z)4{T_ASoVw-Irb_AEGD7aMCzWoX(MD{dx&-STlT|%N{9VQzDJ9svb^=*jL0^=$T$J zvbB;6L}$)4q0uGLSH;Ek)}~s!KU|j!X+Db2{;`+XM&VPfqE}C>c2v2>)OBwy>0lwh zjb=lk)qc|S$Lv!DVw6hhUgKH{ z+YQRz_^-Nq%d2P1;#+QZ&-IK|@8fv)R>FNHG-_CW9j7|dFA5$L0W@FOp7@j5%z^v1 zMH|ywX7OI|RS2TFV`_C{rR)A0j~nLGng3;NzZu^tLe<^+2a*ok9CH$-F#%Tzi@}Xo z%q)J0rU$=$i^|b}^kgV7W`d5AtbY#e4Klz%2Ap(&sYn z^FPJ6mTMPaYd=QJ?lx;iomL6{w-5jCD;41L*OdH2U~#cqU@Bv{e8K;2`CM?yD$b2b zaRQ6YD{7Yl#$ezyud0nZ{mipjjD)5y@)+As7acze|3^2B0X^^b9M>V@G1pg+Cbhq5 z5=2%~CHSZoIyaa9kFww?0z6>@KK(n8Xn1p8pVD63MSEDs^WBk^r6~^O6Uf#n0}-v#8J4hoVu86Ur+MV?J_9QGy21KAXke z_>=vkWig?++oHO@etcI~R|v%)fBYfv+$ntAg!UHCP|5XclzovcH>uokXzl9Kvo$xA0Hzqa_g>F6mT^+Q}t_5na4^k%_iBmqlcy z^NI)mELHjXzQ2dpERnk>2KL8HK7ZgpIz1j@UDwc#Iy|Maw(Yy}b5?fb9(&zu=Z59t4~bi2l}+zqz6V*Sn7&KL@dRJf>!scj()QmtODs zK7#M4!jX!VUe_@sLW;Sh{uB7+22AGJvy|ad(EE!U>2o_#y*9r3sa+98g3B4ofq_B& zuleZ>ckoLvU>v!eT88}1rJI&V9Uv_Yu)+Wbmy>-fC+BVNZ5PS?&55T93Sg0McwSJ) zE?Q_V)HnB|5peZCjgT3U_D@zQlk7!kXlOX+X{h%QLHQ{>spO17*Ig1Jj#(^{j_c-~ zM!S4b=c&KIoXI1!Mg~Rxf|kN6PgzB~xcy}Q^pnAne$LFa0ZPS?(9k0BC(6;)8F}%a zgJgYpMozH~ZH*BF07~#5dVziL^#5&azx_0Mm9QvLCr#;~YH(I2f?c5t0;|edUUoPZ zVMEBZ$yNKF8+da`5lNnm8bnQ3-$g{E0U8uVe}DghQpdDf=w6#WB;WjQ>~4>a<~y5w zG0HdKe^%L_@^2!w-MwSzybm{=_wBQ1%xYNvG*I|MIr}aN1;b}OyRtxIv??dlPxDun zBqXZP4ChKaStYv?_V@Rf12c;NKq3?9j*uQ|9ahTxSOaJMT6VCbw$f40chZUei-*Xd z&TejRWqBW5#%|-Xx;_+Q0}NVqHWr5ovzyQqBZdl?0Ivf1;jQVB6?p@F%0`)I?2~( zQtA8IU)wvX>gT5wC2@pn{7S+a9OqeCmmKneETQ=<3pDsEm2>C!2Ax@mptpG8nH;zicw0!ljt&FL$xw)95fOLA~=15M3OLUw~$K&Lc- zQaNf6A}_Jk+DuZ=6a1a$55t@T*ZGSVQ`@Bv^tm*1^WkrUgF8Fo^em@Cu3Dq6s!Bd8 zR6!)W%)kFMZ$(HNo{)+b>Z^=qKkR5`_d~iBF4h)>k!fnazBXD^`0m+oFjKJup%Ht`>eLcmyZ zbdu-u=@2c@hhLymE@1%%3R}V>UM4JmGfpAIr4i*Jcj+llyxonPK+J;W>6LKu@U&?z zV7=$s^Cxyx;Xhu2!~o2HU_GSE$lM_JfLl@B>FmZoit*OKO*y56Y&^d`s?|PzV%fH{ zvy+URT_3%e{?djJFq!yEgdE}KmhG`7b0Rl-$E+0Yy#$_6d#|jljB@_w5vA2c zy6YMRo~%z6J{c+esDVgPtSU%PPhZ!d5PN0@s>Gw*ej)E)$iazi{copqK8x9Z^v_cO zTEuyyN9lcDK%~p<%AN;dtkO{63HP<1CUL;Cax2AL7qoK{|IT~yK*Pf|Eo=X)eE#{~ zHR(0ccT9Q^AicV8-}>NdIJ{<1_d+w4LG>u6{NFYOOStb}6=KbtYM%*%le=<@xdWA{ zVxmNLx?B_;?aEOE)wm|}8qFDCdilg6l5=ZTCz}DJBK`B{YlncIIk>toPKV<5l4$&1`<2d9pc?&%SXSK*Ie&y)aN^ z$H3$&qV^We)P6be5m9M3(p=?}i z09&+f3!TSB?X%8q4)>^HMgFVt{-+;gx%>A~J`1s9Joz*RMNMZ5W zdyJJ9%X+5cTe{j^lS`~La)w-u74fV+o)CH3a%adC0U#blQucpqfi z$EIGMZ|*$gnwTz(I-EO-8z+Ose_Gh#|5+=JCLp6`GCtW4EUs~S_67tHzGam*1Vj$e z>`ICHh}a{$%=+x7rE+l3hU?#{)Kx;+FsAp7GYrhkc>rvUBxsP9&~6obJ>Qo|W8g6& zgY+Q#ts?#3|FqUL{xZ)9c5w^w*3{qaD-5y5(T@610SJ^x6 z-pF&XME6dz6NYl5q^2!F9JgFcC62{!rEv+aHEJ-tctY~8uII$d|J(kY&l2@Vc&ARz zFXhb}vP=TNMvLWSQ>38qowlE$Rp#n>pp?5H(Ww8&@p#x1Rs+CAkV}Ry?ox9oeuTm7 zSFZ8wubl!j_YS&x0cdb7Y-Q6?owD+fC1VgN;Q>80h5mVI&6_foA%roB;)|LE> z?8oGk&14i3Y&uN}bipcdhVSPDvUDoT`yyodi`UR;17c3xxy!N6d3 z+MnTtV^F=~H{4HRrz4rTW%}#p+b4WUdH2#z(+;t#kF~}M%-Bqg|884ZRD@GYE=mae zh_8`FqI(91g4N4k+r|PENAM!eK`Ai)uF940-*%Rk?$1B}>(!x z+S}6JA}M&Cr*`d^(Pvo@&Nk}AZvC(Z?M&uxG+e*Io4Ib`f7vGG-7r9616)9IwCgk6 z!dx`ZaeF*8FpB%eTNdIpm*-$n8N11Ac38+}=>yDoOCe(!c~dGJl6EAJEY zh_tOwQ64{w&cDB4^qr`(d?0a1 zM5k3e5NWNN1`ZwWPsK0lq%N#iSc}`Ua=q-&TZ)HtWYrhl=%}I~-Nw9Ak`&rg+EovH zMB+Y}`1&Y`ln{}Tk>NHHLU9wm!jYcOue>KH$6=jO_(8>iR&1uv(r>U;<~JJ8n7*?_}=!_#0N4Lovo$&W#!|cj0`mvPok+o^>(p z;im#o3=7s%mrK|TsVH~UJ$soTEg$DKM!tXgG8wy+2ybXcCD#Azn^tX4!)VD|1-0IP z`j{7$(Sl0BHiG9jh>Zs`B$k9-fDwd8Wm={hZ>NdskFL&JgV!en{^SGe^C`F!zuH*+26h#LFrOZvaQ zxjeQfM=N~b>q}Ky_O0ieyfAl8wa3Ud(IMrbD`=yHOIq-?cs!VtAuH=^MedVV5Yamx zERWDM@@+qe;kn%hqqAtvJ}UqD2mypFGv+{FBj$>2XsU#?PZ*z~xt2AP*h!8X*b={K z!d`B}?Qzy>>(PhI3t~gA7?8)o9$wIE(*bUSZi6NsDMGSJ{iY8-7_K;XP#-^;^Oi1z zfSyXV#BPY@@?}fp#=}s$o7~*32qSG}OTG68sh)~zQCC_^pJaFLxjKCLm+`-SV%&*| z!|gRQN>u$wR`w0YXv)@Zz76&m-;EJ-yq5O0Hs}!v=hr6VIjqSLscINEZ)VL#Nf$uj zHg`hyg(&QYzoj+C)$|E@rydtc=^Zj3mi0YboVRj!D=3#lQqcR$CX*!3iT=%ommeDg zrndfFNo%G-SQrBj4-Qso{=^M`vGN=v`P`M_s8#eQBj4047SvwYQiGW;L$Y)$vMYbY_sJg5dN~(vlMhzhp7orZ7Cned zUWf^}w`UszY&^PWMch|6_tjoDOA-{2(Uh;Id^u$MYNddDXN?vf*l_NY%$%+C^zBV8 zL5SGu6)ul{GWFga%BP^L`F&33m}+K8(5_#&==V|N*)0-%Ay2IP2kLbk9!pr5(Z$D2Is9?F6w!q zOOgsz`@_8y@}vOOL35ny@ZaWo=Otp$uD_87s#{vse~8?_Giha*4nljC$Tmxh!}-dP zUwBI^VT(Ic&ojS3&2~rxR=O$pAI*m^C1tX+5P9&t@Q&C3iGbH0_pdN~Eiihw1Ge(s ztq>ed-JlqADm(Mj7Z?(1gxjHx?yXl;{5>r9&B|9$Mc~#Vi`f-3YL_h|lClL8PAcut zm-#1YalmL~aO4sjYcJkz-DeHr5ObM%$Kt)N0vafOGLMG2^}Rll>|{j)Nsrb!?b3<5 zVpO#TpoM%LaawbiFF9S<*auVplKp^3nP<$XGOcFTo1)=kdu?)7Kh{( zni%!&hL3UQof`A2ckS2b{ka;P;plQ0^)`6QE(-0q<2juTN}3rL0&MLs!*kUP9p{r3 zr`?L5wPb2KVeg0QtEsFhMefW8Po^Ijm<*MJ)5S7AfBq;ob!6$B9Ds^ zxt)!ADi*!iS=L^i2V<9z_?CufW2h@8?}qb+IcOT_S7D=S2Z}actT>ts&iZIJ*T3l3 z=O;Y-@qAy|YSvUGLnhVYP95TW%~xSzu4lg1!E_6M_{kX1Y;KgnId8d06J0oJ zT_43{K|h5)Jlc-G_Rsq9C?JRL7_STCzjg@Lq&@`1$!|3s)a(>4gFqyCaHZ1!Rn;`;*f=bIGAg%*kypK+gs(j!QYU|QkrN!vyglD?=vHwyiqDLa|I3YcRiCl!NV#a z5LJ2Gy#<=t3^Jt(Fzhk$>rIVP--qIDo@QxrPu^#GZu(-+-i%C9n5|5 zk~n0}1#A}&=mkrh`Gh+Gzm=Jw>06&52>JqjRBQTHf3KBAQf!Xgdlf&~)b4!X(IrA# zW=&)*Yux?ybW_`RXOC5$`*9F6;prHoirlP?JHi`?`K3v0Iv0zC!Sqm91N1)#M6*2n zQ6q~g-R253bkx_3d>c}PNvK#pK6z8~`d8DW!7;jNP%>9=ZeX#Ii(y?z_WPZL7r!(xmD9=6I`$lQ-@Z*IQqC*~}$4ulUkh>b{Ypd1BQ8{!I9k z_tuD_mIm(tbwB3=lcl+()m>S)%$Xkr=b}J!HfDxl^QYkNzMmov+(x6DO@`01DL?VQ zic~CT{z6pcv)01ky^c<|!*l_*YOPp9^cgwuXum25Vy&0ZIO;V4Nkbv*KgPOIqC0{U zaN$Pv^JMe<^e0^PuTH$@O-)Ux*bSgTb>d%x&*X6{Ds6Yk@mh^kc`MFm|MDCERZ>7C zBgLzGvJPV*U7trQAziVm%F4=)p7!?khmqmO{n_&D$+&^tZUTdin&fehBNgCZPL;e* zdh5V8Xt>nuSvtq??0VnRaFt<#-u59_@wZzgL$LxBSqS;(nMS>x*e&Xb?mQKO_H9`khi|qe;uB3}Sns0oa&O!Z7xxVU6AUt!H-~AAOf|a8`1%3^faLYS_!?g1Gee))(nUU71egWtkz` z+rpwP(PBpIwT5OT1K*d+?ZPY|Z^NsgnS}RuIX#0ZcS>ey)4%s#p_~sPqoxvQ@k8(G zqv;K=>YcfCVHt4Fx5{k77_hR}lMkbR)_e$BxaudvO=kM}$IRw1O(wtPh_vprJDGG( zTn65eoiNzLjnAScROzjLwk{6K8`2;4T2pxV=+VH3EBd~BI9J>e1S(T^sDv+N{*4%q zBE0|l-212~t!yDy$$WXF7PA^4wAu~udWv%VtFb%!11D=-ySwLMwMxbL-HjDH;B3kj zb&2l$0z?zg7b3F5noK<7Nla)G+IOEgx4o?lp@d8p=rlM)O?Z3=?43LXhIh5X6pbx$ zMD%D4$|-;-Nhcm8u8Xo|?&c}}aRt!p0|&h$e63W%Gszii{|?;me{=!j?*M;3OM~Em z&FF0U^C+}=+ic(eTlsY_PjuY+vDK}5{As6vQ=Z&E27EW{o{<_qEzIme#NPiZqcI*zD zr!fgJDl2G=67+)>_h8SW!@U#Sn4c`6O%*0>mU`-jFvgorb;KDnvrV7&(S@ybvJa?p z%5!1RCe0xOi%0;K=-muDqlKOgZ2(^qVPauaA4J^261_UVJP@5|52f`lB%Ewq9w=la zfSK)yJW56og<+*;S9?Gn56f~h|6Ptc7bf$fi2W%5ACd3(X-$pD$AhL=?)=@lixG_E zFov8g@(GCE_yPLD#fmjWz^$7%CLX8H=TC|4lqZq}yCgJzS1~$KBmt5|O&_@2!G5(n zkZ6+n;cKJjuOS7yrSQ~`|OP<89U9y;R^5fpL}fh^qxW|d>O6#3)3?c6Lg`DR!4aTN*vG2KUU5P z|E)jbAySMNN#QXl7Xfuv`MwET5X*L3G8`|apgsOVWnm&f0(9Z+X0R?FC3V@iFw_h{-Og)6yzQl1u>=FPwj_R^)<*)gndrjTIZ)LfU zSB{722rSPAT&9ZJHA|)hDQV)1bb-eW-@6weWIw#{FDW5VodX=$)Fa*#K2Vb`qpcn7 zy3jXPtPl!S0D%Fm`oizub%&50GOy>h`?=@Ut#J149NAYa(cZy;E;AIv+7C{BQN0k> zXs8?K|I}g+8Yl0!IC${wrjJSL?rCqq!_a)Rr~@2|`Qq+VVn z%-O8~KdTAwLKDEMd;n-Aa5`9&O<9kyjqlONgz%`6s6X@~#^AZ+4QG2k)sS9FvH=9x zsNQ0cUlska<4~8W*^O&_CHp#SWDA5!l~WrU9%DuZs$?o9K@%lCHH}@$e*)-!e*8cP zOK4O+d8bPKUa}{CQPC4n16nS{PCV^P%4ue~{G*upsp3dc!@hoY|Ihp)z~a-`lyA2X|j!w?^ZBqCWf(v!YxKKIJORu+_jBht4L-{;wp#*2IybGfGw zhu+J@_0yL%$v0{|Hudw`W87cT0#{H@norN?M{aQdNS>~%O->)>n4&L7mQ1pk4~fe0 z5*|?U0e#o|TpX8L?$R|ttQ7f4+rz&nI{I=YP{Wmvhj0PZDJDl!H0@`@*zp)hgP_k! z5>Y4GAQaba@SHjYi-fj8xl2LbxR&;&-c(`+ckB(0t4grJe3|LNK8Od$mziVd$)^0w zUvLC_Q!5|Rc+Wb(;Hq9^TcMk+TgX0s+OM|kTQNCUdsv$+s-n7eGToJa;H#OpH`FC+ z423D#=3nrbvnX6rB<~qU*}smR%Bx7DymdG z(bu*6llVb&fEJ`H%f|D@jh+#m63&|=tWn8E7K;coQz4z0aO{%;;%kCdb1?R21Y`)p zkFnr$C1#Abzc}Q1K58;ega*H9)o}7RJ9Ee1yU0i%mY!tm7Gs5UpLQ@CVl= zKb5&mPXCDFc6y=D%KxZ0Xc`W!T-@6o6Y|~})Mf6ASKsvFUBj1ED!^@|e9TE7c)WTSwmZ$9+uDZ~Bc?YsB)1~F5EA$O3MP28m zCq$}LpB~GjSx7wkdoyLO#Blejk3vZ~OvGktZK)#2InLO>k>QMjs zEAJv>=T`z_zPUoIhYs?)+`WVm6We-x=#UNMAMnhxKU2( zQgfdcgmYbIYIZ-%{j}4lg8)|s2Ne<=efJ~(UbhPwe`IvP7|rmL4X|{CLL` z15+Q~rlJ@}bID5GH6u(`1rt6-F?>NHyJSf}*DPtV1G|)9LH>=WeQWNyo)Q$(f+6D6 z#P@b2q09Hn@vTKR>y7uDv5Dr?Gi3`A%pq_-W~CRVe;RnJ_-`3H^=FFX`fHm(ci%po zd>B3@nERs_xDRXK;3=Kpqtl>EZY@zN_++HI`0o7lA}`KE&nfXbzI7>U>yG<`Ft?Z` zIVB|^X)?4Z>CJy)kcY0`Sf$F{$C$K?pNAsK-;JSmrE-C5WptJBhXB412_Y8Y%WJQl zYPbb8MxaI(3igrr09E^(kER?&p^xlqrA5uF)f~7n@OPpQ)dFVFglzZl?S^QWfOj`d zTmnVWnf)R_UDUdx6yMv{uUBFDiu9u}`Stbc`~>X5TguG3o*H@mq=0r2s5is71ru6J z{&+G4E7f>qb~NjrYO*!&yi??--p|d(CIe`0%tA$fX>0t+$Y^*m7T(!=dgUo(ln;bY zWYbgrYJ>nLh6aXVWC19l(uE5f!j<7WYQEe%wwX|0_s;;Gxu`C?aU5VuRy=!6TL-#0 zx1T8MTn4Z(d5rZ)5!)TCvklPyZrtU3_}1QI&z2&ot8yk^MRMO}l}dMOk|zqiyP9YN z3O!S1tFFYgG>fYW)1~)I0HJk!c@w?8c`Z;Hnsx!#g|!JDvS;0}8}@?W7NDz4U9+1_LwM(GoXG{~u-USeBIYxXlK{@r0N?dkON|T4PoNDO zS~qcYP;?9o62A(ag&s1+L3#6bMH~&lJylkP&BS?Z4#(@cRHTygP}W5_#fp2L63ml* zd9A8j%602pEIJ{x*AScEI#ox4>pU%&hi>k=n@7nQb<_5lS#TA0$Qf1T+e-WmTgdm; z2ltIrPsTiER(-CcLYShUa4f76Qe8{@lvD6Ua2w;)61w}6uU_is^+luV>Iagt`>ro- zXJcbU`E(SF%En|t1wOnv*8F$z69-b-7VZb_f@;dVq#+# zj$)EuaTYRuL_`AT@4tOzxg6(hCT*kgg*Ryvg?Mb*uao3H6$8+$>~~>i&qRJ&Tyi{N zZ#8b;Z7SGBjHhnwlV58S{F0ThlSQZc#GVP0*B@yfE! zALE{iMP`~-XVJ}qzlxwkq@|;S2p}Hj=6oqpvc3jW>s^Ea-r(jq6M>lzVTu@li0!gU z$o|vnGreIrR-qHd?}jY4!U*SlIfINP=XGHA9qr2CVTmw)s zWAGG77;Xg&yHRA`KVA95F@W})wrg{9BO2nn+4+e8VVjWIz`lmPdbPR()%|*QS1*BN z)?F+S;yMMNEt1vh8M~mlA1j+ST2ouMM4Qw}}5EcvVv9W4p*C()u{;q>Lnl4VTJT7!GN8w}H6U++uZZ zp*mfG(LM9P13G$u2ZD@c#q#}%Wj8YY+(a?mCy;pn13&Fw8$^ZCWfpaM0FXa(9Vsu# z$bIK$%=WIku2i0OS#0(Gfvrt4V{zyrI+km7FI)z0`nxP?P4r~Asb{b4Y`Q}L&U^iP zDwhFZONxtx8uG>SBGUbNYPR-xnX?vTBHKc@%DKdva|#ly@fq%4?<9j(r&^5-{8r zm{(+QZ~lp^$E=KV#Fvf0CnH*%eejt}Urj&xEF~rhdVjS|=dhrq)tWWw`XaCg`kooP zmb%k^CQ`D%JzH;MR`HPijm1CJHw!A72cBm*k7or$z(^^SfwAGpf#>`^J!NYR66B}& zoqY;`H?4rdYjj7GIZL+J#XiPOZi9Eew{<05QKc@jP0};h7gqub!UE5Or$uvax5QJ! z4-oQhc(0KSmRTMX$krRJ;dV+-Gz)s9ZBw58zN3PzSABM=)BUYCYK{aR$F5N*uMrAY z`h;D~T`G4jS}nHs4&dGtywT%x7t)y~OTD1GrbK1&mv+#yhHx?Jz^3L>d-_TK2z6bV zX4$%4NlvaC82<5bGxIc}n^srH>rm713VixwS^ruHi4qKIb^C-KMO`)dfEa75LmI9J zag7_*FyiWiPt<6K^WBP3<6w5E7%0hJ+gMRGg%}rMvJeK4FzbEDBELxDohs*-u6KMH zdw-Y*C|XqK8}eu7eIVt@&2BaAmXrFJAud%eKbjNMnx{{B>>kWIYqhvu{ew7gtJyRF%lA3vHNbHJqibdn z;a18cN$A(h<(HUdrAFaDBCHHYl9F!AI+E*Kr1A7OMC=KUEW(N9_sx3i5(V(3Z`}=& z>{`*L5qXW=(j_uWyH>%7eXqyDyB5U&1q=DHUS>y#+9Tw`?<>E5QUz{!u4ld!vd(SK zO8sW5m({l`QLw?b-;is^$Fj{R$uJ1eiRphZ%S_VstEu3S5Zjh337w#!u#_69@Sc7S z((}+hyt`;me-fWgoPyn4vewOz|Z5E%7SzEwSKIat~1NK4b%Lfu?A$_rN7F0|Z#ZDqusRpVHQeNqhE*krpTnD{5tS z4~)7OVr#I)c7eL1&^d7DRM!XoJ33OexyC4UE)y6j`^_cu0EGj`Hm&jlq#Vr}chtN0NnS|)vm#OHJI=LH5y`_4vrwur`2 z3!kaVLKUjEO8KE6B$Y>Ad%Mkj_aX9Nhl5xvLTsz~ut`#-7XoohN_)LW+{?E2j=Y7! zBDA;ik38b7E;w-Gc>o}gN?^=W@IljulK3ep%7(nhV>ZIv#e0UDpY01Y~N-Kgg zz1g(())Hbo)L;O~a~JP*M-#Y(|FOig3=`*^&QxTWnOCE&M>l1LJY2KvuWUwQ=t zAvt_sd>jsVw+lk}p&m}1p~C~u_1MOTV=grsoX4Sgn zEL3v6(YHNRy%BifdMN1b#FFma!N`8#rXOyOg52d`L5}H6kEZ!TYL!?0%?~#YObqtk zsO@v5kQ@WaaB^(iH|46mN)_C^o%}PxlepLR9ycD=_6cI(E=l}gnvu`e!~Ok4?;r!G zb4L>W8bjcQk|*`k@4aoh=w}VqCG0I1T z;9rJ@Gh(Y#7}b$Su98He+#9^20HSHn=~aWre3UEH%b;Zwp*n=m=>%F zzdX`G+t5*wzoqN~=9bhoTp!>|Gf$t)X{K)#T*!e&QbIY!8*)U3ORl8!1{g56NNCUHHGey6QV}pZ#aH;@#L=}3Xnf?1n-A)4wm$4U47zrMCc+HoGj(3@Vjke`Vvs*kU6o|8J1wgm! zK?qEeBUS=gSV(M62?U=W!S=-TLvd!_#^xqw)<$r;4#!d=OremBrPutlU}u3)whg-7 zTpBE2Q$hMhs6EP2(0^@_&iA%S45Od4r)eO&q-NQhd7!}iUcu{GSZP9s$d}+MKh$?} zU)`DXWj1B}T7f^XnDdHC!pYz36RJ#e`MQ11A^@5IilbxhiTBMz_lfU_+o+B?Nll1k zLfVrY_B-fx9X281?PZnOXhd^d zk{sE9EFhoqBvcpOxwxn} z7*M&*%x7xZ9K3!I)y=Pyom9T5C&`Ex-y-qYP->hi6DG)96fzp=B7hl5tw28cRMZ*> z>zx_^t~hr93XiB*wU3bs_+oMl5^Hpcf#}Q*D$uHL>O8>3b=Sk)#FMtSD};*Cl19F) zn1j=zn#Sox+#MbuiDF3|=L6>H++bjmhf71yG-Ud5!-%Zw<@1mrI(;ZdgSSa@%d9OM z^`K}iS+3`gOs*gE(-XNdvXek@vYM4p7Ti;DCf--i2+4;2a2i0CQKA49zn7a(skJm* z`2e62e20WgqR-7ZTiA9y#Gkt%YPzx?!s|LWX*1qtM%YV|so{MgF_#@D@1?Y*06 z4_pCO1bA4W|D&`Xx`Zl0Uy-I77FLkiS6Z?I`>xpOMj!YB_zU|Q{=p$!ZRp)%75-~1 zR)J&*P}JbMK9(V*+QhuJ@so3aHW`@0fz5qV*1Yv*BD#gB6pe2e34^^+J%*Stgvn@n zKzTfklV2+?q+Wt;f7xIT*z)WnLdJ6Q@+uwb%>ls#FtVk#%mMndtMJ#QyRiogflJUU z9^L2u=@SAp{s0R%ml0>z<$s!Ffu|AOWa$J*1xoA~#zGavnaGaCaZ4G(CnN?W6_4Pg zRx(=i+p53~!!BQF+*0{_4V%IegMD=O5W?mx#p;?qNwE3`!vx*8X47%5rQZGG%R_5* z+LifO27|3pV?d2%u1_89HF^If4!Evw%BSXDSa~pQWEx<`S?C@+2G?m=4mr1kPt{seq<}6o89~l zId!y@$$`3p`;>epRz7g6Qh;118U(0oZNtO%`GGEI)NbB6q4A9!f_;pje6Mni#)_L^ z%$C1eoFAI7v@TeuBW*G1RquGKTN#L@Rbs~xXiE{oXPy3hq5XNgP9=&=tqw1qkzeBJ z0j~b0`s{6s=KehsvWa(e8`HZQE=zUHfDdg-jt#hL)19e=jB{L!HSewi(fnEsscHsLyTDbUr^he=Sxy9jF8_SfYFpNZnl1+Ty@|PM!OmNHm`CY=f4x}R=9SD^I&3|NW;%{GPA}Tr7XO*BY};bVQ0)E z<%G<(nug7b7Dhrn-9PVFF6sUy7Xh@avfWwsK*8xf#IN+poy7nI%!%uK?H+deYU@1$ zyqBov9jrvN6o{|J6}aVsnzaRwR96gx7_}(m&!}!s=;00KNDCNa&9v^!M*3&{sEYTgT#ih3t$x_Ypk*S+V zRl0ohX~LZp=f>yAy_Oz*y+_(eGAgn;%)D}AATyIeBIz{+xh7Zj^uw84#22W5$&TC+ zE5s%E?m)NlDix1{$eX>U{KK1Rd#Q0#*Y03zT`((@*l}xO?>p^vleLU>+7w1vQ(N{ zTe?)-YWx^m5$Z#Hz4bmmAy^(&-3@;7V#G~2Bt4Yy;1SHJ8TJZnp6P+3v=aeho8 zFrrvITu5PK8ext4nQN!L?ypQoQc;r+KXHo5!^abFVDL z*=nKSAbkg!*~YNboJ*Q^As50k!nbuTC#%@v;bT z&7JqLc&1l!qePvqstUEywOo)}I+#DKnO&%yv)VQ!r_fHSb>RIu5!8XObAA!OJ<1lo z@CX=cl4w?dFTFuh&ZUgz(m0PGs3m}DdwLYB`G?1ySAwOlb27um+a77 zgBJ5u&xgd~vT(`*Ee*IlbICRx)NzhXsKF+_+_UlGv9J{zF7rY^Up~5Dujlh~Vatdn z_@cgBVcq(=OBpadzOEstBYw*HM?dx9ulU!~jjF*5!cSpN2)oU1zKe_F+S|cLJ*$0< z>Z^9P$8t;QJ|d6?ZAeFQr+{F647iG8{rxHbsjKhY21Uf5|LOYjfiq7T@Z`)EXaiNO zMVd7$lsURSG3i_o3wcRv`^_I^J(O>m_?hEl`tBSc5D_00QnNlb2VqC#u2O5T|w79(!X znx3qz4~=Y6)Hhv#lN!8*++2c~5k zKO^534bZ!GJm3m47<`g3C|#46#_04+)*ZY2cC`ej^}Tj2qp_u=EmH14K>m@zkb)Rx z2)f$W3H)-{RX=XcyG;nupId) z2|sq%Q3=2vnCqw71h)8}>Z>h)T(4~flv*6>Np8shqkpy?Eu2pbwtagR=u zmk-U1O0?9?d#`kh4?y?~gvLX7x}4=xYhC9?IL^ezvkJ9HvITPFDkVR+H_@NyQMZDk zMFjC5w2oyl0crm|#;|5odsxpw+bU{ttB@ABR2~CJT=x%0z`q0HRe#QlqpRQ^Wbymo z@+@R?Ps%OW9CSy6Sbg3B100%^r1xArQZ{V6@g!zjB;r4I4s3hv7rA+EKvdevkD2Uw zODV!K`g#J`m-qEC^%XjQ=r!Bzpx3HD6&r|VATO|7x`y|4_a_SMZZ=s6@=^kWLK6H5Dr+?6;-JMprUWrwWU)mk{W`4KR5&LyMGOw+(hQGK5 z`;}=TIXwDXhgg3<6V5^p8c?O_Q`o%GH8ugV4|A4NcEV9a6B}hL-lkgC*o&moXu*8R zN)Z;l20RB+FDfe%ydmiqAS1#`wD#iA)~$-^r@fD9``m-+b{DK?C8Zi&P}@WmQ)YB= z8%YV8Y#c+IIx!vBpC;-{-S62_C*E~qV&e7YC`QGlaZ|Hsx_$2Hx5@8gOhDwqgJV*pA@cX)#!-JJ@fMt7&6C=CN? zq!~Tf=n|zH#u$y1jE+$welPD^-(UPZe*f@?4<@hI&hvTVI@h_*zAntU1{?11qc2oT z-3Y3b1v?2!&4l>~s@1Ox1CxJ~@FJBAc(3Il$iP}D)icG}&2M-=D36@rTjAOuxREn0 z`>Vwh;B1UoZu~kM@qe8S_5gUrfvj_~vQM7%jAf;aY!uMT?*z1E3SAM^V<)%>Xq)gK z5m$-J^UtGhY5h;u^mlgN9Nio#c4kr46_0*BwO4GrG+o1~aGZ+jv(+QL089J(yAdvc z9?ne8_K64OK7}-%zZ2%_)HTxrDzlp9*w7)E&pb#8%p%0swl#tdcJ=vzVJU1dZlew9 z`ZnXq@X2h`DJFX&|0=rXaq+%cp<#lh&P$-<|M-*TubS`?feeMhCx;Z~i@7$yj@E&5k9uw#&u+{A#Lt`PvTsSvNr4E%L zmNFVPICmJx?t2UGYe-j!@iS^t24u)o^QIH=nTB1kv(_YI6!*z9%we~}Z^z|pJ{oee z&fF8IDt;$LATSI+6WRU3nwYyPU)>PtOflJ2nObp6@Qw|AYvrXW9$f}IuU8fyR@r;`$z7yW2T6t<4S_h=HHGRxnrQtUt^B#W6c|x=l6-)Ak^amhw*1t0T`tHWgM%`xD zD>8$p73TdVT-Fc=v$lDORTlFum!u=<=1^GyF`Xe zW7v(zzJ!geac;g4shRY9TF!%b5Z=(N=7di)lq_T-f@4|p!b*hs95>xHD9>HC-&7IQ zhe&!X9a!}X0u;Ru{L8i$Ozg!`-|cL;L~b*6r{~FHn+wM$lmn{qb?EOG;2V=eU~j?X zh8p%MS($;2wq8#4!{mig=SsnBu|KbZakgX8sa>z^Y~dA^OOJUvTXK|Y z(~hdl>|BftaDAOxwt8- zIh7mvm!>Vcudn&=Fhd(uiCv*A2M+74g{(Y&T|9l3Pf8pV^|mffd)kp~?H-WubeeRH zvH(0f)$|@KbR=_*hPD^F$*;+Kx0i1SVENeWa4a{rZfo9Y`;S~EE^&RUVEk^E^oGcl+f-$BoAme~*vfl}n1nZCpFU1OwEu!;4e2vrY2+kIW=mY-C3zV2 zYdvD=LKCWGg?<^OlLtpn$+>yZYOMlUI1Rp8VQzCM&7L~-;{x+A;X~}gwM74d^X&a& z`2%E?5v~RhHrlxV0F!vBdA+-*;<$jtvM(;ZlEuBIJ-ms`VwhF8HVrZ>U!@3VWp|;{ zF5pB4gVEP}Wi3^Lb%=+LL*20OxbVKpEVH4E%t`*$QX9Tv)6Pn`%l_a*#A>4VbfJ&6 zhAZlr6av@4M<+s_2vzhZjTLVSf76XB>e@OUlwi(LtxK$Y9;Y~7-QNJO(my%8ds?9` zVtBY^oai`nNd#Q0vu~!f-YUb&>CydFB6q6r#sguGX$vHWsyc(5G-zT-U0TC6!E3^! zBax`o#BaEDLv%uK%;PhBhHRqtwBOFo%j$TnG2Mefn>p5ZWcn^}qhD3G3D~q;ywCM2 zbf@Aa-bV>=M|-sps!4bKnc$B*vNelUd_Vh9rAF)t`i`OUDf}w9v#;B3K(A*rjQqdm zP1^%NyvYPpVROMd+_f0RyK;>v3Mi{}03vdqAZ{fK#AaDIbwa#hx}P9OUHXZ)3-2HbTn z%*;hoRLh;A#P!?NX$8v-n5IjuX3jCUPkXP7K}+X<)^v$_7@LG-S@|3diU@>YBbeSB zjlU8d!P6-={$%9 z1*>j`LINk?_^HMSaN<9av^|jc^(SkiD8rwC?>?skR~Z+CwEz?VJuf%v#t0?EQjXwH z{%6zNTwd5)@D);x)10a0_f-W%>#6Ib0=gYMeb32D9H<&3v@c|E{s-5;S@^Zu=)^q^ z7RY(bs^}AGpsD}ppx;{^VK=2?A`OUhJ-b41yQn;j?04!on*@-L4V+9^FWOhUS=|^= zbKP01=pVPy`mDzUr1-9@f8Wt*c4bY~HxIwfkb7)xM!B?}u$vt9z;ueoWAN$>`H`>#uTdIeY~wRlHoi%Gl8%^U+myMHvMWLm zjL6ak>}=vRzLv=OacdzAeX5pZ*#x9eTsHHvSFjD=ybjp-^ff@7)*l>OyG_2Mjpsrh zYGv8Bz9n){a|QRzd*-GdK%2A}&k#n~1gz&YEXX6uU_Tl!0dbFp@+rV)9p0&(NT7|D ze(%fFEjsq-))BdthyOX)f?~^R+ie29Zmah;O~7TV(o`iNK8>xRosz(jX1pknkusNi z&*NG15BTX%aBXO0DRu(>cwT}f2%A1O?Wl)*@daFI=_P%+Cqi?9V!2XYqKQDsF46o# zdQLaXcDd=2QO#lbqx;!D2NN!mt591oK^^p_OZr3n-?WU$C$ndM+b;dpKmYv8f63RD zRRFb+Ysb4A#MxzK0~@~i$(6TlMIn#A_{{Lv+58{7Fe_)`pOHhBVy0Xc8S56XdcGrp zN4JzN}=rH;PzoCjZidPyT(gQ%H|Y#raeogu`gB!&nEqV#_M=(ZNhr&&Y%P`%YW&If;v5 z{en`f>Cacx@NY~T-FIy#6n$ur?--?WdL+n=t5|vNxKlg6Va)ncQ{1=alT|`Sk;&cW z(IGZA?$QicPw3TMpyA<&yG+JUwlxk_%dXtAd?bZ-R--aqbK!mlguzbkHm`v}jyHeS zB>bD0RI_b$pIkY1o5T4kl3`6sCw+12Ftc8Y_Xi))dhbEMO>N9#ygs2hFPeXm4+~f~ zpFRW6P@@cNYMT9kgha;D(lVU%Xk6i|P-O;ccXLh8M1cKwp8c=a%<#DW8NXhT_#sOD z6=_4c#&m;uV$K|(717n|lqb8>>@K&S?Dd2h80uYIYKcm7?h;O6pMYPYAdz&k0O!&y z=(=Yv%^)_$&O%N4@Z~h(lCRc>9M_p>YxpdfTlzJX@~dLUf67D=PfR!V2=mL>$l*f@ z{Re=Iif6oXv6jbZBbv_^R~q-=Apv8$7uYToOlwH6Mu~|VUk9oT(ayexJITKY#F^>gVN|00Y@g4jGM@3T2i`kUytOv-Dmy5AJry! z=g2bl)n~|<>zkMX`mQ3Ka8GRA+noFxl7d7QmN}LhlzyztHgfB`h6-Kh8BWm~`9 zCg{TQ2O~iN9A}r_aQH<7UAin00O-qf0b9csngg!fCn2FZ81QsXnl(xjV?5kM~d zIl9>fJhMbLjeSWwHm9^x9Z}pcgpXtJ54Pd`bPThJ{1k! z7mk2T*xK=7S{Kps>hhCEDwlsOZ-Om%nY!}@+nCC9@KXecf9CTV)6c@|zjDqzm-%ruC*gDTPgVbJ@S|tBW!J89%%G;K5UXOPtUd%h-K#w7Xi_a3r?;`t8AI z!ET+uIKB@~t0$KG?*4cvfa4QkNz9k(8Z3%Ss1#S)|L_XRU{CC7?Fy)1ZW4k&SK{7V0Yd zBqWpWH1W~MfBw??&<{s+m8b!s{S@mjj(0r~_@yPrZNCK_`wBnA3s$*7^_*;SxIZ>| z3)5Jf@?_-pF@b>Z9qw!Xd{kO?!kan*@l47hwF>!=-1v!i?bi|!tS%ClmS-)g7th$) zqs}L*J9cWI$ITIIJ@I_Dr={LU%W%h*&EswXzP+N|BZGzp#`I(#*8~qB$9(A;n(r@} zH3V`8XJM`tcZ+Q3o4J`2pho&7ti1c;2Y!mn6;>Z_-kM_#uh@Zxn^X5yQEhec+(z-o zPnU83Co=J`?`)R43LCx&I&0$94A)d(;<1)uOg!B?hJrAidn?2Aj~{2YaT@;S+xo8p zgr!>B_N0rq)!)BB+`(arQr2W5Sf)<2eCN9w*mOi=D%)lG*|4w0UnZWWR~Dfgn(pwa ze=!T!CfxI09H%v%4-DFOE$D-N{-!K4#`8sP{zSBjHB(EE~}(WVwAef)8Zj1eSg&5DzUkh_oXc=PDIozV57oe)HTWDyOB9e3o6 z)Wd6Qx+_@%RVpo5&5tSr6%cIrI1sWi>&qfp^QMKX0&Pb{(Fhl6k#Wv1l&Nm1sg=!x zh+{63_GnwtfTj7kEg(SU!&u6kEkcFo0p9UT;72AAqfw8 zK%HD#FiRcgWLo(<%TK-+-)44{lZHJy5W{oh%ZQ3sARBmsNWQBWrnVW9Swi0N`O z&FQ_eZa%a(e=e-@SggMG6={9Fj5;sB(gTvunXsq=x&mNG9^KS(a{9x%Og&g9M2qiQ zEW4NAdo_7YEwVz@6hTNm=_>Web$MB?Y`R!x+1tP{DZxOUB3y`yiTEw2`5gTi|_*+JKvK9 z>3_hC_Dn_Rs!W`)%!7$4`nNGYeD8Oav8O8i@G*@9z|};GKKeA+RW9>J3VD0=t6q}1 z6XJLpzT@l6A9b!_A8x`RDRR-ta#uD}R-I`9GZ~5>ce+gHDD`rh`(_#ePMFotH{~M# zl`2Vaz&-aKZ^4`{UfzMvc!276JPEVr2zg+wfFypM;rWk;E8P5ziXwy;BX~0oU$zI& z@U$2dXnphk`zlbU6ImY#M4(qTR4F1#x+&RKV4?sbY5cEL5`sg%Am~PS4ibVWg z?WuUHs*_ggot7ZxoEPo<*S{Ajkqn?~owA?qhYePIV!(cg)=Yg&4`|NaalUo?PX6Hc z6EeQ8_B*A}@}m7uLvNSyyn5I4JFjVZ$z$MMWi=z603tro*KJQFY-Y!jrVosmGpcP+ z(hbwnJk`A73XW_SYp!YDA& zyu$diStP~_nOI(M120{lR|3Gurxl|ztubAEr0V{y=2G=a5uVb8QzsUM(me1ur{!y${G`qh1Na8vpGt#RnyP032 z?546?j&|pkt{I0A2Z~>RzIuno^p8H#ugoc_wz=3YEOrVUAzKxF0=0)el)N9su`G&49YG9p4y|_v|v6bClbr4g)LPTH2?L5h%Wv zZIvr+V*ipqu;34f`DdPT$Y=6%@KCH59B_&r+aEV2LAo&2`?XS?S%kTA0Q}9|D>5yG z@4g4LdJrd{e{9D_chw2C>T-9u#1W z%L`PQ+7>OtYMqt`D-n|8k~cW#??})Ke(`N8ZB)E!09`A=2;KWw?hj!ZfD&j0#f4Y- zLPzx?!A`$ot6_z)eCQ@uqkCzgR~eU zV`v%n4SiNst*w2|NLtx9Lt0J7XLA&JK_a5@7m4EjWQ1d9(^@lf2LLv`rk|*3ZddEJ z$yQ!o?h;?|2jkHvvtOT3L{XjYfmrO zTS2^;yS0$)YCRjy_-2EpY+QgO94(F%F5$Q5&M84D375#!?JV8M?Kk- z;3@?2nP5H1thJEGlqBEs!5(H6l{rdL(xAVy;hLvanKXx#y$e?V=Yw#=l4IgQX}D*I zVHVM+J|b=g4)tGs#5R4Dgf1BEF{N^HrI_HQQguU>5HETSS4P2YPJgLOgT+p`q!(Ln zzWC6SDagDmeh$v@DarKBq(Vcblct-<{AxWJZ&!3Gn(fwe#$x5^8gK#204&nz;H$-o z(3e!XQ-0lo`jHA0c?1GXFJ!Kg1`m~^vT03R+_ya`ZuFIuTfJO5?M?%2EZtAT9o6w} z=ODpEUK8AUqz}z#xNSi9iQ&{G4n36x7dyh2?TGWA0fe8P&+M_AtL!gtpZQVIW5n1>r>un2de+Xy2c9v-#(a8gluUam($D{Q3-E6E*&Eus9T?qPuOxSWNx1zHij}+u`rA@l_if}fBC}sSmU;44d z%hnARU&X8S`vAU^nrw^k(YfXB!lRZ!!v7!mZ|+)OX`27T%1pYV@ieH2pfVY&k?u)y zD5yy|LhEGXhJLZ>?|t57hDLBBbJ!v`1RnJ(CKoD6xnpOfKh^~XcYj5Z<06aUSnFQT~_GQoUA2bw-cFSEz!C*hJ;Maw;<9GI!raifm=X{sh1lIJbT`n9?%?7MhebYk4MYZ&%g`z5szJYz z{gI=^=8${d>VAs#?Gw*D z`ij;dn!phx0px?~hg(oQzpy|B>noqEs2|_yPiK%3d29V?^2`EQUJCNaQJc_sNgh1z zg;ePr3Y1(`8`*66QH7`(364znpsT=WH;@&_`H1CpXYh8qBwYg}sIL1L4`&3B9TI5Q zg);NAWCTbrH6&NuB`yVYS_9NHP3u>xc@K8e(Azt^eCP5UtF6f6`mncJTEz#RG9o4m zZ3*odoieh9MvX=bgBTm|67WIBdWuj8L7rXM8 z@C+HFVqzWx%RtMV0qU~V8UzA?`S$sqwoR6v)hYt$z#vzdI?wDyqTF?E%F7ka0i>?qv)9u%~Fhc`V|v*EqIM|zKkZO}@GhH=k4 zA^V<1Ss}%{t_ZMZkr}KKn}z2RE;~AR3hPpF4UmK;+NJj+ zuq-Yl6SkrIoIZHppt#5@7w*77*Q3V!=R!T?GYdhr5h36;@2t@1ymQ~E`s!7|n*Ae{ z@vA{^5KMBB_~`L>v|21tU-kQqk~QK4_&S4fs0S!q$kU9+xNWo|9+(P|5m}FYNtGqB zK00mUnS8OWV>PhaCAa%_%R0#aq%b4(-)lqb~oFcCDlaBfNI?z|!SJ(cF z1vt%8_Ga2Q(eYf|hipVr5y9zu;(mjODDK0D>oxo1;8zOvd%$+_38=^aBi#V1V@l$h ze+B2OYd3%`NZmdMQ;b5cYh_xjluI;GPXG){qOPF+k!>za==$IMiuS8Lcy%8s=<>f} z`f^T^o-3uCLb7f95w#z~8gr8Y-cjbE9+7j!2D5&2F0iCA!gkTkNhAt1-rDye{#I4Xl^P1pLI;$e% z?N>85Y!viLh8f=Ond)qJvT<}P&bS3S0cnpT4XnoVaZqWo9W&6eI+ed(c9>{F`3e05 z#c%e{$VDYLf4&=g=_4?Y=Z^ZkzHZ95 z?fPNDQg#*(AHJp8^EA!F(wV~ht=`fz=S0R{X4E_`nvzo3Fs1)6jwUMQV7Oemf^&M+ zV5k3lbE;0C3N!8%DgZgc5;s)c| zGB`DXTZNxS_;^2l-jgBapl6z}(RVaxz4zD=F`c-ZR^d}OZiwG#c(z=z&|k;~sdk-< zuhTgk*OW`_WOcL1dlUMJoPXU}!z3EgkA=`~LdzqBjPlpYjYL6IFDAeEr98!kIapQv zGShk-8rxJ1=q$hdvP5pUxFDldOWJe^9Lu7;o&u&SRIR+I(|p7ire%` zXv$K5x{=8tK0dx@Jc@$QdSo9D@H=kWEz>7uPNj;_a9CGv*LPH#Vc&R%#|%hU!)Zdk4f=kVj2e!D2v zPgF{;c`(qDT));T`^U+~r4CEz!;wp5K!d232y9?dq_7^$6~KvctDDa_%ta6?*a`y+ zlE-nZ$~zTdjM5!~DeQwczR-|2RZ*e1=IR+4IIJ7P-C5`6zb%kqD*XDK#K5uV)bU|) z!Z(Pv$*?ukes8_V`D=pIS_(9$_kcb{XKc55htu$KS3o#2s8Upmy>fGdj<3D2NRa>?NBiE7>LeFHfKMy1640lK`pgZSMjn|6SJ zV52m3X7T+ilBg6zF_Rh$rgF0y`b(si8_~RhlwK^k)1R|2hB#g^c=wFJK=-s)uu zBeTL|S8GZxcVWcAyAzKSYZ3n(5bks7-#D_pib@icknWk*ybBa4D76aO!cP z=oG#5LCQejz=>%Tq8D6Qgs;gJ4rTE+TNdFNQ)gAVGJ6}#D`#4Y=MjkGS3P%+_*miid{(G zoP^8M;CyRac}vt;0HEL(A9xNLI+X?QFOLYZq0;bd_2}T;&m?Y(eK0m&v-6Y8LR3ca z%clu;W;Qp_>)WU~iuV5l`OXI8O-V7l&e^x4#0UlTpIMv>nY!4G1(O;64EAb|`dt>+ z{wj;7Oj`XtgKR&U?2NRN68To3;>gwtuX>1JLF(IS8Q<<-(#&S4s zD_{H=;Ca;59}?6?c)5kARugd0(;cnX+(uTQuIDO{^HJ%#>{G>4j9F=2Zo63 z#Y$^-PSGk^|5T`R@!AI3T{^#LBs#GaSj}T~W)=_gy8PM2auhbd+}FqG*JPTgw|(&b zG+WuEMq(^_L*1;lL$k&4$LIN;Z0#?FHwHx=- zsh&UA$uRvKO zyt2AEUw$B7!0QmKVmbI#*Q_HbnG18ZPIFT$Rc!ifUDby(oRF4WzX3Ykk6d_cHRPYO zX~VZJH`R>kd`nudpKg=xCvB8?UaAm+vYJT9>56fy>O`Xsiu!Y*qXuH;=>Ucl14Tuo z$@|!6X#13oY_wALNgz1LtYRBJlbFLEYi$BrIl{AWPcQQ{vPFo%@T96v+@2RKUtJve4Niz^aw`$}qGfGeRKGVQX9(jX`mMjed3S5F$=kgh*kF9I-V$$q zf(I}pVctiMi7(y+PC9n8?tCLw8bK=p6uGgJ*ajE*- z+lpv7CVzN>jg|AZr$cS4XHl8!zGyeOzx@1 ze5R3MQWJYQZ(ndG7k}WyVUNsHxst1;1j^3*G6r6S*6R+l(gg6}V(ZUUGiB(0r-Sa9 zJYQz102-#|h0Jq&BS?~|xLTrd>T{8HhLst@&&63V`g4yHE!cU&yqN+ks&MnMVdFl5 zhi}^nMN0`%NI5_SVAdkZ1iWqOcT;qA@Sms^-EgLiHXh$fz$e%vA~w5)@`h`jISoHP zb?^6c$l6ciyVIrW1kna$&O>}k5pghmspKG$tM zY+Yg^0aBPPIxS0)sjHV!(xI{hy|YzqEP%VV8_EJ4#zgDmvkV=#Tr7rbf3eW-ZiSC3 ziXMBT=OAP^>K3zDw{UA=m-edcb`_v$wWiHKUQ*jACkeCr%vbJ1+I5GBazH#NB%$ z)zK0C1RPcy%!`}h=@0+asRbK_2)apFhex>o9cfgXyKXI$6BL_kyDTeiXghpM1^B&2 zI6vM#?=g!j71eXMujuMp9d+X^2dbK#yvfh;)ySfqInhX?5Ytm{hF0Y8H_4CsR4ApT z?iUODobkcz8o=#Y`rZ6%)+#z{Js-O=4}Or$bf+xye(18&Z^)pFf|Hk+AKXsJuJWfEt7NnY;h6|!wgU9^6H|v?n1>;RU7(` z4-U>=k9wEq?X!)z8)Sl9E0e-s@C#?O)kYZJ-NL-i-Pp0s8Xqyx2Fomc@zyC&cx$Y# zZk*ipwti>cAd~ah_hgI7V{>{@s!$#2(d}Tf0mKcK!nB?(U7fk(qg+gQw#W+qGsEsJ z9iPzoWz6Z(F{_yD@#O=3Mpj?*ln#WFyKsv3W!^F25FOjpWTOBN8` zTCu{6_dtGx`fKsrE^*KopeXvYXXw9VKx1}m-}?D5gXH9~$wyI1lAp(uPW>{kUIm|3 z09$l&1)baeTY~7Xb@R|;F`u0K0=5kZI(@?*>CIzmUCmWUHU)Of0;FkulW&c>QH54c z0E?|sI>qdd7QoY71?_ObzYrAv148W^cLhrD(|DxNyRo}y14@$=vk4Y9`}JJk3SUZS zBR~RUy_6mNxj~E9LI)Ucp6uQ!yQUx$e-=C5E%hk?#-yx)UxZj8Wu3QMp$9N?mgr)P zS+yFuFIT0`nxBEUwr`@FID!=k^NSx9Q!@bN?6#;g*+X$Zd0{3s4qJ$u!sly|Vx5_& zs@H()lEm+&LZ?0VA{!8_4sSYoWq??SM%QU>DM=RcK5L9aPK@ADUO(f_M zp6$lZk5Be{F%A)~Qng|TPxOg03a8&^E!QwixKWlm*fI^6uki0W`FwMJB81^|wPg>zI6VxK~%b0;<3lIE^usa;|B$kkg~ zCs-DhW&Es6(JMwHfrd!zSNQou`eH#T3Lezzh&kq10Jk_Vt@-gLqDr;I>rI@m&zqd$ zEZ$#-Zl1mD?iK|F@lOk_TM5!_s0QA`hCm27d3-e=CQC_Akp|wixfU z56lSEB(H&qxCKzkG43oU!Ene;8o%kwA8tR=OcJyvCN-g90n=Z}Z@r~m z^x4@>3|+DD*^<-_nVLi;aq3J7$xw111Rg#gJT{OoZu3usY^Q*3zJgg4<7(q{q4`6% zr3y)W=E8nptk6#IPU?#z0}WD5JgxP_?+Bjr6c?T=^~Vj{>OjO(gYA8~81ZgBFZ+>| z8k4J#oxicYgB9Xg`O>upz5hr)iCYF%Q32|RI`%0Yh{ClZ{!3xEu3cU|=iIpE)%x&) zR49N+GCVGGT2>_Ix6g=!Kso`@vPY|<#f22;a-SMbds%`+Z=-Wh(5-w-)ZeFU;i|41 zM}Hhrn_M;)zV;blZc&c(us2HwR<0$ryg55IQLb(}1e34abdrM?slJLS?fp;!)6!*S z+Fi;otkbcXHk}BshZb5kgLPzrX{yJ3)G51hUto@+hu8-m>$$X`c{c*qQgd)V=R4{t zr+?1NS;1D3K5bPHC)>5>pJt|)_P-P)$8RL^sEj*@mkhe8q&aB5p`~5ssvqaIA8u;5 zLaU!Hyg#=tXXW(ikzpQzp=^PP;vfQV3PLGwW?Z(oJhms?} zP9mGB19-RL4;@;8nN&v4%xthuaxa2a@!L_AHSMFwo^*y^ZB6wI1lKDchF-5ZvQz2e zJO;B5AMV5hJDZ-PL>ZAh?{4y{zl4>&RHX0*AGn3!ZQR%e)E#T3@xl-uLHo}Xx`+gUCezg#4ls*?pZmu06Y>E z$drbSC@-%ju(FFj-Df}X>b2Va1H&sD*OLDuZ8aAH{7Nje^}F%KGu5njwbo^o!S8rD zePP0`33B<$wT>U(KNW_E{z9Jt7WIxFSHg!{^b^UtdmjTY9_n5>W1!t?`h~RG?18f; zM$$h|$c5p&q{;eoU6UcXQ0si4Bxq6)OAHl*`d<|}lq9s$Xt8F>=XoYi=!m2N_{XfQ zY^aLHMG&c+nQU5qMikMyG`=+i68EXLrAd|0)N+PTFw$*-0h%!xjS9T zufW`sx1xhTJCzSkn*|KvRqN+~#w%6p*Q0iEzZ0kF*Qf{lwx{J3 zhbmJSJaOqv%hAaRbg(f61GL~|WMrZdHWT9)XI`t%!c9f^dN6-syy8w|*RNlXa+~&$ z{`lz=cnw;+{Q~NepEj5wh5t7x8+|?B|2;U3l74fhYVytO_y^`%?yfTg5^tC$iA!U; z)+sdGy0=p38bm+=6r&pOyxgV`A7K>`HfZw?JzdA?`M2!jO8i0SdfJUw3jWT6SrQ9D z1e*Ml29O&pK+e?aS@ChZYA^naZhQx=;lyL00D=;bBp1(H`Mf=_5P7K6P^BTh6PUo8 z2;d`4FFVldQ2(@FjDA0T{(kPlBuJx1{5PRWI%;V&yTTPixPQcP{EaGXv?ObH#!XL` zJ)F*r&4^)BaQqjCfyxNZSAjAUB3=&!x_{%Q%V)8Xuzygy#GLRzdK<&JQsOf)VX&jC>rv{PQIkAD!? z?ZE0}>+P5=cPdn&YCU0pH2mY!0xj24_Xcw5a(Lg~dj2{v?*FkXes#Vr^j7_%uqiLv zpL3P72>wJ+uAAM{xy)L}J-^Sq`1qt@x8a6oyqz4i2Ds9prNye0O3bGC)JARQE03ZN zzRrJpk$z8GQ0QjR)oHsH$;UoipOL%?4;An;h|%SFw=q@M4ahVt9B$A5>J@a16sX;B zFCLov-5SG^*`H5c$I=puTwnwOSyS&nvw7*hF&?{1D>%pbaK0{Jkos9pPR_A{K87Lg z*6x0Hb7yDoTO;(1i>@-C*?yzAA!j&Bb7zV<`KgV0glQhhhnqV;foQRpI?$KHBJWc5 zWBfkJ$UcfEVFk@G>$4 zn1)MrLc{p(x2`@iTh|yDkvo$tt>E_2f!!^a|tfd$n*`~ zH7R^Hp7(1#AwnwwU2_SpgAA0{V-reG4IPJW8jOE!eonoRtJN3(nh_S@x$9uV1{8@i zy_(cdvS&P8xK!)*7z*I3?%j0TclMC5BCQdq!0Ap=w?TTn$p~^v^3>WWp6S!{7}IJK z+USW~*Gh5qfzIdsM8TC3U(TcHvv|${p$Zq0f$E>w;*i3%8T-^qmOAChPK-pYN1gLup6eaV$@dP7K=W>Xu9!k%@9@ zn~60vLVeywTGZ^*W@R7nqhQxvs0YViyq-WjatU9K_{tL@^kC($p-2i@W8BV@ogE&r zpEJn#gtWdjDB>KcWfa=f)HLaLeyXaX^2i6bZf+>>i^K%qj<5oD{gZA zT}X(mvT{_~91jPF$_SWbivr0Y+2jFk#;2w*(YF3;RV0Nnorkzw;?Zc$t?E~+$*Slo z&-5&OCM&VHHsY;8Sm5**(4rOUfb3{vQ6VN>Ba=YBauBvuuvYquZ-r<9R$z4lB=Qw8 z=x|S*u*grIUHeAUoTcu9c03?0r6U1BJh!aGKcwf&LxF7mJ^=8t#y)x47_^@y0<|_` zdf25R1IS7Mgi8VFXaXhvXNnT-VpaUT6W&$YV zmG+c{Mp6cS)3e|L6*PYVNI;#nXfM$G!F$uy$miqb4yaalTkjk$A@HmU zPD>&Hz&Wfsv#@dnEwvRk8H+SRLGONcup zDWdjPu%e^4O4wda5v}FC#^q75F~ob)g;L*lCdj0?Tb_wzr0sDB7dByDuhO83i|}&Uoa~7aTh4CRXLIlai7$ zJb(V2)4Y#L0Jl~_|MY2g!L9V||9svo5>Mki&_k8kuz`_?=C?onFG5?q#bc^=SsN?Q zEwc0C+WE{dQO=P@1lM}xwlz2;kxmQm6ky%ZycFTl=31`|kVN&7=q zuHyJx3LqYYu3_Dgv<@K9^1gRQzDcLZ6z(z>5d1N&IB{n+rqwgU(N-#Y!E!S}pH;#s zZC{@Rg5=Bum64`+V^l=6#F!)iHvV>I;JL7l?5D29aYn0!G)xt@#Mt9bMKO8g3e<6@$W(?a#W1vAt2gCFhhJHE~ABk@*5 zVsABOm&xy+d+P&DZ0IRf?CJQ?Q$4RzElusZVtS~{hqUrWiKh4=KUJ?40p7u^%Za>{ z*!;k=bczGWNaGc01ws4yrvCT}zu_#;-D^IE1^D+0`^)j!ZH59r8r<==0p_0xYuBEd z8_f(C^ba1d6#;4gO{KVw{+W%0hSec#=RW}bo$d;o#b)^or7Qmz>!+dcK&OQ8~fmJ4?vFMUp;r6O-LeUxkf+$EOymfm~xwe zfJlpt@^2CWrKA-M+9$`vXF{T)`mJ&epLAPyYvM@BF zexuB=_Sj3Lqs+FqfZoo0YTWp;MnqdPu#L*XI{+Y7t0gVwkT}{qg*-4#c)i*etxIS5 zE}v!lmVtWN5`Z?uWPt*E1y$*+01j2c2yqdyEE9Vzx8J~@$Rs+67$b)Bm5_RB|iON##VFZ(IB9K z461RvnLkqs+O$hh(3SGQ;^Hzu_?sNH;b)rTJg>C{6;3L>40u2p+(VOmD6?pCuLp-wntN&zKpxe z{iWr)@^3%y2@9$81LP|sw^9M7<(a{%|HJV5ReBBRUmdEvk&duz5qsWbW?8ZG@#+4D zL0BP!Wq_KBA^a1&zMv5xVKZyrvzb<{aDwMeJ*ozP;N}tHP6C^$0@7h38UeimsJAylugCrTrW`s5liEeM;r)52gKIv1rUN0M%gDY4r9;HPb0Lf&o|v z3^e#?{n`vdRaKc`xpysVYHwmI@g9aK;?Gdn|E7Pcb?Cmx#pTo5u`@DbBwN-*y!Jy8dNtWB_&^*nwo|m1MLR&2F;3v(i77J$x5Pl z2|doj_}vRy@4rtN=@s_qeH}9T3QB}<8?{=zmV$xy&T;vJ>J}SgMRy+h0dA0 zo@k&2A^YlR1$~!MAt{@YXKQ;q`rW&$0uDdkC9ILO{>N`>_WD)Fr78eG@=yV?3@=n}Yru6X3{cc?bh z>?QqM1^=Sj{9&E{8*%ETe;MMzLR<&HO4u2tma`)AZVANC+&BkTsmCO8nae8n72ukz zxPSb4*%3Kl1ES}4Ip<$5KdWsFfL22l=1KytYoCAZls<@thy%0l&)JKe`L6@kel79m3;5fy0`p8Rc&xe~!T`y(J(1GXJ*wnq zp{euWwN_vTgPly@KH%N^_bBbYKldrW33x~>U-sYI=$pUz1A-STdFfpyks@YQy?q*% zKgfPEyZN}MsmBR4I*e{~{lydi_gf0McCUl~Cx2Zbg}9`?eNb3X`2T&h{~bwpP2=+r z=M{c_!}!K31H{=uS-y2?ftMA7kUOA6vY7daZD&pVC-r~-EtfiAVXnRAiitl_;9oao zk7vc(bemdmY-$#&Qi55_PvX2$n+-ltBT z&inWMd_TW`dJK*GzOL8xd@a{&O@#w4`W{?F`Hu|p+YZBk^z>s_bahJy+kpWt%+uqL z{&H3QeXcD$NW~7X5DSy` ze7Xsx=4wLA!0AY6YCfGf%bNZlqz3r0FLPLMs~i6;r1IIf6RR#!UcC_UqKc|6qN2PrygY z{{GVSH$s4Ewa=~X;o0dZF>TfSjBgAyw>`U=K{plriJ^+b_w(@?XIr*MU3mTlBi?pJ zDiUizHRkk_=|c57e*7ji|K>Y~-vfAO16LdJn))q)u}zsU{M*X{qJlr~_Amb1Cf)>a^<4!Xg%dGxe1OdkgCtIZa;}lu**~P`hbwc=LCIK`UwJEn7MAaY6 z;ptZWgIQ)96fcvdC(ljLoeP(~vLIsE{d2tK&yyWBJ;x}h^S$%J+2Z9X_zq2ZdUShd zg-QOzLFpb_p_VSmH>X-;6u}eux-|}iWJTwT$A97YzqsdI7e8eVG{5%9WKjvUs0rGf zFxq&;b?9_G{J8EnERL`YG%x3*GcFcAiLkNY6!{sGtl)zuPMnB*_k^uATv%%gFr zp1k3z9nddtszfq)(52zqZ1KMd{pMt|GZ3$%GI01b3BkpgNGe-}mN zBKQhA+DAe<(>=`AXvRsT2(D<9nKSxIn4N)i%F&eIirl~3lKe@KpZ*yUyB=vNjk|`D zl9ajxv^J6j@)PD_qz49{Xp6#bA$`UpqpBoe*szZ zpb)qw<+X=rJGcE#CQ*5vwyPMbBlIGlx<x<2T2F%kEkAb1WAb+ivw+yL;*Rcdrb_ zW#H>y%Qy1bCVZXk8hIT4WSqmRoUP&8V*e)Me?HZRux@9Fnmh1H=H50j`nvIYjGpbv*1dW2CixWdubkIM$-8p1>q{lqJ8BqCqFJhiQRM@Mf1+WL?3 zmxcy5JQt4}v>rAzgWr^WTZskITPi<@2X#AsH#q)Y%-Q1)e4z2_>JN-F+}}_GQRcom z;!Xm#Cx0U5cXJ9jt`Vsspo+z@|LBFyb}H}57OA{av1Dbpcug4Xt6BRu-h6<1B-4-= zv043E@@FFN&}Mo5{5ee;vE7b{>EP6xqg%o}BUOG5=(S=?0sKfn!!UNQ@*OKb-7WKV@5CO}+#wTxd8F2*IDgX*J+$0u>Prr~)ahdT_|FnO zv4DU856beL8v#YX|3%{m=xwT_pf#EQ7>x!{J;54Y_4%cuE}x9Kc;%2s$X-DuJ%1Q1 z)9|LZ+0<5^t*~rl?@hN@Ao}RLS(xbo6fr%R$QRR#|1s+tSlX)576}>&V4%9%+p@!fMS)q+@e5RCC2!3^<#m7ft^?c;(1t@C-KM(*I$2qpB>1kfAZv8Go$|qj7J34_wV0Nwt}#+h^O;y@slTW{?7ZVXRzq0Ex--^eypL}!TP6l|8YBzDyZZfxxD<~c|=44+Y(fV z8^~XkfkTsphEv4yv<79=jD@0bDAS1|&@UG9*{)sYWe!J8m}F^RALbcA?JOP$Pd$yO zT8=uuO7C$3cKz&h%8!o3@8|-y7ACb^V<34IFd%_q%zTB&_7pW>s*rZzUl$>tYpH<+ z^D*Yd8sEnk{KaGS5Ecdd_Sjx4s6GIpsW9b{$n7EIr%s((xC6{EwU7_d@)TKzf#0Fz4$d*?+tswNBb* zu4p}{vC*#jfFptXW|T~+!kCN(vxkw_-ux|+y0 z1I!k2D-bjPvGn%G^I-QWf7Bw704ckkZXWy*XoQt;3GG&1qqVIPa9Ug7-Fpw+u0(#b z7e_^QSkwc|UY)`JGpcvwv1D8h>%_9ADA7TL(Z z4*3UTe6;r5xgwym!k&Mg(KnLRC&>WiFgwiF28_4;y8t#9_fNc#Dm>EHowo1bf4=qB zy1toV*(vt(Gaf}fiin5+$}x9u`8|Vg; zH|O)S$Kr<-{u?`vzN}9@`H5#(;uc?R*_Aydx(i;NK!*q4nY7@Ap6~UI>SBO1#2!5R z!z5BbzMTGjnM{tGnQ<_ybWH*L>&E38?vrZ?K*v>*?Z!)+o5nYfRyBv%E|IXe$|rs* zoBF>j>d_+z%fYF*n^xvWwY}~EovaNcCEpC|{_)4ty}&HquVUYH1aP55k0~|A|E;_J z{FKZ2IxFky<;y{uoTEck5IbN9Ly7%{NZpm~9D}oOGWUMH#{*`*+qdXjs|R(sPVV;o z`8N4~S>5Q<`dWT?)EcA8gMO}XQb;N`kEwLQOIkxhkZ+-&qcu^^=Cx&wmts61>;D5S zbr3*4LRde`Pse)OvXy__6+(Kj6qOsBS+X-s(y^h{Qq`^8)L z6XgH7)Z6;0`L8dG)OaWTJ{9+giRwD8RrANyJuPcbS(!P{OU~clU0Vp0GZt1&A9hOV z`Zh^rNMdxN0y*>Ge6`{YU>|5YF(CN{zNDp2wG zw0T$WzZq?Rn{U5-3V6u^_~))#-797drnb@(ls?TFc+YbI&9M{4Gc-NK$qwCnfShG{ zw-NPOV2WI~Jo2v-*j}i^C6~axXk_I*&TlOL=UN}7)dM$#KVUZwA3EevX*mFRWT&bF zZ<@K^6cJF@U7Dw+`7R#`}}v08%A1@>w`XL-R);B`=>4P63&-$NrN;sFr-Mj2JpOpKI5kc{`Vi4S8p$TOlY0iL`p&S zCgto6-*P+481tAmaGQ<6@ne<)Jtm{H*Qqdg)b}OQ7ddR-&*PEqBS(LE?`boZ(sorR zGtX|L)_rOV*CQ&XOm1e z)n&1NKk&b;^S^9|uEz6rKKh0oRi9tl0^t(3`hfw8ed4W-R)5%FIDBGSNZn+E2p7=w z_fa9df=E!MxBh+=lgXOpSh?_`6OKdu38J45eL3RjX|IJod7tIcl6KYkSSNIy*NeD5 zGGRV}%iAI=6thuP^6_fSwfEOnCe^nw`17Ctmj(axYs;X^qmM5Vr4d7fmXfc2qy)uE zQR8sh_`w+1dzp&9bRpPUhuu;Y0lDB#wfhe0oKf?V_3KD@1 z(k4@*Pq<|{LAA@aIHK0=fs$GK1Swn?{CJF|r0yxK-hVjf|8>=)_<(vvNe$C>YNLzY z%wbY2HQ{9)*n=``=)V9=eUXo`%+@){{f)}Y8%HBK&G`@02@>aMz7M|d^?yjnZ(kd=eqP@f1xo0jPD%4$dZyp9Y?&ZyBJ7Ru zo$g4;qC5lKkoeytKJEOIOn)9bmitfH@u0otpNA94I-(eGJONy?DHM~dwME6%Y^}F4 zOu|kkh{D{=9#p++v~`iP(XQ)+xBVM}zAfqh8ypBHt;pdwBppF zGG3Oq32SBrt0MAqZ0lv`@^0fPpfrV^K#1W^{EOK}>n_}WY1~nGVsV3>^a}&(ux$CT zYz#pRREV{t7Brlkw>py%v2K>8SSe^Oc^|DZ`>tfD>0---cesq!+ocSc2+I0b68uf5 zUrz8x*fEXRhoFr!@|*N0Ed>O1;~v__B9E!!jf48YkA&}-L5c(5K8SnTyJ1VR%ls#}Dc;8(d^n&TtFhi^lPlue zg_Gu2n&XER6zGMC*7Hz9a#zL zeX>vWjq}^FAiK(8FR5NjZ_6Y&Z5H1ef%G)^i!)FyC*B4)|*)9?7lr+&+5feXI68BSe|n<@=<0Z)S+ zrZq*KY8ES`p0IJt@=EBP03z1+1XLe7pqi)ozn?(8R(SoH#U9HW14OFAzW{_uWd}nS z%k6;Hk}@d`m4L1&RR_{3Vs2I7A9lq9g9`+CM{-dJV#{J{9HJKOT!}wy_r-aqq>9oH z`s9CjNZ-Czo4_ta%L!?@IghiBA9m33m9^TpoIETmjrDiv^?0w0K54&2uh10Dw8p}x zJ}cm)EnKVYP|cG+?kcGM%#9%x{4y)XNtb9EDeOKQl(EO3YUVUlXnNxNlG8HqV#2<_oN;B`wRs{M&&%cSxtoV8} z`xK)JJbZKYqgX_&D04a3Zt`Q4UBE8B6V}ug6N#!1Pu<<(=dZ!uY>T2LT<^9F>O@#t z>~7P9QR@>-mYC}QdnD3Jd3@;Y_DdvHJ{XOs+BrzVunY&p zuRQ6qg2DP*y8L&JqBQe7<2rS}&`F|}X)}0~i2Ow-QM3;90l}@71KL7zjZS;59J1us zS4>*YbX_xqE8pAjXf+dSc|o*z`&r$Gb`qJ)_W!(*Z#>T&VU-9)WcYhi9PQ{KyyIKF zt$Cn2O(UZ|D6ww)e%#`ionpM*7{3Il6gBAf^}YUG+AT+jec`dnW;7ceCBFJ)3xHZR zVbPT?{v*jQ-Ym;U;8Wq%-a*T$)J5FMJcLj2Y6}D%w}}=pMEcJJog?dw&A|ZdLx>};(U6Y_27=T;d%Sjqw`^0YF;kNaD z=aW_R_xFyX;?F@FwjtN0bi-KsI~c#M;xw7H@a_1ElD@kkabpd^3ECpQwz=29K8-4^ zHkDcy5yPh?0xPLKb5ZPSZ?-vlwihvwQ+-+F*Bi~ZC;r>MzTpnwKniyMA+^=1Ra572 zpht^)CZI$35Zo_eG>=bX-U)KtwWk|(H;8zw|7r|M+6_a!M;++J#JhQ>94r2Qk*L=a z4TxWUdEoPwze|kb)qfN1g3d+f1>|jY%sf6F&!!EP zF_r{jrFk`3#o>oto`~s!LLSQqmFdKiuQzr76l9w<-|dTYJU+w&9|7aeD%mdVR~W%~ z5+Us>A;O#%{Scf+D{x`&U@njeE(8r@cyUA3RCj_k2r9aTDPgwr#@sWYOqY|nia;8S z`@`ppdt*oq-(m41=zchy|8|D;xAxD>&E;y>QNB`WkjY`2Rtq5(-bC)O~!y3{|%x)mj9!s&i^r1}tLE0o}%}`#pOt=Owm) zxqcvf6wJ$)NhP$>=F!%*W8|WSeNw1R;F@oOrFF}9=_%-YxH6-@6QFj3z3gc(lUSE) z|1Vr|WpsFd20a#?v<5wl)XxUiBOc3-;FebdU&RfEtWKOMl|QW}8;H(@C>wffJR zn+sEKGQv+;xRe_SsCd{W`A#Rbeo4F73gnAg0|UY$5+dMh8B>pT?mJ;=X~|1m3748= z`@VvDXxur>7`bl1!;JXLTI*|$ECZHB91gx-I`z`2@Z>~OnAEm`GR#_@Y-oCZFSx*D2YvvTt}+^<@Nu@I=|X3fXitFKEEjMf^`fzbkyy>@acB> z3gHjYe?_ij?Kj@OMCg~mW`eR`D7Ty%IXzD-7PBsF_N&RivR0g7<(SPt!To9$dAZf` zFs_)57X-igw&&PNklOr!<~+5lyy?TB8(%#B~WML>}^TGr7e z{Ulx7lcR-UQ%(~jZ{!CCp48s`Vxggm$|RI;(l%!gfQ*On7!$26rzgh2>%tl;newOj zu0o~eTEic<=n>rKMhrEPz6+V=39eOi>$RP|*Zr(&NFy3pw+*M}GwX{)BzS-yi(Rn38mB_ zYTvq7gamJUmuOs5&2Sgt>_!%7o`bk5y7AH+<#bIc}*F_j8cx&1oT8Jqe>>3&SYKG6L zv$yVbBWzj;jx8aCVkMx9Z`Tbq){Nli?X@1#H4-B32a~C#1cfz;u0s4=hwstV&WGo_ z_}4DRBzZ{>D`m>lFodh60x8YW0sN@L_-y*EB(BY`W|YS%i?agI76Zac9b=@)qz=|g zHM2*&tBtYGrmNatb;0`%=TKoDxJ)YzyLC4^Y?(5ZRNE%;24O9qCo*SjSJ4n5zR~nG zMk=Lt&|PDS%YL=bBDw3%Qd@Tsb}6$)7;NkDph8KlCBXMGnYyfF~^)FIr^ zNvB11e>#3mhVQJ86^c6O>;JyTez0oMUagX$k%=mF!(<%n^%m`&?N_QRzoN$7ip|Dd zVty?r`9gatYh2TU^FFUHS0P~wQy09+Mqq5V$OC74trc(BdZgKqAD_qE2-D3oa~@jq z>aYN2BE1=Eg<%$G+NM`JMP?((o;-C{c2aW%XZrIHdQ(~knrGZy-&7Ko=6O;yOKkjB zQ##AD)?m2J^;$S#V=}W;vv9c7QZ)iKL^RAzsBpu`s|{XtbD36CZCaVEomEAVxYP)` z{yn8@UTwhXm^QCvT~rUoC4a8a%#=0sYw}uLFBNt}=8*(GzMQWh4z8qVm0zs!CJ^cv znsZ3+^*gXiG$~n+f+?@W&!WA;anu8bdGpXb6M{XZoH-8JtF9#rCrbAj;nwIBnlWsI%<# z)~K@iGFWU_O^9t@8R{my(A2>UtiV3K^owkphLlfqdtcQwQL89z*KbnO>LNf_H(=Sg z?zQ;M^{;Y7`g~UBf!`w$pMfa9(p}5g6M-f;-c-Ru$WY*sKo5!H6PZoG|Ska|;2{=*5x3 z4##9QqDmFMEz=9xJNX_4t$^fRbnDGyjG;@Wptz2lJU_MUN}S(FX{AkQ%HfRZys?hK zD$OqLSr$!jHhtJ@#HP*?9*t9t*tnEkTecIL%(k4OI=i`u@VtS)HaJo!r>G@bx0vJy z2RaEwjv+l4d<#bAhDe7HdG>CNWT+DqXEj`8XTuiY~NYYU&wUzb|DH8Bl&ZfAH( z!}FrsYELP)!YS7x#-#bg+QmGGT4AMA1#!TD)Ko_uK?XDC=MUFW!7gpq&!G@OHyqy4jPjOkh7iWi~Gc2(0M1WlA48kX{Y<=oR#tVv$RPJNeDMUt#qPq zNgsMRA2`}Mz>|TQ{Hn5$D96e8Vx}e7X^^v)HK9GU+U|uJTMKRltk4+@*uqI|OWFHR z3ztsg<&Ul7Qz`L>b;qgU{qs=;0n6#HHM7Ye57wMJo=S{{Sq9R%YmR#i{Tm z<~VOGDgs`4P4kGZ?7Da4xe3t|Znf(@w~p83evzphx*4v;q^#EOSb1@zrV* z-oYsIbrmwhF22fMI(ut5OWrm~rG*1uTk-jH>!VIYHQa8UdN1_T@>%$p*_=Hd%y?b0 z6s{Y)qiX|XLSMnipDpyJal1-GK&nnjE+Yc1Xz!}jSBQ_oQ~6I^W%z}?Osa@2k}aIY zqg&ZTunAs1PqrPp5N_Z4UaH+puPONfLV<7B?!7My_r7#Vy?DR)(CMvc-l{U3Na)iM zcbvhqQBuMLvNTq3i>||9NLrxGT-6y-C1b9wUmK6AnTn96q;#>fSu!MPC8sKl5oa}G zQU9FX0Fez&$(LVkC$vB^n!7LU-MhQJ54+n;nA#}SD!N{szvPvJ9Enx~OvDzwm3Z*f zo2}aPA)h8OyYd45JjAAb^=%I_2lpTEmoM5Sjd8|W!|8O7rFWGH%$=KYyW){`uQuk@ zT2lMj;*$uk(vUU*&HIx0u1YUx2#0(IJbc!&YI7s2w&G(ImCLG>SOz-6XvFL|72KXiq?C^Fr0dG*!gQl{xl5)5;m z>>q-igdp#f_B1ZFuX{b(6&LL0uliO`kh8)qP67T9qCY2c`r;OC{m%IZHcN;!p{k9k zDP-&A-VX~kAVDLMYG#i7Cd-o+y;1{fSC!2U58y_Y|JnNaE{Pq-Ai=fJ3c+j8v!~1lnB^b^%klel2(9S32Bc?;{?>>5L`bH!eX%#sXY^bo|jYpns50`jZwa$B9y0@97 ztEiihvoL>tC1RJho5hl}*to)m@6pE*yFq6mRjY3|TPM6jW!Ml4wbfm@e&Ee)HYX_l zQ14f6iKot{;)1{9x>^cWz?KJ;PduYi+`xwOb5$U%X-r>^XW#iSWj`{sl;DFJ}1z4406WhqFYLb~oa5BWkl>?Z+Ki zy8X_MEx~a@zq>$d$ge$vIJ5DvB@I>m#(DX9<~(VB1EP&(_E!*Y2{cXgp}|J1L321Z zq7U5cK7-mioDhC$XSzYmte{QyzzV3=swrsbe)g{Tml-0U$S8j+ewTB&DBhZ$c2!(x zc?*HDy6(Zq;WqO1lbM7ynQduntJJSV1Pu)eYyc)^oFT^hqL9Lo$#m;Q)Z=r+Y9Ct{ z1wo#^SEI;CGs0dArxBhSe4K(!C0LMCx@yFq%r(pxD5G@sP>)2{haR8ar~bJy%#AK? zl;uJZboeB9T=L__H#Mj{Pk-01Z%cf@hAOtbocFOrts;cVEVi&dpR(o2Z1$o;muWJ;H9 zyRX7$bxZ1SHt3`qw%_R93$M&(kj6OjLQr-D2GViIJ0Z~c5E$>jj({-XFCQ1jZR}Dw&BM@;o@i81F(GH-%?QI$xJ_I^Aon zVWU-jdLRJi82D;_lN1R1N|?DN4;|Q{+_OIGs66Pqn9WpZebuFX?%kjw~W@ZS0fgiN530PYGK3FdQ?%CYw|?T!O^NrX36_3&Tidk5CNEHdxtc0iusi5 zjM9irf3?DzWkP7K>MQuHG>apg*#T)4D}ILa`n+ngdBW#B{_XS!wmg_4!DpS(qn0Ue z;S;FRdS%nnB!19AXNE2{x0}=3Qau-%5plc+iS~zt#WG%aQhG@Y|F^zE^l;ei}M(CrSxkI%&2`I_Ue|V z#KPdKcYZ-;SyEVbFG=|PfQRRdrPoHG?&bI>@2~dgv zAWC>NxhSdNEH--~veX30iIQ^0V4%7)_DVC&7AT|5!j$@5{>xS2j5#B_3w?Beuj+KH z#-JxzB&IF=D+WxogBGF8=PPl_D!sjy#F^#Z@IF$>mv;*MUfRn|f@q8p<7zL(2AoVU zC~e?j=3l~Q@oV5-B!h0jNuNSaWjJQI@R`FOkU`lf-*etuJnT(`o7UAgp>_Ki#1|RF z0@W8*Vvs%fSeRQN$PiZO&?~lHT?=1OiL)m9!{an)$#^{^A%a+DFIA{4!P4?^LBk}p zu-ZN9AR%`>g9=9aGO;xG_8Lw4LChl$LZFz_uyAX3TEaobQ`ZU$HH`=6lnKyNQC}eb zX2O_Dnr0sy>1ZOq4o8STSsA9zI(I2VV8FY%lX7T~g`Ur8k~2n(>7^M_JboecRK(*$ zvk{WxNpNNqDYwnrOmpOo&R%itUgm6?1Bxx3TkAT*ot&CX{YXny_2yGWaUCHDE|lCN zn=IQZ(`&^aR$vCq;BOmItuPaf8^&A9U*=jJBzLIsUykHf^RJi4P6&ZRO(-R$aVY=g z{Gu(i-d^W@DeX&Ls66JVDqhn|e(~OE9O6Dy0!bfq7bz{n2 z&?PKf#ovL($R2!UY21Im<9@>0r(icfRob$hoew2u4`Xd;#$@hnfUI1+Ix%vv6@`Jq zlBE1Ec-VrclajYO=dxg-M~Cd=3ixtxb2V8`Gj5s}q-dWL;%PQy&Y%K0H(@E8mW{Vl z`M|hYx@4L~x6Q0Ws~Z~T0ftnMCjsef-s<=dZ8{YFrnshlQm}Kvb&JZU%v5`_kgQXdcFCz$=>@$<(krAo^m;u#MU38I!(9o4b&LOYgG;a5Kav2$0NU-G|nmhlE$# zJF6(tXY@5SI^a1^+;>3XP9NI@wDw?6%`FP3F*x9+f=(6oo!aUV#ZyBepTUE0+rIZG zH^eoUE>CZ;yno?lORA5ihiz!a)+(&8%-DHf6TkI?DwS%OY;{oR=d**44t2HnxTp=N zq-eF-f9Y@cJ=RoYptX9lpymU@#u0Yi62E8g;R=zs4>dnj(v2v*=OR313;YzAIFGnKD5e3`2+cXDRcpG{ z#AqvVANiH3&hNKeLn<^B>8D^`dLKuVkJ`{m-|s%WxuRc&C4CH~a>?I@R6Mttb(F{{ zRe6eXfqH2m_bG`&eEWPS&Q#B~Xa(Ubo79J0n${h5;(bM!_>?i-x!?u=sHpe?@a(K6wk+ za6nfO*O>}<<~oQGwKqz`>p}HxnCr(;QOpBhGp#0_>37RD#}S?%wJ;LHg*&05*XjrHvaY&Y|grq6ASO}XK+@UcMIhJ@6>$kz+J#6C67i7^Z51j z4f%h#l!ofX`{tNykajjnH7(mS7UJhbyK)ASxZI`!62+X9u(0*(lqi2LcsWLQxB3%J z%G$Gp)~gn>V8%{n`AP^?z-B-R_pH?S?G!$=ZX}wj6{>>UA}@L}i^>g2RTPD$vAKKskEBGa zAg=2M_~bX7f@~y-CA2X2=E8BgcvSH!iNXEe1SU5C?^uQ=^dO`()Z?*c3OnWpR@dFQIDSY=7SsXpzlY zMe%;VIXM%`;jRz05)As_a`2233H*>{dRjvx`L1S!wGOuIy@}?MlS!{i>(SQs8}K5k zKsV^NB;{0-GO1Z8OOZ2hUn->d1~*AyTBQvlK$sY6@jXghy9l^)F>fNOMD)5X<$A~I zyKL0k;v;9vwW@v8%9)c9QTDhjRB|eLrxEYPyz$^eSo(d5U)}wV>6%`Z}xi_9UI=^rC7X zt+_Uu^f8l=srG57itDZ}Gn@STbq!#3Mgg*CA@rnLgbSezwRV*pX9I4xDz%@>aFJD^ zBUMH2fCg%D_R|{adu_Ge(1um_G!g0e@?ea^) zh^E@+oAYh>+#85-+fet;N^~AW8}?D4W?+z>7V~l08twrRwl1>sKg6J>;8lpyziL> zG6!?YazN7r59D>1NAd=@sk#BdXp5Uyf@Ks=%$apVEsp&uOl~ zY)-h?xVVHL%BVKB4kXs|XNZ!`szd2oqF4j)#SqWjNZpFKrOokiL_R!{xp_ZSlwy0x zdA)yXUWT$dt-N+{{oGdhwTF`wl2fxjhTEW8}OAbcN!nQAK@4(Oy#Da6we#T__UFgMf z?XFqn=ETQKow93Q6a7nf^iyO}a>(X#GIYXxy|r}Ci4K7f=zEzJ-YgWbImRd< zmIQ{L6f8(bH2ORk;^b9UJ%&mM4!ylOI1DPRcqDo!Khru#6yH}ZC7iWIvl>gbcK=*g ztfcU^ovV0pZLqG`3S!pBGogo5s!BKL+SSwk(rPsZmj;SCNy5{LaO9PpS`WSA>>*S- z-Emxt!KDQcxeLErxEyBL+!xPvTG@XU-rK9R?o4MRwP*fJVO!#C=lvj#GO{!SJ%BHEcFa zbz~F~lW^du?sUeCr21!$>h_wGT?Se(70T$7)^N2YQ?Guzgp!peL2PmtsqcG)c2q-W z6nf)U4K!1Z*9!lnAkpaBFWEG7QFebygQ%=cQ|QSE^;I4HhvapW8nJL;L5};p62rq@ z9+d~q_LZ`WEUz1djPh0Jf8dPnTaM9fzWWiZ__4N*V~W)5Y_-!=FWQ2=(qY9^Zk;r)+*Z`qB~3CwveYA&zquCyxK7e>-qgCg7;V zhRknUDv!0isk1cC0GEfXwR?7#rdDn>W%tqw${ODn@7E}LCA33{PrN6*5zMK{Gba5z z=L@UTh4wpidG2xE<8!DO-{dQ7W*46Ue@#N<^xr>%RyB1l{!Nyh0{BStp4YMbCUed7 zP)Q=>zIX{zbjK2$|CVF%m7C~u^~w^pX8gvi2ky)yE##g&_s-z_nFepm>fNesyyrh4 zsGnpGoPB5@eZA?}HTB>l=iU+L7m9rJ2M&BaVy4HFcj@fnog1q!P4_3HPMC%q;hSgW z*>k_d!Oi{4v6w&@X9pi5;`wCZ{N3|<7rNFr3vR@G6z2u=g&Y;7&z&lMq?oJo$9~qa z0iG%8&vjcNQgKsCA~)@3KfRHJZ`V<@n0Iz2v5kQFLxrV|7I{{fXCm44-K0aP#iK=(6cpAC$G)T5bJEW^2ipU6 zccA#{S<$AUF}G70%XO-J95P_@j~_U2&z~17blV?r5OW;RkU3i@9H6sPjH6*3c}XgO zmv2(~g)d)JI^X&3w9?Uq{`qk?aPu)0vs!7EuqKTyKh_g_bKgBtJSY2DVa;yGH3&#a zmrJ$S2MS>|(6v3zM(dgrwaVYks@ufNzLsO{V!HG9T`p!iYSfzExCj_xv05;{@!k$7 zOIvdzWY5_fy#^w+=k-7A*O5pw-v53#$~1Sk$8G2Hw>l45ic#?6HTD&hD?Q@uLu&~K z6!%}!AuG`KHHi?*;x;i zxvhA$)|upoG(ML5m^S$o)ihoQpEZkk_JLzj%w0b+;J4i&Ez!NRVmoLc4U#!)VjHiE zuZ8|y{}Xd!k$0)=&pHYpf9M^6o9h2oL~%M`_FLE{$MyABH6mqjecSY%mGto!iX1l| zL{#)|eCFj4<`OHCQ6d4@~MS zu{MN;rXJ=v2>IiJO5Gn?DhW%mqgl*6`0c2}iQ;cUnPsE&`4rF_Ki3hR`u&qs0{dw{ zbqxO*k_YRa8AGML``?tEXB`sRAUmbkP3L~Phz!9Du64Ec{HDM98o}}V{?KDb1VrEQ z@@4ePk@??B)N5l!fgBINh>VLH?7Nw>N`$YEG|xLm$9|Nyd@oY94|X(QZAoYJwxM(h zUTA37`8_3RrRBlrF7CL;_Y@TRhg*P3^nURg^M@5jYM1vsaf*yNBIL>YTiMp->^K)p zmHCwTZU3|>LjJ0!uK3-OlLKK474hiT;tr;3Sgpro_3U$!O1+nNttENgiC}%)$xZP? zI*LX52e$DSz5`!8rqjbx{(88*0%$c*=r8$LwYXY|=jyKhPT1qLU00+1#R)r)u`d>|4@5oiUB|geSuB*_<)WqAd}3B?m0z}eP0(`25LWMSGH-e@ zKlycg75B4*IIEu*L97%*oUV_{vK5*XzF>-RT;5FK3DBcOpHp}z^tg%jjLzHq+C+AAG9AKw&T)r}vAa9E|Y^`EG|aXTILc%8Y)K;*p3myrw8Oohyz{nTrV8rt(> z+-9{(+?~X=YaesAMmg4i>ESb_m!P|^E8(~>R(-wuzQVm1;*d{llQk7LSo2n3;?m<1 z921y4)EoKYfndJ80HenR2^{fC>ZzROsrfXS{X0zQS1J;>uHZ`$v=(acklB+Qs!clq zufrM#miUsyWUjEa=WnDBQsO9__rb0cyYhyjj<0IVa#JS*6>lf+Gs0n?Vvjw)e5CME zPXcoe!oe=FIe8g2`v-tVgI!Ux_DhX~YBgk-eola4N6^D;R&fHyf;TrliWoOid7bOa z9YJz`*D;6i!g$v6`^ti`yFNRKChN0@n>kc{Q9K|io|w4g8VJh8>gGpMa)vy52X%I)*@0s1!H~AGiIM)ND(JJ;JDZ<38#h0X^Ch%LBUVP!(VSugla@f?r^>8 zx)wdd8oClQD}pM9Dkb&-p$#L=CMgWwzG~uvaZnE{)L-28OFx$8lrE zh|T4mb$iu6H_YAtW+2!%sQspks>YF2-BDstO(6JE%?v+F1FIxQJr6r>D{iR0f?YN% zhE?Z^G+2R_QV(7{aXMme$h9w+yMzr=Z^4X(LWpGSZ_ zhN<_jpG;ZVTu!1qVBz9sd~GZ*eE6m~DNImY>Py!~@ZQ?>mieh-c8P?c*2{wPGnLWD zKE}8UGOk=E<5aJ)qi8RRf)|Q!pFbbn7o$OD>QeaVN7Y%MTzR$s>G4$X<5%J`%~!9E zZ*^%kC5C9un^C{*3q0!eGou(m%c zrPQ$h%}0DD&W)4rEC*}M!nq~ZrSR}0j$ZH1CZHvc#4*w~Lffu!C0P(Bbd9Yy@*{nj zjeF7%%3-#;aOy}i7A?WqVKi|O#QOg5iB@Bs+eN+skD5}r!OFB=T}8RjwoH?rO$yH# z5og5PM&VP!-ofr_<9rZ%CVNTh>F2)0kBJQsc2$zFX!4e>RRy)_ez~Zh)%m`@5g`m{ zxXRyI{f4sX3!Cx-f{pP0SGSkgYbQv1-s5j4WaiPYiF(}ue?4En48*bvuM|a#?+Svu zH1g)kCOiz!VAY0M*TkT-0dkZy@uZJW2z1!~Bgvw~Hl#*K{pwcD`o060D@#>v+1Dy~}9;Sk@HnUIpiup93 zI1iRclDakAKY3|T_lx4a$m<38!?@1*h2x^1Bs7}rD_0xG&5my#=9~>aD=PS0(qC5f z-bh+$9Ot<2r?qE?ART!WlmOF(3mm4|hU`o#nBgDj+HKRsuH0z)0xj!6Yk6C_-l&JQ z(|*tpY;ff0g*q~nLrv*qx&?jhxapaH;MxiS#_0+G(tVg`7N2rMLE&pR7-z41nv$MW-Aop@Q8lE`n2$O zl8lm3r|7n8x0hl4}vH!lwhaZs9bQq`#Yg2~imVY6 z?;`9`h=YQHp?l4u{6FA(uT9?y#e*X1%~4T^iKj^u2+bYBZ9$fl8nyYe`fAmZS|P$s z`iL)VeR{aJ{+|tB@m%pJ1kJwLJsl)t>onux*HAn;=<@gbnAHoY#`Z71&vjyz z*c>X~mA*$^b0fj~R@Dt{=AyG)g!?_#hLnVvKF587Xd)Qrc--a*Hl`)GAEj_QjDuV}cIj?#1$ zY7=?Ii>v1&#fgjP)Qd$RpW_$-AoNWbC+3U$80VFyPS9r=9i0Qq3kuc45RyyYme545 z4aUQWA}==Y{}@wGjEuc4eKIW>Gd3vbExMkhn;SN%Rd_%?!)4}>4L7WXE>UB`YwW=*4fEb_ z2whZ`T&k9>=Q{_8jTMK#Eov)Uc=OUK)+^tpDuWfIV+xJgX}}|x1hgI{2!{`GpMOA zeAiY)6cG`SCIU)TX#$!^M-dPaP?07jNH2jXy(I_;h;)!%f`uZzcM^~;y+aT}P3Sd& z1X50ZbI$*~=lzzMok?czJ!?JdDffM?73()3ry>T@GryVloruou?KeIJC0yd|9f53W z7=f>Us?{~kKx!2nN)q(g9>oAzh@D}R*e0QFM$Er;<`rS`>rYJ{gFHvr0iQAi{>NlN za@K9)>@CjbVQIlQS{a(5C!<{CJxX6=Uib^Q3%6p1T-)3B?Y}F##emS46#HqWe%5~; zP6=Os9G$3*HltJer9eW7~9&lW~UUYwE8J}JP%YGwkiu#buH^rO0B)9JwOUl zK%XS`x*o4T#%iyVZ1a{eXPV!*!@qqw&RMv&Xu{_Qz8Rqv+?=?PQ3owRrYfYNio8E-ERR! z%leial+^-jHzV0E#CQJITPFGsEJuvGhxNnapd;Q6)AElzs!8Z4)w-aybYawd!$ruRc%kBAonNw zPV9K%7`*Q4Jh1N8O$tAsllp5HgG3LSx-hqdpPXPJ_LCI9b8J?9x`2s_VR~@bd@Kaq zzKl!}u+xoqd&sgnONfByVE3zRg>A}6l(6Cw9k=Kmkxl>bMmvNgHMI=W&mCb3e{j;P zvhSsO)EwhNm#uPmAW&+yS3r(#zIL{qSBq5koi|wfi8d=nz4RXvy~n$U0GH^~YA1#a z($_P$J8y34FUR=nl*vIX)GJ@NeX?@do$d|={2Wo0S-CJDXivz0AByv<8zv!%U|5O# zovj}vXXq5hB+wVSko6Tbp!nilK|u_NAe8~X7_jSw@TuQkFwboL{8*LFEDNBDdyi?1~Xr@^!#_^Q4E1R zRWp$MVqjH>XFTl^P|saOU@qpRh#g++L&tMp^JRfzlHwPCd@!)~|34lyXTujgGOYjlzG5e5pBAiL~wA^w5~A@slDanOA#| zf0Ux$HR3hu%+Ypp`%eNi@iT0yORD?UxH>7)bH1Z-^O-q^^% zr047@Zdj9^ML6{?pz7y^5=qqC_J&|8INE-wx4~h2Kkh+oAIE%$^kd=E)YB?e66lCF zFRt`aj*ho%Y%T7y%J=Egu7l92E7YgU5(3>O*Bxx^J@#iZ%pB$jOn~3kdxR0xYk`NV z#d~w>OVFiMB!>-;%4Tb->g!{q^O=I%xXNlm>nQT0T)zBKn_01I!nb~{T;cVLRYNIN z)!AE&m}C9Z@~y3`V8061vu&HX`25IMK#p?Y4e!t8??ZpHs~;0RySu=O#5J=>?NPT)Yo)54 zdZTiD?NYpdhQk6*u766N!+&%J0w!F`>GM4ySAI+jGQMm?wlGff)gNV>+kKE z)pZoqeXj#bJ*$^@30n7CE`nJ{K{L_fGcTp#z2N$z1r(DlPxC^^x ztk$>PWwmKCImdpZ(B#YY>%xT^`-K`jkxXVmcF9fa;&-P*2A5=lA=9>z?xN^Pvp-Rb z{2IB5ZEBGc<6VNm8Y;n6ocxkXm)ouvTD>=^=nP?fd1fT>_yt4dUE9|kf)%UH#{g~# zdJjha>ISQW4^|R?>-koZ4Fs9W$H0S9JQmx;w-+Ec`u291>f#3 z{>)J?Hs7;qA1+4UDdyCaykd&0{&IIlYb32pHhMd^*dixRLn6vO=;ZH9DUQ#j<_NRlfM*U79F+NCo{}?XM}fC9R&uUofpJJZ%&L zL?YN2!zy#Pm@&Ak0wVnpp}L+&-#Z6#=bwKJ2u)BBVGzsz_S#<5XpRdRF8 zeMK+hnp(Bn{(aDkB-38@FL$`(uFVM3p(M5&!`t?knxzawV<*mYxi7k=aE9O?MTL5P zcX?itdRbN}(Y-cwKI!7f6#(nHScS!h=q9F&Dl5kXbGlz$uIK3=Con(BUbrfDu1oNz zl|XP)8slZQ$E!RCM#j8!>m8n9i_oY7-t89K#(S&g*2@iveBDeG^y;PC(g&+`w9J2;ZLjbrPo{l4K^NS$#ebI zh{a1xJ95L1pt?r;3}dfZuY1E7f}Qs zl};tZ~A4jZk?!H_!^6GPRZy;IV;qt*1x5<-#$IU3thjvu*iz7PGy7LfFv~EVH57lc;*OAS6!1dZ(w|wH%(Lu zlyZ$!M63O|J)fuC^2pGlMg|>;zSE|)cnN86p!w2{mTc|gjcCm?)#ab?=V{jP8D{A7 zefVwuTOU`JTz8X>snv1+I`nrla|^jHx66uY;XN%>EO=5bBy}5;d(P&7@MQ$z3GN7 zImRseo=vIKQTXxKHbID#<3-4{O)5Q#k!^x1{NlMKPLl%~LWLRk2CoRWT^4+2-*K@> zMNo(I6p`6hB=kq`%3V3k$lmtpFw#c=8rgFBYLXIe%`UdM=Y<~Us+ftXRVD(5udXYL z3}f?M2Rz9SN!WUP2Uk`9@fyFZ$NYfiA{*5JebAaK8wm_)#|xZ~Mky>0InykC{S-RV z^cUIYf)msL&~OPC8znaubR^OYnEHic{Zh;%#w}&Py}M@75W$kperqc52IV693;EC9 zN<#dH4c3#X`iXtHi%6YYR#aidS&2_^(hpw3#~~M8$1-yo5l^(??*wlK%IojDX1;%b7wNZkQ6vZLh9zbrt9|zOlzMM)G zs?^-S*IFh$;*yiRvuaj_h0B9iir~sDjomNIUMM9BtKL5?wI$c}U6P;KDjeMO5)lvl z05^1QYf$qUcKS!4NSB(=O*DMbW515oyr6?2hJ7HYtCvUuLL~fk+XSV%5{&93jo`|q^R*fk`-RX)kwZ*Vh zEI`AJnEG{5<#hHaU28@mQ0vK*LyzxbRKj)(7))s|xC5uV(I+fAiM?`WGmxj;Cy`kk zgz|khcPLIYcj&^eoAaJyRG9|d@L#<&4YmCdd-)oGfz|VLz=j?DR5CIR*<;MQK8zl} zL<9iV#t_}O1x1fyyU_kl>OqRe^T5GE1xGVn9_reSk|Kg1ZVKcSV1BH z6(5+yNQtyE)#g5p%w5zcJ9iXym`AXPr;k)_I+t~JU-b+gjy{)><=n(7rS@P zro9p%Y^6@Px4INIq75gLMGXO|U!TEbB`ZKyWmsPkTjPKi6&S?>o0)SSuU1W8)egR; ze>3;8`xfh2yYW(gWio(enI>eYb#ZQ<`*4+47g;h0e=Wl*$j2D43V%z^UbIpPjTcYbVA;wRwhLA4#M+w*( zE$73~&m1;SGjAR0i`*K&2uPVzGPya;6QzCCTn6C3RInwtaEgs_+8vbIq6R+Xwb{=T z`7ze1kT&ODD3y3HVCvcmbCV)9Rss&A=N+!i z37`HWPpV|l>|t6K%u7@@iAk8fMqyXhz}!;DR-OlttXQ&L zt~P3eKh)dKuqfD^?Uk6~aTg;NUPEP$QQZ&B0^f%zOlxxS#GyPjmJ9tfGPe#yqBSP7 zksB~v102UQpI^Qikf^+#LK}~++5`pJXgWyn^ExcBxpsNK_yialnj7bkCS zI5_b_U9!Hl@}KZ4?7%(W2Gp%1mKmO;eGnmNLCwMABDC9g-~^mydyr%!^@Q$w^lsyJ8%Z$f)>qQ2j9F{mPO|LM| z2$w4uzbOMoW$MSTDlF$aY!Z@V@34R$^SWGH%h{hhk>4RtPP^G$aMefO>)z;opIAmn z2P?_fX*%omWkpnm;4@W> zw;X6jUNM8T|QZ;8SeuOwADA@D1qTt-^zFh0VFSKo9)=a+ftsa)bo{D+)W8fK%Rp69-rf>@9yY6ug534!wHc;|E*P&35cG=*^=bKY;;F%tyhwv@cRDz8~ zLFGbzT&B>H$EZ;ExK5bsPnNz%^VP4x0N^OrzdBX`{7r56ppwvuAqne_DF#Zx7|ge*`1neU zcQAdr&aGDu_149vZJ&1!_6BY%;AoD~#f>poeBl zdJpRpT|3LSEJSkEj$b%e2Q@BeDP4pY)%l_b>mj5XKkl6kO^=+4Dp|FeuPuDtp26IgvkN!pkCt>0Uh zA6~EdAwkPa%@$qQ$@mTe_NcOXCnmw_y^QAz4cQbm=_r0qs&lq=Lc4W^;OnU$1=a_8 zvXQsjIUm@(*Lt((R!uHrFuBZKw_aSvdE-WN9Mh+YPf-zJ@mr zFT+6h67%_+mil&2J#(tHwhN`?uUyg?8^8({ZZynHqJKce%T@+`=<;iefdyA?IuEZy zcBBejNjmJ#uM*U*GpT>QXw}ZZIsCx!2^-xfiIOV{A6hifsAHEwMJ-H`&ggt6Y%bf-HCkEbchdAc)YE6+su#RuGQ}FA(5?+*7X!oMYienXg#R9>dwdY zaQu!C6z}5o`c^Yc!i}kkb@hjGO|eU&OkYS&-iAo~2;DSZ`_!%AGDXlO@uNgOQxki% zV8hoTM`*YdBshb!7!M>{S^*chV;RquB-u~>i!+->j%d{d_-F(QTIuT+%&*Lp{e8Yw z`DxJlY>EKsYuK7%GhUj;qs|gqcX<&;`OXqB-b3d@ul%qz{I}rk?+zbJay1z_H(#9@ zYzsC@5(XzjQBk*_w%!MKi4^*B$Vp7azm0^=S}kBjdtc%j!5Bc z{^qs8NoBkN%?BvD<;7H4q?7Ws)2Hjm;uuF9k8_Xw zHZbWOfDNo~wEj6f`SnwH4YQ2iQiaq`cjge76}E)5)jp8TbUs;j`0GcNno3$t;!= zQ$G~nF~!oS(rnum<#xmO$hlVxws2#Nv^aEHkDi2^EB1&oplJ@)@=WX*O)<1eLUWgX6tQ z^|?L1VmpP!v)d(K{yNSwqhj;Gb@=$~C3)^6evzO0JR=`uUaj1Wh;el|+t*k1>J7&; z$L+9rYF2+I-EhxGukV$@*L~PTqsv8Dwld4ZCC3C*PFo+jShv=HdR*=xlk7V4kvD*}h- zP0o-Pyj#u!*5-dKt<*0$aSel@IA2RZzJ)&Tcmm!vaA~FHkMsiuH$WkDw*WRtG7M^# zYMq+%NOB0S7{n%4lm;a!%8IidG;uT8{KF`k8<-iv#c{Vup32x*u|St$``GuSU!h`24dfKW9Yp0)FzwP#~4YnU8JRq-m zhEi&G@GOsU6IL4S+ML?%>OmllbZ^C9UsPd}Rr-n8Kq>c_?f6B9PQpL!8=!m>Nt*`Q z{!`pDnJ*QA9j{I>y!#+jL(0qaW`p(nP<;WPk~Vt}2GqO#ssmk+jnayC82V{=hF+0? z9!7vsC$4iY8+8ke{f?<=k*p$CkiNCXp#@c%RoL9zc9m*|pjI1*h8K6ifE=lW4<#0a z+a!5dkW13k?qHBBcz}`ROga|W4{RP$+1n|w@>k)Sl>VPgPg{&1 zPjhRHu?J-$PGy6v6%MC@@Vt#N?-qxo5(Erf)lu;6*}{g$?2TU{uhv~$C3YLv1r1_sV#;b(-uw)V8lKalewUjSN`Bbx+GsZyDh%ziYZMZ(Vu2R5=_Yj7 z#R!pqL1z?i)qeN>2*nHX4yx2)t&_6EoO(5BPGM6sQ{6(YSEGcWYQURXdcV2F*4cI8 zN5w>rU7cgRmKUZ2K+TRx>9i@UAHU>uBCDE*SnaD75!2Tly@son2cK+9coq?JBN-jo zv97JHqv3Y&jFpP}@Eu?ONsslOoTz^f(epB!5sCr**Vd~C>j;P#t;&bxquY1aavEAs5TkCEw@m$DNl4dm4Y|b6M-=GO!Yio5esMDqgNOMSGV^D z^i>O{(kBH`1Xfb@n$Yiy-RfG3GstL7 z5O@C01$Esqc~E^hlK;H#SQLn zOP=XdYR&MC)-BpOcmdwOHLxXq-}Q0K0Fi;MjQ9+mbGGm7GIQ0VIj6ohnW$)U3lO1F z;}oo7ci{@H?;$WbuVfs+(DaWxOC|S$FzK-I-?ZivNY5(-Q80UWUFqNKh`j^q1k(sE z91T2Ap6o8l@o)~5B0oVp+PFd+Hq>N`V7m~H*yK8`^WFje>q{TlZY$I>;5rj z!#0Xkd!Ljzc|(tM+uG`Nk2y{2y81Ana{jfz9GX8xNts98$~^kk4NFgP`4iJ>W}E_F z!F+FLE@58ub7|~0D;%xt5c#MjKgq&lYTbqev~lnc2WO(?fFns^e&=M@8*((Lhb^xB zF*I|Ob)n6P>izN3(1S`5fQuMo@%9YA2U!L43RB{O2X=}oZR!qvkQE&ZhrE2yo!vlW zYIarWc*lLs7M*qV>ITq@ zNHts^U6^8}1et?mxAcQf$9Hu~E4y#ng>hJ`AEtt&&UTw2rcQau_X~C}9R7chltpxi z8bMpeefut(W%d7)H~!Bgh#K3vwpFA^%KA-N+b@&EdlV$fx!8+*n2Ov!#g_-o<4YmX zVwX`3uIz1j50>h9J;!y0i; z|7PpTN^#D|r!9ICAH4W{dwQAyXb+zFt%jUUh9*keNoX_`!6 zgXVBWy`4vQ{n0U&0C;uL8J;*~PseoSzN9jX1)3K9PRsYO(_dDL$^_;QE6Xl>?tIl) zyvMKFxaHa~H%2Wu67$)i!qKBVm7l1<-!Am+c)xj*mK}WaFa@?!24AQ(Fy1bs#O?`w z+2n)kN=BLd+EX~5RBjfGEZdExho(3hX$bn#6S)ijU4*f4V0BuWEa{{x3^o=J%Fei%M{LK4QiZLwl!V!`VHgYLeb1isa^>xb-a*tHjurGLSZO zS{AxH-?-%xL{uw>4NjmE7ILrw#$aP|y04D6am%cA(b;{TX!>uvr&a8%gh{dwk;%H%5wcxn6%Rru%y3%k43a%G)7#1w-yy+`GaS{|fTy`itAR z?VyDvSWhx^YQbSIDe1%01-~4RDU{1##^DeU9XLLPs!c%B8RQHzUE`gRuW2-=t~Ty% z$Yl?{=l8{=#I)QkU-K}u_%zgpaZa9YdDW5tvL6Ak3?9^gxrpNVYiqOTa1qq%!zKiy3wK~FR(Y|dIvUp&W$exm34 zz>oHNCF-7Awi)xXxH`cS)OK3GRFB(GZtCxn}*D+9DE6z+Wt#S=GY#>1OSU!5`%b&~SRqhfQZW_XbD zFjEt+gK~h{F!Zko#M^0=**y=bA<(#qEcaNYn;-itKo;2M*!B1YV)gc$m+SqDt1D%7 zE3k`m?Ub9*j`m8h-}GG=u`I);me&k`I=c?iw!EDlOpU!@c}uQS+{=eLat#eM0Dqz` zfYC-!eQ;<~%bM<79$YP;r$N6O?(IIkT~9oz@7b}~w(k~KOuqC-jll^hqy+wMWRtKI zVWVjFdoxbOU_G_P>Bo#YF)SjcWhqxblPME(#G^o56l-?X-G36*e1BrhACS0qzTwiFe{}lK+=2gUroyTcSOl|n7*(QhB~Ct32-a$`AvDo7 zIrs=QvU%$TaCk@p$s{pSuPkTX`K9Wi6K;JpW;hTd7sFv>^8H}DdiYqvxM{a(%YR5Y z;S;^^?emP!t&RobT~n6*y;~E>4ePJz*y8`s1-1YE@j87zW;%mEh;*>AnxwA>2|Ak_ z*9FeMT`24&e^-yd)aOvJJMkU^GFmA2e#vo}o?A(W=e$n4frx}M8gTC+j6}Fx))M^D z-s_3B0E7vKpQHwkx))n4q^FoUZ9Mc&klFZS0L$*4pFQDq3SdL8F-m8myiat;Aw$Tf zVzCHj-V7DOf$O;0LX$}oAzFM4N)48rTRKDr^tZV7;r5|avwrYuq5OE1^vg4EGucPe zO2nvJ>3F#$OKPH-ho<6MEuxrQFhU)*0LCPcCg5q)l-ue^s zNJcngf8=1(T*aRtkRQKH&;CR3Oob)U)RoLJ9xJdQt1L^Yd}zPjvSFr`#rov<*7Q8M z)^i%YtCIxZAlp^)>s#d9fF^7$sL8I&GLnz4RnL_pn~#Y!F39BHLlP4PID@S}(}U5@ zP%_2>yT#i@u!L#*Y{Z#ZosJFH5J=3_`8zH-4sLE+d^(_(V*t_`R+c3nr39Q^t;;al zJiG&%S8RQ-mWN9+fFp@97NBOX?dUG;LNpwz3go<05tw;3YU zE^>j=!|zm`rLU-F#?L3c_yWvKZ~3v;F73Bwmmiaee8L-c`^gSyS1Yk@yYr(R53$m~oX`ulAjJ}pMPNNpeR+^Yc%tKiLDL0|o6O4y&% zj8hO7F@1I_jmI!?-Uca;LD|+#e~1omE0(V@4yZ8iaYo*l##$Pl%y@!$9hK)&2g8(x z<*VukH7G1+-H44Y@L6=P|I#7c+`!ZIQD}c@&D)HicB1>4j~4#W6YgW<;K@6CC@yV* z2tO*H+uhrIy}J2H$VXpaH&8Siwym$=?_H{E^t)E8PvF>CT(LoFAA$P2DfewYnI$LN ztzmO-gGqp5grB-9FW|^GZfx18Z-!rHlGg9oFNFl@pmy4Jsx0l>>r#!#c>?+1mTluRYeJYwYK?fB(}jOj^?0l6LljEX9)R7bqpUw2q@on zJx1XFrumigj(_}aK-|;6p;KPr%YVVLVg1-GM@)CWtq!>ufYf8>ccyB*u|1yOL*FIu zIt1-SAz#^DeOj0!W$BYIFBmqfbrf2vaE-vu;EmAIA32pp1DgD26YCK^qS)sFfZ zJ@wqxP;A}SFD(Jzk{Wr3TS2dt#ytM5B+V5Z=_7t&Pt>wTux*b{E?pAb=Hcr;ES8ve zH~&4!E$DiGrAAtbYF)nS^^+^pwM_$E^$O)bt^3uYrvdf5Cred5t**+?-!4Cj35r*& z%!`l1oRShc7C;yhKNT%D-k`|;Jg5m5ZdobY7JT|W8cTN2S zp)MEJn54|A`w-uycYv`zMh*32@A?a9fXqE7F#frZxW$9vw8nl^l+n@BK_E!$Z&f3_ z{W1AZRGe;BFjOW@&^9 zbA{zELSrfD~w^UJSYt~w}8`u~SuT9}?- z^IZz#x=C6pqp^Lue?%cD08_+z(^5Du21sUcDyf}%x0cqN!Mrd-_$fdxOt_TC3nFhC z2P`b_2`9<Rr_-Gm&xF!yAdIb;K4;2`Qe~juv2SU0yjBo8fT;&qG z>YFyW;f4>06hQ^$x&F>eaZazJv2p4XK-WeOVa1OX8}(+$2}Hd=ZrB2OyF5rrG2J-UZe?^RgBsl5UIyTtt(tohC6eoYIq9RrHqg+H2`e^V3F3mMP zzc>5{w}n+XY3x2hQpw#kL5%rA;5_^T!zK?(AKV^%CGG=&hJfzA>C!^M!-KEZk5{Ca zyZ5CKzqh(^UGu((&&!5W{`E_zI$f;^^iI46KD*B{R8K3YbYD^>w09r&pHL1p#i8+B zHMl6oCgN`Mo}0PfTC(I?NwV^oF=ga+O)1UOj)~#j$wZgjtLb%@+AA&;qFK`2r1B;3Q3^!V`;#7V1$eR0)4DT#)_b#(#fzMA=J+RJfGm`0M;q+^Vr zHAeVf77hObh6COOX*VHvT#FxbnXamW=G@i_=C*oii7KY0G z2tsyoW(P%neh8Q||HYWObwPljCd~sDQCycewaQ*?oYjY!n%-kMwURT~8yslJIQqA< zhd@!hp`cSBQNx{lKNB%V)SS8a%W2k*dUR10Cqmw)`DFaAJQ`9w`Rh=8?9_^%+VbHI zzSc+^hj?+8%++!HwOZP3XE$h7NWh6_L6g^Y;?T1B!PahVQNI_gxiJM~G(%YCLe4zi zsTsfd-_7w3x>^I@Gk*qcHw5!vvd=13aC>xpV_P)ZyUFEy7%J$=x5``H@TSOeb|jNj zgH`CqP(9MMUvP}O@0J-F)pqR%ykbDMANN9EJhRoJ)g{#u)k=F7`pgK@vwvQ&GqY(_ zj8{jKq2=b-zNY1tj%Y%*(S|xa%l+>?$-R32vZO6syFKnPDZ0Y0kM~G@z)yzi^@mYx z;JQlogR81?Kalt`pVs27KtorNQ+V`7E)#74)oijqE{L>Z(Zdu$lU5ac9HtG;!6-*? zpf?(N0t;hR%8VN*s2wYx35t@oq~_r;9~6kndo6Mprr79U>!=*syojAtNm9+gbJb`u zW=}!{zrUmLds(buvMEaL6x9o!zvV0*aGV=@ZS(#@FYq+(V;OC^g4@nIqqWLt0Pxz4 zr{!@xa{0%Wzg!>i&DF9G0-k#`RW{mp-s1EArxw@xu%I=m+!~-d-UsPc`|lyA68CAF zUr_!rd21}4DdYpFhRkGvNYWJB96x9_*G1Q9yMqraad zFKj|_Y~GSC9EhXry@zR+3K!x$PSGD1b`mO!j84zb0k)rVjnXHB@Swt zE~HZ0#=O?s`J}l0Y+sQ(7Eb6C`Z#q!;Ec%s`-`rThjrX+*< zgov>D`ES@O;w2*~4$T^xgB!7ZIeMZt`yEfe>PR*II%r0d%fPp7FMuDt6!ncqZ`PV_ zWHAn)sg#o#8htfyC9-bQmKp;^hCo?O z*gMw-r_||929k8(5>t$^rC;9q1wi(rtr-C-p(o})7}kY%ZW5&TA0KA6>>;U?^OKLL zWHfbNwsb;!_a{@4^sZx1QL>cPleZw=-$MUPK1@VPS)FgE-NEEz8ZrH5oXV-=EVp_6 z_1bsgtivVl|7cjVzkebq5^vK-{Yp}RQPvqN#m!UO1>@+6+KR?a&hwSpMZCP_(wW6l z77{gA_@4UxN7B{cQrd635JO92Ju^sqv_NFXYG?77+^X5UKL~+UOXLuzk(5aS39G8A zn?+_$#hS#A>%ptEPiSw%ZH0z@+}^0KiHfV*>t=A{nu=~Ro;LClQitX-Wow;vF&S)f zhG|kO%0DctFdZ(pjN5pv@Ic4z8RXwc&l51S=+yL;Ams%rGB>jafmeU&+IDQy!o*(H zY+Vvo;b43>j9Dp&uoMBL?aF(}3gg~>aGG_r(|op4ynj4y9(J~4 z_XL}u#Xrlf3L|}zZgT7Sba8LSyoWyktW~nvEr1GBt=`pu#}YO<{k`7+6?DbD*p=rt z?et`Zrks2Yvu8KtChL;A#)vL18uosEhDU#JaPqc8m)p+6Z9S6me|*^gMcI46Q{DIf z<3%M2NjYR3BP5$T_Q*P9Q$}`VWRHVm%g&Av*_*PnH*uWokwf-giQ|y%|2fxvcU|}Y zzV7R%@8iMa;laoGyvJ+5-p}Vdlb_SKcD<ERhEWe1^pKp`MfYuE@R1grg(&HQ_C{aM-pd5G$2Ok;jse?}lp($s?+b^V zUz#puKFd+H8QI4hTzbySdveLDsMcLtez=u15YT*Za=ZE{#0fpojZvrG33pvz;NOI~ zXK_A08hQD?LFcIWzBkNbRVF8s2!?)hVXnu3-jd6-*EAe(KgCvbRKr~Z@2*OM$uYwi`-R=yFa z(|~w8Y8~5DMkk(N%p|RulT5lgTkycTOM37c0Zzn0x0xt!_{IQH<;&cpApvr4-oS3A z$NJ)5m&DxJhI^ z7NRf9_w;d%wcbSoSBPrX?SoAf#?e%vAko8t$UXlSf7YMx?h*yIceOr6mI{{M+HOth zN?D_Rg<6A+7b2%y;^wiSZKkN_ZLIcRt<|3Uk@TU-To&R2 z#Ilm*lAS5VqP59xa)oqjh9~edN63zfQ){Ch(KPOTDt=os+fIK|w=N)QA@dot9C1t) zf`W8mSP@dWlO6Siv&kb7zhP;ao^x2WmxW=??5*d1h%wuQ2~T9Wslu!1oV801R*8mw z%t?LoV{6eBDrDO)8twroD~)A^z&Te+VYhq7Bc-!63a6((n?^aVr=7NatZj*Vz%B4h zuU-ORnnxKi7HN0{iw)lV0E|N!LMi=hTQk>DLQ`cq58B=)V?#Dml~iv!7Z>8eB%tlu z2j>%J=<%c;>xXx9cVgJcmn z?VlrJ$IY`@F-rFhZsc{0uEG%y7iI6PLq4Hj>;j=q9@}sM0Z67afwV!+Jy?uvy~Ooh zz@n8~h#8BE({NGU=J=kxS9FeR1jFdQAdNw(I9?e^a*r_E>-}|uvvE@BTZ7#Ltu5(B z3sMvtRhjN?r@(61-nQotcLVMB;uJepD;Ea+4A6Q##*SKc!JM<7UKbxwc*PJ?83d(8 z1c8wSN;&&4N6$`woP8Z<&!T9UuIElJo_gR-u>*J z@XxDFhiuCOfzOAiTxWcxy=EUz<`7!#ft$p3^ObM+TBR70TqkHSZI@tP_gg9r?yh#b(BMf+xT;m8m*j#NQ@I0S-s$PKQ z74<~etwH!4BS8eEt|0A@s!c}`t@a&QQnDj>nr^u-Ft>IG+<2j*7cB>!w8xeZA!51Cl77NAFN*+4EZo%=0kC! z3P9DbybBLlA<=v&+&ddib(7gas^$|~URRX~rOD>A9Q;A5?)GB)oXkd(mf<%l&Y$_l z>1K&Ps*V(o0;u)$5@hOCZ4*;H0q0E#1$#PK>)k!W%om_#sfmPyT3?4hS&6R|RIHJj zDm?T>LxU6&ALK(LqI|FNMGT0U& zJS05w)3=f$YCFnR_37#mFEKv~;lYlF4}kcY#QEo>i-GnEb>CM&W8G5hbNVS~Q|liz zl?01w@=kB{aYOK*6x%np5eYp&RfMo<>^xJTkr!26FqhbzOL|N1WtZBQ&!DT@sMmg5bF7U?;@wE zy1Y++|@SwNDgzKUB{oMGI!_dL8ZA zF}MdnPQU1H^-Ym3~TL+5Mq>R1$`Q+>+8b$*YMnt=|v~4qSB_NXKSsQo&c3eyl*>` zq<#XBs8(hlqInhqj?;qH^ryr{o-33i6YR_#3r^ojhKRxzG6g)_Z;whuun??W+tJ?^ zc0dVx-4LGX*1F^N)@(I~TWRRAXh7-I6}&-$Om7JX8q zta~lipL_76L^3$j)zU73GQ;M*>KNQ26h*5Gii(US`GNcq3@Ds+A-xCsV&+S48p`l> zqpJCM4=&DT_)`c2RYW>#0lbCN`rATRjJv*!guC*AW@>=QywEV`QnM_v8~9snW!Bq> z3~(sTBd>(zdCn!qf?48r0a(&u(Dz5K!>k?l_8*ZHaB~jOelzIG3YES|bHWu^A_&p3 zqjuScEGfEF#U9UtEpxgLCFJ7NrZHi%- z@5J!hSHx^93@7bVL#^aCrp$Hb1>F+u-|YA7oRrq|cY1gxgjZum8N_bJeAaU4(XfXj5?27=%FVDfJ__Y9;-F5SJ;qS!roa;B}4VuDOGi;!;%_ zYN#th;3UcUiuKusI zy_PY`I^069>f(yQ-@2D7(6qy)FSSQ(jV~O6q{G>8Ou26x&={h9QhuTE@RJOgy*~r>Hq~OVvE(D&d4xZ&ZPE+h zConqNRa1wQikZkBecgEie+8;e9fx;mA#!xbBv)emfV4ka&c927E5)qry&MnO0N3`n zmlDBF+s>Mev=<0W1elH_okKXQxk>OfnNGA5y0UH=&Ey_J?>wicerKwVdywu`0&GRX zlNT9LasmrM;k4Y`NYe*Yq-xyxpK+d0Srx`au`M(cmnogT>o>W1Q{cJe1&6*QJISxJ zfeJCUOwom_Oh0;(J{Z3_ctyZrUUDx!pm-rDL}IYdAS+0&`P|cRnXch*H9+DilGrWfF#YHyMN!oXb{jiOBNDQlei? zN$3~XEG1eDs=f6@;=W_HMzDvzGk#USMm#A!5sMqTH|F1*!Ar)~+5R#soS{ry+abc6 z%vd!Dh4A&RrpugQh(wTYchC!wY0aTjs263Y>{dPm6L?Zk(#+jC2y|J%)vn$s`*Mx* zm}|E0Rckf4FI`>hmfYC(SCetFLG9#wIigQM2vd8t2fGgN0*f!cVR z)rhXC{WJY5^C3ernDC&AB5SCWEO9L>*+?_aq=dHSu8P&3*$!lv0YawQ%eEOFPP9;S zhk1LhpHZQAC+YIF`gT9Dg(S<7rkQ6AfkbA;6cdF>7#8of+XR7Iktx1n5rU-02zgjK zem4t4b-5AixY^pBuqbwnh%*_1eF6H3B53im3>HU_iP93aK97+`@Pv9DNXQ|y{V(%1wsz8QgA6=M&FIX^djcjt^HOy&yIpE{($EWE z0E?l5R;1R1+(N zwVJw-wJjo6H}@SQ9VC7{mmDA~<$t?wCjnN8)XM6X7&MeR$+Q_tNspl?YP}mda=8sb zxGEiCzd)fEWTndKn!=MIEGLiR_LtL<`*wTQSkkCCEq>r~#V$%76}Rwk!}_>f{5teR z`mCho-FmwuMVWcfbUT=bbeoosf4rbt#$7>2JaPURRjIt)2%+Q(IkM&@Gz}WenJ|Ob zQHp;#2gNp^A+ygmCxNHt4c}H^%P6$TN+;sud@ZGH2sILt*0K-ty7@Co@o*Z5n1;Pa%;QMU~0y9yZA!;j-RGP)>4Ea+hV4&`XncC~WSZ4R<6wOlPKY9eid zGsJz100zhlR6pXjpbw$ku=V&=)h`NKNB>8FtVKKEkMyq9T{w$n_Y5i#$=5{OI1H_L!;FlsmoZr1?galBNb;vF8rPs@Sh?#& zzDtXYw8z=7CVOg3TAr3*H}Ec&cQ@wq>PTfIS8K=XV}Fshj3-tc7?IhG&XCYb&^zhg zQnA*h8Mq0aHwoGI`-g$c8I!pjw4-eLjAyg)413%T)SSU{&pwGhJ<;f!ZFhatuGokW zTeay0_svH27l4b9>7NJScJ zW?wt+aVdWachM5}8)ba-JJ?uC;`1qlq=*qP~ z-J(vg;49b6lhDe5BLpAOLGZf2V$(g{-9<+f`3kMmUD(4lX6GBpc6&RhF>Yc_Nv zO>%!t@#&TRGXyLv#@J38ui`qB0nOqU*uGe;R%4-t%gu-=Jc21oGa#yd->nY$hmW<_>{JY4l1VR1d#tc+Ac| zoB=I9P31KZ=a_tI1?#>rm31*lpFkkDyLD+nVEiE(&t<&oo}|}MZw9MTAILuXhiOe@ zg{l`yV@2D_VLUHSayE#eHj?4RYa;2QD9sJR4zWTn0cJwfe0m=Xsg?BMGt`e*R@k-E zt(*o4gP>#eJ^lqzD`IqH8%OAV34WgBh&=&1{DV5gE?3{sQTi;XR2$MQ1((rUxw}SZ z|NKm5(v<4nvEALCk?9KRiW(S1a|IU}gfT2vbM_}WxzH-H*TuU_tljXv@|)X2*0aqD z&S6}%t|IR8un3agisMkoh|(^#mW0E~%Sxi7sr56#yDepS|8&;-ym-5LK?s>Od7qKv zfJ}SG)#L5!JlZ2hE2LJyl2XmnASfgDqU`06fwj~Skc05%hsj@D01;DpaUh4+Q?w$- zs%NE7SqMxBwCAtdj)xXBbR-Bxcs%)j&4k#U5tT7o@SSM8pIIV)E^?a7ELsfWvhq=u zv=em$njEqIK8Pd2a@Y}lLw53?Ks=h^h8*%({ew}UGQlgjh)o(h%LfMvw4dPY(WoYIl* zGgCQH?Z%0U!Hba$_WqmmR7tP)^XfdtK8yo;^Eu&ygOBi_%uSna;~N^s=|clQRXL-? z1_P+S982yq6d$YN$#EX?Vc4w6BM$Pml*#$W4`hkESu7Xgmh&_Ba}`Pmqn>tXQf19Ici>TnM zsCpli;wx~H8O5+^l*;YmOYQsq`MM0hUGTQ&AjsNkSM)oRAXky9tp!1Wv5q}wwL_RC z6$OKj*!+i)N)SaZG1-YWI^=lE1M@VG*GQd&Y!Acy=b5{*%m z$Fwdhw>Bd4auMY9QB_xy>Sz1$jCL{!%q<5vk3YvhSq)VKmEy{=o-mEGwPu_eXEF$l zh(0*vT2pD4qyEg4t0-w}^o<+*S?dApve(MP)-HOoBY8UxwbZL%CZ<*+ib$PD5}z|3SZp#$^T}$q=p=nmP+w6 zgh6*jVU6fTQ0VsCE#;b_;w+Jn%J=SetxSsu+clEf*W6@Iq-DLk{p%z&FoF{(1uvfX z7+o}m$!m)*aCB5c5u3I{1S;x zMf$N!Ri+=DOwZ4I4QJc1F4H&)cU*0azV8MH(Gfj{7Df@2EaMKcR|O%&;JyYZp6={) z0`szzIz}ivrp`8 zGOYn075P`9$o&Ecw+EdEr*jmNmhYG1t*-NMbOq|o-PNl|kHr&=E@Px#s1sbmbEK-g zdm!y)bRC4bF{=hypg0M;J|MID$FWdsYSkP@8)cn77ub#;-ChIzm2Um@=WeDbW?!|G z>U#rAa>!WFR(Ab8x<$FLSms5wlmuDbz8DewCb$F3;-k|!G0r$nuN@O8l0ZV8W=8oy z{vnI9TUPzb{YAof7Uc_B^%Q)6{AZ7v{)}pCSE!m=$_Mt*9TRQ)yHONqG5&Zl?5TrFjWJq&H4ha`A%tuy5+T29|C3T^s2mRVIzpX)8U{iz(U z7dp!l8AHpWybp?iqZt;ZX#$?=n$&y3HaNv9Eeu>HyL>Ie~TOTT0F}Jp>lEHb3{P8md<3ZMprwGZE3O3y+WiN(E z_#58EkdjL~^*(GQUI>Mhy9)3!mc`3NEXs{J!f?$D1nCN+7~J6l*Jtp7bRhcG&sdOL ztV4Iwg~xEZHaMDfv8!DT!u5qzF}r?eL07qKC!-*inLpISo@5D5&(T7wJhi+3g;ZTS zF3L<-f8tq6W(2J*ox$*<*4&AE-qmXH=+QZ(BRt&%8I#1K{47^E`W<>f3mHnNp2Ee> z6VKfA`u#!=1BYbZoqfYxt)6mE0sg#rcwJa7 z9=%|KA7}}GUOhZ!_?8*pJwx1O;WG{kC(pgnyq{U`4xu$FDc8eQ`L2S3ychVCCzuza zx6l&*+W&W2DSa_tSd?4I&JawCaiGN5+8${q0zrR4|K4=3MY-Kr5b>>dl6d}^MN5~3 z8I{&Ri?Rpl1W~Zo&x`njt?_RCk4-~(ITP=D?MQhcNh7jTRJ`Cf%T{uPy9_XRv(5CJ zPAr0c73ncia;@TCcJK@Vx=46yc?ptWF0?U|V^P{a1e2L0kZ~3@Qjefp>^jIWFvOK# z6EpJvLKz9%qXFK*d9S97UV1$T@!KW7d(UmUPaGXWOPq*U*;CaJl+?mRmR0;BzpX{&~Njsw5bJNipfL&XG!=3c{n#%9sG{{Q?jWgG@=BA2gHdNi;@J+pTczM>Q5mnq?}_DA%vF*H<$vUcSxvU070tfe=Ai8_UC} z@5JnOSwuD|31kslmixY+`e2cO@qTNzr%X_~GWvOJigR@$S?_=xoW$G++Gv;z;>@aV zPFpc@lJe4V$;aK#C1g?sW-&5glTqByTJdou8(8a<9)g$h5x_toSKa(DOX0T}br%TrSMcT@fukzx zo9P#&RX@{w3B@4*p~IBA2zVafLO}Je>kLZPb7fM`Xm60TKI)6XTc9RG5FPqKZp6Xu zrCXOIp#GUBEnjK-_y;3&TdyTuiU+CR9j9J+Q=jG-CGGUnbc{)=Ppy%v)TNaUTp>B^ zxpo^y^iE1sm9ud770)B$bkZpB@c>7fWk0SRozj}CzP~0q4pfX;5nID8i|CQ5dCr>w zT!F$pfuDLz4@MEdXH6sZvx-`h++^HCdjiCqz>DOyJ`eh33>{S?qg`5=*^Z+%w4$f$ z$+=Wwo$<9>Wr_p`L#LPk`8^p4kgl-peh@4b`t?;Z}hlN$|(AUI*GUJ3Z3*khb7r|?m`ZG^4JTUI@ z#rhe}MQP^%+)6@=tj561@5~;9;k}Z5Q5u8fWeODiMa|$z9O7|RWNa-yr%9wJu0knq zs|-EO8tXB7F8BF-W~MnP${;2Cq*-73N;ESSjES>Z5pJ&$Lhy~ody9d}iFK7Is4CKMWt=wFre4z(JomTk4 zRiDpxiHsX9q@0qUMth?>cG`nB=VW!D+NyjAW*+GVX{ZWRQd#A6ONuEAS5(+*@fQfx5dLreH!(4?du-K6e3-wS!Y zbRrcoSrA-$b3m+J`RuyTO;fn4D+@6)_CY3Y-VqSPs2AS@^ADNQ)^W8C#7jg(GrAg) z`nNfEQ-W_+vi31Bpf-m&T>~>47)6oSDSU8$%HbUbREC|h3Hns}ANm{*5ygNu)cD^R z9O`C;@5MS9g|=nCbWEp|<8zRqNupkqniy`o2kro&mvUM|)+FaVvXh;^y!waYp+(BQqVlS<*%p*y^_zDMSbF@2UM4P z;6#*{8=^opaV78ww`e|-w@#VRmGzd8W23q!owv6l*`%iNdiNzYTW(W3!#07_poeiQ z+G|{B`EPBo!7Jc3MmL{Id`)&rBDiNVU<~By1%?aHP!`{+5X7$6>e>CW%wQq zwe&c-d`ROHluWc}(a?0dbuP^SB%Qf!fK!}Lx+%g*{S@tLbH~AONMiK-v%_BAy&{@nBALUge_|ht|;99DISYjub9UhM&rx4~`{<`{GvK+)ajD zrpS#{&|P6)xFGZ%B1-lBrh|glti+KNjT~uhbiLY-V2~+SC$aNGd(|n#Ew}LLVX)O< z|75%01PR}1wX$bU*g+3DwQm0+>d^`vmD|O-urf)FQa^tB(TY?f%iDbiU~AeJP?2^S zhQ5Wj4z13^LO?oznbq9oXEAxkjYvm`*90`-%0+6;=tVE zc_d)0oS|9z^B$hnjYH#DN@rG{Ru96(78H4e7wCmw53%I5Sw zyipdm5ly@VLlDfTSIAfRZDo07>I5fw%)|@o!D0zkL%DS^*Q`Z_uSOoW?+e1|h1W#B zgLZ5%A$FMbgwVE186|w<@`)zmpow(ik~82^2S1A@i_!jrg(PR3J%2w*{nEu!!aQZJ zbdOiuo>Jp97#>gDaZx80Bb9i&72a{dYE=XCAN>y(C`3!zBj_Vz8PL8FbO!DCj{9`$ z2nT-TRrqT!FWpFn6QMN@qoGC~4rvN?ml9<((}&i`1Ds={D!Ok7uES`wl#Q%GMT0-S z_uO4JSKz=zR~ASQ2M--!^V$uWAar;E>K##b_q|=aq&s*~+HIAShvqiCqfwk$rKlyY zGUS23qQpUS0y-@$T6hyr%?L_wsD#B{{yi%M1N z6&W&fJQmx97=Cz)pgcLsu;kIt7MdWAOg-Aku|o>6is^0wG?Xe9zcv^`OLanPMTDVqCbPc&9cNJq9wmmBqG?^Cw>?Y# zX1w;`5H$9vaTZEG9Q~3ym+hWBhOR8Yra6UHY1|0;mcO*dP=+F)C%}7+LGY^B%4Ou$ zCS3+k{-qDw@`)7c?KI0YyO&NLyCQHF6;CoFg9(*u+m`5m49lYf!DRQXt zQlAR>IY{r}^HIU#xBB5*%ce4 z3{8@{!{R<3CK%Kcrswzlf=jj0QA_9pUVRB@?V7{!%X-qC1FU|jy(oK%PLUZkt( zHY$y=#OP*MoEJT?apE;D>m?p|1Fk0l<{}jNx+HUwS+}FTbR;i^zjcx7U4}AAM6I~T zK-HpP7=n2h=jehC@np!c>ZZSZ<7}jEdjhdBi0jqmy({Q0ete6AGM>_CgWGesgN zICE^kG_B9BT~6C5COsa3>)?Of8qc-eCa|c`MDwn_CEhtmP~k9y;6ww4ARW!@dt4Vf zwRGo&yzWAba}8;bQm5$4udrm{LhzsYdOwS=@YI7#O^aaWF+;c~>$>ZxP)%eaIMa5Qi69%VmHXgnvX2dD zsr$`kCZ{fg+}*q;Sln{Lb<>-Xa!aSRN)(lknfuD~UI$#AacI+L>c){&H2^nOLp!W2p0NK;DHoOeB zZ=Z)oMVtt%jhK0SB0@i(cm@cG{AA%IGirY|+t`{&Gxq%A6>Bj9!b3~k5`@3Q#yXs= zu=GM+?{3w}%OW$Fk&6Q%JnLkQl{nddWW!7brMpse%F%9EN|dxN2xB8MPG<3T?)RmD;{{fNL)&Kh@OlnJu9u0)-wX{U9E;-MBFR zRtXfRs9cZg8P*vuUM*!5w15T|K24gK7IkOqe@}BoSiXs$Y}aKl5T*_kQ#PX45?U}> zpc5%=n3_KCx1|gN1U-~YcW=}v(^#l2RJxAM?V})umPq?$rBEG9{L2JfdnNEi&sWsL z`RkRb%}WGi^e!*!N)QcjUZq?MN?GsZm7ri^oia)tmX!6qV9|^sm+{D4t0SEt3f{EF z46~zk!B6s9!FrP`D&die)RSQ+Pg6gp{H#h*t+eVlFRB_TIdUfgw|=Z#JW({uqJt29 z{$UegrC>s;kQ))MW+iMsA_EEX6Mp{9+1RmkC8dYiHfud6wVCPRxDuqkS2pOqVH5C| zUCm0={-ZI);+~P$Q18x~tHnA=@59Bx2Tk$p6_1s71uZgD2Em){rKM4dTvlrd+C@W^ z*Ty~+x?@OD!-K0@P78(VCp4!z)MFb`I&G%$N*Jpuhp=Pkans7j#=5yS>L9@v56d^k zY&x$apv)f_rtRq&j0aFd464dd9NlXT zzOiFAhmI)Em3ow`hT@QTYI#jmqh@YV(_tVF6guej)cRwvi`$oyN&ZLe18WG=t(DFy zw0c8tpu}N3%&mTnvp0X)ihN^OtnX8SBgv9DSjf6*{L^klot61!hoWr_R5#3%*NZFj z5P$2@=pNJndM7C|nJ04D^lQCqJDnuHS4R@^!zE-y%`ep6d1I6{Ov4ujPQ*Rb<<(C$VsVX-70)IlNOPaXS@ss7I& z{lYI8IAAACYG5P+KuydZqdOwOsa^npq$jpIOzJ#&HQc&k*S0>xLZD9n_f`0x%S3+b z686~Z8zM-3QN`fnMUPg0d<#^Gk;Mk8l=nfn%Y;4j@Nl$ARC1on?!0yLZGjrf-p!BJ zd+#3mKVSAg=4`mfSn`=nCksHy(S8Tc>#vSz8Yp5RbG37?SqI0=Qj<3ueoi?7Qa{>C zA>d#FTwB~mJUaDbY0mTKWc<|O*DB|oU@yjh(Az&3!SoT1WEsPl7oZVr!ZB=r{{H_h z#tEvIPJzki0Jsbu>+&9m1$v=tbt%bK34kox4ju3Gr8-Z-MlqNn<*KklA6z0?4}8c( zo@yrY3Tl6H)qdourXrT$B6n){uTy9L@Ww4B+L^#nzDIP4m(N?~e-FMHbJO);F@A`U zZz2jZVb@l1viB_)JFrE9LdRYKvzonZPEVF_a&CG;>T$RH7QkkzHD1+G{Gtk_etII% zBVgeF(J_>x*8G`67vs7OT=6{Nno)e5=CSm){$ZJW%+i3>pQyO=7PBAE7l2zq^js!k z7T>I^k~^3w^$!MFlk~7?;R*n#q39^)#a4!(w@42ldyG9uSmS>NoT*}MzzoVSYPZ@t z%d?eAxh+IP6FHe7t>|nNa0-W;q)6%90r$uQYQIplYpFS159c%c8{XreM*e^#0T>3U zfrj48{Op^Qs%@o4yYC%)enV6&)ZX9KJJTr^^G9}qaS{ET?Og38h&_kPP(msv;c65 zN_0owOh;2jVrFF@z`ov1>lk{ z&`Vf=wNpC@Gz*|s$pw&U9D0DVV9kK1XdPgtbKQS5R4IEuCB}kb1!w(93*v?2&og}q zpYgAEMX+JLGpB3}=RXPIzy0X1$&z2ii4@t>`ok=0nc4yU{5&E4Wte7E z{XF##*-?FW>pLQDPJ(C0J42#J8!`F-VSGgDkFWE0EI&khogGc*UIyuwe1qo5L zzvK{Br7h4r0HYB4(`deWu99QJCZ0iPvTftRV2rY;wu^hBCD!iOuI3~S22$E2(73In zTWs#`&dVDds*U*z0US^dobrAgY=*}FJjb&(8#2#;^zq#B---UNbX=$9GHUh5l&7A2 zuySSGSIv~k2B77+qo$gh0PmA!eoRl%zUS_UrqKAtYlFcO0PUR(1PEcNL;Q_XkLb4WTQM*iVZwCwuEF~~(*A19E0ePf9)*KC0+t1f}L1@UipG$>^ zdHr1G2NWu|6YMQa2o|jui#!TDSI24TZcyq65xv1AT>s5&^toh8>pLGIRAl8$4e0RU zBB%E|j@p$Br>zz|7wUNe&U!ArB)tQkbvfqbVOV_+F+kC>q7pCiz;V0koZ%!q#pmDQ zEsT4=8uw4)|H~-;+oC%?ngK{P6tRfPS|AD1oMiRM^tIFru5W}dO9%L5+QJUS|Y#QiSN?$^!tl z9_O@&?q6yJ_Wr$+(D#ap0U63q+l%by?T~MaEH>NuLRjoq>ZA~J&T9X1iiSQ{vEcSq z;3^O0BUKd+a&)aQM=lLnLon6P430c6o{6^o~V zs$3571-Kj-KLW*wRew??S=NsgYHo8O%!9K*;FJ{i&6+o*?3E~bJ=n<81|9)7%*ulo z$XNZ+X#|0BN0?ln@Qy-(&Nx>mm1ArcHs4&V2E1|hkdhEP5FM_CE0o!vTSsxiN}1~} zK`}MXP}1)TnFhVxgnehWrh(_fWPpXl0tjhj@n~EP`%E>_s#RmK@P}Vzb5q=2ezEex zGRnXsDY0q)9f*~dj@aasE^Bybc1A9p>G)z2iRh_x=>2|1uE2 zwqPspCJ?w%zMe+>uG;bjHfsWuLYQz{4+cOAy%Gu2zd!#5UrzpJ;|j2&?2L<~V9A*t z0K`0>c89+AV8iH8&PIM~fd7YD40&Y?FiK6vXKv>v#IE!Bv3>P#!epFnJscE#e{(^_ zad02ayw%i~qqM0uss)Y)-(1FBMGYSU<}e!@U(xz~zx_3ePIB;v_t_EFW90y=dmlJ4 zt>19`z+i?VPTT{CX%w-nBZ;<0I_KLx62y+si{kaIM{yi64CgKPuZX4xj+!SWYP zy&pBpDHxP-WVR%cz};kk18NmW@xSB4fQrLvNgI(o7F{}LnFjkvVF| zL|{?j(kn)3d?Pm@l$wBT`0>DEFsp3!t)*uTz*iz>4e%_j9#BB zbn8Ak*BIDxU2NJqyaMtWI9J~PEkjq{Gy`bwM6bi4)HvGsXD{>7x4%MZ;3kRp;sEDT z#u67AZ{P)=d)EcT3iG)`V5^km0Ry-157=k1lu+{6bn%aX7cdl29F6;P)r)`U&iu7* z|8^dRQ6#~f^+ePrt2_ed&gjWQdy!+H1}@@IHLF^a9AjN6Lk$8T*`dax&2MHNldgG3I2-TGQr=-{wQOFkZo8wqm~(-wgDISnk3(d; zopiN>(pEvowgJ|6vJ^wYAd_{hv9cMiV zGWH7lgMw9Tl?reg&wkW6z<}~0dlK~LH`^vm%FlY{kM(HeY8Y?tJyBF1mXS@veTH>**?z>L)!(3I)!vOt?m(R;2TSM0=q9}H5U4IFiyoMa1LgTa;9H~7SItttbBE+)6o@EH;`+_q!{? zBzc~#{1r&}dflwv?w}k3>R)fk0R2OM9s-I9F4TiS!1?u$+5%&oR>r#7(NQxt??vSy zM@{TK!uPO1p|K4l=;b=q=yIy}=>z+@b|;|zor~p>aRv%aK9d{Ip#7G=6#gIf)o_a> zFO}ks$La&=bDsP);EVVbwEgA}1_8Z!4*_t4PAlm_Ie=Nn4e0wC4+O3gPRHAwxj-eS z$@Q6edH^#1`RFstj}>SnYc5b@oS+bLwz>mUY!d9-gO=zK>*qqJ>|Hio%=U6(LF-KuYwtz4{;FWn+B`dwDmHr>H147Y5w? z-hLgBEh7&A#=$o-ku-XcP#{12xVn-VsU);nZG5=t(v*|}1T^Tn<#Zw?4K1SpOrgQa zeUZbJ%n-tl@8=_ctPQhPSe%pWG9}OhME)VggDJ4D+5jc(nLE~74L%&zRd2-9wp^ji z0)FJRzuq}&H8%W3(_)^r#L7uzr<*r4-nweClHm$T%DHs{U%nKet{~y{&61&4v5R=AncA zWc>u}Kai(m)W-O~#G3=fnRN{CR@UzTeUwG%XEOOL^>a(^T$UsVM>T9Pqs=;&qw(AN z+<3Kw$)~unBi5FWUd0DYl@}LM($#X z4qx!DGK+49Ja{>rSC;Pts02q}+3YS5v)d4PB~DwZyl7hoY-s|v#)L9FY6G8^SVegP z`uBR;s4XxX$f`@)`$n~a2skwt%kJ}nVH1eyQhI?xdRZx%81s8Oi9~+;=i`8&3}Ro` z-k}W{N^u&L8){!CK38e9LwyWflRqK94F9gkT=8!PW*vtzM{WbPJ!NdMuX7g7I09@` znw5U?0}Hip%UH);7P1G>O)3E!<}|kNHsgyIXGSD;yj1~s`?s78y@0@nlBY>9YDky~frj{G#+yMMD^PmI)`!MM!poTF(H>WXWIyt3e z6$a!Y=Ifq7-)j{B=_&zhZ6~;r=I3_6Xakvat{eEIDX#y|&hp=$Hi7YvLS(tgnqtLo zj!7Kngh^!*=q8_xZ3x2FhMi7!M}NKxWKQ+qNyY{ffEi|^)JX!<+VIsu)X%S;oM2n( zd#sL*zuo1s!NDrh;j-A-m?}S(vvF+04M-837Yvlo-Gy?nFJ1JajI;gbxnb;I{skj# zh;1`s`(vccN>=Nz1w{0!dg|emJE9)0Za@WT2yh3JUz_;O&C*Q4*uGv>n^`JblKOc9 z{%5*!<#jVQF8d0&Cj)2I2{ny{M ztXuz&$-b?sIrm7(ugUWH0;TVqAg~udHEdYbGw`#f9+vV{w|4id&XDj!}T8mNw@Kaz{U1kUY7Eqge*E9+L^sW)eHgEZ?Y9sQ0)@0~4Sj6i z=XI+6d`C9W!GwfU3Gg)R&xKlGn?=MT7!_>M?Tc9h-FX|#b##OL4RsA{&wP)?(eeIy zkN+hP9|T-~xKHaqN-M9~ZPqL+ePOTC6$FmD3~kM}4S|~WKUV<6xLMTBsFt3hk7;nd zbKG)w$ECo&4mjW6$^8ClNSK&rphZ6js9Ulq;6ih;5g9g48}i2tt1D+KLdNcv3hc$I zE6D+jpUTgG10O>#3qL}_#k~JZF#g9rUBIz%eM)rhM*ezW<+XU`fGoDF{0wM)4FQCr zNkE5o7!5zB0eYe@BsW$DGQaS$i@2YgY#3HDayeD@)KHw;ef%}*G=od~FV_J_7>gBA z3{c`NwiI5 z5EV#BsR3!yz|{fzIasAs=O~@s9hB!(jMsILduEmlE0{XJpBg1j>`Q0=6~Xa;2z6jt@4ep&VgEMNI51NcC8>=+2`t8$oAT8kBdv_OET^=cXiL17IiMj7iPd zr?^_qN$T`v!$=gDUO>Byvx1S0R*79utOlos-2G%o0_!mq^6s|UPR7Q z&+*#lYVdhq!^$|%ww{T7)B8krk>tj2e)&ElF`umcWI0t|LkT3Ms9aLZk%FiE4_&tm zM;kre`D~}^w_u|Knb2InHLXih;^%+q;u_CP*CwKDzf1qd(|>&;EwL|9Bo=HO7X*TU z8}&e3Zv#|6i!_V%H-S2qeGs*Cf(}r%*9#?Mp8$>*EGIs+T*96_6P9BQJAZM4#YJfQ zn{A({6X>r$GA?{gPmA-rUn--QfV}*270_mStKgiQ?Cb!P9lZ9-EW3Pa@BPN7sMzA8 zUX2Fs#`)am_>IT^9GHqR4p0@X{RYGZ@*V#lXYU=)cK^l;x78N6lD1l-cD1y%X>DS( zR27{@ZJ{W!Vvnd=RS}dLjnyhT6tRk`6(Y4)iBU?3Jz|S>K7P;hyU%&O?sJ~we*VkL zE0S+M;~MYl{l2b)7RJ91pbxXaT@M+LnMdDTM%82jsO~a;>vOLu?)U%i8*?*b?@Y&w zK58HNGxiV*_TS^y^R@=$AtaEeRJFK2DYgSLsx9kpppjwO`uyN`uw@nOQcugO0=6rF z&#qwNlDEcpYaQbJ1yQv#f*vbTFuT2Ghj{q^Gb-uw5p zjMx4H+7U9Ddj|ma*_WGeV!=BF0JHuEPLeDN8b^bxq#UM08%iw-LUVf2L!mf z8_vT+9t%VLYt!A0j2EsG*5(Jl;LIl{x^TO_;fZ& z4v{?w@JN$h12Yj4SdI$M`GInPRMyXfGROkJvfQ}j-RS~ZH2e;Cj#R*IX_Nk=c*$-ya1a@`JuCZPss~3w@b1eBd187ly-p=33lymdf6C zPlK=j!sKP>(t(zxKb3ZtaH3jgWdQPV&EBb!f*&0MaKJc|;*!d@-X{*_;G(sZJp1+e zj$!IyZ2HIQuQ zn$}75y}fQf2H0^NBHkkRIw6PIm?Rb4rb_j{SQ2o$GvtqPDR{cW2f;iM6GRk=ArIL5 z&u6m$9mc8V`O!R^<^-odH9-rYSl}U)TcGyFMV{|aM)kCv1>4!`{(tM0GR_?Z_5}n! z2M~;l>32^Li1KCzM%?m+Lw9zR0-&}Hfk1g0lrm;~*JdUFK(#mws-UNz0ycoVdN`BF zo8r8P|C-XjZN)!d^za{J+|lqT`BTDuqvG?mL;a-x=V*GU{`u`S;vw>+*aZ}VUTuSV z-I#p~X*ufpqK zw-11H(w73)GPUEohdSsR$5%u9e8r9(``ck2;>84W5;U;tJ0Skmy+4R*zE5}O7~J^) zYebJS6nr)Q=6L{imnpmaQSl=1g_pIZDj59rh2}7aoqAvo2g>#?-fR6=C;r);j9ZZ` zPIwf%W$i3DIjk&&c>C73H<~Gp_(aom|K*>Xg~-T5oS>H~myc2F94>RpA7=Ufeh)$2 zqAf+vsUt&mVRvK13sfoGcd2U#P^E1{HH{I$y(#XYHGzbiZt2T9-? z!og077?-*Ov5lK~z}lPdpaAe2FqOwygbn}bDy=;NoPm+Y5t+>Y_s<0v=OE5Fc^G@} z_j{TIIzDJIe*;{%if%pV@5@>buI>RoJJ~E??ePXE-+b@d0xq=dAUI4@^3#{kKg=~c zddALzZU>jsq?bPTV*OB0{`ajvedge9b3l=m9Dwn+>FePBX{sHBuH7Z@L1|&nAD~_z z8P-H{7K2P3F^k;Vilkd4QVm5OV*nLa@|25 zQ%<^)afp~wWtT7GME+XN*T)YJ@vQ%K@*ky+%@33y4ytZ>s{_UMBv43j*#J>{1xPE& zuQF8*vzTj<2Z2ofx<340Tv`ywT!#+jh?Y>MDI8Aid{dByH}z*+fjX zd1Putxgp3cuHD%>2rvvT`XF}M2A=mfC{r3=uGIZ!Jo3-K^f(_ImCEP6y`x`!|Kq>A znm%*|f8L0FLjnrQ;}_WYtu22sbXi5ZyQGyQVvH$k!DjvtZf35?h_jjAZqRHhc4(G~I zKz7Z%GdbCoI&0=Laef07$q#Kq#Q_lX>{9W+N&pDA4&o4WHE?D697vE%=N*LHpcL%| zDw&=oqvsEE6f=-#4-kg_g@3gdJ+D-N#o!A31vd}eEy3JyNcav&6TiXtl10n@9FqZs z?wR+~6^Gbe6(#{et=^>u@zek`a>--zT-9{(;q?qs+T!Y63rX|*I0iv7WH-~LhOQL5MI0$|dPvu7* z%5TJ}kf=uRUr+vpxxAT?ef()#%Czss!u)~1JQ%C?`sdwb$%ccT+<87LwIOW6Ta>ru>|zRki}P+>mH(xeMm9Kz4Po>QSc z)B?OdFhi8EwZiq!#sB63RKC)IG2+TjOMhz1yX=O_u!Al*Ms=b_)P-^|&`sGu@xr)00VcKWgTjsg`*%(5f3r+Cf)4UguL}TEa0ApapM|C4JKH1sX8M}| z(yhu}aJK>drn zU?ff9ZJ-D%vI&i*2?P))WfVf)IM7QBH5uH6Ug-cww{WOwO}#luc@~hh+D&uaSRZxD zypclsfo$qGfN(M26YxM|D5Xp2vvw&HMJNy?VeQXNneXYGqM?tRnt#I+&mr zXcM~MY`*tEe-o5^-h;*YbAo}TJ{&qVl0`nE{ryh^6@te#yWz4+>^kc}HqvrHs$T#O z>_2GJNV);Cy9MGSn`XzvUyhAyoFwxQ&g+N9-Ha8?1VwpRw@#F@J!J zJ5g7sOWK|SJmJP2(${apO(=slLs_YybmC87$>JaL50s>Q9V+*MlXEAg;Bp>@7c3nR zkoTn%KET063P=D9{e9oe;0Y=j(32ZL$;#Mn>P@c5CYw{^Ct}c$-p8 z?$_+OqAu#E6d|ulqdfGG|4OUPyK7#;EP{J5-)zHYOsD(o?RP{ys|$z9r@F2TLPT`P zgA=Iare6?$gI7@=MTWdG6Y+w&q{i#{`O`{sWmPwJTa|`Ds39-qD~IT8IsQKr$UlPG z8B4y81G_8z7k{J+vpoJsIEpkm?((P%9O^pU(81I|Cm_x80@d5VAutB>4|l+7=Tc}C z$WU7kCL6x90=xoOJ*BmHAjZIPLKe50PIlKFpfq~W-RrVL9sn>uaj0=r6W^_zfuE$_^l{16Sb$ zFdNSwzH5J}`na?oldpQB_Tv+C8x){9OhXoRt(%YajT&m-&c71Ma{*xn!;VNQID|O( z_xaMc89iCfvMYck6F~M|pPSY|bN-yZ=hXyS60HIw^jF{k1ZnKraQ-(Sa-N^DW~e#P z6rNrLqx()xI|E<>9Nyi0W6*6uons%c`#b=2S~yF@!dyhTuG_`nC^5Ip{A07stC6)o z|FShg%k*0__W^Jt<|%aqNIlLEM9~g`i*w2*R3`GHT{9pJ4pR#Ll9L148FdUU@kG09 z`TfM&VA}9-9ogv^ZedIGT&!r@O~svz$^&`jJ37KO$Wxxc9ZF5gs<%oZ*k?H+uPuRV zIaqONDQxGUP_qGKA>AI+U6+ex;3w6sL*smF?xjt)hRR6{^Bv)X%-{^LK(F({faq! z1AyeS9Hf4Y2efUpWL;!bnF&dib2&Wafpi`}GvVBN(8`p&FN#Jo653%rkX~wJpY`Sd z2jpvHDbD^uiqIYruD9M=Mf{ngN@-SQutjn=~u?(Z!!S zo%8*dzOhL0JeavT$s|9;YwH`WdtXMDcrp=8+Y~OAD?G}uX|d7Kuu;j+K)tC{Ko2(7 z^EL;XaGa`op;&5?uKl89UM#C*q*-RQEL{zg@d4>AY<=|Tjd`?a-5wa?Nx%HUpD*8t zW5@zdRb{h2YkPW?Gu(Onf}C;S?ix)rU?GGo)&Bs=)etxXoUifgqqiFjUKh|9!%H5^ z>V3~dfW~X%?b6mq6`sS`CN$eDZuqX+$+-Nf;gy<_ORTn}yO6n(BE?o+U@GqCuzX)ZeePElB8jz7T>ohrSnBGbY5 zpOi#3(B7e`1kj#ojc)We8gVPUKxX0q=3L^);5Wd~uPz;9R5uzDUHNe2fXm&(D)$a` zpnkW5jI*PO95Wi`;m8IKe=K&@fIxTmiXb)2X$ceM+p#dk%~3%Y*z|nv;)blVrA((z zDUb(*T*qFHXAdJxfo>;kn;|NDJoBpiLFoIQY!rTvSUX(ENT*af(yn zqqoe}tMMLlV(Y=m47z%oScc`h)E*HBe!Z>;nK3>Eah3fmLZlvV|6ATkQrSd6iB&Vi z3!rYDoF>+KL}HYC|yUvW4Wx) z4%Vg6=uh3?C_EdKJKK0d$7C}LqR`5W`h3*z%G?guIyjBxa&1V z4SQ~tcV4Y~DCqck8h(3dKhwER;33Nl01{YF=B-{m5X#kRyk?1Hok}n0E9R((KGm5w zuE##z{*j+!g$-#AxJsjJm|K|p%7ZaJY@L0U4n{6vTsb4p`R7k+C*2Fg_Z5pEDuMbS z+zr8)dLtE9S;N+VZzCRe6yBxv4dF}$Okve;u~MXn;Rj50F_S>(^sFJbxV?*!s=?OL z$Vk~eQA&qtl0C}7)hxYsYa~{NdQ{eGKQ;&GX)lk5R-I-lCE9cqG3pY;CDlic@UI@s zL-t6DexS@&8|!mHnvMNKph_Siu`DE5iZtzw)b%Nd7FXjT#yGQOh7(Hqz4E~12=4yO z{EWGSX{&$QCFTj*nMn-yxR<}V(%ayaC6KCnNqR*xT<6=cn0wTk8D z?MSX=u_vjPm2|Y4RP8SHu%A5am$=u|(@Bg@#7ERCY|PQfnC+89n(=hT@~6UKOb?;% zLB&^TEpyX93?JxQUgC%tx9;#HuBVlebMNy@Eoa%Z`M(gR4g`lT5mj6Pc;$bPW;GpyqmOW+zS%mF zu1Q6?J}Z@wh-B$qWsKhkTrWgUirbwIx$ZMF49-RKtH5(j*M=#lMEOXh#O8bZH{2M@ zFeXZq|B9y_Y*1udD5fvv#8^*QaH8QVx-Zp@->a`Cuktw(lqu8uSHvWb({#Q6%5Gb8 zmD{*$pO2ZqA{~J}H!WV3IkftYaK7TG-;Das>JVpngGPsWp(P?l9fOf_n)G!{?{Ibp zZLGudIz5YzdL~gHD7QW2VUuXoYj4H=ATX~LGb*sRx0ZY2*=>&t6f?k7r3ccsSg3bK zc-mX1rOKTUh%u>?I5VlIoYRZ9T+?G1jXpS`A{;YK;ZC}yFKM7fkYZYSHCZZZf4h30 zVg0XU&1kLYovW-KH>0ts(lVMX1r90S``cUD1?v$A>zFFGUB0T;R=HB2!Z*LxU4n0T zw&80iLn*Gx%W8vNfdfCd-6P6;$mDp;^{ccVQENSO^dzerrjX?I3+&zr)owpHh; zV?G%SQ&Q{C5yhFU)!3_q3)GN+nqlTN-y%~GRh>voDx zDN1i9!O--cOH<2G?=`SzpptH=`XJLK0Qkb&Mz_(&ScT*rhYVF7g59YkblXND!^yWy6rQthB@%h}J82S5p)Z?qc>vx@d zg7^Mn%H}6rK~0e?P>!!zJ!w*HrA*b3Y{4D61Z*qLvOeit_6I!^{7Irn-2k35h;nLP z+gy_a!PGx`g5Gg8j`*ZYO@BI$J`$e&^$N`{|HODQE-TUO!WbVd(U?pw=9;q?T4ipV z5(y}U_XN9MDh&Nvzh~Xr+Nm@Pbwov*;82RmnikQcPP>BgceW+Sb-f*sxT>}Ocra`O zY<KxM@| z9tbJ_RgTQHnXchtx6ZZZkY_ZXWAIE6tA1$a9z-P$rBLJ~R}Q2%bM}xKb<8_W@F6e} zd>i4?^aE~u?9?&e(7WQ<7RurCD(zQfS~|`*5q7I`qZCP7S1pqoFY1X~nBC+U27K%V zpsJ>uWWyA6ZoG#Oxd%=P5O^!X;Hr2ccpSGDk3ow%MS604`sUOz`_7Fn<;5*z58k#cU6KYi-!{LHAB-dnGcCZRPMYuZWOy;{}3k{Rc>cXmLzho z2Fdd=XMcNlWRFKOIOU=89Pf&q`&)Te=SKHW0tiGJhd6qyN`b>BXR$~*1wl{{ws#mv z@)KV5Bd~K~9~Xqs!+6ZD1nX$Ex5fsJvnSUl#C(fN?c@UnjZM+sk9uR~ZgK~Y^=~pc zL^Yu~8N&~A`JnR?BXM$<5B6tuC}mroNaxOz7ymV-T+TDtGngabNMY1YYT(|MWt$4S z#Z7Jke}Fvom;&B|cx*fhnOueT3j!B;y%Bv5n4X0j+qxVBL!AA=d=s$TFjQCcMMN?E z#=}mn-nIm%Ov2oXm{j!BD16JGw7-A;yqGwhkW9YtVFFaN5}l3Ml@ zzoQcq>)xH#*3pv;GcQ|jCa`rQ(vwG~csWX6QiQ15za5>>b6tIP=eQ;=?4H21woa?t z2}$D{36Mf(j%5(saoxlN?FZ2%qMXCGW;1yELGfi1z+_sksRHL|FDXiyK|v=l+;n?z zWRHb<}3Urs5F@$I~s?eCC zJc4*sy6LEaVb&yhDhzzPErDk{peWrO9IP+nx3~xpc4~td^2{8MBvj(MU-`APo3VSn|~2d zZ+73Qu1jO8KYedChgYVUd1LoyumsCQxS*SgQiNt2@l|frP7G@|q^>5i(oVsesoyFu z^s7x;un3=`J%YRX7*%wDNq``=Ce6bh$JJCDpqbaN;Y}4>4cR)2x&jHfB(L$qqIL76 z+)YTUhS7zAzqtg$3dgG2o$p zIc6iOx461^Qv#pIdN&Tc%<()6@t4)(9@p~Svos!aE)cAr;OyIp+Ai2Yi$qihrEGGv zMVJ%fV#2)KZttjX^(HO-C~+iLcPBWc9vZ^9mRXs=;@5Os9l1?A8WCt1>#g~| zrUkllXNRV#exwXiDUuer6z8p3tR}xF;CFj)Ib6xcdIe%~HV^@p;VSd~k`e`dVU!3p zxxGVE0VHS4`}ZzVAdhHh*5f;&c3L~Qm-QnBV&m$V6-_@s+Pr!wuig$0-4Qmf!@0Q~ z&PadiikRaLZloScxU-{{^B()vMyW6>eV|t`#N31a8K9Prj^I z(7QCeb)5qFa||{Xn-EAy=rH5#W{Lj|JxA}6tz0Z+j|&qA%dP)TX*W2vhMs*w(E}y3 z=zT9nDAK`if9WzsSBSn)eUNW)kI%{CHru|qG^OpnD*kHDn^*@&!jHh0XO};;?bYfM z7*cu7_m2oKsX4*F1K|V1#A@4T)dj8SP4Q4@W3h<8RSv>JlLzOdZ?^+W$-h#v|?KOP1^p@RoQh&E%Tyv+-4{`bj4*2 z;?BI^@zJGCK_z_opye9jjQkkSqj32+^zIg|qpIc(?(=DG<3Buqg|2HrV-%X~Jj12fHFe4p?VA~V zFtzxvt(elEH#lRUtHbOyvd1cu*E`1B>Av?hX2yBqS-J$_`!zQ{ zFz5{&mD_+A1*a~dH6pyc!EaHwgDzfr_%af%3cbo-8nM&gae3y>z}~2-9Rn#0p3OZa zSBin<@fi%?uc?=yKu*vwN3t$re9PQl zI3i|v@8oiJKxd$%U;q=`a{YY26y`<13S^d{@cF6O1k;?~S9wNv)Z6Q!Q=;S1ty!GI zN3Yd}#fh%dam;YtrV;B>m6>9Qp;)4BmpGkQom{-UUoI{#i^7d2#BUlmP3L;^-X2$f}ae zWyCOfg$8anaZwn4Hx;W+6j@X`yBd#8$!bVL9^pVa);1^z9#;qv!E?XPmMHS>`H8nq z31;OuCAZ!tpbC|pasa=aT$Ynqm`lnGM4 zIzI|b31}~-zic*ic~$l7^p<&rJ(ig$5nd_uaFyK_^hF^o<3;X5yzDFY-D8dQVt*hu zpfl6@ok|-27bw5*R~Es!j!WtzavHiHnMv@)N2wW^Q!!pm^nonl*e~X&^W%60V;20) zo;YNibd#fW|JcB=LPN;jDJ6cU>EyQU6HyUf?(_jX73cciRMjdx2vts9LfQVgDLcpL z)}BNsFx+{Cf|h?LJFF`3K~EM><5EB1GnNW%k{5wD!Aw+gxo7(WBb~R-0Bu5EHobr%pl`+gh9$ibL{cez^7HB`MYV z1^4OUI=&5niCmj3kQ%lZK?%jEHfauEhu=ktYvx4+|6b8Gv`l+CE!jH>!Dt}IX#%My zsq*8=*lVL&7>aNOPBwn)!W`S6#fFH^`cuqQ+z*^tK|o06UDVOr93Z&B@{27RUKlvi zpDi38QJR^KExi=5sB)faL>1gil5%0fXbeiEsVo0!mK|x*;9`S4P^Q8i88|5Hdarp% z{sS*4G!z04_ptr79vZ*fMs&?=O2c;A%|gR*Ct=F?i5Ar)%*CSN`!`%H=5Fp=*aXur zYhOTVVJC^kZMaqig_GqMPfd34u-%6)J~z5@)+grV5WAEF_hgd)73id#fKJzYrDWRs zfz3Sq7f&rWB%R=TS8W4E@Zstt%&mtSl3pQC%Doc{yRl^`+cgI9Yd1X2jzz4RuYP$7 zBWA)r1XW5sRe=)6DAJT4FgH~u?9t(?Hz-WFTJDT*#T+oqmO!xhhRv%~h9laBp{nOOLSBfEHb#a2^$I0DqFDy7W$c!(>s5Am5pfwlU$x67Sm z!YRd$Gfir#JAJw|QmaW@Z+_B@T2-NFe!v{rym0MeObol1NXm0(B*(az;to34^n{mQ zf{b5C#cs>TCrcdNu%3cmp;=Q`wo1)G6XnUQM6)Jc-<~r+uu&CV2`1Y6wRH;2VV;?b z>O4A=-G~)$VYLC&dAJF!CjN!Xhsu`kvYN*Ccm`#iZR*pyK;vM;)#p(3RT{V3Po~7- zw-gMwIwkTl%|Q_D=e*hwqV72*6~l_xC!Aly?YaCOAa+?-)+P;$d0rc*k!fOSZ{59E zcTXALj*?(MNI&Q`p^;xdC{Ja1wVaZ_v#;WJU!#aN{y*U=essFL+>4W`G{Q%CLS5{S zB?5uAtf>rx;-86I_&=ZPV(n;`Bo|f`<;>f`=I8^ClGO0eU9uN>xoyHYCSR&^O*h)n zxTo*5;2TO`6qmQjo=8IlvE!@)wGt(i))~wQ9*Q!WUL88i>Uv3i1+gck-xRZx-U^># zl6%ix43Xx{OUdEtxI9?aZs{2^OX11wP;YA46(W-f3cDvq3F#7y6`HA7+U#H=ebVWZ z`Y9WcH`M%Mc|2oXxhCG{_M}EBhx=>sAXmBSNlD5H6$2jIIy@mr3*#%ameaQVnSO-p zFwPmZ3#gx0Ary8oNsZ@csCS_+eqR)wE{xv4&A|SY(`wS52QT!Yu{;eq=d_VhklbRx zwpfrnbQ0m6%^h{fJA7agl~*m>2kBZP7Nntn*rf1x7v{Qp@!xCEL|lV|c9J zxW$TYP;Q4yJ~Z#j3~ZFfCGLf}HLP87-uo!DvDo29)fqU=g--y9XuouC7$fQ`1Ri3- z;kWs=@}4JAN>jxt)?x1adRpN{*wCzIpWVYIo88OOM-)`eZ|=pXO7N4o+!+&4lbsMu zW-JeaiM%r$t4O@*0PT7y!;#58;;mQpLA5^#7Ar%cSFhGJi3^M~HoUJ#791ft6-%>seIM+rcRVT!|lk|t@9sxG%#m0nGfhvIOa;=NX!PuHWD z-|eGRx1uT^h*D21^zkvr)A(5X+pJj%Yy61i7_YlV1 zs#%krJie0N4@c~E3~RW|Ln$t70omxJ((GOqacnSNJ>t2%#$~7JizGr! zRMr(C%GKb|(JFcp1+-ZTThFMrTnPHgTN$dJ2OtE5Joy?bk$pCX*1mBoU&14?E54k3IQr29rHNIJa%7yeUjTED@dDgP!1`@%-EGu&K_!;%ZNX}k)n z_fcAw-0iJDBPCu$Ia{hH+bIkX241hS%XI1vkv`}Zmdn{#<%R4nGh7We19spi27A6V zl+jOBi2&I~I~khaP9D|SzoRs7cGPb{n#A%dL^Kv!SmTYBQ*0!vG`0Jnwc?8H^u|wd z6*+iTAKe1aP|Ds*0l$Wn_C4_Etun8ul#K5QrN6>=Het$?ymSn%rmZuuQ|4{dyHh

G6@trqZ+ zf1|L|6q#96pMwUbSox%nI1`1N1xaxkV-*bF?jk7MMTzVlm%sTv&S_|`7(%k5D&_I{ zp?0@)cMGx0RP#_I{F59kX3+5|4@UW`;GONMZ zYaZ8)G@QzG{ajNeICn#)^Rl#k>=ZbpEO|igL=$i!FvRkdZRuYuCf1NQwFl1% zrlsRf_`P&u4#$ekt8U-Z#~UjK!YYGJB*RMFBzPJHVnyLWTu(`6D5dC|=rPK9w|cfP zIr_N{gRV?YVx)KE#K5w(9#^M19=6Ie#X)+6{GX}0A@aCC)YQiqdFy`LKRHP^F4w5v zavExcxa>OSyTD}kqT-^ILZaITot-2H)dkvIr7*NSibN?|N2jWlBTd}AD=LjC7Q$TX zis#0HXd;8Ve4Z$KKJ4c{*+^O05#XK}6Syw(yW7=U{B(K|t)ODhpIQb8&MJIUHdo1F zoKxl($)QJ(%*gE2+X#vEzWqG&r3ilX-7&~ZpCeY0=f9liN z)zw(oimp6g$M<*E4b~ONqW3E_-|fkcQB+zuZRl+wz1~U5znIo*!o&YsKZ5a&kCXgk zXR~!*lsk_&#;MSrM*Dp|21R>=Qj$BO7*j`i5zZ^yY#kcW4k|tHiKu)EW<~LCM0lI0pLXb&cCUa0oreVH;qld~FJ=DumwD2ux16t^pD zB8*GXeA>^P7Ji#>7BbxJYi*yzSRm`k?NftoME9>85iJ!-A@M0diVJ8tSMEiJn<^eb zlX@GR2Urxsa2Mu7gqLHmh6BPbH9zBNePj`Av?Kbr(p$nt9iJ=Kdx-Dy`eQw> z57yQRY9}g1N)$ZyL>H1i)X>~ju=TV4D~CZk<%`viLU9WBb|ekcPHWJmsxCfvy@$eBPU)9FzED z_d@sK@vg4o3J?r*RX51@G~_jI3kMX<7BlPyam8`lU}5X4P$F#{KQ|r85k2&FMU}Hk zx>_sxR)p-6i_HZ6IaGo!2c{0^YR#=7+c##YB8w1yN%~W1-#B$L^1|Gx?Bv(>E7=^q z`&JGlBzriWBfRA-huRsePHmS!oc z9d}Id#N4Z>aPJH!PJ3r+y)09;Yf23kvllErJu6GcrnjCgH0_dw?vxlmqIm*=e1*%| zh7=*h)$v9q&x`a17UDGKHc#jLbRH0G<Tx^r$O;iQi%CY*|&u&OUIni%SBz9#1xRam&$EzQwRTwCSlxLvMA%Mpz*lD|u3^O5h%Kki_Xan6N;gc%L8eYh#x|w-Vt+2>xPASG?bu#0@`~B@n}+yj z(-Ie8EG%4xas`nst+1SjLJsf^A_x8wQDPvX;oYy+R_t$-o}D)8{EGj7djXKiQwjlk z1NxTRcdI)17dRR`3b5xru1J>_D$`7Y&U@or(GTqz9Gw+CiR(c7IH$5YY^OclBXImvwHVVZ?SiO7&&<-dW{<^dJPqigjT_ zO0=XZeKwn4qDa8`mR zPo}e{o^(JIY$l0Y(9*yn$W&sRLGue_tsyL@o1cpXH=c^I?caBQI}Mvt{{*U0C|Ps~ zpO57twglzX<(V#P1c%vonm59Zw@D@FwVzMskz&FkU;4%c0rA_Fgz&C{LsI{rGt@Ay%ys=x-(fJJX0<&_KmJeN3zy)inlQS1~+ak@U> zjLmx+C^zJAqv*{sUL-W;GPV>=hEo4GOV=aHb{IMN+J3)?8me=jnP z6A|?zdk+oXa9R~g*|>7W!PiOG z595!Gd0Fl=H1eccg_?!GY%*DH)e^ORR6yHAb6C5z)hOmE=657|_WVBnvK;Qgi}-K>D2k_`VY;|O#LOxrZLpa|_!PV*eLC>d zqy&qgL$t}#>qx8iwl5e=_eQ;#+N+fUs;j8eLv&y$xU(|7XRJe&FNrcs@(i-%b@FuY4RhBbro^)C!6{k1K5xL_HHfrjYEz{cu^C$)4$fD1wVx^OOCOa0N4a?lx z5;J)|U_3#U1w!YO6ot4Yw|4b$oAB<(2&u=P6lbUx%$sX}=H+#p>Q85-%EijCd@Uq$ z*#@NC@>Vf6^|?FTjfORhjV8VIhzie9v~C?-$l|_do0UFk!i}+*u5aV@L@PnAO+)V} z8Ajm@HaJAdCKi@H8T;z9Qn`+Eu0ypF*OWJ4)Kp{vs{0&T%Rd$p&H~&aHSRIg>{X0M z6;Y1!+^cC$rnQMxb;YT6H}5M6UTG^6Q?!uY)=zx8nDBX7>p%D6`kvNPijcPbFCMhz z8`%rbA}TF8Xd`V>olVEXyC3*E*3}uZR4!knn+aVB(Enb))xFm+uEfN;FWQ?Y``7)v zTnUw^ZxKYcE6%~DHX)>fw^ggu7F!6ZAAM|(pxrkOdlYyX$M<$%Jg=8UF&-Xl~9iJXu@X5F7KjjxeW53hk9&(FMHn7m}qBB?E?NK|N zyH8T06x3EXlw@&L5FY8k&;)mVl`2*uBiP{1MxK-&(KBzBM=y?8n~H64nxn1>>L$Qo ziZbm|%B^wc2~OjwnG;%p_92!|ZHd|m8UxK2Tipk-9rU!%$YlS^r)-UlIX=z|*C(^#L@{dO}rU-oroG?oxlSPFWwj|nHyBQ39B-qW#Ln)Qb?D>ynWW*+w4c|KW@4!+pQX5v0vlMWaO5oRLovA|L}zW zo!T{rKVR$uN5aFSHu<>{@RDzF%c7J+Fzu|6ighp=?|> zcQxl0{7S|72u1Jp{(9d%(}eTbmb{r(FcD%IgrsV7yY8&Mplm+b>7{P&bnUbnhIkGG z0olx>u&y?L?JrDAcNN~=7o<*uel;g^5LM&Wx_TZ)=!zMhNI8QBo2*4c{YXETG2;v7 zL4O(;jLf%-eD!6_Ot~X3#(d2cyJwW_P}r#IVf5>A^Ki!EDoM6?81VidS2aD3lg}cJ z$40*&3HGpFIq;+^{P-qlZVgR;ssOP zlY|9Z-IFS0+b)oJ5&nE3VmV81D$Vz)edXi%L(B2cn%%mZe2t#S?-lkilDUmcx^1p) zB(d_n@!c}^K&)&sNKTMVF-smwGPbq0!wrljS7ls_24c5FBkK+p?sJ#e1nq&2$MSk!l^cLGLy=26UK>tRe7c}<#+Ur zpX~Xt84)W6q)Ol41<#fL<<{$8zls1jbwawO)rTU8Sec>D&n*9}Ff&+wYl|uso+S5t zA*yW%Gx@YrmO~$y^W{1n-7S3Ej$c!S&QOO19pOjqQ~J6#O&y)u`lgJCjRw03c-eQN zlVl)`LW&xLuT?QEYV|#;XF9HGZZ7JOj0xO&=Ia$v2UdnQTbUS`h5bZq+Wa zk(*vFnN-|>BxWI(gtJo`s(of7^=^GitbS~3@MRXZoRFE~g8FsP$Js<$*tr5_z9P!m zig}84F@ov0QQnJGp<7uUntjU6vHo3?vxN}LSfLGO0tvME&5sgF9Q(UNSI>**i;+Uk zCAYQj|I_IwNCYibZ_6f2Po)3MSo^$BHQHF`pmBzTN7eTx=ivGlP04iH{Nu=#gfPUl(Fl}J5^IJU~$aoK^gXn zm8Wl(pY`V2XBRo7T_=glX4N7wH%RkuX2iXBsN#-myw4KeW)(T-O(SFO zdsSxNY7{hK?fP^2-W;_{F&Y*yEOU=U_dM<~H*#8%v}tCb3!g5YPs(>Dh35as;_97MgMKvEaSsuz>#=s! ze>K@vrZEx(L#D9`I07QJRsu6iWa=s&^Dja<(Q4WX}abWb6oPVf775c924+1Y!+@x1R(L)bP!W({lj|l>T%V(0o z#m6i`#kaxCs$Sc1^NWzCE42v7M{amkC*8p z%Op$g`7kmNe6ZcoXw!Q#EzmGyU2hf3CE+l)3-qfT0>3GRWaM60%&Hno zyP{Tg{4LVQNN3^dhrw?G^7w#b`0N`In6^NB?uWW$vd`eh18ZXhGBaBVsJRPi7N%Xa z*U%-peyi2pyQ(L`=@h%Nhbe- z=080OY+R*hE|KAiuKe@|ahb)we5&n|k9Cs7Q3S#)FG0}XH2kWxt!{J)+$n9tNXw*+ zDlgNB7mk)dv{a>x1e{zwPp2etRPyJiO zdS+=iaH3Vz?w^9{B^xf-pQO zd9rh4a_&BdV7{Jg*@Ml1b;BQaawN$btk24r$3;ib^WZg$NP?m)(c<2u_3xlmw=77t zE%zXFt1tDtpwzIuq}*27np;C;vt6~p%<$(sL*{9vmXh!;%b#loaD#~plrTr^1M*hD z`rJcLV_Qo$C4eO+o&F3~2)D3hNzB@!)x0@Ph>pLbot9rdB%N<#J9!mQcHcM`fRUH=DFZyD7_7qIOXhf<_a2rk7+ zfkLt1Qi>I;;vOhaT!Xt5w<5(UP}<^BoZ#+I+${+nG$aH#dCvLX_gm-JtgMwa^COcz zd+xpO>q!cWT5+1tsm>&!xHznY!}OqH==V$1nXdxT-pmEVj*^h24Xv;VX1CXnrqwT1P1((zSwGN zk6v8e^d{d+1DMZmg*AdcgVWgDo)Fo@BcWwo{@iPs*sCDyw%JJKdspdRi|Gy@4aiW6 z38;`Tw)?25MfO&U|Hjpumb{wn>D?QZ--6ql`rgA3<|3*^OrOINL3IP9y3=X6 zv6=WCW#EOzKiLC~BDlg!gZBMDWnYZb-|vncRA=dp50N&rtzxTl;)fc$&hv0a0|ZOZ zI|9E%cc+zfS~+_i`no1V{hW_e%}t3fN;ve4U6mIF1^$!k^#B;)rMAwr`bqMjaja13 z&yJqCqknJ@3QPD%{g2f&3H1R;*KE{do2C)ox=3#w?8xhyCnr~R*Ohd4ipBkFPx{c> z^x9>dXA8#s>=F6tk8M(Sdy59dZ(|EV?QfXI>l9vSz-p(T!I=2z8}$G-5j1CGWa>75 z$GkMITCO2hvtwRbS&as6Rlh#6R7iPLeT?iMGvsU+UwE;%0=y5MPa||nE}wK9T9F>F z`V{5FE--8bV-&M9ymo{+tlJE(4RI6Q|ABjw0!~^hYb(Msucd+ivxbQKg^nC4HsfLPyDDp&PcFhX5e8WC-8qkR|!5rZ@9)QNpkdx4?K zkNC;!J<66-^?qky%)?OA#R3WDOit%8k0pL%>@1}*=zWcYG|0ETK$3A9Hx>t%?GG>J)qHna&#-NlJAJBA=?SVuJP$%jf z#?zMbocZU^f%<_Htc80Ai%(G7NK4bM3B17Sszywr$~|IpM{eAzF1oWU_g)5BJ|a`v zPq8unjNROGrzita7=Ai#=~FVH2L#$+7)JcCuQYBjzm;Wrpp$Ve7I_$6CAlQaa10vD zm2QN`?)_5rbsE1O-q&;JYBOn+^?k>Dg53qr;xoYYExD@nY?dFJB<2g8xFHS9mUq_( zu@^C>FEzrxHb_*gG{npZTruYLL8V=p>g-ROEjyyf7}L$~u~g9VFU!NzY7=92N>)D> zV#x(e+Xi$2+1VddJ;Y8{m{3sC7FYD_?dP}{Cl{UU>eCf}Y|WhHszRSZ95^7y7Bs4( z8b|kzI3Mh4mIrAOcXwY(!|o|4A6t<*I4B#PJ%qfT`=Mb~xX?bwI=RD!;|r*?zmM<6hzI0t z&*kcBOCb$_2G*&C1XuCdv_X~Yp!SLsfrPedN^!oii{`6#bQG$&&&Yb4OVB~;u4|FR z?&tQx%gbE~^3ec__RGJ;>*6<&h?Q3J<1ZE(N6i%P_NC^xP?7`oC%&)$y7G@5X*Y9^ z79yK33U_*6y1Nh5T{oOG?HhjDs+TZvA!ux|3n1qZOe!fw0@HFG|~?~1r6(E1+3uf`84+O+OYnPJ*QhdwDd?hQ z$bOqbd(HQ9(&~CGpj*=DZ7Y=FD3ygzu-Q%v)zokKX1H}tD!2P-vnuNXkA(#X>9Le& zIk9KyBi;MJ09t8tH_c{;5Ft`!1B}h)mTz%TU4iS$LLY@RzvEWT#!J&jYPri*3o@9R z$)xIU-@P`0u{*0=iKx7yPZBc}Rj3Eb}nmFBe@SlZlv0n98*0yaCl|9KY*k!A_p zP6e&~Ml6p{HS9zmE?PpbmzJq1w8Yno{YnU8`Yu2-@hx01OzplB!@^r#ko_KDIhFMY zaKPo7DC<_U4Q5KLtqvAm)u#QNO4drqT`yvsl-v$BYkx@8jWnn*sl7)84&_&_i2IzE zD5Z3)*J>msI!5w)>2klw(HtMlUU#V@NSly@1nIvHnw&sKU5VTlV02YxD9(0dd|#t} z0b?Ds%*x3P{FaUqvZJ_(4jXqYo(O9&`&~MGP_HyFPmt+5!uDjcdka_jDQ0-O-;+<* zxlwb^0k&-Z?hTwU<@!rp4!*Id`OtGUZ2AiyDPh8=F_-7^ZNy5J?-8u}Q^(!xR)qEK z&0n1)yq%SuTwfz&qvEkx;sgn+if*6QJnJCWr~lc3sA)xeWAR+pom`6 zNVmJgM+rp?zP#-93G*12zsIbYCG{ByK($Ps;l(CwM-cqOQDtIe?99fDzT`dnMZmZ} zxRz!$&u>FK4bKJ4)yQxgos)t{Naa& z3LbU+T^RayRb9`D6(n~%OWWkQ48~cM45@&IVqTa{HMCchduM?hJ*)~ zpD#-!1MNPDFMKFnth3?yPn1r5L65S0{PeU*#rw**4*h{8)r6L??%8uM&PJC#*#tv= z?b6&shP~~$*zKa-zO@}*s5;$nLfF&symUf~U!>NmVBXl-3?b;(zUKNneTMbG8%MX3 zb|kGww3j@V<@#LG+)$rZVe1(y%woRws-C0G;?13b#URCigFB*ErFMfsTo-8Xw{KrQ zSyWzSkeSfylYEaQMPxBy57BeZ#NUj8)08)#!CBYlb-io35&&n!To!0TF$7`2knoS*1nGz6pv?(aut5 zT>R1#y#K2+-Shc0f^j-n`VmUx`%`lA9;m2&OT?q;K#7w+@|!($|3F(3``wuo|1(Bw zMHoLn(^TO?G&6k-i0P7_KWFOG@QCMCvHkq-)W0M?y(oP;Q_-$$1gO2ce?#Jn#g=S~ zo&VOkLB~*b?FW@B-EQg_dX%r`{h2#iHoR#M0s3*!-(r9GgJxXv< z2&7Bg5BB+q553?6xvRu`(JFJHRJY?EkN8Csg*9$n_ViXXC|o4NZpy zt@|rg;@C%>q5`A~l;X5gOJWyrU9v`TWaXqq$Uf4v=@%k%prG|F;Tby58eYnX|%4nu>&z&<{`Yjb0`voZNacbF3 z-afDCvgNo`tF;k45VV6pwy@Y+pt;MA2^0$HK zE_L)?@quuxA&cVH(;@26*LOl9N|M8uu~a!f#q`O5C#{V+W8HK=#GG{q&nQZu&ub>b z^+hF-c!Vn|Dk5yxPRz2YN4IK5`x^J5BP=z=bKnZNN0X!L&1mLh+Q1pF2J^IP9~cy1?4mf- z+QpfxEH7~} zK!ep3^Dat%?nufHEmFzOGe{wrF6>7$p!hTM1iRKikS+AtLB%hL)>_Dvi9@=Wz7cRM z5FqL^NqZqVC!fu-d`@^)x*8|AErm|f=iYAV?XZ^ymaek}?E^++&tCa#^f~VX+-s`` zAI#6x2Ct51WuJ#OHDRt8TMg#1)BVAP{}v<*RPr?&EsY!XD)&%Q(hQra6wSs8vb|6ifm;U371VRnQh_qn|EMBB@Q2#wLY zC9fkBJ90bM1+W1qtk_dEXnl0R=6KjYE8}CI#UW6zYrl22+G=n@kPOL{5M-;J2{gR@ z4U9EWkCli(H4B!GZHhCT##*iOu~M8LdIz%1Tlc*=cb8wkI5&qjfAj3Q)zLX?lZkEv zWBT&>#&~)#E9=zeHI6dQFGe+PG5_|5NvpcIw5vE|i3IZUUCHD|CoE{7ut3&EaLx;h z+9i*ju_{g;8H_=RaA&+Aq0!xG9zpGfSDnX7!5@L2{;q&vT1Lx$1Id*~hI z<*poo4E7}hDfPAI)qY4T>nAQP(--}h*QUe+d`P%KbpTU7)|B2Q4$uFeXtVQ-edA`k zTC9Qf|CVC^_k{uDLUP@RmO81XdqX_T`#In*J=D7LgFfS?ULtrA11gGcyr;7#SwcZ z%E_(D0`H1k#snGM14GiV*!B}+Wo2r;sUI~)Hb>gW`|Hj}SeK(8@=7|tHAwyr(s~uC zxB8f4-VG@$I<_k2tB2*g>t#BF z_sh-z$qx8|>rbb%Ljm(Sjoq!21#BRp2_m z8->hSf^!)7;Ze%Y_xs11-Z5i$-YKAAnz^& z%e}`1r`;*;KsqqM`<4dBtY)P|`faCh1O5~y5S?$d! zj~QAxU<>!eIHRc0%?z84GzoQ@CjpI}!o9PCEd%i%`c& zctlN%_fkWS`zY)$)mgw-JOTw&OD|{x-fs;!{r#lpf~DlU&71wL zVD$NyNeR8`I6Q1vZz(-EwniZVWaM52X6rQV{(4OmHskKuj_#`Fn;palm~IC_vx?Qb z9(421JXF8YtpJ?&+|lb|6E7^GvQAeO{3oM}g|Css>jCrr?EM7$guUQ;|8heA zTGii>n|VCv)~Nei)1zTRjGUepGQY8lPKEOoRO;GcCf!Xg2blkuQ_BvVy zf<@Z2mc7dIoDK@Xga((S?yE)j-;b}(eXSfdq#9T2>ulDS;sXw4!K07yR$&k=L5P1_ zw(N~P@Mv|y z_&2>%Z=gN?YBMZhbp_thzIk_A)%a>5nW%j4&VTIccv@c5W!|T~ICpf-GAbW=*{QoE zj_%J5<^NP~OC{m4ACQ|-mhO~jqUSCvb0Xaq|HGJvr8Q6b?%#k?eI!|~^w4tI7;q0N zhq~Z{0oYrAI|o4<)=-r$?dqv2<3X}Z0SDFyQ)j_#GM^x1d$ZGIOK#iIeZ9+2(C;Z9 z*jrexP+PmHvGWUGA_Z6nzHE!Pab zcj;7lPHr(CwAzIt0E`Q+xvrsxw6K~L>>9GhahjefNzfX7fAT$W-G3W{D*|KIUkN9n z_7A#FJEu79@j3B^watW_llLBfi6bgE+v?%D@Ql-N=J+`6f)zVJ?xs z?x!;((JNvT-f4{ok15|O;O{+MP$<{04sF_BB7MI9koMnS@O;cy;+RmAw{KfK-W4Mm ze4Rbb|=PiDA;|RB$1;hqod!OCr0U~3LZ^ua7;ZA0p4k4i%S}d z4l30%6qcK|8;YLJm=w)6tk8K51Wa{`O+CP$3MZQ?=AK&ZUlqgJ8fdkAzY(!`ci!5% zCE8Br!ux3wobodA@?QMsETO|1Hnc<+Cx_w&jLKSK2_+?r=`sj&Vz`N82#ce2e|iR- zg0aB%*LZ=-Vbve2GTsGzhqoqS>5Q@5lCj6{Uod#=LZ7fqD!hym^q%CYw-wW!dMN3n zU8oAy1mD{BX#-Um`1ks|jfIegr?XSURS2f_Oc0bv4g}f2u_gFWG5N!-xyx)Hiklav ztM!bUY&batk0^$aCt5d(k}TBgeEhlqgq_e<%99Cu4Tw>G!m=T`7$&#S)6dENn4SHp z_-HChsfq==zliz`iIhiZ9$RQK^l}(BpLV+TD|f`1;f0ek&4+VNg};l!xv(uL^CJXB za$gfa65TuPl+Aju57oxQU6rgZb_stS^{_ ze{?+4`_kf229Tv1&#-&#hTYKfLow(_$k`7?%^x%tR#;0$_oe?&L9#FIXGf^y8e6t> z#v<;vhZ9p91|jRoCS(+x!h}U|(+y%5V)iQ|bo>3r7TRXj3hukFC}8|9Pi9Gd@k_UYij3R?LOBsx_17|S+wp?@U@(PC1HYX@ zUQq;1$uh0rIsh!!*%-dex`1BPb4yFyedaGWFtj*QSckKaaeEvPT^EidJ>J1#DXsZw zH(656q9A>aXBHy1t@wFE(B(6kL%hjut;aqjQ1 zutW}2Gfp~=;$#*o(G&S!-O6LxhOfi8UwxDKo=8Ml^g1F zc2H*2EAdU%xkUYC60q>>q%7X%!=z$bA%%1&lRf`exONHEA1sS{N6v z#{nUL+U}NM%$Lv*>8O>??FB~!eM@ME0cTtSjBj%Q7^8bM{nVZd1IOS+jf&tqX-A@$8q#MSjzJT!e+Hd(3_B% z2m%R_ZoreFTu!KXYceO8!_HgB{iSIm&`&drwPeqeVq~(k<;~e|o1r1ty_P7+)M|PQ zsLX%;#t_*^C@`Ftd$TS*dVLiz6|BPRW=z0qP?8?!R|N|hux0!6Y)0*~O3OF7J5B>B z>!zI9TeBaE)wS+33BO;78 zqiCwJ{bV3nX((&wJ>*#HJN{&f?adUMjvaV{QTQ-_bwvy&E2SWM{c)|OIHn%5={mKc zsY=lSE;r-Cb8_U3CU~g+oqGI%lloKs*8^1?^ZvZACtXE562J`E7WYo ztj52wA&@-2PPN`SKn}mOPTeg&Z)twn=7%~x{+`8u*k71C7+PaCG(9A*rn2O;_}3@b z|9s(-c9gde@@VW^deDIYjm{T#zCcESqO~R+DVb@r0fSc!2iJdc+#>zmRE?(C^!G6R zwg$p`L_o8ehAW?Tx%BS7k-?btfkAcV7WJhB0pY!E8&1#V&x>teLUsf{YKm@te3Q+Sn>oi?$rTm{M?zGAi5} z80xon->vf-zdQF29XC*l;-ec7C#y{t;EgS|D3xBh22B)F*Emnkmj8y-K#Nq9-tAB< zzB+LyJ0LpiZ`nApxV0FwK7vU=a?E0{~0y{u^z(ff5 z9Ie0Np}v3MT*AyO1?X0xvD)cJhko5gGgj{-Wil90PFfxf2hW*ZNHpNuleWZ*(cUMC zMchOr4jI;@BV+3rw2rW$ul3ywj*^>qI6fG?dbz*OwojaqrC31?VU>$kP9MN1YkR)!yn{S zO#2dy?H#)W#Q$9IFXJ9MH4M^e@FQk6gAzS>CGXey6YsLvoICoJZ%!F%QyJ zvu^V4khf&oVB8sG#?T35p+TXJ5AP5HCr;HNNgrGY!NSNUy-ncoNO8v?~ zql`^LRp#N&IC+RR>_v<+@eZx6o*2_poa9Ro<{|LBxctAa2j_(ShS}Q|1bNeD6UUt< z7c#PxvS%*@4D$FsT4$2nM3?LSc64km)U~<$^m2k)N0N4_DaxJ_KYAzvc89P zLpkRihSoQk|d61t)D1_!bkOMdxC6C{Af!E`TUzT?a$SGr_zN{uG`sl5H_Q0 z((4k09Gb<9&=8)DeBO4@3+zAXJ?;nE+$z%AjD z=1cF~n$7H@BJce0z)cgAa_59f0#*+>{Z3UGqFh{xAInKZJHeOF8eAW-^uW4UH)NSX zP!ybWj(dlkK8j+)Ixo@ThA?jfm!c@uhuin-CBssZfK@8$^?lL&DW5*9ATcsfDX8ww zRbIHSX=)W7(2tt{K_Q>PpCnpjI*+$JloRy_T#&Yn-B7_JC?-J&N{kNZ#nd}ESv3fQ zxq?XgM*Ahb!h>k}X0sN)It#<)5fh+A0u1wmOvkuZ9i1`vWEAm(X zT*%Hk{aznZ3%!cka(}7;|1ziTO`0279?Elu>%0kj2}E=>Run{ozg=i3fosRvDHezk zr01csorXlR<&HHFN&oQm!A$SQ{&P@(d%_Gr=J8Iph#7*gEw;R9y#T0jfe=xubU;uDc!Tlc@d1xLIYiE$%3Fa0rVp&{O46J2 z=pU5Q*>2^Zd%5;F6o7ejhj`iGR_=U!M0!oujw7(Je+rSb=eK9`n9ek_-CD$cx_WRP z>r773cLQDU86^=`%dc5CU^0Sam78Iribr!c^0x2o?_K0k$I)fERla8gz&}BGoYx9= z(hbeq#--UpLr#}twv6ecDbGvuc(XM3{iohJdw>T}6!OLqiUISYFmP4YOKnj*-8a8j zJB$J*|B?o!Hgm|O$+k8`bDK-8)5zPOzP=m)A0=_?tqR^cOKEvfKZ6Za7zvq(zsN1R z1IW9Vj4#d){y1Ha;ck8t7JGMm+@n`w_o`U)y1Eg4yEhJ=;Z*+})TQOrc0Ig2$4`yv zs$yNdA4l_Fa@gm(Hea+BCLfS?w7uTV`azP3eqmAZsHr5vkLcaI0ljK{5*U%*pY=Bh zWq~Pq_Pj=Vf{&3b3i7Z|jDY;ACI}v{!QTW;7DUeZ(WxGzSIeqNhvSj39T;iv+g9CU zn>sDxIXOaJ7Vz9&UIv_6)N>ydw08X`s>HW0p?iJ9O&8gCVbXINGwTIw3|u`IjvDb~ z#XP@2?&UgiB|>fx6|1XN8ke-pyBTtc>U9Tx>Md)?8{o-M3krSge8W9d1@Y+uz1gR` zQrjggmA;o%-^-WV(ORtia*rG*?f2&$DNURP^O#)bjn#hX_x>HUId*I^LZIW%ZGXu; z+#7gv*~*O?PIHb+i`ec+Pp(?ypwa&Ff&_I|7L?a=e;bE}VUCQJrOlG5mpt6&JG1ee z9e2GeRASF}>2~J{_K~bcm49-UP;&G)<4VWk=(1%|vqt)evWCv*b%jL<*nodyR4|0u!lTUHCV7ftZ@p>_(PD&yCM>yDn#2GPWxmNNF zRP&e)H!_&rocRBLz-Q~s5b&?*$$0ATqokp}$mVGeNJom&j{_@mcv%Bwj5?YYScRsm z1L>Pf2cBsmp0lyGgDcz6(7S?dBd79{l!ruLrdN0D>_tP|B9nH+6;k`0X5CH16f18R zKbgF;diBZ_<=8KkVT)dvq2^4Kb3hF{GCZl%ssHguWBiRlost~0j82|kZ5p>{x@S-G z-HH5glbP;N^`=J2=lCt*owA5mZgkPn?og+HoGtjx_s1WshiWU%x@Rg@z13W}emhUA zm+kg1M;$C&eehb=y0pGnNP98$wru3fnVu4|Z;B^>BJGs=!-_IzW6C7@mO{e{4gidV z5AnW8b_hzbROdDNS?$qM9og!Y!JP#i%T~pkh;1%bqq>3Xl?^-;z4AG5$WYJ_cD2x& zYc0B&IF_S&qn;3^a+{~3?f6l*vh`1bzqnPNv5%{k)?gXGO|JX`7t|!k(S%-7h1$k1 zZtnHq`xqNB_2GOr9oZ_JM!WCA?^55c`|fJ~_Os+g_TbgW6kos%uy~}DOw8*E=!?ad zvY;xB20mTU4h^|~`{gg9n-t!M%G_){p}$rnQjOB}pS4hu zw9;E?z)<+rF~{x}X~MkV@l{i}1{KYR8DY`pGfjg(6K#75n`guBjvi|oUv>3q`pt@b zT{9fCEH|7*<_t5<1@N0nWJ(L^q^rya_n{Yv;7Wr{|b4FFJLzb#5<#d9Qo&?dC*k zmMguR=Tda>N!~NVE3u3mtuvtdLWarv4;|n5`5RZy>&^m6Py=|S%{HUcHOZN`i39!8 zlD?N?X3Vm@yb(Kcxn@+Fs{S)WT=p|WBt5$$G_LCFqpa$Sa*JvBn|U#t%>c4w<*ab+ z_YJzfo^IH?nc;1Dd^mh8>#epW@-pkS-}v{T7hUP$wpePg4wlwy_}ievLuXzv56fic zuhpovqu#xg8ZH|oQ=bM!nQfwP_gf>f)LLfun5o33NNzk#1AcIk^l_-Xa3}dLb8fHY z6m(U>d$uXf;P9906U(8P?&r}JHi{MZKiTpZkKI%Lh~}-;{xDwq{nL;9KDjAy*ZOaX z?9!-4)mp8j-v+D^cAoRv3Kv_0^U4`AoEXFq|3uKz(i z8ahGC)<3#)g9I+-aK@&w2t}+b5xtE69~MB1iIL8luB0+d>`Osc%P7|PvEX4Bm4BB`f&3WH z+G9?|U;-Rm{6oqIs!7SmzQ?#8#M*3X(QM?Q*gP!HoC%kR_z}m~ujY?%1>mvfxVUd@ z@iVA;UsaRfJi`Z5_9~{}b`juPJXY(>NWkws-IY^(k8djMgd6N1Mu;1c?*pX=Xm&c| ziV`22^NWTm60>lchnWlDx)2kx*@mf@=if83Y>Oy^xl5~eK8oXz=mtL7gg{S z!A2YtOp9Ri4pZp_bUnrQdffSnl2}nZF0G?E@qr}nS|(m7H_1LnQs@RrsL6HhEDwqj z@fsm$2BA{ZWWx_}$8Vy_HMKGWX zh#&KqzdHw|K#FEZMG&%5hHF-{hdAMLJ@!!C5K+{{2P*>Gl-^R{G~%C8ioOnJ40(Og z=f1(}62eL>yeS#@g1C0-i!eDws9|TgIn6b$ui6WcX&1if55Y- zB>#$Mo2`lZJ9|@9jZh-~aF?K{kWC;l8f2QOnm3U{#iUC41V_fa^K@s&%0~W76aF-F znCM@(8U8{NXOs+OaDN;1LJww|4me>oPW%y9Cp49wFC@%7T4s{iFtkHL^)0YV76A+a zZV<)G?Pc5%f9Cv3fhMN1mP=v`T~#wwf=Kq;gmw`>!v(v{{Q2%=nv8?{;Cm2NLXrsX zuA1mYJZLi7X~Ws&6)c1%-X>T~(QTvOzbDmvTn6D#&AG`Wt4>L`9Zs~#2*qQ}Rgi+> zNRjl1>U4$|a9$9gX;7DnZuq{BraCa-<}LIAr+w-8_@{Kg%`Bffob5I1QsTQnXkSXusw*g9ky|fc|7GzBTo) z_%?K8p2ZyL%U=&w|JR{`ZhiwZl9UQKcKI-ag;XfUtGH6WIZg z@_r%93r zuA@I8>2-#JQa?_WP*7aN%L0mOyp5O8u!F+y&8nqE)EgR=9F&PDLZdnL3)TjF4-q0b zC)HEp*H#Hrz`>^>@o^+~3gDhHIMH>8xzY}G`KH!&PGD!gkAhrbm|vzd!@=VTbAiut z`p80x?^}j}VI&9i_C#GVgAW5bDd432^p&aVxtiiGq`1ZIiHT3$hB#}8i??)H|KifEJrlzQy?>gSh4BzF2l;mF`7anld z3TK!)CDG44x{ls(zIZCtQ)R!9jd&qEZ1^9`=n4T}tESioS?W0$;Z*&@{xu0Tkp+Ma zf;s1%WY=98V~1e3bA@E@6jwdS4lW`{R^i1cw0|h zGV}I-TzYpG!@2L@;F;>QLKVTQ{UvqQmxt=Y$G4{M+s;UYkLvVF3^G)$1|px>d7xGq z_!o^|1e_89;D0_DiM_3hu(hWB9q`#EW1-1^X@V%l_#8b2L%I=Rjl~S$7{8U{p~kj|IHN4f6*Fu^`JC<)6ErKX6QOgu<*+4Ct-+NLazap z;@_A*8kCgy`Zw^?A=5N(ca#B4Ek@MffwuE%2Ys0jc(JUL1yFp0ilHICAXXTa3ZGpk-!)2Q z(mA)T$}409bq4T|$X{x1C1v9-_(&6dH#27AQI3z3YLz3bvCgw!L+Ts!Gi11~#Ce|Z z$E@LQoV01mp4pv7eO5wGcJW7B-U3l)t*Ll*(Lt{&!km;&KWMx2msf~4WN^o4(!k1O z|6x^pRq8ky=N(v#rwwnJ`XBR|oqZNzt+2>u`5k%%lasYzFpbvxo;jPnFsrU1Um9BE-R~KpS;4{lpmaC zPTXHFMW~HA%Jg!mZcxUT&M(gM8!UCDTPpY{k)>x%k*9E-4(J>2XS={&?g?jcprE2H zU~L`aakMzMoT$0NcB)N6gF>{e58y-)Pv;PLOJ5;-l?|1JCwLz)mbJlyW=OF22NaGNmw>ND5?*0l6 z)YY3z{-KV2S))ra0S|P9S&RM=67hMboR8w&;he|Z#vDZohRKHLsNiv6Yy&%SvI!Q$ z#Hn2M2YiUSGiz$}joSG|^#03aBFIRglc5y}COu8)JJfN4D?88i9HIm{*2Q=?aJ)@N z*7_v-aR>P_r4ji$li$O&*K*13446>a(WaWyYWil1e1L%p1REzRVIJPE5w7PzGW{T} z-M}baD4uD*pjAS$-TDTHoQO`&07XAVC$Jzy8iTI`N}Xo)4+{v3>jn)ztQVrVpg4-d zS!Y5$073BsBecD90ym{yB3|^z#t9)2&mfY~W(zqB8gPL%B)iCDM4YAIQ${$U%V(KU zX?J{61ONi4PqqDO66x4?jUcK{ZTUq(I#I}xso|h{+(i+g(jUh3V}7b;Q1X1_rE`=I ze@$O9%}z$YzsN~kY@{h@4dISBtquxM@{&vldgLrbcmZ$=3si*CanJ?xdI;%4@fovk z+T`#l;Gv~cX`)b)fGC-bfi2c4`Jf&UoZaPB|CFQoL4bQ+$V902k1p10Dg+CfnrSiu z!FRULcouPN({A40OQ9I}UGL(Vy8^3u@6yA$LAn!CgZoKGIIBP2_2V_Ac~_Rj(n5~v znnJvwM{(8h-|ZPDdQ?8QA?VR$cM4HLi5ric>*QvLwu{-9MXyu;(lfvTk2WT}*H@}| zuAN7*R*Qu0bOmH5h>1wU!2_BnY0p2@Ap3SvmFIwB0sH?Hek4Umu{eN zdyfZn;V9@JKPLEY*V*>9YU+xb(u8GW2+f2g3pUJren1UUb+TIs7!|A~JZj@H&%2e@ z>hCg)UJLD*^bxhSth61)IbaulD7&Blzpx4bC~N~y5Oy-zC|tk1Xt^_pWFVW{zzqqM zn&rHK!d_s0v#}o=+dlOtPE-W?(yt`5!*O^#a9dL3GL8IAy-9pFq9Xmf^UHDII@h6+ z=T{spv9t%-pn=Uqj%~z~0}>Bml?x8v2PT8-gVZ3U{wb7sf0m9?URO3s#Vg66a)8Cc zBqFGb*}y_>8;B7g4GFGl|5Ca+#zx4KzxS`HIxTT;Ao8 z(Rk2(XhLLTSHfRLMk>g*gmBbq^w`ldl!o*ll4U;yU$S3Cg_9LcmW9Zl7ep%oanK*N zJ1!+Hidfexy?1#~+cyy5%NaoKz3R022xA^4MoZk$uq04cJ=~CHj;plRhkC%wHnlh# zPs}CIHlk%LN5223g1lT%-7@Cas>#iIN%HFv6;;ssZB#4EJ=1#o+vr;K4f`t7pEN(! zq@U68mx9yrGaiT7<(dZHx^rXUXVHJRXB$ghD=)|HzfH8{-@x>rOW)^^HE?70^6mc` ztv)FGdJa&xtoY5SakNssG-a%xZ=iX*cg}kA`b&MwAS(L%7p0A&TFLj&JW-fmDw|>3 zdolyjO~2;KiK^p8PTLf^QNKqOANh8*9k!^RpU$d#ThBaS3qg!OHAs!@`n+?nx|_pt zA{oShUabGU$|68v)M_ ztGkI{%u4&>S{OZ_U8Zc$WUDrlb+Cg`QFf}_eLLg4J@XsMd(4GVp65_W8@0?C*Cr)p4G-19B}J$@y$<%!!#S&>7yr&W=lVh z+s+4xei*olxoF+|*vP9Fr7GukVxranT_sT;bkOg+!4lg};v#_V{M3l=EQYMwRbbZmL6>4vkOJpj)aM0+g+s+^tvV_EDxmsNX z=Z!09NIOu0H5!)1UwCMwe@}Y*j=ZV7nGi$8hVwI|iKw4(8q{QSyV1^DRhwoJFaG?* z1rGQOHAU{yrtzyUJspY+F8arZ@F%KZ(=yEP@WSjpWNhsD4s1 z%;MI8+;3`X(V1*gIhTEs)$O<*DkFh#UB>2y-;!iWK`$;eGZ4ddEKRL79xZ6bj2yN1 zbVC_7UKrz4;_MdJmV|puRsT>x_;4yGYC114FeT~r8>(#qaH7l5XXL8SpOu17_I64T z(~akz?+erSvrMXfZ>QX=4NDh!T36&r8J)^ZnT&`;18vulX0>ii+H3* z(^#!L>R2{UF}0smQvZejT(9-BI+*o7gkx6CNW9E@V}S_Wo!7f-bj-jmh&lI=)Z&|N zI6{2q4l&(_Omg`k=GW(%t<;|PrMy-v8K{*SaJI8#`ouvm|4BD!YR4R!9IlWOrcSr= z=lt$^hPqf4ti>kLnx*lC+b+vzb7i_@nF;C)S()QHd@q)U-?BEL{corLymGT z!-`E)$Wl{&{rI-muROa|YdD*J!*Z|cKH#jbjw)6d()-wdB_;Js&bVAZkSui2MZExE z_hSq85%*5S!gIVWUi-K+_<7?bshRxE^v8?~38(JoddB{Eub=Y>Fi6l0r2pIi+{zLa$1dqgk2>krd2$F|~f9^}k zsuOBzjLZLx_2)lTp+NPdQ9PtDpgljA6JYzEbEq0AC$VIqsJu#&sypJMr4n#IR+sb0 zcQmQ*6kV>!>gf^Hl-T=@N}9+n6c(Q~sc8*`0-DxeJ1iW_4bef zxq{HB9Y?C1O;4-%-o^7}J+M@1;u*M#hera!y+?CcZLq^{O*Ce$= zM)fv$Zbg>A)-Iff#qMW5tfiTKFGtVBQ|ERvK4ZW6qe?^->6cv_TkqGf)Q8if1fSA^ z=xRo}a*FhB?352#kmBjF()JM&yGm3ecAR84&s!P)z87dy6Xv^p*PgKhU(A|Z(J3=3 zQdRrNll)h??xBP$6xofSMt&J6eii`H0jy?_`Ut&2X**sM4Qif)6UJ`1262RdTsaH{ySA6VzUD3 zXTjv$1#!U)xF1ot`GQ*{gxez?kVBrAUj;9&xAF=CLXC+zf3QN-kX>XlVGj%-_?+IM zZ1LFO2(Ynrn>35+cEQh@bu#PQC0c*CmZ# zNcl|B9Pj^O>#YN-+_vsv*luJ4(gGsg-2&1nUD6E-2uL?5wMpp~2?Z2Hx};l_Zlr6| zNO#A#IQO1=?(hBXe<1kmhqcy>G3H!j!u6q#;n)%n29=O7;H1!ToCi_}6bTF{6^^YW zClt;NJ$q9K?t8kPV4e%m2T zjd~(U1_49n>O@1of9xCTHU~N2Eaz)1uVnHUXViLU+m%-{+PjesDPl9_#KJ)$zKIB35%q9 z8t+9r7(@|Z?7cVp=W)$XT?9`6A=*nS&csWY@aj_u>RvJAoc*XW7gA#yQ>ZcZ*?rO! zlM8btXdzB!+gS=fL^Z_*Lg95^3~Gq`Kw7E^ArYVli=|@>5!YA`Ic*```XF}k^Tcch z`V==^8bRy)!!RC-qKZEgV95FElj0yAcb`B&Zmh*8Rg+E;ZmC$NR$izdzGLtekG(HV zawkq}7<6OL5ONG7r+F9YPkq7gPPhuUR8}ntyPFyZ{hYxu8Aormt= zs-eWtxIp8mDArN&%3=g1AZ!YxNLtc7O ztb000(Tn=VUqGfL^Ipp%vY&7IABXk7yjc&erSilv4n|!Ny9kNVm95S2m+}mwv^9?{ zaB@WM zbCa)TYz`7d;tSVgc*$r_t|L#uI?c(6DO!I)10@+YRc)nwhc-WndPX%bShOQyt{blg zI*kx{ccq5RiEF12nWM}toZk@dVbpN*twL|4PEuSRf5_xnz_!{$uJrXT{9?L6viaoN z)FFUnz^o9OKyA}Wc0xYEX*ux&(J>Vn$uquA)4cO?q;$*?`=C4h%UWiV8?LZk0fOZ$ z$_;)K>oX?n+Y(xv<*-WVwfNK}sByuK`yj6H4UTu5$ufyomdTb>{Ff9DNT6QCBcVgg zK16hJ7RPdk8}8Kt#+dRE$x%6ZMY}1`XU@;FH|Cnx3d`!ofXC9lBV;z#&wo8^c~~sM z+o>J1rW&6-Mc}SwC>KyTwrp6$r~VrS5ihLwWi+_l^oU3gPdiC78Bwcsj}NUS`}0Og zM)PX1ULJCZBE#)E9xgHd040vg-aWF)#m+~Qjc#A)Ip?y_iVKVotORer*GjVXVe_eV^u#Sc)~2VJ%sOz2En zCE2YKp@so=G2`X~-#<=&XMRm_z7p7B6wi$IGl`^XNP$hmVr{kZ@zaKJqqPnc!h$s= z?bNgjDJbzY07UcHg+ja&c?8&%j^% zHMBrUF<3u;8_)JlcaBG$_^3b|YF+j!2Sw9QBfn4DOIcAqr?|?@Mw>UU$n%b*auE5- z{bS*^m1H-x1{!oHzgc$NS_=y-RmWP!3EB7FzixSgr(ojAIQUqcCxCr8SXTLaQo@717W-EZl8RuhbZTs9-G<7^| zW`JjKVO?%#LGSFK5Ow{zE8T!}Xa&|wlhW0fH1RmH&Nu^fOu?6BL_<7BZBD+WTthKW zT<>4RS0?lN?`N@;eHrwaiP@3tSa3lQW#$h3T6g7pir^VoYN+-yTDzbyGcVdVvs7+V zZM)yz)M5Na(~igCHuha8_I<1gjdi6l>n+MLH3yQ<`1{tN)#y*5Tj9QGU|)x&t@app z^r80_+I(r(U~QQwS{>1C0M}=lvi(+kpNOVa;S*dRDHfZ8>d^g)eW?$M?Y)ovn^3TC zUXi_+({pJh5rRzP`XPUk$Z+}O7JVGhv>;&nYK(M;!7F6Vbj?dim*xXUaiIH_&gzHr zU>)6r(%C&rPo35ex;&*ZWtZ|#7WoIvFta#BN3ea&gqEeAX zqNnLX1v}*n_FneFEu1PX8;*GpAQIi*KCtBQiD)^kO=I2U)35p4FbAxXmppHTVx127 z%SkuW+UEC6Ko8x=j!T#;mv?_^kYPnt?9=e((Cvu6cUa59*8#i@AwCgBn0}J{n~!#d z_nXfo#1>1+u^cHduLH?HgI2trL4HJwu<33a#yZm3;N@y3&Eb!UM>OMmpQ4-gMfUHl zckpjHnUi=w#VU#ZxSaT^xC`c5^X{dL2&WmeD|{`#nm&j zS;eu+RF^$gXZUvi*+TF{`v+ZvntuLev_>>PDjHgrL;mj)EOq$AG=CDgK06Fu9<}K& z`nXvAR0U0&aa7Gt_v^5Y0_~B-cEJ$eb@TzTUJ4t+3yi{+P&biI{!ouU_&!@cF01&n zoo8j(gI#Boy;OA{H}%?DADG}2#-e=c(5<1EC!I&RL=uqp*ejf9=PC91fUzz?4i3~s zE6;j{lYh*u{k>1CPY)yQT3lK}YM0KR*wP%KN9}uF2Q*3B>oUagmu+xchAdDT*?DZA&da8L*Xl%`?)#`f3`clOor0r z%(*Ozmu#L?M8T|h=obRw&_)5Gz3I$E=(>UJqazfT)`rXoJr~d2rESi!r)T4rtA$4E z3ajZM>2K#rA0YB3+TSu=9AT#2Gk{E^&%MI*&uB?q>g1|InGkm=bm$k@5*vHzN@ym_ zQ8t#j7AtjxKOeCdD2l3j^jHv^BK5R+5K{6vIo4yDWIE9cnw#$J@+q{D7@U}ry@!uJ z6M6AD4>XjM`(rOH&SEZ^HcarXbL@duKH=`Kn5NO6Pz%mv@aU7|^A`a93&Y}e0x?E^S!~T`C1i1BYNsI zx*=%7t~v)@Q;qTb<6d2>6@D>ED_T{zFV9cw&3#p-YVSak+$cPA{H|S3>$<2kmB-=MVt2F389a2s&;1_f7TQQtXM88eX&$IP>hBEb=EY0Y^@oXrz zFA5CNNtsy{?6QIFdGfkb_s3>j3dY;~|6e2CBZvTX3z3VrKzlN~w-@oeoag6Z>LkJ2 z53WVN=kEben16mwHSF*qAhnO6Y{zetnHhsH@y=IN$2^j zhUd!k%eXUMI)97Of%!G*ICg!I@H}sl`}(z;C9L2HbI9sI#&}emLQ3egoD5VWKR&)e zfqG*WJ2HMWHInpqw@t7XUTVGA6PXK}95d#x!>Gc$33au*7|M*j$*KjA*Sty>U+EaJ z1Be^aVq-h#7VGe-ZoQf?1&T~0UnOPf`c8iC>Nb7D_`&l^{#E4KZmFdUDf#cG(z!Gr zPCusxHF_zg7Wi-N(g=98$y|S4SA78VfCf@4T8|~385}9u-qXk*T>Tx}BN>cWVOVZ> ze)=fsS9Uh^n);1jMr73T@4!FVtYpF7ndL0J&k% z5pGuR^Pp9BlNd}BgD}B75sE?qRA?vEgZ@bO=3)Ajr4gn=P47-y@wdcPXygKsl5fAB zBN*pHv6+uE&|(h;4qNqa3ky%M_My2gbzBu%COMGB2eH38^t}Is>$VI&yC*Qw zBDRkyg1icydvn=pBDIJ8bnQ0`i>4E_s)zW+V)qa6M>WA-Q%~%u8N_-!a!9D|kqe{W zn1(3f{KO~{Mm2=ZE$>e3JBeKf=v{e}=6h3Ste2ko{z+@s1#Ma_-ZXnSwf-Hg@5;zt zOEpU{T;Ld~N+Q8)JN3N-$92WdsKjFsvPXOpB~Zpo8GpJZ+I5U`Q{hMq@)ujZR1(<& zm1ngv&3wj0oD9a6lq~DqkV7khA`0X7AFFIPwKqIR{=^?LGcs|>PldbOjxd`LIP)$3 zyjaA0ODE%w*qDuYV~gX8#Zm*fNV0xqn*{K8qE=jm&1Xvzg27H)uUxsVFhS}<%~HtF zD_~|iv!3orY)Zb)FKQiZIpU#mbg{qRP|8dG=>>b{?1<`~sEZWj#{yqKqh6pM&2>8- zv<@#Ds~O6>j8yNRDP{GN^owhexQ=HUm@k*Z9vkPzCm=An&vdnM4!w*B=bXVG6P{mn zCHFmgL#r)X!{AOP`k{Ys;AP)FH^GUaU;6o4O6R@iID&S3vD3n~Jysh^mFo%NBnvT=l4Gv7s-Q>3Zq`cL*{;zA1VklR7ML5!jo&i;0- z=bmKb%{v#C?LaXjeG6+f!168eL0!msR~LJPU-WJ7^&ZOE5Cht4sC?VNevw=r`tbTe zz2P&>ctTYxpRoI_uhoD3n1AAQI4|$7DV4=+H8h-5so&#EB3N?2TU|als9QLFMB$qN zZ-D6G&k3yk@e8Q7UwSx&rh8V-&II+vE5(9P@+H;Ko0BR6Eme% zDDKhe@jTD?_!T)vGj2ah{6&7r{UL=F5{R&(R?+6g-sxUiiyCw7@^4Sy&-7{Se5K0j zk@$Fr^)0XZC5XVR4eN7SEYPjj^{LiZ#k?d->viJdJ zBuVBc+tUREx+j;mH|eU0CmCjbm*)!;_C>aBE(wOWWjfopX{Of9D9?EbA6RWZL95an z6=a|Ey44E35o=J!;k%Nyc&wjcvr)Iv{MdqQ0=J65SD^0QPxd2zw+bR*R`I0u}FTOl!ZPNwO7>KpMAK@aAx`Q23$O`@n+o# z79Gp;B!Tlj79n?#auTtDzDee#Z7Tapp)~&mzY)9tx{zUlsH^T($A%x@3(5uBlc}>c zvTn=v$mR&PV78XSvj=u(cI$RW%oifQc3=D)ZcAkpqeqEb93s4g9cS!~8K*sE!6I%hBT zUECR~k|?SvNXo;C+S2`_P6O95#1M{K4xYV-$-5czFPa489S6g&sAzhnz@3?W&-x2f z;oT1Z=D_}_j-Cuz2I%=}WQ6pRXU6C}(Mj5x6Si(!53NXC5E(5A;(Gl{OdSOujB*Hz z%n7s`TuUVT>4ZeC{9arWy_xb9T+k}XSkPKUpARK0kX^dm=e{r2BDH_wesz2Uvf5}? z?)lCzihJWj{DMQ5hBwB(6utbGH!k`e0j`I)!~Cdip5$NsZbk1<R!=?~6x}-j=xQ5J zu$orE7uT7J&+(=y%CG6R*UOW!mp{fwwWs0S?bkfT<#f-Y-$t65s;AGQ#qeoHf`dvq zb2jkrV*O|H5+A(gNqglZEk7bziXQqRKe*AD7yk7AZ2xQ^ zbTcgw)f>_b{lhfxFyUa{Ha&B;x+h5Bws4!-9wMq-e+^Gg3adZi>|BXXiy0d73FZ@KJvxWUs5f(IdGpEz9E4-uiv?m7n;8`n zBTbEUTn(Zzgf`6=o7WDvP{e#0BhB zn*CFd-D{Q*A9pzYeAqIr!pq3IaO@XYbo}!F-1z`EKw54eA~(q$2!YXb%HBe!z2?@g z3VOt+Jx|78|9YAseT1pCIn@{ zCrTGKD3hhtzFVa#FCUGr!@gDi^%IyC)r&9%_67!qOo1j`-A?;c+FEsZ5HrKr1Nck; zQmZ%A6~~-lUM`=`Dpp(~e?-mbM=DjU0Zt}5K1rb3$KV!*0OchTtta1hB!e-TeSYcC zhc(ZMl0cqI`a^jGz6Jikf@x+yrk6-Wi5Wsn*-%8|{gH{Filu?@G|ux_D3z21j2Ed(-OWc`&LCt4Uf z`5Bn7=F^u&@cO?gS@q#`vcXEx2$IzE@W@uvG*FWJvhyfalBNUgYLX2~c?4ZhA)4B+ z>`dVpa@p>F_xX9=~Km7+#P%=Pa8=0vOTbK9I zN(fjU##z3tb{<8}c=P=ioHOZ%;7g_eJ;z84~%h-)hA z!Awz>CYFQ*yL#t93)j$F%1JgZH%eb>EgOiFZPDqb%HwFlRhuq-Aq6@d4vm7x&kj!} zao%x5X!Tt;$NIET%|?PeZ__gmk?-BFk)F64`(VIZ$7p8uoftwX{sV=e{M*UH`Tn|H zyR7n_Je?Vr2?F`W%kqJcmZ1=&BxCu5xjOe0TVqkx&(D+<;vo4o87U|)C$k@@hl^6BJ#_P1Bl9Ng134Luiv zoq@c0M@H2^h?>p*XeyWjn;rxI4$wYHLM zvXeifvGBBscl+So!@-Tz<0+50scpf(A2U()CNCW{VI~$DD&AdhW4)+|FJnlZU}d(h zXu1=*yD9yz4heYkBY4O6{murzeV1*ge=PXFE@*{@A#tdmtG~QF*`C~C)uqf(y7l>Z zMDbK;T0qDYwtOG@dW?~M{Pr3s;8~hc)@pkC9MsB}yI&W#9J&wQt-eUcBaU0|7YdYN zIf}{eU$ljE4Q5H*8<>`mqU?sLO@1&RBXMXLLg@!7%CLHgabr1(5{i*c#{>8`sy*<+ zUDflxBy!qecy!A^x11o~T9*gvOadt~s3zo-UZ1V^$n;aONLlGg?%6D9CfB{@tzNJ= zT4jgI!7ORW@?%kWnHyBLP7}AL;zfx0*53%df=Qzx=eI|C?(^w!zIjJ)Y+iz;Qr`Z7 z%WOGO*j8!ga5HCBbxoUg(MCt3~tTQE2p5PUx{sR`z zF=+(MU*DfKyL(+q@fGc+Y0ry4x%Yfr@O~w;8*MPx@64vno`j=g$%Inj1c}SYgiL>n z#hm`C^6{~2*h5C=LM5`Ja$CJh#=QozC(zH4;?7GIIdWaj>fE(eiN!;d73_LgIyd zE?m8?_B(Q9W5~JPw=QQdI6KhM25U7 zX}-BoD}U9W{s&?YW&s)A4eeTYbN_+!jv7M3XX|MGoQ?ilPHt{JvtnB)b}~>29Y&Ew zF|q_}$w)0ex&%awL=wNVu@H4fWo-L7RC-yQFk58tPoYUsLSTg^Po(mnye3iT`ur?n zIa+8Z*7B2AyImp9o2-wVQ0jN$P2T5*!Q-66V}*K4-Y$52CtH*F?kQyaQ0mYY1BXUB zqdHf#oCswZxig{7!irvg>}Opn(gbi|zi6AX>gwv0VTD9dk9nQB55Sy-6bJHm@nn(A zkk0m4DyeMw1o|vmdwnjG;|1{=;#RnJGv3SU)kP{LyQ^G^0V8FRtGa zyv_Y@qoaA(a+73$TBnc4riY`ur2Tu}%`XMQ3Xe3^hnTj|rA4W`=TF@wKN zZcp&46_vtOV&#P^IS`>NH-*!g2Q8R&e2GBPy4V;mq0rBYH{TyOeyePoe7Jt#|C}(o zWoNcNM=BJH+j+TjFrv6_gZa;Vv){Vc-A)rA2Xt{X?EO$X2v5wX)Va1vf5@aIdi40O zpTQ$V@(zaPANPD+IfTg5zE}!l_!N7&Q_u1Dao?S5T#1t6NPl+wNa(aeG}MWzIy6Y0gp>hXPtQA9rJ(UT%CMyj~gaCuB&;wxhn7f zY8!)zo33;x-D&yz^IT#lF&c~G;T>3s*KM0UM34XYjun!|pWFQ|uE!<2M7cnL+iNP7 zw4^K{MEoJ{nb}y#pt;UEohftfF+_PNm3)trP{H8 z4{eVm#!uZszfLys^@=`7AmQYG?7{&_Cqo zwsSoStW>h33_nC%6Za9YN2_v{CmuU9lir8lRGNm|)S!E{E(d)v0;`Ymj2r80=Nis4 zeI`*t#DC*-c6P=-|01&@r+vJ-rspc-?FF-h|OU>yCZ)yiHz^I8ZdlH8xjM)OlvVPjApc*JNkw)3E| zU*!?xxisS1muIEHrC?QVs_wYneDc8V;EF}VrJ-NtG32=vB1Ug>Jig9(MfYcP;vVB@Ct= z(PYDQZZ_u?R#JTBBO@a@wv*-DjtFsLu9wnPhwd$Zr7v5pw=e9j&h~d^$3V*S*gfpd zi-jRI38WDp?C=%Z&DLoFKfK6H$)Q_Hxy5~VMDXC)V02dIXfr?iN1BvB*4zijZ)w8d zxE8P=s#5b|&dFM*$}4bb{q=2z@W# z+49x-A*yj2LriCjgp0-R!Jcf}lppZ%2@u=!VKc7R^3HD6S@HbKn6h&XUO~*s3}ehp zv%9trwH`&XOHty$t(%JyxS9(e2zRvd+KhDqabQ~T+ERb79f;~gd=LMCxinU4c9N0- zY7!wqO%?ruEPwAD*u^s2`6iJ)VfZ@ml@IeN{lE~izh5BTb1{tDtUZzxU+*yAEZ_kZ z1^AFi=7%!LRI!-IV^JOCZlO3|V-f7@MKqS(M|j*R1)v zh7q0JT9q1}$L<{4_2p@D9F4339D*WQQUT29H_n|584#u?xv=LyTVZcH|DC6?a?rz( z?7ltqEXw;!2Tmt0@>npCjzcjHbm)Jj>Fv<@%I?n31tB$^gBZztxHf=Imv(H{;*Wgr zi^xO{M4f*<`yp=4YO2k000z6`uEV`QBfRF@S0*{SDc!@XReQ?g_jW4-Lt36ki;vQ; zb)FovSb+OQJ~~M_a(#V3*i%*HIPoF7ZJ7=nX;R|vtM~{GY09&x1(T;pZxjEADTavm z!?tE>HTdjj7~h_3b-BODi$}2-`^~OiZ1|#fKYC%Ze;Qeeasy^N{fWNgp<;aF+dw9t z)v))&^_DJP7w28&u9IVkh^=o_IM1OVPoOcV%0^Ki&z8qe;kF1@3*G`L6Iw$%7O+|w zQ!r(y++kky6kmD`B!ot8O(1~Fd}A~Na7P)2@GBLC@-lbeaGn91tV2v?+H8HG!m)s! z!IY!+kbs~2HT5cO@>@`_@| zlS!e%i4+G6oB8}4B4`g^<*CG-EZ(#5hjBn~=e~!jEGGONwg0?C(s(H*K5)#d%!vzW zmgeTt4^e1<3zhLVALpD;&qvVy#3JVYX{SIi6G+Aj{TzX`>(&O6i`Mze+d(3!Se(DJxfYYqJICp!JDu$fpKWBO_+;D(G5L*Id0=|nhmS3H8TzpAVBB`d@qo8s; zCa832DDl0%C`KOv&5x3Sxz1ZHz^%%1L4ayvQg;$dsJi&@@b&3D2grq!gE5Fgj4kid z5b8k?l1aNh*9}*W8?yk_L@Z_7?y`GA)-cjvFfenBwWIqjElcCYMnSQ{0a()LmkM_4 zAuS73YWbQ>)}x>v!9Oaprk^)c8dYfUgr;M2EBnq}caICO$(93mMm->Q+W-bIN%J|( zr7u;w597Q88SNh%pc}|24`SKy7g=n16&1dD;fHiWxLQy_*Y#K$>yJVng!yMcrIP9I z2V#x#Gg!}fA2K@o4<+LN$!P7Z}h{awmkS=*VRGVGj?3>!C0^O zIC8@4b zg{5wr+O=z+-WvX}IX_srC%-*iUDEqeXk4otOrbMH@ZMoDY6x&O$+$E!azO4i_~-6f zd;cmF-FL4QRWips|J5C^!hk3yvnK&rLwz{~W;M#ouR@yrnUZI~F)s)7D~mc~SU&nl z*)kOClFa=b{x{HfQ%y$Mdx|);<28n{=$RgMwHbhFvzwn!q%PUndX`S~Mf7#Q- zB^$r#n$*#LMvp@;^yoSC+YI`^c!3T_tmIX+fXiwpP<^LfO+%G5N2LizB6%21Dln|| zP56UD6R^{FpGR(d4gS^wFf}KJw8BayV4J8-cX@hM1PIYIAZi3Ypb$0us+96_x44|j z9QAW_3s7|2o!bntJFB(bfXUC6JzI^sQW|!*j}j!6$)Jiwf%g>C;1Y zvlB`;{O2?NOOCQ;On4`CEQblXUY&QEQp$S~M4n_Y`f!dSk-+(K0@=0K!E#)T*v-?9 z*Nbr|-LRe{SZV$FT;to|pN*L(E%&f%Os9ZN*N#y5o@E_vjIyk&-vK@>ICuyeyplz` zuv3PlK9&FVZ#e*+o_g4WH9YvOq54N<-K*Tl2K6rl#%ZUopPCToc_HWTv;T|82!)%u za}cEIbZZ%YzE?SS+zKsZLdUElItjpV%P%GF_5G5^k$y(Htsf1t!~A&ljS{y70Z9O0 z6|lRW)g%mykMvFL)p&FYoj#|t40coB<9d6QEOpAFA95HA->6^O-eoQdNz7gALtpM$ zzXd0A_LAA#`7wzGKwz*WvPeqE*{bc&D(97M+uxP8lj@K8Y&~1}Eti=2R?Ge({qnVo z^5-LR1&PCQ1v>dVR0VW@EuZ;rRZuxTq4D?YpK58(*e}u_!HU!w&TB`2M$@l%%w7Q%V@0&M~wpY^VD;eK^mU`SSJhub3wNa^R8kE@yRkd z8cy@hShb7y9473V9cO^b&wg{fF%~Q)7l`pQxd+dApJQ~s zoDIsq3FhCF(IiqFZMS?zaQ_YhNmJU5^PQiB6|7X3%*Ab9Ty2Qo}$)K=Dv>(g>rBDv?^n3TFt9)X5O=|Q6t4i2at#Za) z`jy^u=U`Agb?|!xsYQlU2jj2A=#eaE?I@d1?B(dmed2Nn%+B3Sy3=N{{20etq(4D~ zuZL8Q9Vbi4#3T{ek8jbWeLGiSxr_W}yx3?n{`?MX>jW19(P2r-cf3-R{8Va%x?Gbr zPG4qRN0bl1$Ye_@AE5UeFXrcajtIogc3JB``Q=XNx+P^V?oX@D{1S|Olm&G<5C7#~ z5kx&eh&Z?;p}65dp?3XqL}A?~vg=mNOh8MqQN5wFI!HYYD<7!xYq8~havGLr=mON- zf_c!t(Taa1jY*UD9URhY27|TA@2={dyvpwJYP@g7xjm`ApS`NrKaC1rk}|f=EaJD7 zSC;l0qu8AAUJ(ChF6VmK>y^mgZgI7WRc{p6!f7I9VvsgvU%vcY@G>lhe7eD54qP9w zG|&sq(RJP0oe28IeYR$VPQ2i~T%hA|cq;{2R#S)eE$X2K&6qXH5S) zGWbRNH?jCdsvKSqysg6eAKriydXozSkwI#z+JRzfZRhs`<&B=i4K2IVTea9NX>;7C z1$N~#BWB-cyly+y9(!ze$A%Mx2Yssk3!;DE^ZD3teG{p60B}k$gGCrsNH>=X}GYsDX z{poyK*w2?OPFn?Fc3C@l6$m$maHP?wwZ1eW1sjlqYzkk2Vd=YGH4${DP)PwaN4pb6M-^x+~&Q~QmC(6K*HvvrPN3M{6+IMdE z*C&_a8nlIAVsE5{YAN*Fc@j6)V!#R6^kHFh-l%wE6N&kbT?mE67pD_WQk3YhWe#0w z{hMvH>LJUGlfL-a5838+1Cmo?MFuP3EX9s#D^=Db^gRNX|7DzhY!Jezz41jm)qmXd zf08pqDQ+g7iHhAI!i(EpGQ8KIR3Nu!E1e2Q9_qfWkUVPRzAQH_A|liEna;quq5Y0j zkT(65UuZJ;YvgQ5mZDan1l7QDakl~x^$&6UchQ)!ZG_ynVyoxguowiFmu_y?P~p%) zwM&dY(g@goQ$T4h4QeKJs7km)XDtUSJub^W0mGpWh!+7Vw~{@zhY4?!^hZ|&bVASm zr#Oc>4g(FsHP5JzfB_CiN-}bJeeeDQ$D|*CK~5d9aPP-?M+(^-E5cBA57r$cl$rpFY&Y_dKUiw~RXeh~#;Q zxC$&gH+QXunBX*8{nopO`EbDH$58(>BKYhyUsoZ8XnX_OIjxC$D{BxTpbe+0>^7r$ zU;k$OKMO4adB1ltZf39gp%Af0O_YB4-^5w1l}f*sa2q@UiR`=i-C6G4114`ZSu!@Za~!Y>^%k; zLz)a;Rm2h+f7X-zaCXHjV{0OXJtgI>)L-1jL)>+5Yqo1{c0Wq%rS>S7uwvTAoyiJ@ zfBjEl;DxM#syk(vrtkHi+>CTvKpp)1sl@OI_BzJIhM_OAigz`SC#_>KY9F?wgK)p; zReVik(x8w10pMjQBo>*;3vrA-Z7wKm;or5&W0tC$;LdJ)EE@)DZQYLY%07F$}cGHrd(hTl+?`qx( zw^3Bhhlm$TBJR-pOa`iaSU0axj*jZp#qs6}82y?YO8%ykqWu5a3*5WCfHnOuQXeiQ zL0PiH+L=7A86mL$6Td>Mcir8{h-#mgiD^NtuEOR4ypxjig>(4KCBmw9Ctq;*>icz) zc{pKL>WogVyS(-6=g+MA-=E>(ZSl&P)6c^MXrcBs$Fg3VNmV;jO9f)1-$Ppb!deRTDwaVEcn>B)&m3#!C?v6pywBH{W&Sjy&R1gi z4IZSoUCc@}1#*P|nD^`^y8Lvdaz6idCV@HL@(1Ux$!`tkt7%3rWpoMlZTTkv=R^(j zzP&yT7-&5uKU>w@im+odsCqb-2vVAke}}IYkPC5uN<_dH-Z}oY%O5WN0v%oVwSL^y zve4i*C5_tjs-IXrW}HGv-)@z`fpS6@aFnznA~q{cGeHSMsY1A>JY;9L`31%CfFYiS zgG8&0)$}2Y#HtvK%(A@joSIZbK$l-5Gk-E&7G>Wy9%j-JZ(tnKh-;pbp1efxI_hh-nj$#-X%c!WJ(2e{k zT7*yjjmU)N7+b9#A?u7YqUQR=U7aeTCrT>u%L~ zBWAK`oe}2FDn&bc1jd*BdDx5>xZrx+_eVWX5?8OrQ}Mk5;&@{;;dI{51f~Q=lic`J zUt7SWiQp_H4eHv(hD;odNAVbiv(*k6+QSI?NB;4)a6-G@$g=io1y{Xs(ks5K1Mi1fSy}U!81YcQqlDH|kHjBz zJ#s+ypxo_vm{qz04ZEppW3<4nt?HRx|0Fm#8?f&V^K*7j0Qb$b_V$kY#^^d*1&5O$ zpudlQ021ZXi2^ItTR^l1O8FdSNriTUU1iZm79ipbjQfBB2l%+_t`O*LNxq!MKu<3? z?>+KWxg5+>U_HG%m>V!eGN62o*z4A*tFvH7_S02t7?WD6Lb8G)w~fCy9UHTAxBH#@ zML~r^HnUAkG@fhss*UdL0L5W&gEP>Jd0d6es^i5pfz*?G7|S00uX%o%uFaK ziOH;b!&($9I>qS)pK+hVB3Y#rZS>!_-FIR=1+y+1dqfBI(y%bN!v%Q&jMEvN+sq#Q#|OLre8VIt^y=B!>)gW&!%?JhaI;V6-iC_HNh(XC(`M`3tP$Vv&pF%wzHY#9?su4r zNdq0^tE=bE18;X`gm?xvOE#-2;vq7Gv0F)?eA`qfv$d4iOC0aD1tO(KXQb_X^4der z)E0mQ9ZzRHXc!n|Jz5KXPJg%7h$I!jD|aHmKHJ-Og~*MNt?QK#8XDT8CswiDny<_;+GUX6!T}F0$-O5~@7FnT z1^5z;l#4Bj9vAdSM&j+O@vT}MQWoOkNYUgX`R%K3FkVL4x1IH}l>$;?=Iw6d>#G+T zwZqgSg?c=91H*OeT=R0m#h6SV!$FZ?aci<-qQWx9zE`w0?se9Dd>LuRCZue55Wq`}A zLt~?x!OM+vYN1?cZsmg#BJ^&z%TlnAMBj?@LkbFRI!MYV+{Qn#ZeK9+2;N)z;$JNO zEO=?>cKA8{TTl{yuKYefKY!SVm4(UF964oc2(&-tQnhz$CO*G{O%6EPqcJ5{6W$wb()`qxz~H=KITPCyj9;t7S}2cV?|-YMlCNk0s>fV6-&z zV206CzUq*LvOFj^H#g$XpFENZ6X|>D%5zb}0f%+lh1vd~Md+h&z?-5v>RlytVV^+K zA7s3*ADWxtPM&cJ3(sVIB=~E&!NM9EBVQ9|C7(JVDxUv)6aKZ_4>QHtAOJ3@3w`ha z9bsQ}w0E+^c|_mwvk}F z!1|Cg!JqYY<7RO^p!jem9F(+-jiW_rsPo?rqnAvb`U}Jx8FZj~*4f3Rb8hvsMnUMDO zi34&RO3B+(OS6&pu9_wd@7m&#rJCO7e**O?(Of_#&~bOXbP}=OR&$Fq%dDy%lYBj=qniL zjw(?87Vo1(c-%Gc`?qH0h?lGDcV!B2{yHIXad8_rr7mkK0J0aHs=fDQ8xJw}Z2T5A zkP|Z_rpstbh}_k{5Wy86AOHI+Y|P1$bSk{N9M7C?7j8Zb%g=yeQ}}JN3xD;`Ldj?D z!PVp-Mc0No_g$%fu_~4=(QMMa+K`n&oxxVn0TrW z*eK0h&ZEr$v7yqj3M$CY%?<&g1A}+hb?ya@;4?Ba2iT@krfp34ojRR#s%UB@(riu` zr;8;$m@l>RL=D=wemwTPB^FXlZv1Vm7;e-Y8EWGB0Epn&NF6Df9f5)l1;{*g%&@wS zm`NBr-*OTD?NHg9Tc-8nEGjM%uu-?i^v~vA4f*WL?`Xkp z`@5A%&Ikme+3T_bVy#ibq^3 zhv-4U!Bo`L5C+vxnklT?bhIv!F)`R+lD(8$Q71J$c$sGiKr6hKthIe-YSM5eg+n<1 zIQOJ@q}+1CUen^Qi2K>!+`Ui42}<6Cyocsy7)!f!7$1*!wP|u2V4f)8dsTx={0JY# z6$S8%qXF8JvE5CeL+Jj&jZJqVQ|vG0;pAY*E8N&;Mb4Oo`jy>(CJgx|$M}%Wc^t;zD`eEH7{k{KxyMR)nSdMLw50Tlmep2n@jaRK zR6&+P4+`n6|H1wpdSi=68Vd^e$=Pw4Zs}Df$1g_1=M0 z?|=OGb)syFjF455ow6d7k-f4rbI2Z9mAxxuWrd80Y{$sX$`)m>kd?jn`aX~9^ZVZW z{oOzBy*TGRp3legF`lnf7)bej*#q~d@T|(zk>C806+tgw+Wl(6#idXdB`auM(C7YV zfIQasxRo_;{A2pNI_P=%Po`x?p0u(5{%d$_y5*#gzs7${;9}K^6h1k$m-0`0e?KIX zt@-%4{gK%(a!jAB^BMY|g<+D-Myd9x9-sKUTEF1%>=%JfcBc5ZJvLHgg1effCUH(s2TX&(V9+=ljuUHSe~v*tMzn^Tw}04F2DR2Q zpwl?X&AYR)@nF)PB%ezhm)Q%{W zKQ}A&2u@@Uss40>KVAO;UURDbW4y2rM{j)NtX~9Vm5lQ+j8H|Yk;_|s8Sl8(wXlD- zwB!Nle4nG-m^M`Tj)&cLZv7Ni%1>!9cPrwEUYw899&bFhd-2k#osfgs=JOFRTC9kq z7bP>!M}rvWQAcv*dXgTDI$3XF#a*c9__)EF=;(#hOUb&rT2Ca13=K2j)T_)`rUew> zlaL2=p9Z9*eJ%c)Qb#$nI76x@pyNFT7*+=l6 z-ox>o#+e-LVwFTIsL|f!XT%(cLkS#^6Yt!dG-R8^+CC)TtezUgV+5AAaRtgR3G$suxl47Q8C3J{O+p!#$LyD2%a&1 zGg^OJ^-cX<+E*Tz{@t&wy%_Jq;+ufW-g4_*thu?4%1^h=mfEbAEmCLeZyUi&VMpEh z8Flu4c&8x2=4gL~!De9pZL7y;;Q67`3SFu6@G7CQO0#}3F)_jKvYl;B1yI<*OGDr7 z;+V%tRcp^ITi?eA>6x6L5{e7oAtW#EZgwlK0ne3^nJL590K~u}5cJBeP9f&h7T8Lk zkIEr0RLIG|>*6n$ZJg{Gi#hdf?bGKY0um-U+e=RU=WX6^xaINx{tQZK#=)_?nXKzK zUt2_&Z#dRFI6KdJ3+qy~wxwtUGg10B+QvQU>M;3q9;;?h5SxIJ3by6?OegODTvpBbJ%5$$Wx+XV=6 z>JvIsW;1pYN(#MT=!)40q0d}|fh2kx0eo!S5gYCcdM)CBW8U3fnj!+{tO=1E!$6h6R*#`f(5D?1HFrm2dM^mos3_xAQyx3~LvEm=!mf~~Yfv&53JX@-|Y z=tf{o0ImBAkOTN>;#Nj0`VHHy$*3C5ti6hgZng}5h~Igr%-7A8=R*+X5paqg=hWxMfd2HRf?SItf%|2lDC zQ=R$pVKvD!utQjUefAgY)-K9!f2 z7?Hknbx-5Hk-A89q~Mg|sf;<_ztio+m)H360aiJEnVD8dRn@4HvQ}_j^=SHVKqM(w zrs#Wqk43>yp9hbr$tz^qQKlb(<9j+2`#4CZrj$8}m6(DegGsQZu77jWVN}@K+8P@V z?|~KqX-A80jKow_fuPFFDa1#1s9tq3hRKWT$&}R10xosjBnX0-)BBGIKC$28>j^u! z58N9)-U$qU8Il+eaGI;`F4I1bW02~@=i{VRRf{q@sk4!vt~0nkPIU=O!d{S1L_~y7!SxS3FIQMtSYAkCbYnL=)2_dbw)=GSNaJokRJ>!<s~SsEsF{9A1Mm^nU-Ac~5il%6xIUE!$P1 z^AkVJ*RsUUsVmjgAZ~nf*DSpvFY#+$yNUjL{Ky5ihtH_rUFKL_f8uER7}_b@YCB$5 z*v<*xy{_tECuVLfB_}bsJkF-*Udu5)Iq3sAi!3hV^#Hdp3nQ@LnHy$ro|d;Ct{d{{ zgCT9Lt@&2NygUa$A3C}#7eOy>I<-5-4o!i zb`uyGsT!Z3n9inJxNabYkvJ|zt#{*0?~u0*D9rSCA=9HB+{wtum|)_?bA`}{yQ&6I z@eTVKx#?9GBYP1Mk#3jsH982Js;#JQ&#Qv#KtuFOG9He!UMHc#XQNA8xczXE#n1+9 z&cPi%-roGYe5(td$#ZzkuHk0gA3jPB?)Fu`A=j;$t6H!vD3_s1+$dyqp?yd7P?Xmw zi~0IJ_4Ug=-*}1b)H(Dje`UYi`X5gKT!!;P+wT3!;;Q6yjhNtX&DVB=~Uqk|G zk^q~t-3E#b>qk7YHU|{->*Sx1E>qH8f_a=FlB~ zR0BCtdfKYAFdsd7)CB~ocD?*?3I4=OtFW%6DD8uSFlZtCWiA9m1a8`RvW>I*iMlzO z1^28?KV7Y2}`>K)IGHsa%{bxLh9Kr%VE$$Q3e+eJ$egArTG zsdcCo*s$J#Lm*!Ba;S!x4fp}e5+(t4Ui`X)&w3=|r~70uUyr}4znFn2X@-OWsFtBS znkubr#@#ecPaH<6eXkYW9eyZzn-}GeI7`+nH{|szD&hRM)H4X9c#j=&Dk=*DEVzQF z9jo*?W+`YFd!K&l%lwN#i%}J2dUDHZNR{uoh=?F zmpKU$&hw$Pl!8cT)w3J>U~|p~G%$28@9phXI4FRQOKJ+t$0jV;$mXUT{qhA1q8i?E z!jDg(LivjqFKT%Db>35z=umwcb)s_Loj3=DWPaQ5D!im!nQE-*6Ie~WV#XhNIXXMK zxXnm!FEyQoF`=e+lq4*8xK;$^W&QNqw{O3CK9Yb&rEWoHH+l}()w9GeLPDG`NdQL4 zx1G56x+4L%ptc#o&Fic_Rj5mu*z7Mz9VhtUQI#^*R59(vi)lYZ=Dsk;sS;ck(ljm= z0&t{94)b*v0`;;PSe3b3jY<2##W_#s>2{D8T5&hxw~YW*F)Q`=5-k5XF5T-eGwqw@ z7$u$-t_!wxG}Dy+b3+yp(JDfwidj`Hy<;-#s1s?|d;iZIMi#?k5j9jhQvUVH2s6h& z0nWlNK`q-ulF!+;%t`NG4X%zjNUFHo_<)4Gb6y-CGoP@{I4{lpdb@EL|y zS9D}#+CdE{&uEBjPG2gQe_G<06yh}(eD6X%jP$Yu?|JAK%2SHXlIiE{?5xB4(1&A3 zS`QcdiM_Ti)sD9H%iV(VH?Z3=JixtmC;bANHN@K|q`9pc@v_D2F|SgM0pc9dW%0Hs z_5{huxVS)o1{3~N*0w_d1n9=8sTtG#C7YYqV|OAz?UzodVUNZ?lTVn?v!c*O`^~R! zCzh6Scx6Hhp1~PX38&YcWqf5N1em$>i7odTl3TyJsNPk3t>V0P7z%-3nNssQQMh(U zIqK$uP`&ZAFt{V&<+)y9%!<&fG}&RxG?Y&;wB9~N}i z9zn%t-7wdko**oRdPqj5KAxu0Zx(@D783S=nU_L+yvgPqy-@qGnX7=nmtDu>8`*ju zt!A|FrC%UguFszD=c+L?rKF^kl9&HN1rD(yA}VGBRWG?ta&uFQUR6^*lJ zI}@G%d~0x^!<6&$R#Et&&Xv44p9dBF{7d!lwy4o153`$k9CRzxN4WSSXI((qiQhIv zj|HnPu{%ghVW&mS#o}y2EHW>Qg9l|kG0=nU-@^~D7Z~ptSXg9? z$Lt*)9kKPv%33`lgckzK9eW!k3EedBVld*}vY^H%kG^f|+<)@oJ!+j{xgv}5xnrIU z@+@c`=e!zr>BJ>>lMJ&zi^Zv`s;g&W$wTPno7H2eHXP&2%dcZ%DAEnpRaM6!esLEn z)$gy(Ocx=5JhuVRd%^$OP6*(!3CIQZocpx_oPxu{Lx=ZhS~PB((tmg1?C(!OE~R(E z`r76pp@uW(;=4N-74DQaBu^m0T;OryPI~d;V9$o{Z*fM{tBo^BglcpBgvM3!zctJj z5FDSgh3BPlDsLS}@?&-S__c`r0B#KUvtc z-}+m!ceDN;`j_N;QZ%Yc`?Ixt;%urZp`^1!1nJR24Q@vC>(~>(NzHk=7*+i6(E<+- zUC~W~r|>nxpA7BV=*IC1zcT~z7yr+nKbNd26erVAP-AUkBJVwW`jp?*)s_0KaiK2| z?RUvcfF>3^<@(8N?d|K)>3N6R@2?c!-5V+~W^QTY#eNwRne{<&FDVcENO`{j2pSXD66HV)d7l6BMN=HYin!G>+5`dF-N;TDY($O%z6a3 zuB(hXL3eFNtXE$zIIuDuIv~6?=O~DJz2vx?-TLK=gj-{=^NJqhga3`HYVQ2@WHXYn83QFl9L+veQ=s&x}EvZhyHubPyeAXRVV#V#kFo?v^Jepr0c z3fZE|iO}L31Kr?GctnKb`>+*p>&i7rAO=-GCBQ_65(Vk304R!ddUtTMJ_Qcp4+WrE zYMVS{nOUj{hh6~8e-GA$`3-$WLAaK`aN_yx5HN{-fgJDFTeZ=s>qhxYO+>$c@?vR* z)z31I2_(9@{vu0otf#(d5;R1tVe zD~M@)MxFfp#B0I$hfS0hE_j15@=ycFjt|74?XHmebAEfh-kUD)E#%Qm1*R2oWA2Hf zG$bV?dM{-awM}UQ0WMF+$au!j&#(A(=N%y-y1{)>Rx-Kb7YoCMQ4V?7X9W(N!!Z zwEUTJj@y6~#(SL7(z3~Rua4DKyiA^3TASC5h+1SC(U=1~Qmf8<-CpWrk>R z0=Rq=2lL#y`i_pAzR;_(p2%l_mzH1M+v z#D0gl?_Zv@o>GaHs=F}$l{wp5TEB`u<5NTuTCfL7ySuX`7~mCenK!JQUD|zWZi_M4 zo)2b0O%zf(C#>(|g13pAfA3I0Fkm9l_Y2nILs4HecbDDDCmeru-R(^j@z6uRDt{(9 z9bpWPr&X?fu1xd*l^4SpfP!1re&~`TvUYWbB7xohWVs3a(wC|o@T**YInZ%=Od@)XeY3V zKlzOTYk=kni;SGUCB(_e2`Q|9AjZn5T$VdwK0Ou9It6bmN)ZYWl3jP zZ0yUC5uJ3m0Z|M_+<2j97r<*H?&w(Dy^5@D1gU2Y9)#cMM_F{43QbYV$jHR|^Nmk) z7T6s3XRvWPp8o9=(YxDb)LKXOIms>egel*j>`sOhZ^Jf%ASPST{wkq@E7Y%VZ#UNY z;oSf)A50P~1+^~_=?V#TFmBQrIXpJ5^TpwJ+rL#xQ6EdZ5X?f?4+I^nIYAzj#a(cD zaX|#>_gG0fQ0*pIVm+#DVS4l~(X%K=R#{m^)k1_<1>mCDLvww6VVLzVZm(Fi8i`Xi zivJ!WcC&D7YZvsF^nE>u{{8f0uwt}ePcAG3qFW|7>YBQe#m>{vSoNMU9peCHR2Y<; z$y6dL%6Bn$lk|!>&yIyB-6O#7>hwIH)H^1aP04E-XoObSyh05)*(+3NiYzZ@-XkPf z^RB3{DoJZ@mO^Xag3img{zzDUGN{7OS2y$k2?A^>=NZJl?nTjvn|1`6BQlJ zc>VgvKEHzPkVyfoTqiH^zNEP9Eb~z6kzC*i?#`Kfva>B#=)OaDG)}f)e)&PoD#B5B zq-*b3LoGgBqNTTfn0}_ALEK?!=;Ap-YTHv9hmFn%uci9&GmooAjtd24fDDF$(v91q zm^nCjxv`+h2Yb5GG8@^`($cDp6&T%*a}o$!A)MYvV>p_jQ#jeIS?O_d%(H_BGJR{S z3=i+D_f^Kvmnh=ic_OiCg`Vb{hwo@V|I#f&@p9BgV%`7Q^N#HIo`zVhvbf)#jEk`d zYbe_6`ig&?Y-p4>IC7U2K4;yV8EHsELGcIenx99b-D&+-9@qYLXAR7~&_pljf#xbr zuyDna4H-68PLRH~7_nqgJyJMVLxM}8Su;E=-)8U(;bZ**1eD_@>gyk$nReCCy19J0 zr0JckT%!y(o%Yo$*43Wo64P!LxreUG#@*LpIyW;jdkSNR)%H(#Z5{^_Gou? zq8W5}`iF|{PaGY;e2|Z`ZK81&Wf}maB8T8M>>C}Wf%Lezg2HRDUjW4(P%Q}^ZFUn{ zWhZ%tVd?1T@`&JErXQwo|UrOM;fpb1KOnm@JM~X!IT}*?8Fh zeJVC!0KLmQ_zYGiIW*0nnr&*mv7RpEeA*o?3)9CBlGhL=s|3rhj8(?uVg-=PAvL2- zv>gYdIR}C;*T2Utb=mvboEdBS<3vx#ekYK*wL>YHiS|y4@J?~V5!5Cz-VcwG{}9dN zt+>BBF{@A>B#8-s;KBchnML%*1=Vc|t@t9?Tf;tV!9P@tqfvFmXDnc4OLWqguHydM z8$=^HGc#M0^GO*-c-6X>%R@SuHYYY?(J}v_=z-{;9-Fo56u0P>zvG-lBbY8Ucd*|L zG@+*uNGawOnE&47X=hh}O;Gh_s~G4%*kW<3uC7ilwNB}}t+XgpuP_*4Lgif1+)XPJ zqa&)TQ>FTFUG|ps$iQji3HC%DM~$|f!>3TP@62cOzKGdEOh;l~7Snl)6X&e?Re)ZQ zeaJ%5ihxNwQ-W+4Y_qa7Z4JW^3TEVZJxRpMd-<)n!O8JaDLCZLQ&3>rtjJQbQ8~>M zwT)LU<%BRU4^hdb)N);4jT1F9yqsG#YrK2^mZ+^yqv_BNM=vwUx2th!q?GBOfzW#q zJZ)ly>w99v;st%#aB-lZxwG@Wqa)AA$Ow$3A(wn$L%>_3jY|ZVW28lShr>E-bDCzj zmqQ6MQ}JnTlXePi;FE8}&Pmj2T3|xL;We+-kSOmcC6D==%;*jhw#22@$Ldc`#s@0> zgU&Hs2;I9f*%WeLT-g94V#e2Hv**!0upm!=Ut~Dg_G`2aak~v^k|7 zt!R^BXFX@7@O~AS@^Jk8?Q`#5y}}K+t^Sw4w%xcvQ%Z`=@Ya}o z+Yb$|JK8Qfmj9%@cP+ws5MA9|IM)u?c%VrNlGuz19Jv8W@eQLp({pXAc)!> zA3jr6Q==C;{LX~SLjy924_>ox258t=piAb;r-o}u$~=1}0FD`AO3IJN5nu9w{|WR& z^8d&;^l5!$_OdJ~=^rpoddf*ge1k-x$0+DUbV`J*3aDBT;I3=J{Fn4P)AE5M9R-`k_%Ym8hoKZyTRqewh>_PKr!y+@7PI7-_jO8UsFsm!D6L zR?x!f-?Ffd)6>50D$5$ZVzwvu7lHkKR#qQl!jljPVV!=V)XdCF_d^miW>Fa{J#&a6 z8>(cKPM^b13@kZ@@rh+PnJ^?dDXEg_XAuc`(HEKCd7&!D&Mw(_-oTlEs21gSPCUE{Qfa%J@=Z>^4BNwO8JM2Ut@S?8t3i7d2@QY^NeJ!WT|%+FTlrCi!aN`_zC5xEDA|(|bLyxYmeYXgN>k=;pII?wWW38ce?~>BJU-L@ z?(gjY#UnifLPUlLF8dKW9}-l|x+c3hZ4C>Nc!BYz0puTfW02kcIPb1{eJW<~P#pdI zo%YLTzyH?$O)T`XDahfEBp0X!DrM{Q;uDPwBNT-{eLrOvd_<2ZM1;0&Ep7#EIb%C7 zw?AB4xp61od`a4JbZt0=AmBB0Tny;A^W*P5wt9HQZQFnBH#3G9ptY)kg~y3*CN(3} z&FB8^0zhlc?)pi9snCNk4bvMJ7ne!+#JdoLTL`k2#Hqa4Doj$+TQSZ0FTN zvP}e2-aL!8x!(q?mwC!Yvv>iJqX50MLahD#`SYMOe`@90XdqGK|81ZQ&2B^&5u>wL ztuPuxcV?4;MBy*6PwVg&c^}6mjH`*K<9w0@+}DqC8JaPOt_|cHo;gc&ISAHhb)0_n za?y~>cUHj>Rx>uX4O~6kWkGIUH0Y;~Jpf6K$*ZPD)D_%LIE?FhK}ILqoKapx57Wdu_*KPUP27`!#Ko zHb$vY%L>zxYR*pZ277^-+9FW*+C3DlY#GFa4EN+dDJBX_5+)S06VYsfG$M37&i@Y3Ty%pEt1N=<}bhJ;JBt#tb)WskR&{k~TgUDv<~6ve;%u0IE}H zLPD_MN+pR!U$)%~HIxY~1VY0(-w|23uDo8*8z%k8^=$DEeoCa$4tW3E7z}Okb(}Bf z-!>$`!smcOO&b+NR&59Ka0)Aq_hF8OYF0 zn&6!Epy3jlMcg!L_q24)(%>ev_CkJ=8%9xd?ElE=_j5$MY$`s{9@afFf5gtroDmzr zV^HIX9zy;a%BL}7Cbn7!H)8+Obr0z=Vx=s!79r;Fz{+sJCUE;}0_PW=JMInDX9P0H zmv#c&X$6&Qq!1Dk7oVO?F0owE*XMisbU-2gs6SwMbu%z){HF@=F~X9#2?a{y&RFg- zcBLi-7Tt}tyhm3L1|SE5W+}y?@D;83B20*z+uO6X7FjBe`*SP~l=na}J<}3;{_g-yJq#6((JYb{VJvOnpD=APoZYVt$w6Cq}T!aA7R8yMUmRk$b%K zyugFIU|2l4NsA=Z`2aJP?aoOd1C7GfrPFZ<7aAZEV3Gko-(nNN&whC{d9_HJS>K5H-= z9UeEE1g|kG8(UF)-{BkZi?ckcI&Uh^2*A()W1(OVk{}L@k@8Ojc>B`~(`vD@n+sGpgmwlXh-YCcR`)(O?_+X8fpwza+HX`0 z5b%v8{e)RiwZ9PtX2-FBSj5Y_Z`G5)A3#{p)YSAI#F|V!lo42RagUFW36G%OyvHlD z=vSa}apCtBFzupKyB2G#kZ?OqFt%&rE_78d%qxug8#5g=47iGxcp4$HgGdC!q^)_s zIl#Q%ZcL7@BrC-L;!&79fH+X&oV0K0gO=NJ`t!AzDJdy*Mg#{85$$Q3jWfW`&U$OO zTzN;OCyMeIjs~8hp;523v8kY}imzz0b^K&~N*dtpkn;q(VAD+o z!Q&;+KuJAJ3aB$vI75%&>*DY~&YVpv12mVL!7(dW!=FM*kS_l=m@PSbBCwk{f^~grhJ6-@rA`XS@{oCRC*M(f(q;=CE4_= zslkS1LT?yPnsFY@4k8T`53db2vKhk?!}(R%!=({;%)-jbE`KNuj|_U-ij^-N)nYS4 z5LhrWN(;kxG7{Hxt?N9aKZ~#L>rc#)BXLO}!4N3Aw#PP=s$0%9UtW3-bzM5FJqmKt zN==|(`&5phEV)ux_C(OaT9DwBn;JwBwBI-^j|g1c`uQcWxAQ)&8!37t*QMy@D*sb@ zJlF}D3?n3a{^QQH9o3eWmRCtY4Tg3)LDZquB_LLhG^kk808-UMJKn;fYXMsWu3!Vn z?1Z7g28MBpzSwY!%k5`yDRd0rxir72I4IY2yJDe?M4Dy2*(8B$O5fhj(#MGg>;5Gj zp9$p}^`w*{3YXdAb7As=$+=ln;p!dPb7+)@iG_6+CgTg|4J#;0K0xjG%5) zMJaE*{QGbIaKeYqh;@k)SNg|Q1HJovG$M9)Mj|*@yp|;7iW?JiBk>%?hrKc41Mzk zSvb%;B+5iAs11dyffsY(O?V_z?1IId$Nzxi3_8=*hX=3aM`QmES{pymqE#G@R&?Zl$A<6xxISAtrQ>a z2Vtx~-;J4_KO}gp(l6V{MOjPz5s5t#c?EbrAG^s$yF)|9dXnGlJ9rj>8vOtFEFw{5 zi!}m3Mh6@xR*#VglwJKbz<~&iPB+6d%A(oNhaeM~=@>6H$I$X|wYI;;!FR4cT6>d` zR|yrJ=9Gv`+tpPY%EQHj^?0!7lqzW^qi6&Co)7w7!+QfoGyw2oG7Jiug(kuBf~TvGMVXa2|doqPd;Q9R>-l z3$Q>d-)t5=`-MhFr-K8s5hq-_vAWp=H#`=NOn1QtLg zT|^4iM4$8H%og8^X%fwM+?&f|n@G7T(LB+G@=@>G3aAI5y90WS7X>c9=YUn~AGFGf zwltzNIj>y7TwY%0H6)_q#kZ+kJA2{61u$8mJ|fU=OC?RsjK&!lf_V)ehJe??CYOw7 z&|w^K4F_GEQi~)uSoF8IonEM;D*9ky2F-1UnvpX5-a5Mg1$2MFs;jS`SXs%Ni5>`; zyGY?*A*}Cr^MDuanw>lMY2dVSvn#2`pluETx`mC&mCR#I>VwU;;Ke~tU%ei@!9xEd z2w!0Xxqs1c_P-EjcM`Gg*Ko5_=zT@tM#YLvZ3zt}f1-xJ$Lmq=dscQN=r5A*Vnf#2 z%Brk6wL28O*z_bgHFer(4Ryo%uPYTR z!czXWdp59Fudf5%w+SpHeIr=tRO3-xBh{6#!Z4Ig?#T&yyH>o(+X4@2n5Rg+!2G{e z9{q)~@2be1iw{2><2`$<5?11P{j2T093G+&dAjjAa^IegKs)7!Z;~}6LoVn1c-T@k zjjrHS8^5+7ei6hxJ~QK=ltdSq*6ChItcA~EMEJ~R3-(^qU%mR}1!mAogaQ@=0|VqJ zQJUK1=$X-)n_~=e&gH_{!=O$h8zXUlVS>df?Lc@kV(VI|UWiB9_pRPyRymTB+?eW+sazAL}73 zFYPrc1={ErZ0Z`)tUX>6O8+0jgIlWkPGPv4up^lE=O$=xnv0m_ zr>0&g*gCqgSt4F!Me~{|*yrT72mi?hT%EHRJuZ#(tqmFCT&3CfWY+ zed`-9KF$V=(++xX|t;(mTk7!%1n3=UB?&m$G;1LIcP#lr(ZJD6GXP3`r=Ullh0J}|PUjBeYFH?prbZNJi$rIDxIG=nZfX9+H)3in%eC3(e~Qe?FN z?45!4*@+^q%|B6CShy7SJoe0%1L4n8Mp4ff=V`e+2pO};X|3#Fv$6cwqjMgh3m(uE(Euy((qhD-K~qg`MAdeZJpN9)wLLU`af&= z^u?zSS=WQwSD!x{-Lw2JA}*={38g36k=w4X+;z>2)^X^ABZW!3%y*`~C-nZsL?IpY z#AHAH@|A3m?}|I}H-Cxcbd?)t+*{pts&5~>PdvulMa>)(jyTabm=CHi-Fa=odl^k( zz*1pVT~$?5Ci%C%tE;xB{M9$CDcJ>(z{QvZ2W^-b28|F1#Q5xN0C3~?$f{u=q)PBz zQ?8LTfU?OFk>!{s7ycZoky@kv3VrGA}BdzTtbzGB;Ca^p2fF2PbxrHS+gw5jC_vi(sHi z$qnSyD*0;jzyZmye~#8Q>1RktNE6?f>wBg&s>{9@Dm5~6JUnW_pC5j*wo=181e$05 z`RdLNEUdhcnpoNY2u(dAb?9Sta%92Ku{K~7@{t85Q^yr_{5HE{H3ssqp$FcD1$z)$ z%vdG|OKu}50j)dg{vJGBqIb|a+_96E#@l^Y(Jr`wkDoKwSJ#@7jYa5$l7k(|PsPN& z*rspUW25th*WuK?xTgnO3+Z23Sy)t~kXnbWf99T~n#ha0OWm8S2hOX5|KSsqYF^gB zzR?@Tt)!qq7Jmp>)EmxoW_x#Okc^5qp|(`oB{Wi3r~B&}2qGGMnI|bds@{`&@kzJ+ zQYO1E%~2hXX*h-N+R30#8J>!gva&H5S)(+@)z!J(gk57jZp0ZOb8(2jtC>_oqK*Jg z5CBO~3H~|#g?E#{e+&7YJ7`(Gxb3rJI~abf$#h9&Ip)OmKnsy#6w=Xf# zx#F#%Xczyq<{4~ATG3vqZ-@0xH_#MdRFwAHy@*pwNz?jJ^g#fUp%6w;hgwjVU&1=) zNnq~3ci5VZCc;zl7SfWD7NWdXg&cZb$=W9U9(2r1=PMp7HWUzSD5+@~{(cH-$|COP z8xLtNCLCO?%tlekerSal(NBW1UErL^wTW(`=MyttYr6;b3AP)-Yf&bkc9>!A zZ&_y;i{>_jh+G|PVC!%4tR^UU);rqV%2F4uA7EN>`z9XhG&QUQ>Dn}7wOzBm^HV@$ zHav%M(NQF9(Jg%R2~a_Vc*o|qH$WA+h|WGTFf!7w6u<$EHY90sMUirp+}Fi(!+_-* zmcuPL6^WEYx&N7(oizd;EcDAn6ho{r(rXNMr_u|?tpE)N74-B2UdO!BT>ue1h`ts; z)-Wz+%w^?Hv+pKa)hLCQ>Rc7)mwnM3my2g{29@r3KZT78*PB;D$Byx$iA?Wn-_E=2naJxDI;@)57;+T5G} z;P+y|m2q8xHVa3Po*tuL*Eyl}ir#~kGk*&LM;1DAe{G5_p{@1nwfFxCq0M3e0h7jV z+N+<+H{B!#o}K!+n^^n~{Nz|z(;mk-yV$roUl16_%cUjnkHu@=^tj3;xMR*83(aLB0xGy2?ES6$Y7 zsuZ^E2$z7$rlB(X^!f&e(Q^fm&^T`j#}QapEb)$-@>&jf!jgoK7Gh*IOxLb0oPJ~$ zrQv}?$XqHi3(9gYpc&E)8Q7Eifhxta zuF&RKgSn;CE9&^-$A@IUe;XTd@8Ts@bG(|Pd+*g^%$)kYT&r0V?F;_Cm$uVb5S?i~ zp<3nqn{4{SlPP6+A_G3c>X>3h2??IuB~mO-&i+3!A;4Y|;-$_xhSC*CSF2I(>{Gkj zH_WfIk$sm`3=HV51j2y3z!{XYRci?pC9tkc+T7rs+WsbjYl^+qPwQLq40y0| zwY{F(v)U64A;2yJ5 z)IXEpm#+tNryn?e1%GFVlCrb$VOgjc%!J*m{`izB`-@|rX~CQQJGev=x}yQBzML;b z1;(Ab98*cMtXEwc`s}-z$Z5L6Phd`Jc>eGxvf;4(X6HDZM^g)&l(Mq2q4-&F?&*2~ z)h>1R>fiolRWpbr1 z2aEt{yD2_{{FZKI`S&RvUq`zKrweCp{x{o_hj|vC!V^Xaej(m!WzQ(bY{H>p!Y0_^ zVYeWUv$|pLe7cfBYaDzB)UtN%3=cSm$d{KnC|qR`GaOR2Te?PFN!6djuETIljp_g6 zZHDf-65126+$VuS5Td~TY`*|R-vj>-&E+a-TRspb^IyB%UZ4wzkLa0Ad`;Z8dpW%+_+!wa22D;Q0I&&3*xz z9s~d97YIRup~q@Qz0CU3Ez^G}(;kJEPGRq9xiU@VH3>TL_M{9s=oQT5jIY=p{k0 z$q0t(2X61uhGU^HW{8@Yd|39@SV^)iHH%aFQnc*f!yb6P_wW*?I3ITgqCUm5T2w-s zo>$JDBp~_(doaF3D~#YHQtbcsLwha-ePTWM^#6_`qW94!F_jD6N>80(WbPs{yS857 z?7_>;9XLMUYWR+jJ`10%E7^+wks}%EoiwNTvu77?7l$-Nk1f~N)|X-9+a9O+dA+1~ z`w}ZEPdFKFDP^7U4qAju0$=<~S?<(8a3jH+; zOSY`6Y;|qz_d*XXQJe2cI(PyC0;b&`2xh(}1OoX^$Im~|j2{#XYn@Rx8-Y0HjX2j6`oOSFGMBaws%So@F@(0Wpe$J*2VX%k zDL-FHm;8C)*3=LMY&=s)6b^>dG^AH10L~<1p?BS+8`%%a(Zc`;Y16n%aSwUdE1v>83M*sOw{KC<)zZZBTQ?QYwX`1i)DneW|dt*BOxeFXR& z%l{E{PLz0bFI1b_df4YNDOYZdW548NVBYq<<%`>~ddA6PVAkqM&3N;MlxMBJ^g>V& z;xz(NRp>LAw2Nj3aHYryVxLw3_}^R}rCN6nLUVJl*;fG01xd-pIFO4%#a!p%xd_pC z)E)u&l-SsUA`mj@%8p+5ryXVFN`*Frl&QI-L6j#gdv6odivE^7hTsCck`kC(L zI~uRN>u>}3Cx8B2g}v(&HC|_6ZCvr`>NzAvODKJyCLC7xk;!F%^H;<`QxK(3em++` zoYn>c3pe*UaKHQ1z)>}rWeSORex4v4Z@qP_aZ#Y92^8>PV;i$LT6eT{=^v{jNa3O-kW$RUD6K& zRP4)u0+oN@^h|0%G^wCVxv(FEKRq(A3R{pLV)#6XojW#A9XpE_nVjY^+Fgzm;s**4 zvC@LJPx>?8KAk>T2V*HrNEblOGdJ>kEBXJqh$PUd`d9fI(*I%o4(+^v-O)1ET!*C| zPl30?I^JG4Z}@_hftB~}UGASuYU<_A`=&3VyNR#4RVf-f2j{Hh$-jQ`qjQea;0#vo zBQG5NWr;Qu`XR!vuW2zpq@_*Jp6s536T7~QcI5r^Fgl()N$_+vWGA_E@7}%mV{h2j zqbASt=F0?XH4=@QVg&4&a?55ejfTQHffta!rN41Q*?7HssX+z|LvU6GPB^^~zorKx zjn0-YK@^d!G__MGB zODlbxT#q*Qop3q5Oq6iTJWJfmW(o;jrPGFrDlF`Mw1VE0<ob( zufG0ll-eq6?5*tNMiTaE7p3F8gLOW5xPExKm~+zB#>S>N*;_{pMgI$y$zA`m0U@d8 zBH6gyFV;h%n)JU?%%3@K^*$!Lwh0^bE(ksmw{YFQ%UQYJ_&harhQ1nt5_|#W;o&kt z?)G=M3tyc-za0E}iNUt5<|%tbw*+!FDygVQWq7aT62@^fchmk}ncyLzy3+U#CN5r^ zow`f#v_5k;(_-&8lxish7;quirHSA>a(*aD}3Wqzhx9M-U?(Ddy$sdp>Zq?== zkPr0?!U@4nbl-0V7Rlw`|CZ;R?N-=rug9ohHn8e(W%YBl@FgC6&k7e^YS}h1KcjFB zq5WU)pH4?=^mv57yw1Whf5OZ?dGr?MjA_^+ExSz<`{EhI7%~?FxCIJ}id2`#Xo-oF zm@eqZN0?5@K8!VB7yQviUXH5umqTrDZGC}pr2uxAL`q9AMYS$SFp=mkUFGFfU$S+F zYA#41@spa*ni^(*FSO0@L!9-Kq5egJN@0bpg&)lQ0hRBr7HayOCFt48+u4s|lMTNs zNw(cG1#z0AFI3M%jA^iPO)#{Y`CyF=8o4Ocmrh4LT!ljiGI!2`uyZ$psU0~-x^Tir zF(>?}aYrr6L%$^jBBg$?(a8wrgDCU3M4unK7=D9~Lo1IpZkdj?eOU5vR8dy<-qJS@ zO#5nFcR#M3;#;auRLhJBd$&B#s|}R0nx6lBrp(jbU5f~s`ibR^merFikHC}Z6?V?+ z;%jAv+S@&N8SjJ5bVlxsPv==3PfZ8*$m4~D73sPxCG?R!448cDqUUY%YnrCJ!I{!` z)8}Dmi6ah+Y@ow+$sh_Z^aePfl)2GO=KrwumSI_NYuYf~(j5W<(kb2D-Q5Tx-O`P8 zcXzjRmq?1z(w$04*SFX+v!6ZhH@`Tz`Gd0JT4xe8KHx;gKlxo5{kWEWR?ylMe2W|p z*r8c`bHG@k!mzTkTH6SMBr6V1Qf`MlvD_Y6*xJ~h(VoHQ-IG?#`7n^TBXnz{SlbCy ztk&=7Mz)7vlnCHD){CBaIdDr&&_EhR^aRM7>8)>5dm9E zXad0?ce2!P$UpVDFgjbm&gZL?73;cS>Elx^5x3-X5ANf~r|zC}{4SHQZs1;xifi}) ziOQG>$7O3)Q5QTXEmWuDV^33Xerxwau7IGaCyszyt^dByRbrWt=(;Yh7usaC{CNdCc^8K5j7n6?<# zxwM^#o{GxG8a+BWUvsxbm(G4e}S=is3moIG09 zx*;I;Sp!1S(PaZ(>$O7KYM$$-5 ztnP(+H*P^(KXXDiL=hRRMMOlT-R<4>My8JOj|Q&Yu`b-I2H`2Cnn(#G1uZLv!^btk z81uA>IUPC&^M#x>Ta8Kv9JW_5sFMUkeC2N(b+VNUY;ek^w{rVeq09f&} zHj}ZAo-EG@or{&7?&7IGD_dl4orIP_L|(YG3X{T$_9mb!FYLA^BLiVKl=}Wa$ZKH! z-i}adM}Tz3A459KW(;f)E|k6*f>qdoV!CoM`z~8HQ-EhqNj-}5PMUXdA1+|Fh>pXR zNI-xmhq`rDsF}dqnmy!O+{d`&lopoc>}(PSz2+!A<%~fH`NO_~ujo+05ahxL+6++J zfjLY3;lxmqxNPEb}~Yc2+D}xfrMh^VkcVn&f;Pr-v@2R2KvqO zP%l=%8b-Qnb6R96Cp!Wgm35-QneKSVO*mciO<@yVKm8RN>W;qS*Ik7PsFk4&nAH%x40S=bjhH8xl)D=Q{{mfKiB zklX%THBnxdX+S9TRtw?hv*>F7|=PM{13T(Sw4pfCVC4smd8MDOuyTT)d(Pt!! zfWSl2!-ZWCEf>JteFOFK#1su@` zK-h%zWf@KQHwY&>sLV|%UzxTp)HS?Xg~YSBQ>j=P%l900%jB;UW*(7%?FvI9a~|HnQPCCj(} z&oTmwip=PxIqust4Yk(P$Pe7n+m7DQ+3dDtUJgBrso5dL8r}Ep$r>0A&Kw3|^zRF4 z>wD21T)sfAu}z|1JtY6Ko%)+T7%?zlB%+(q86ib$FNHr){`I|O&n__>M<(2lF9I`C zGu^YeMpO8Yg{H7vI<8uskYGktE>$GC0WrUjIFK}DlD)ID8m^EkHBC(%t!-`LstWWG zbhJ0bAjnAmcj$+RpkFw6!XlK7qdXEO&QloHpg^~Ci?MpU>JIM1oxbw3a&Y z=tyInUS4W^$fVf7>8bw4IsX8McU51Nx4M`?VY@)#Q2)KPm3uLfyDc?P*FZ|N=_;u2 z>#9g|7C9Sx)9^P*u0aD9{p^q-$)1Pr-X8WN1m7m5_jbz-MeXC#fl^BSRNh;32DDoR1jU5nofgB9(weK+nFv{^A?9|%)8T%hsU0qE&6Ph zDhhJHN6)LjHnO(w5#AB~D~1|{A?3w9y}MnQcaF@NBbw;uI#VexL*wUnM#LISSeWm6 z2fEU3PQABgq|QUW<-wNuA#BWk@!Q_+4E>xs(l4823h+7yU=tKB7DT$G@Q=Z)fWp)T z3WR)6=Etw%1mdE+^=Da2;=uJJ2;wxzYbA+rap8a;h)zT4VxSMZMkbpRpz%#VLaGR{dLVJs}P>4LVdxVDF0y ztH*s6C|9`e=Tfrr**$2^2foxrQKZ}%6t~VwyGamrCvqOnVFLThFiCBL3H`?|j*KJ_7x<}-=@t*kXl816w{8W1^ zd$=Uck)*wzB(>!MY5ykkDdM+F%=ckHoaKR2)oFq=-NpHnWhP4A+nKmP!r`fAWt^!I zV!R?J2NvHojaeqm*OzFxbi47I=#N1*&KDkT`*bKly+9IoPUTr>8-q-Rt|HUuWsGX3 zBhuN(A+}go>=-Z&aO8VYFQLy@SvkPKX(GZr_5eYo1!|?>avz`=-p~3_6XWzvnLgh-QbPg}tii z+TSyscQq6uH15sy`=X+3w7Z^AZI*CQESWp~$H!Y@;-s&tu-D<5tUY_bp;?Po?sjLW zk1=$(TCyDT-Qd3|RL!H=>s+V^VU{PQd3lnv);^&X`7%ESA>%3&1 z1Cfz@nW3ij1y%_SzD%_o#>Hk2E&Eq$P=oJR6@7W7@1bF_SY+EKP_+>LV8nt3Y{rg;bW=GhNrhIG zcD$Dr&|aQcMVs$~oC3%M!DMLOrF1c?sXR!(o~hdxzg}Bvup)>$(edVIWyJs-uL%ff zI0Y(~?IZDIy>Qq+_#J+r*9C~x$k^G{Pp?6r?djjYFzUuO0DOPZ^^K-7*Its;&pZVn zLA-=kgU*6n8SkM7V1fizJ}!QbQwX3~E8+O+LPoB@$1of_E4$sfo; z>?M?}#zz>7qZSon>nU3|&x|5pcrNC$d3XM#-Cr99ZIDXhN!UNx$QfC2MHNqiZ|cxj z1GsqzNx}!nc{rgAEiD78%^V#ZE`u?Blk@cpQI)$@q-g#aXpS}R_-Si;(wP^R3Tx`J znU^>&J)c-Q-g{@s4R=N*QGSzF^p8@vyQhOx-K2o5rOM=6EiXcYxynUJ*1Jv?Fp<@# z9OUnwm`#RS)qsY?2^u8lASbNTCu|vV#%XGX)PuLA*;U0{_NEWS!JB{UkyHuyyOeQ4 zfSvChbb)B?Kx7AA>z*yuV2HrCiGl3-?u$`UC7q9g~;0s>#r`pg{z#KU=6zs0DraqNIYg^kgL$fP19Y?LM|wn zllg8k7%+%u$ZqLuXUTU`e;C<+#qfMb%lrK}gl7c7)DA}JH+|Umh?B3t+=T@&qHmn3 zWa5asQM~{YyuG~v6t&J0aq_J)ZMu!~L=Fs?xEWSnBFKYY3wWLe&jV#28(xVh5#`ws zmWPY4(823ACua%Mi_o)4^@07#+YipT7+4q~&(+K)RI;e^uU+yosQj;Fl7>hWu zO4~CUL-~fbN@=WZ`P@2tH|6iXoBR!?;NMWw*Kxc0*y<&e^1SqA2a>(&Sp@#SYHXNls7h|C<9j3d&CSQ;DBwbO55`wxZeod=6rD6Mz4K5AV1 z>(0tS2`+i~DnMOgC`|qAtfIX}o14v}yW}%y>HXbN?|pUc%+$Ld-?V=H$yR5GL-C#X zv(;KN1M&K*pDFNgp@v8AGklIw5qFz-b|b%4Ayy{227C+-H4*!3EUW>nTf3F^q1?SC z`<|U}Sigs}FvH2nNf+t$p&n4KAcs)P0MFNzweT&On}LEwEg0lzQk;(=vLF-&d?u0`*?$c?6 z)5`e_iqdwu82+vY*>oJ6QOlS)EjV8PBE=MG1L&qNVF1FHa7V#mv5C@ zuC);m4pAi{a5Y9}ZSZoLDc^08@;XK$)=EQhx;Zc!~0wuxs39ca$XCKSVH*>d5BU!uff;a2X;HZRGf*3y1d}>BQLfXvlg~gE($P#g^uEzKcp|*pbC2{&-Z`%Q>fg-DBx*ixjPkOtr|Z9;EwXVC zb+wia>=F4+&Z|m=(MvVV@T>mr7LXaER zBi!8F^aA}&+B_*iGLpglAOF{n?)}B|%;^@}n2ClmIIr|qj&~wHCdVA+lPYkd*z($& zBpB!<8*bMW>aAt7e7JL*Y?F{RHYX{}a*I(zvj~}33ep*YlaZ4d34|nlKqm3B3j)FnFH(a4nnFlbcI&fC%G*sRQuKS4nd|Pwa0}>e>n-v|MPe_@K zy0^36>ySNy_F#X-mM*XB_jE9IG5PGGy;N0qcX=CuUH(2cy<_TZxIh~KK zvyhcqc#!e(aPW?lZJ>YckJKw2v+`)+r_ELHy3^Z1Lba3=@oG{v^Oc4j@*C{y^PqLC zrL@v+pL@=pIu+nNrHn*nMWg8zm-Dd1BkQ!z{ROtz6sM5$Zq)I@RE+`ODyLMkoLb97 zxnJ2M!jbw^!Y(|pjF5qLiEuooI2Hg@uX6f5>iX7e?Di!|Bcwq>S!LQUeSK;cwKxUr z1{9ODM5M|Gx5fz{hDMkr;*-|uYDSRy93bO1^bqOyedG7VqY%n)nMx43txLmqg(bmZ z_=zN&zYCVv?!~$OmZ~} zV!<9$w|}}(b_(ObsI=mHbVGwf9fR?RbD5|}xv;C1mj1bH^4p|wAtKhS+gU#r{{a;u zwz3

!7VXoel+u({E~yDWlvK-+j5CSV}d$3@msQ*bE51>&jMiB1KfR#}il4J+z%M zJv1G>*6$`PuSlbez55JB-%O+9d(~PA|QVTERah5b&LdF|sRq z3&75x@gEA&RuAb2iy0d%=BkP{L6+yaZVq(M_gwtl9tee!$e|5C zMg-wmT}jE(Ad1(Okf|ou z?!d3pzpG&mPd8+(Zf*$r+^h(Pb5}`85^T%~Qf6B-)aN(1xT!OR(sj*jodoaK?pU3cK=X}UD+sLhKrDw~j4Q;Ej@Wr#2|4v1M--tU@?b>Tz*;S&t93HW zF{!4e#CoZHhM2LBeRM^sU;&1{H4f+OQ+~x6vTx5Dxn(I=Ey|N4zWqu+7wbK=YTYCZ z_U~(Jq~K&9D#c+oBnF0W1n{EAO3MF?4Vj{fQ=v^j51wO2DQQu3s8?5a8dk$crr^HV z7}Cbyzvthl;d4Dyr_p6US%M&eVyX7NJzwA69;^+Hi69t?sK=Y0a?eEi=o5NOn(K2# zP^I6dic8q31q@taAeXrp^n0L|Jq>ue)kBT#sh8!?xPnxjp_`NZp;%#C*3Sg6012( zvdmCla~jw}Xb;>_hRYo^HG*7!v}!rnNv^0|o;|Tp47^ALm$9K9{rKRbS2H1*ipTa+ z)K*1cr?QRys>so5)_|lwmz5T07fAQ#im8J}4r8_PcpZbqJKMB_cFOKg+0asc*$`;o zf6o>Z8m}CUv(qB#mL`@to)S&Izo5~Arh{?CO1k>{cieysayS)ir~d7cL|6-XM$?yV zHlV-!+Bu6fO~9*pkTaLlmN1E43-xpfiDdEzrxf2{67(h7z$%Gc7AZcP`R75-;ZJD# zGsw2i$3!4bnjCDpSg`2|5Xc9c=%ll@XA0U!*UCI8iPVa?Zt(&t4{*~)4f7<*?Cd<6#v?YeqMX>i-N9^nbxVeR`t?9Ca{BqKj{&Q;MhpCEor~AJ#NPkWQaY;#0Q`3U= zsZ{~J-i3`AhXYwkvJJFwZvaXPPfPZbGQq%yzxi;Wsv&AgO{7BmyP$G@E%efFEty#V zixq};Q>y?9fwn@NR!gmzrk72~=aWX?oH*|c9cU5}4CXUHQ z+R~i(j*+yt`@E5OK%KWz++e+e+}Bs|IkE7sju~x51ZtvquAtoJZ1k1{T}qGlTA-He z<3?)ay51}z6kRJ+3gZ#A(q~*PMIZ5~&vuS#zey`l>GGruGl-#KrYr(Cdn=nvH^jH{-ohdvI@)DfmDut? zPwWy+owo134{85PGZ+hn_mo`D)lq@i7(@+`f_FZAQX=FD1tw4Y-wJw}<>h<$ip_5C zTUCEj)4kunCn|@H*Fbs-qOnlFV+a(vu?)hC&>3`VQMa0dlz-oSN&ahai12}b_XN;@lX30*8#)G@DY>RyU*19tG_zn z6qz2A)Ld{dSyTuv2R9F5yFe2tVgGbmK$B2Vdvxwlmu9xTDWaz5lSc;lx(# ztT1Y;a-3@a6V}?rlhoUqBgj-=57UT06p&dSLu-{wzI!B!I2MkP^M6mcf=qhthx;l` zNp={TuFnXE^2rctKW`;7_Vf?D6U7;`o~<~$x&@w=TL~;M_m3>?wcg~H!-07-lkRGP z$vK-;IK<3iiP)B3o$u=jow~ckJ+v5b6%Rgby_4T2JtPh7z)0a0>TQ?+c0C^&m4e`2 z&S86&hKX0#4=NKS;k`h*jogY5?9@9X?(mw#*7=K^Lw;vm9J8y|G}Q*b9)Yq;1^Nh%Fm7cfb6#&~-8aDHM~!M4ue@ z#Fw)}^X2S7UK8Z+z(bw9Rc1>q5C-sEzy&?sM7Uc0Wd@F;swU(TARcEayK!`Yh|3n*)vt9gcD!hpwq)5_>lS3 zcv@nU3-*hLF}$Y4I0GD55@MV6+)IN`rn^rAO4uV0SBIB0+#~TUOU>t4MU8Ll?2eOH zv$@%7$v=M>wbgFe40U36U;92!z?AJ7t46G*&?+IyT#YY`cuAgMwR|4{u8n0mtLXdt7>c!ZTif{EQ-I;TL7K& z5Y27aD!m~Nb+R(U@SF%gjfhbMsS5t!;dA~SZZks2WvgN$?a$sGJU~_UaKwhvGS!yV z@8J{FgdXCYxs5x6fBbmKjY7x99_+-~Uk<%3+rQh26+#+)nZRGdx^AwP>|qZwB*(k_ z);lnhO_QK&tYfS@K+4fnxf->hh@`$`8~<-CsND!*pymH$No^r2n85aDZI2j^M^v)$ z{e;KP0Z7wKqlXDRVw-gopOVJKj-ls^~_1wLssDRE!k`9{z!X)ZW%MhYkvEw&Q-bkjo!>Cp|$%ny1wk~z?G7h zgJMcQ>~M|kGxR9OA;Jz}vtieaURtFRY;O;eLWh%fRNz*RQo#K%C-P|C=4ed1z$bYUIV(HACAM!9 zrh)bA!EjORM7OU71-u~0OWk*KU}x#vfB%978asc0jEMoY%qLSxJ4k_(DL%dL{)BD3 z&N-yLC)D~=(k9ROzvB}Upg_EJAgFdexAx)wiq8fh9m@9hS=*5dXpWC_NpYPjeVDe+ z538cZT3?g^EBTwCun?IV3J9t;d-4HUpXdc?mATgD3}yx)RL~UY51vILFNxU~6Fy;I z8y-&TiWhddg<>K_z#A(5xl1eng=x^)_5LI-I~g)r?=nP|(F^id$yb!nIxxh4?+7Zf z$u*-_7?P}AHDS4axZWLE>nnBhw-hGv@ZC~>9k;x?GnQ%swBCX25&xdsgZHX$_qpmxtQ%`=PIb5b70?RYSMfsS}Jn}FfuNEP>4x3uH zsa34oTuVY{x!L{*?cLkP*@mZe>Dmk!%F;iJ%&vkq#M($tE5GD~-85=i%=r8kzSJN~ zVWuRA&)c;Y>Z@1!@G0tO60@-dqvmXSx7~!uF~gc`!Nc=$dmq!n%v}TyT`W0yr0ifj zukkLA&i2Wc3igXibg+Zl-boAVjs?>5Y7O?_pdxofGmEW(JP^EJkLK+maB@P()7`Ix z6G(YcL&L(58z&g9Kn+JwM+e_btr00OlJr*o0?-fv5K0&SNT$oWN=6ffmlq2K($>|D z^rnjT^G~mKz64FqZ~BXKIU@nz*EiR)p(D{*Wp)0qd$1ZQ06-c)aH5(w9evya7KF|4 z!vslZL|_Vvr|O^^rT9c3Q|)>^pc2}VtF!7&2Q~-*_5KLPZZf}Vmq2Mcs!61w8pZy(NZ3Q*H0YH?`_3ewVsKX>86 zF%dd^kvi$-Lh|yBM58Cg057B~u>MzDc8!yFaj!qqZ1jq!c?RG+K!&7TdjjLYtcRl; zoejN153?N@-ospN*hN^OUY_v3g(NHp=o?MO4yBEl|9=!Uj}r>GZi7J_AM&XEk}sxU z?jvbl#$iG-SDu}%l1Mji{4sI4m_Do53PSDo{siN(E8~#^AD)oD5TTZoqDD;RgUj9+ zK^8Z4+cLn)+Unl*|1??)D2bMBjF9`OU6G|-mXumpR3(U2vld~hsnysH|HW=&Y+Nmw z+eBWVt|c`=w06ZjH%vpzMxT%jQioXi@@%bIppDeac2FnKBbEu0<#y{XkUdJj9TU;y zI|oH%IDLInvZ9Q+g23URxi!P0zd8;X?6CLVGP2U>%{ z&sL;dLr>)H92m?A`EqN&(TP%-v?#f{!ZS{am!W5te`r19v;IL}?joh;K04&!GXX9M zhuv|4oH&(^W;^SNz)=O3Kx>{+a}CONCha}kaI;*!XJ}Hxc!2%t^%XeOI-})UyzsV;It_3 z;kd`Y{Hq17b@mtgn;;~*X|{7-srJwDP1RtRspNB|RiDuqi4~ZRGSJ9Y0h+W9p+bfH zkkR9cSMM%*(&-IOwkETR`kqWoxbfW1S{?M?r%$nx*ZgE}J~MX;$k7dizL~`Rx;_JkD8yEoYTU|6OMD z$$iZS9w1EHV0IOw)2Jvi>MiFK&5I+evlzn#HmtI|rqO1e$$L1s20UC`V)M5cgkv)u z@hQfc6qq16mF43cLto&VgM$NyjoRGx#U`xN^=(c-;X+Vfs~$p@4y)cZ|LZp6DY45n zlT#RxREj|j>lx+@!gFW#&$O3_A{cxuySjWkn|^sP!MHe7Er^!y_NH%}i^Me=Gy z>0cjhn!@)?*h0J4qJ)Tb-1mRWKg3e}X`wDEm+XYeC0Bb^R@N!wuoF?K<*XG`(RH$6 zh;nxwkBRv37*T03e3C_Iq&&?0fhlSqF>&_jbFG zuvko;#lSC{L$>)&5(8yIhlOCUyP=wguc{8An@CUBad^0K1e6l25}{Zrjk6|{aI&bT z$LTuc=hxIX-Z0d{3d2^XJ}bm!-98=pn? z)tOOSjUg)DQ0U-m#DV$um39hvlzu<}^^63kK9s0sSpjRvMt+YRLfynXPU8B5$D1X* zF==n6cKPjSP9>XI=UOx#E|jIiy%3d{Ndq)aG(yCjrRY&vM^hx=nwn?5MHqIzmV9l* zdjo(TgSIqKp2YN8xlKVx<`dpYLjt>|D5?}M4!jwLA(oLKMs7yz5?_Z%sgjnHxZy;7 z&8!7?Qu&IgGBX{t(OR2&T#4e~sIIKXgb8}^Y`I)2TX_6;vOfgZK4bCS$pb*nxDH$@ zFAX}tR}2p-ZdzTBQk*cleoyo1*((z^y^%{J?S*yK<|JZb32eRv#-&e7-ap>Z5*QkB z1>J>p$IbW&r0@%oS!NdU-hc>&PfNraaX=M0_V||iv0CZbJ;<68Mjkl;fO8|ic3UCd zGSLNIg{NVE)YZ!GnVZrsd7bjF&C{w)Z*MPYVGuWy_56koA%NK_!D85u-8FbmoC z^ZecBfd@u87(o-78oE(>`^3a|8`l=|Nr^X)BFkM?(?69Gm{R?bnr16yWjb2^?AG$q zXi=9e{gR&j*huibsDhWJR<9H(E-i^%ugaEQNILuufA@JowK+;3?h=E?oLz~l>8YrG7!=qt?^`%#pB!(`E#A)g-2H_FMI`TYD#TqNaNyOmrm4~z zow4b*Qs^|0Dl{#aJp+-cg2TctV$@oH@&HNoPxM~*h%7N4Un2&chTszlMm=jgKWt70 z1y^EL3F3)Q%gXD&kB-LtQa1z1tCX94_0l|85Org+2Sz!y2_u)SY)h9Olyy}Z8oP83 zRKrZ)i%6PIqjf`2hSP~+*hSe+*(bcIaLP=Me>-AXULuWjKu*s3fYF%po}vd5o=fR{ z4sW;!#e2C3gOw-vx<92wd8(o+DgE@NF_y>cn;{nt%MXxJ4i>Qb-w;N8v}z4QGB{?9 z{>Eyg>JxS~?!>XKxX7iG_O1yy_)6Nv*n-68PTQCw2QgRxk%($udoq6V6*kG#s?>}| zq-63BLnZ`r2aV=u7PKO9(O!9U;Y<6rkOhZsYoIZD2uuYVV2iQ1UcL){3Dd?|912fe zK`!xEI8st)CA)v@^;hBHgE1T#$)yGxUIQDz%w5=JmoM!tsH)ZduqDa*RB$u~uSG__ zNxsb2j;P3#4mq+Mm>c2m+*1XMhI9Lc>L11L7P)Z7(bs{DN%8-Y-~Go+NfY7k;ViQ6 z{co<_`c=c2sR|u}rdi%(`jPRZnme11g_a-ETPwP4HOjPHlnaZrQ zagZa!RSp+1SCv93J2U#vH(8n<()}F-JWXl+IY%+Ec7rqpC z?7ey;0x}D`vCKgpj57MXW$>ja;lnb8hwt>D=5dUx;1BV^DEU zR7?(l5)wKL=%#h7ok2YWUF-<+^zyw_2olaZcnF#HPc?nia&UL&x<3p0bOsn&2ZTIZ zrakq@7-bMS&&18grw60?ubblLW#Zbk7)^pC9@xQ6E?abk8NT#-B^UAoI_HR5-=y-5y2v8s}Fui#QucV_yL#v+57s=K&H$j*ZCVyP|* z8l7g{f+!C%D3i(wV1UH=ldJKNW0_qDd zp=ql@W4=rUI)l>|2^AH!!NO%C&%L<@f$-WxE`t;S2?pv6pof*c{uYOX3 zK`LnWW&N9iT#SZho?R`wS-c3{rPGQOe6IIXEzycspH^4i0Wwd|8i~^rjD`!G)ySQn z9_LDFUS4A>S6%=GF!c1~Wiaf-2lL=t=~9G$xIBDP$ln6#(QBH#6#snq@8yph4pFln zC1leG#T&?A=oploY_F@?oP=*Zpu95PQt*tY-Jtpl)l$*GVZGz4n)^^mk!4*nA-^ns z%IV?ngKxoyBh!>X5N)|zo`|p9hx64(9lk`-CXaIw=g0uKEo3eyGVdS~tTUQKKRLuUw#4FoHbBS^3pjw(#eu=ij zY1H}v^~+@y%AJ7H?t22NgM${Sv_f*X7K*ILtlBgFLM@$CYg~oP=H=Gm7x30r3GHXN z-a*K4+NvN%Uqgi*u zAcWH#uPQt`I)p-MA(D1Kkd{Oa0UH+vVD#`H!Kh(k1vIbNbiy*S?3Ex|Msr0qU-*&FGdd2 zl!mJ0c!b)K9~%iDE2qBDFW@>S6n)HC*DDR#j%&3E?&SdY+jYSolOfIFMwTA}GXS z_7!Du2?GmDthtSWH^~GM;Uz8eA<(Ak^1Al7 zhse(PKSmW-^fOy3O0>L65hsDIN@BXYI#PPHJkjAqgyF$m@o;;t%Nf?eWo9B? zIs1Y>RVG!%!`V<$TYkEy$2Sv=?@OitMyNXYT?e86C&Ydto@ zj^;UDt{%@HwO@$4zVoU)GIhC$7lgc>Tg=jGT%tbW21V!0ma>mxKYq>EuJuOgl#-SG ze%pF2TycDOXg!>0Ko8prc}44JWn~_sWqT)u@h90(RdVGHq|PUpkUsd+gmSo1(Amc#WQ1DQ;K8+kN*1Wp7pN=oqrdz*fGWO$iEBpE0=Vh~}g zZt;7hZ(%~4PWStpm&%%4P z1rm!wqypYI=*lvoU`Q`V08wEOgdEm`oe#&yHbB^HzMF1VP#!~3@|k0-d@k$jE7;wf zoSX=Qk*il+Z|~uo6N`xW156h1ni}Q~zEIK6BnUi>rmUG?pd`m<$J3Sn`fA7%{ z7F_igTZYm1a!LB<7a1A?GJOcxqp7r0>yOj|99!vexIg`58!?Q6BHeY~58ZTGTis`^ zF3RsK(EUi*g9in#<|nW*sTq?S-!$JQiad(J;bTcR|GkBL2xSPw>Wq4^dF?N^y`u97{unY)`w9uf|wmzTGftxGP^hctd>F4Sc_z%*yWd;DwX5<)v@t+H_4q^Z5 zqheok_N3zfF)|F1`OC^y#igXYGJ8uB5IZ~*a{k1mT=L~zYb#4un>PHrpEgy+6`4_{ z2}OyexpF^Q@+IOr8<8#`1Sm&oJKM+Ny8k-Jc1Ij)2;}MFxWE13@>D?2;wf%>dSzPK zdsz7@!qe@Wp;fZhGASn}db?QgZZ)d;1>D+Zkq4!(f zE>!M#FQbW@+iZ2<>fqe8cUlWePW(YdOGELHqCvTGoTd0F-)cWbAfM%=g+8Lp_@li& zY{%09Bu8ZrRRet3SLAaN;;MWX+7+CSFv)Zhe`kei)}jKx(Uf1j%b|Po2Fmm57!fo( z!j>9mA~EVp&pIb%s9U-3XmSEQTj%6_5n9MR37^|b)^fTnt!5SeOI(!oT-C^4qy`-c z2}wRc?8eP5_20NrtL zbK6~0YB!CPEdpAiKx@!Ym#0o!?%9>6EQkS+9l*ZsB=_pD04E(T@EyYgsPF}-1(CPV zmH5RNQ12s!0dqnQz{pQN((36fCQ#2|$n?O6di2n3lJiX*Q{fY_3apBg6C3!Y!=AmK z9(YbV-`m@xNjHm#zM>1~;W@b0TU#D}1-lCRDbS(*Q({nZ8?(O@d1DL1)MP5Y zO``i+nm|f%ecEg+g2F)@(l0_DqY~#=bqr>YEPhSFXmOMDZT%yoNGq9QG3Paz8l9lxbSu@Win$C^F zn*p%F=Bjj{og#}s-zD5j+{)5!tMu!|-M440suWS5A?QvvT6>XzW2mi}$5#u)Kl!(` za8;Hq7Nu`$%XJIoyiF+_=KO7wYb9?+7 zF4~TS0GfIV3X3uFc;}g$fz#^@CSu65S2IrW&yZrx3D1^Rm8YHuhjQ;{Co%|gPa`Oe zHBVVsHgLY*Ug9Zitn_(NmMSSsgvz{A?ET7-ZK1WDLR=))U*ji6CFO2sgu1-^MXk-1 zxz8<0UUBkghOzC(LXtLJZxg?9d*o?BAzH=B=v1a1gnLxM(5k9=<@&(N$zZKRinb~1 zPBS`ieK_dpeQLOB-^nH`J6pQO!|Wgxz~EI(x@4>=`%0$gbBP9|>K+4+)OgBW_TS>j zPeHnan6@_l&E4H74&#>tKZ1vv)YJzzkj&Otwo@vs2LP=`{Xk+(mqqwy#mn zq;%8W{W1Mm$3Z0pIQ7v|81>-FereU4N-Q?~G6(b@(M-|s`X(-Ss_ADkE=}$J2Z&#! zt!b$A>n+$ZBds*rz#R0-G*j)_n7mdegZw`9J!3qx0sbC*o&7qWzl5j65^;~C(Eaf{ zptuTq2vI{NH!eX~=Tb8^&O4qZAGrinEgU7oMquu)q6f!Ny$wjdJw54p-d!zxk?8}m zuoGf!nQY|s8HnkHq#ULT10Iro5T6MRA~$yNR`1V-Nk#tX$=tR+TwSV2`R=iVJb;uC zNYl4?$B`Wa7n#pz%|-4Sx4x9_o!!%}Djq}4aXwF1F=_2SG1cs_L@V{dcwe$_=*=zP z3#aRfIN08k^83fW-d&`)`5ofi+iC^H#3CB-&%A|%3OO)7h`W3_mHv;E;NQk;7Cso| zm5J%;M576HZ^xanw%!aX660S*!k?porI$lCBGL-Gl`w0zT8UiVJN=-W?V@3+3 z6uimv(8oTUDPV_0ed$F6$afmmB9332xFxQpFtv=nyy#gNDvmVWEakqKV=1UTVDUIL z?)#w9hJ#1|pq~*1zq`M*Qp?{*qqk7$;t1IGx9(6D1r3fQc#@F;0~aY?j=p;6VZh z#gnV*^qTUi8O+)$; zgJL=dEgcHb0S?l~t}b*DGd&2vGuay=oNatk%oz_##?&cN_bDIKUEEjHoE`4cY}e0r zv;U(5OEszqnQ5vDdjO6dprs^&z{3*x+0{K#^LKLYVD1e5WTgYoL51=Qj-v?W7h2_N z`P@F$y%$lq-xI&{gK*~yrGIme@XK8qY2H2WDW9m|>poF?)9LRYA+El{$uBx(D_4W=cAuJ9ug5D{*JrLUy(mUtQ9sVo*U;QOtl%};=}VINXQ1>H@y9m2grd+8 z{pYj)x!3$R&|lgZAf6pKCcy}x=eY43}kI8L;TLQl=W?8INknSog?26F2E|fQ^eop}wkO>Pew_{CI;&9ok!pVOA zcJ@7|M^!LtjahH5E?CRwGS;#1uopMR=J`hF4L?E*o<4kq=1X)gDIA=hWw1Y}@B1&V@)1phck-Ww`RHsJdnUONKnT4W}i*>@nV!y`($%y0`piT5Fp=)t%Ftaz!er7igc-gA z!FR!0u|II{LBNCX`4132I`VyZzhK|;&la3%l;V!i!znZfeosN

wvwU%}=b*Pa~b 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 AB2tA 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�N7WUc=W&q*K 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�|`V{kr?Gi2*=FI0v&0SxA%fvUqU@AE5=jCS6yzf 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 XK>LgU2MG diff --git a/examples/text_to_knowledge/doc/img/text_to_knowledge.png b/examples/text_to_knowledge/doc/img/text_to_knowledge.png deleted file mode 100644 index 2a158a0b256db3246ec5f88b90636dc77c7a4083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413725 zcmeEtWl&t*)+QcYg9Z1-HMqM=kU($<7Tn!}dvFNQSa1&(0yORxAh^4yahExH=eyrj z%}mwY|8uF+-G{CNz0cljul304D0Nji4AeKMFfcF}3i8tLU|?Qh!@$6kA|nCsIBjwu zz`&qFY^0>r6{Msn)mJbb;ec9W8!6D0|v?~xIQ_@}j@~y{7 z5|>2bq$-_H?ZP2NW1=nv3BJ~FVhKWLGVAL8#iIKQ76;#*lx1Fh;T4Oi<;~KHqZ%aZ zVPvRf5A53EdGQ1fv%{=Us~CX~Gl*>&Me`_p;CzPS_DD$yPnrjZ2U912i^I*rf}F=I z^0Fej4Ew9sZ`zD{t|RcpSS4{J*$F17TU~Wik)IfpD>;A{FQ1JF^Dg%OD%~=Q{s*yz z1?LCKVMDxZu0Az-ew%19m40a%FW8`b81cN?h0WJ6piiZ_;4uY>3w0upK3WSL)v#a6 z3cnvO;SN*E-p7w0RZm${RFa;P75l0OP89KR-3yW+Aza154C88>@6Qdjy&c}dc3SFlv4GzC zNYc)bnT!gz+9saB*ybqmg3*u}`z}v?ANPaebb&>HXae0xZcjpV&aRz=@*t1W6g9k+ zS=+~eIvz@Tz_s2FT^(5nWNPku}#^J%>-MAfcdU<-DKTDK{66ad8!i-zjL^}01JJG-l zjKF*`e!InefFLddA4H%Quazyb)1%yG3X3ubZ;^-D5G;BxWD=~i2V)TQ>J%21^0joZ zS1qy=48=znPF+-;&+e31uY>GO2tlwG>)54m1Dzn zoG{N;ozD&HO;C7#^Djc8V8&XmN<@+_9S(TQ?qH|aZP=>8>74>jY;A~a;UgP`P9lD= z5ZJZwhmG`85F9pFLG(T~0W$oVq+}ujEin#FMWWv~WJbA9iS*wvTB0s#YQ9Vmk%ouo zo3n7R5d|vqgoo&T){9$+W$e;2J>*R1;NyhPz!~*q!LNvVJ0NJTH_vZ}>cPm1r5{?= z3GO%QU+u><6F_#Xpkiz6tol}6m?SrB zq6gYV(U&`LvmSApi~R93W>?y}k~}3c$`Oi8C{3tqD0w$`H<3oLwY(dBIBrYtPH$Cj zPcOY0gL5Rm>^oZGWCI0_Z(37=?>NiS+%kX5`N+{HUk$2mJADsoOEXXwRfQ;$QwA1; zG)6&2DTuEbEzpXRrX*YByyc4C#g&r(M)*YFj@J0qC-FY=ULl^|ig6%mYq%WS2gmXGONsBe|+ zRLqpE=sXmtzQ55>(_E`w&3jgdFElO2sjky9@94LPdtaYw)jGO6I-cuqcI~gCJFUzu z=^D06HRdsj>tspd-o%1QDv0Z2U1M!yACyb!|IjNb534w2ZYmQO+Y~=2w~m@{ z`*K6{%JfPE?EaXrajaRbio6mUu!(n4y~{R2i$wGuEHR#fA5wc^;3}1mz zaiU|dvsQIdHC=_JFIKDZ9i>*!ar)!M?CfZox&9~Lk@!!0w$1(3lYhnxE?U}J9`;rn zOBP-&IW{;pzU;2=Q+kxT6M67BDZ4En&5x*ChH~<9R|}fv2zB{&dAQ{Z}d0jHWRL} zF4z97jZB$2>&{dr!VCmy!=}SA1}6s71t)}ze(se}>2h)sKaF39VE15~%1eQeEyDgF z`x9A`Hqjo>IT?8AdfD7gBWFdX;@BrP4E80;QHx1?%i72JVB6!e#yP|#Cg@>nl3j4l z3N>*wiH$QkXfMZk#d%5inZt=v(dSc}xby0G-9p9xEc8(`$b*5Io;lvYK@$J#gg|sFMjk@mOpM&XI=?Uq@)SOio z61he__Xy97QQ8pbKJ%45msyliOiNBPP4`cmPakn16GstSg(`OQY!oS|E3FO7T3uF#gSAJsU%i*ANY-hto-|HwwY08UTP%0~=5BKopzqiYae8{d zs3ZC6(&#d`i}}2MBc%d10Q1*)7LN3Pr{EMr4LF|v*laUV482=^JVKmBltDD+bLBOD z8QLw`%2#vaPPq|#?z4btG-rK zR)hY})(-yCAI=F~V0&Lk+NqL5x=-5d$;@)A4RpYN*)xgCyg=%Q)ItQ9JYHb=ntN;S5H&9PbF^b>_waLhWVzBz{LG9TPl8=lui0}o7?mb$^l?#b>aFukxE#Nz!PO}=p7o=0sD&E+qb{4SB1a06?LHT$m$9}6vC znLWqkrx&D~*PK7AKbk{rljlmFFK_GpX&pZ9$K8(IE{#EduW3VaA0X~Lc9)Y8u~_C5 z7h+|B<@ckv%hz<*BlUGf#%IPc9hm{P_vE+jj>6`C2E7FJ3`H=XG5H0EgPK!e)VE;s z@_%OW1S-m@z2PZ(VnBIh08cF@@4|FaVZjt=_;XPaW98Lz-s_bi264E>pTpGV_$Vy%^dcv-V--xzls7d-2z!u*l=z384kKx5 zC1+}7WktTk%~Jsxc^B(>cTa3$hwmmcC#Q9(eW`V+)wi7@VPcQh$|_f%`=XjXR+keO z2OIX^I%*LhAXI8fxPR+dN0txXm*0PnAT9py9ORKdU;TSmBFF-G&^aZn_}{wRWFJL7 znE$dl2qrQJ`Tu=%f?yf3<@Br-|D7=-goA@#M@j{vA^$u7ItV!y_Y2&A2L8Xz)qiIE zf18khe*I6V{9pF!e?sLyq4NKE9>;~F@V`vFTUvXjfAe2u_)AO>grtSTh6V>aSd^L) z(Tu{dl1V2OYwHz-pL$<;nd<*puHhxuH)Gg&J(ry$yrJzkKRsl#93d@t&o>>8{qbbB z4((Su7i%xi&9(!x!9G&!#xM8j-p6$VqY)GV*0Qp)KAI?G?jRJu>jkUbXy$5;1kwA_ zyW6dVh|gV#a^yDgLVtb)3%>W~LppRh{0LNOmSFaIq{I)>Kk+}%*KQ{%(dYc2OVjPH zY+m)TyxU3V+lm)*7}>Fr!vVzvy?lD;CWNT#)G^8Zs|1?_p_D#xbP~QVndO9g0R}nN z3WeCx=eSM9lfj3LAJywv)72o`VaNt3>dXsrF?X@nS$*z;M!SU8D;_3Q`RDlnMg zW^%_L-tezE_>tR{R^^;ctgaqEz_fQ&`5@EP=@kx9Uh zN9GkOkz?E0yNc)gxsI=Lv=xLB-dVs zIVRo_njGJskT6h@j-k7D{mrT`gAo|SvWSDuZWM555%Lb#d`lJi$?dgG;B60uB0G7_ zw0fGMhhBXb5=m%GtLV##W8hM6!I6Q_LDBA!@r%#gQ6YSq(t7LKlS6T5%kI|^V7rlL z?mV@@NQGr2-arFxTDQqAfq=a}IXGyYTr4`efy&xiRkcg!1tNnW5-$c7iZhpCghm|i zfdLh(POA!4wOlXSVqh!<5K8Leq+N{*L6x7uK8K7_t8q}jJ)suWxTiH>5@@Yt*}H!x zwQc}0tZ>fzxc*9PPlN{N+P+Fc<*rC#=J*aRkuJR zkMu%%5I}x!?0-cIr@AoUva{lMG3N07TBz@}CherB8S2=gtUqtvNz>BT);~X)%ibCl z0ioM0un~%f8|K7Z^4XK#p98^y(3I$`auZr%{Pal+cJ`PbM12Ocz4|zv`>b`*L=yOT zmTVAa{Cu9Cg`eo_f4r#EM|q`We4n(DZMq)H0U;7my3Z9qUR^SaVMQ8;PsIKmTV?-! zh<+#|HE@RmRo81H3~vCTTjnNfzx8Y+jZLp3kne+_%?T}>zqB}Nujo%*?easa2+|}4 z(74?5VMPtEsaK}#Rk7x99=f8y=1o2OFz@p|WfQd~!~ohKT3PGDH%SdwgBOPfdl^fz&E&zczXtb6>rl6s&2&N%sZrUx&(p^d_8xCK zUPKls;(-#N;m~Kb5u)?))tj%nA`jmeEVJmm1)eOv68txl3-&?K(KQYGC>|p$tUBl$ zCWpDIn)J*NRDwwk=SA!f^<7hHQ?)64nRt0r8+l4F(r_LY?OxuPJWKC*q&pjw9Fjpu z^^r6-eZJdMyGH{VsgLIoNef6BN4x0bpSxAHoex`wm$r6ogf94WvG6m#*sIUssis1U3F&Q z%JNUHfEKF}E%J8^DJ1z{9==F}idb!PenTY0{c8+Rp8i5p3e=)EcCQpTHVs{d=#p>ry^JosH42P?s-v(b zVqokDNuHwxasEK|dKGAjJXHHpD|l$WIjXiFeVOW{Y`%pO&nT z)4X3gL3LonyXTGs+r=`1%;S{M-A<4|39`^t4Q$n3*TioJ5R)DG6$)UTX>VjIz)1m_ zUmX%);QfJmZ(D`^W`Q8*AwLU3B}+5feB-(!N`B9nbC$uhdbf)nVa?7RR_Jgjr{{Bg7u_ zGcD5eM$x%Pzg)tWWI6ool}Znw@IDB*ETpg)E_(T~`_-0y7)0Ipx8jARIuljhPYngk z-|gi>DVR9PZ)a)(Qa|t_bAwnM+RkL_U!EVbp01bJ3wh|`27oZil-?a8p|8hNZ1<@= z>u1)7oTt`&jAp^LV61l?LhCk&SlKo_FDv~K)XBf~F~VBNIpI~r$pOm*Nk1x45Z<%k zWe`I)*JLrrW7$tG?X|cG$0E~5hs#TC+lGA%hk4b%fkmmc!}VrWXzF`IDd$Y*rCP zhVEEH77lYdwG7)byf=Aw{Cb5I;yOvkG2&< z-v-wF6SA|SmwXiRr4a1v?MqLv|MkMpl5P_ZYyRO@Bsx=(C`K$!7(F1uKS5d2w@~55 z!HsRW;pN9Ea;Hk{?J3&=mq(4an=x5Hd7m}r;g|-Q0e23i&8A$Q}$VGp5d@$oTM=y~>*XZ`iY)D4bJ6Rg>~MA8hC@9xo>5cx~K+h;7-0afTuyWh|{R zWH9kXWB*p(q~t;maiO}y@(TJrIfg6=w@LyHqI_WtlDln1;k)f*+t#fO`F95el2S34 z6miVm_GfZAJ*oziE){Jev(w{3K|Z)T)>-yVL)trWe5>ri?%h}PYY}~NR3{vA|wNrm}}a&3@W|<%6OnKnALCqr^>R9(wtx{l5Ha- zU$O@S0Yg7Daq|QXTsw_`gR7bT?m}6xEGI#L>i<>Oy4R_-;G*GWNH4;a6p1j@cZ9?; zIbi0XB-h~-Bz-opwwN}tnPvA~f&Mk40N(z`*<^qh2-QbpQs-bH6n&`wHkj{8LAGQ$n`>%bh>s=x z-dV61#A21}?-9bc37`VPW~Mv3$MJ47_H4I+r!5Z3u4`{v(vOtrdd%lV?EXVv;7xVU zDf3t`%y-ON(mXk+8tiPtyoDYv?{80j8$Lvf%Ts!Y4WxxVyv?$rB)6 z{TXQv1agep`m7t;F2;od&JNH#YD?+;4e zV(O}ySJC6Z;t-+3`I&PVp@aoL0Q}V3I+m{cVy+FC+Z$wT4`-mxDhs#rGo4^c-q$Nr z!%@MWcW>DfDuQbhHbg^s)F{4SyH!**eZc)ZF2;8s4cdzY)&72`bXVcSROEM}c3c`f+4Fu*u9%J6lmPS$dMtNUC z^d3jH#&E-DgEM;L55RXb88K;0(V43u_lKi`1lwg4$d5WQlb$`a8atOOrJE~df>GiE z2;an6BDTcS0oKu+p*xsH6VG2zeg0(}T_*-|jxA4XH9_)jK%z)$TM3M?o1bn%j4FK? zv`0gb8M@@nJ$Ut(wPXNQVeW6<347Hjg=khm9w}NPkxQ?oNhE0pFkf3DRfdm}dq2{r zj<#;jm)-4ftYz1Mwi<5TJTB`!G^*WGtqh;TvZua(aAj~jHYF}nh>j4n&9%yJkwRM7 zdTzQzCyyQ}9OemOu@r(m?mYH(?vfB=hi78SBHb_zq}YAB#X-{nQj|rC_oYMEig-dh z{Ol6{rT+wV@8EUhW%2>{mTAb%o4^y)ReKARXo35O(7GKmdBYqh%x&tF6e$xRAlOSN zQ>WbFh>*S%7v~~K5u)RFXMZ0X55Cz7!4l2bX6$u(AX&SWtv6i!knm~~7=D)Y)uP+9 z%GjhF#fpyi#<-U~H|D@Y4zf`kbw$|2{l&dQ?9?w$^S>5?$uGdB;J1F?uzlgZ8O4x9 ziadTefS=&LZ<%GkYsuXK;G2vV00n4{5bB!1)&p3eB<*b$Rpl$4RLH3C#ptu0hk?OyXoMm84FWr z$yJX{-s^$rAEnmooGP(5=o4wlK#^?3RhX*yz&>Du9q7%#6-4wVWW7CLBaHB?H^6MM z)%5ph;i%O$;Lr^c>$8F-w|lU}l#v>vn}nEre9CpA5KiNeb%_0DvK? zJN6lWbzOKsCKQ^LizOl%gz0quI2*WI_k`G2s{jzl`HpY?LJ)vBm>{Jl=pZpMfc`I zv3jH={z0lMwBna&DUpBz=5FCeKcDUdUloc#snE)9-XB{Q=6{y{Fl{<6jpQ%5 zaS-WOh7Dy96_AHGyu3Ng2`v0N~h{=`^zY zktVoF77=w-CSiJ+o>x5As>0?oO~Z-Jvaou&D%VW@gdVj5GE=MG(=}u8ufk@g5{(%j z?J%{>t4{tP;bK5ov@X`|Ms#S|Nz2^%@Q?GjLMe_c7E6>3i{ssod|@1xZNI`FNLDBi zJV5R{+6LgrGK?0nK_vzSJn<+mfN{|(N>iiVO41UynX7XZC?BVpU}Iy3oBxuIj#l3< zgd7yr=Ow%u=~3k&>)x6aE6P2-Q7}jCCG(i4InXnV=m18J2c_vI=th@P???Z^jzj$>OfoPFyWy|qm@HP!I_X4&b_+;7Bo0QN z;Ag@7+Z<&;vlhrS9Fd#V$FWA{i5K~P_0r_csR1}oT z(?oq3|IKU2bd&MTAMW0P$C6)uEw10HypfvY7AOy-kG2N4=nChMe$t`*8-Et^Rq) z^j`Tqi@}a8hsRiOp_XQ{-S&76P2_VUeLhzVvf{kQ$Kp&&u8>OcHXs9PdZif$+;w|1 zXd+q{<06!omsWggXL6oYtVV#poHO#ZFaG^@R=0=LXFvbH7mZrnm!O8E!(P!>7q!>H zF!+#SFP3|JQ0v`l1Tk$Rq8DY-TC_2`mOquBus01Si)7}!O@2+dL=d}IB96qXtqFB& zl6xF)`MSChw${+Bx7hJH} z!YL!PN1AYZ-Qi6~YVLf8#hHXQpmCly)K1v?LZ4;F#r^VlvBz3$yM$9WoWLVP^lRQr zeU9n(X0V{Z_;0gR7wGJS`-FcI*{b?l945TZ8K9)6{#DqE*yNzhQmc{%V^7O20ad3S zK$FYWql`+42Ey}YiC9(Z%0$3*eeV+I^7?O0wYR2!`T)U}Z<&P~$|tM0U~|M&iGNp- zq%5$LqFt_f;NAiN4o!=DQ+7>ep6U1hHKF&1o4cjQoCBoh$oeG1e?cnx`bHfq0E@7L zjd1hYH<+<|uI1T}ip_7*V89Cb3@Zr%mo)XGTqBoFX82-)!#(vAqCy(f=SOHy;%)cp z%Pe)hxX=@#V zT9$B%xmUCQcG|P2q|64mNmBshZ*myyWbZ}pFtFY7*tIg&h0g)Z)*&8Xe_C$=CSP3) zfSpw8%trPeYeN~fFbRCgdXvU|G(~HL7rfH)g6i_C!xv^zA0+fa$Bw7#LbPYcPyNJJ z%1B50L)u>%mC^oc!+9!jroJK9$W+@8ldc6SuNOrqo%-qG;8hAlHSU{6l4{&G;uWu!`ad)AH4CB_&u11U@R1w4}_;)e5Z(b zz4f5hE=UJrJd-U9+(0ujjcb#WLM(8Zzq{lyOz0e8@5mPReD>0D@g#KrdQaJOK3-5IrIjK4*^IQ1xxiUqV<}|M11G_-*|B}i zwz`GB{?paW`w12_!qXM1?+Agh+yprOe9^zAnt-4UkpxsRiIyaL@BokrtOKqpjAfMa zx#eEfYvS&Hq6`-^`r;<;Pt}lvCs_4Ymp7Z?Icb=t-_SbvVKzqa;i?Xj{`rQEz@3Ly z!*c4h+dNVAE&1CeyLy#Rov<<7-Co3+VKjEML2XLyDAv}N<*ujBI-r}Hb=qaxfTiIB`T+ZypNN@TCpc+<82!ih0wF}S zp3@@I+}g%S<_N1U8U6yJI^Uy>2ntnikHin*9^CF*58E!@Ke<9aS?eJDlngqPF%BM- zP!qk|?zL`+9pqYuntmbyoA%=h(cL?^MOO|3T4JdnK(Q(U!hULXlofv+{$dOOD+*;Y zoFYPn{vJP{zwQlqo(XY#hf4KZKpLgX=Kl@&3+O`o=~2{ZycT7Ch=&-J)JDWun_M@ z=SNjn@+RBWp(DM9W2QDW4OHRldGjIPoQDJt+|9}Y6uh@1EcI@WqL&M2CziB+vHMi zEhPBSXAJ>D15sC<$2yt|V|JZs)6o8OW!iIj?L(FVLk zi^8oPQ`^s|2S=t8KnX$}Q7iyCJ2Eb`E&LnUS@MUW3rKL|DeQA{Q>Zk8kBkWbYLviO zFAtHyn6e}m+X=;_U}9rr&lSckO@BVWslS|yh!^f1CFT--jVr{@`cBGOPM+k=m;+2Y zHk;cv(Y9MRucTl`+%oGvBeGxig9uy19`DQU&$o(Qg!HZn*jHf>; z{m(Q1fXAD?fRN~D{DaWi_WI9OZzLwy=N>MKLM{Sz@gqSgsz4#5ZP4@@>!}zK38Mb` zO9|bL7q9yuG}=S32AxtAu;TbdF*HO!bpx-onzr2q6SMdI{K{M6X78gb^hf| zv0Z9ND>>c0Gg!7Zy8JPA&B9RjRq^NMh_1}j_AVGq@}oVluLG_}mC=IVtI}6sWSO3& z-^|H7D{Z^z@#ide-JN#Tv z?pDEro7<*qI-c)Gxv|rNah-GAXE}jX#I91}LVEFB^d!UYyBM?)6l=^-jR(zD;alP1 z{Bkbkbyj(1UoT zIA_3Qt~eRLg%7kqUR&1bXtf|Uwupp5@S2;}SvF4)c_;2943Y{aLNor#*ZZklQo!;O zP~d0=>DBxh<97A(PG27HYL!9+OwY$4VlE(X7Vj zub&KxYlDueTOFhjsdMtt*xNYFwTaSt9)V7QjA#^!rQ%ht*Fk@&Rr?G^`ZOonE81wx z>~QDv19Z&tUzrx`OX(6f;?kMDl&@MuGz7PC1Ut|XE}FYhnKKIG1!HJP zWj*x~=Mek_KuP8T_v&s=2p&}`IHQ+`MHim(^ZX{UpN^^(Ua2OG{@#AQ$V@znGSM+9 zJRt(Lc^=I94uw2?P1X5OHp!OyK@J&oNP_uIedr&L^I`c@m_Iw)uv3Vcva6c2W4O^$ zWeiHRQ_62$pXs}ugmEXKsS{h(@#Is1pMbcfk6INW_h!w8U(i&XQ%n7)`&ajMn_0srwp1d zeJ9xqo75%fMN17IyVl z)Un5bB7kA<-##1PDx1hhdlKSsBWtYgxBmiK0#bLgv}^p89!vmCRFR|K9#w0+%uXIj zEPn6u89i#MyL{XMox}Vy8$%BnIgA??#ra*G6f_Vw6Mez2_nRb|GTg0y)_ZDhvGfsgml3e1pswu;9~}dpp^{q0K8E`u0J5 zEV03P_2YufdJ~-qcxh*Bpf{qZ?1F;7ARO|c&F@=>2|Gpuz?M#MG0H^E%-a$>{*eQW zAp}pI8ROfAo-3&WSMZqpohGDH@jukntI_u+QCx+8u>DwvYi7D(H?2m-3fqhuXM(Si zDSAKWx9Yv8!m@}Gxc5yPkva{MKNVvj0g8*pwARFgw}W7F=4po1uK48M@8PL-0C^gT z-RgB+6*5@J%P#2w8QRAcs@?^#b{t>l#fPg>^0qfXy9}AWX;jSA+lU3>B(G%3A)O-X2~yI!0AicCk)8S_Cy`l zH}=Dl4s0owF;Pc8Z8sB!?FnGGgyk5vyKHN*KYB6)oh0bjlC9xG9CNS%JgZ5T29TP=8!mDXufiH zblTHT#uKl{FjQ$te|)kG%&Oj{GBv)IMwiN86|jgGd8mpVfN04(&9Up}O;6O>D@7E> z4fYbodYlx%NIi7wi6Kl#^f9G6s zPke7lGcSWbZ@W#Km^UcNZ)n3`0e+C4toLAZ9LEa4>3q+XH^{_<>zG)Ikz0U|K5%!iW7 z@YW~MxE%Hyd@$dJ=cxUN$e{06UUc|F^yn{pX^(8ebC7Jno{ox8ZnfuT>C_eTGmV3sZ0hH!tQ;(BaGM!kX83F&9tU6 z@?fW5F^+ghZ0$*Z)s!8?`7+q4`MXJ8yZ0RGc^!KZZbj^JM6Rn+D>~FJB6lh#P;$GMDpfd zyCr7pO9yBt{*2iE)L+T9-~b!i78h=TqA(9C-cded(3M}ub$rNpJF;F51W$C&=?X|y z#y3*@<*z6fShFJjo794EhIbEG*A!Ow)Z5&#CP`FTfgKwmXm6v~Rzf9U=QV zzLu#<5n_Non~WD6FAx~8FVtj}$7AQ>e0t4knkzZ%1Cf@ZwU1W%#0%#3sFFm8JeVYfpRMUU0D z+e*@2svP89wyWtGI2j$Qxz*i`=SS1lf_8zS_I0ukpA4^1dLd}q9U_VmZUo$ zK+90+rgg)__tsmXPvkDeW-Jl7b^3eTbDrVEmhuo=LPIwVGg^&r6te&hTAe2PysjcO z=(L#i80NoPm>?=Rvj^;3(SiAf8c<|a%_i3(SAKJiu^Pk`aJFR5S9&u>QDl9Imav}} z2n#@U%R8ARaevUlr8Zi_k>Np2Q5jS?!4gzKlYBS>UUT=~fkvH~6aCwzu;~T~3cu5? z-)88kBZCzgOgvnLf2&pEl4Oju3Fxn%@H)L^ks)e_j6hx&XOgHSL_t?<4yJRMq{1JG z0L4F~&!6Q?AZNizoB^6y$dkA16OI2K(@1QCw~9QOOA4!(n(Y1i5~p8^sM2!9fq^#4 zTi%-^w8_dzpffLmHz?pxFT%tcBqf1BCn7AO6xHqJ3I>q#pZ1&86wmd)W??9~>6enk zUdeP9F@m~%2d!tyN~yCwW|w6F*7nOO1?zNSFc^I^?@^L5Y=9sH1LA~1T&oLk;-@~5 zT-ix%O|CIOb=pl*Vq-kUcn=Njmf&d82l^5}Wto$Hrmoi*mxsL4joU(rHWMLLr&cpJ zLNvp#7Fg4K?FQjW39h6@l}7S1pM--MsaJ#4QX6psK(o4Km+K^ar^4`~V?jDp^F0Pj z4a(Xc+6^Q0vn5pfnrav>n7$3D4WV9z&Aj-&EhU?b46I?F2tXe3D>4#>NZhtS$b zkdQi8_^?+2CjZ8R!V(yn&@X0)SPY=BKW6UngCPt-8ziQ3Pi{QIcnx$}agL!36c4Bp>H=tUd1XDafVD`m(rD!B6wF=_j@koY&O`U$xO*{4PXCq!u9bL#c`Bs9r1S zf&D3=l{R&T-Xk-4&;~%=(T~Y0X-BwIUj6!E4_`yqAfy4e8%S8IJ~ynx-olOQ{I|nM z!qum^v5Zhgiit$s{debXraLU03O|JABP5?CS-7OOLY-Qj$P;V?4Gowj>F&CN$fKjE zLvEg*Ez~YB_k?>Sz>LKi-3CA_4>8)YM?A&WKFfy2FI?)x+9K~z*mp>gr&^bYeONah zqf3)(@z@dCKX$h(%qR~5iKmXD=If_G_pzFGswdBcANfvx2h9n^9}D4^MI5Aab8jnas~rvU`+;4O z9uxIrQLENAXdaUR^Gn-Tl?eN)TK_4#7p9s$ebM8oF^R$Q@3OF=uzDgJEqiwZ{Ba(( z$4f_0rH4dbv^8zxp>E#G2QLb<(y8Ot!}NuU13*D#aosOKZBmBC*Iy^0eAif@Xd4^- zlg@%P<{HPps!g&Ne^IpBUp_a+1J~QYUroQ@JGP1i(A&h9|89m68)Z-F8*(%FIUTx@ z+pM~%icqc$gC$Ww8-`;_^u9Mk%+VKTtC=GeVe5^sxi*16-&f-tuGO8fg!4Os6=9uK zK^q}JFbZbZY5!bq{1yef8-rQog`AD=Eh=no;g|+W|CgEsnvXb%OcgmE8}o6HL~K zLR@#et+!!Ec&|dC5|h6CEJuLih(SoVis>yJ#U-?e2;x23p&b{Z)C#l37i#ty>2A`Q z7cFbfO^Xrlz|OPB@nIY|jNijwr7;bpZDPfFeflZJJ8LrvmzyU#b^6G{^!DB1G{AMd z7xGCjimZiF)ej(TKyR%AMQ%VqYoN5|8Qm=8a&9lP|Fos_i${>tnrdW$xK`1r5oH6T zhLj)G3sv|uvT!#q4p=zAhcM7s1^8TCO4N7rYQB$W1IfrF-V;&Qq(p2Fl7Zi?Gb{pM z9F&h*C$n8TfECY8Y{CxiqNc>^?fMCZcjiTJn6$n|45OMocgPdC{QTALd?@)5<5@H( zW4uuOqk5)+oEtfjNx`4TDGlU{uN#v)Xr^S{m{}d7yeABHRwDUV2DeH`{&kigVb*~@ zc|K6^sWS7SDYlRUds-O0TS&3^_F{zT(|+tO2H$HVJi&);r;8rG?-*2{v%HB&J?2dn z0bEpQZVxaJ4p`jXz=}@trH>sXpdXl%38DEYVE(hc63E8$p>Va7$K~nJd20Dr{ zO!z$tle} ztdU3PGlL4u$w?a$*0|=Vm}vOh{JO{v^5Sh8xx{`7s;RqcZSBP?@mR(b|A{uPiPn`H zc6SWd`pE>W8gA5%UrIPVJb!Fr$FRG7rwOroNWxD{syj4!rmPCGIhYVePUkJq^M|MQ zAvN!zP88q-C%tz66&LSlA>5~nk#@*gKZ#WV>tuo<(EN#!X!8bTLeS=eWYnjeWge?h8sRH$E&MXgH4f-0!9}WWH6n9MH=*pesd-)VC{|B3X%-NFpMc5dy)|$udyQ|vOx}x7b zyo#DTE^$>Bw)z%JmDvCqk3bcyaUnzV^mK;-Y4$ zVrBMr5e~hWs54DN+@?|{MZ@dMC+k3)n9xrZy{qp?*qImg;n*~@Q`IT=t}2x>R)<6e zuY`2974N)JZLU`MZkAmWbo(^HQrnBWK(CU5vlDdK159VD0cM;Ix3kmDEjM%}`Rv>K zrs3Oo50fkjI7Huubx-p_4?YBEl~so^>w|-c(lVQSU{&fr&nE?dqeHI{WsknzvS%3x0M$>u-mBQbQZsaWmT6e#lbacNjtX^u6vMVOtu&jw7&vaP!T2cEHu z=U-A-JLOqd{X}|xXMKeObvBHLX*duoHlPpj=MwJ+oTeRnzH#v?%N6RAkvpsK) z-j;h<=3H5;&9qhmW>s)t056xq?tC0U=m}Cs<@XZP`FLIUjNdKq#1_3wMXDzM4Dw7X zC+n&DF8Lf6mzxyUer&oJsh15XJE{8a(#urO{qWoNXr6So%>KweT~I#4G63ifDLLHC zwPGl#+R%&`2L;ygCdutC+rQ3uM3iodO}zuYo51$nqE2Q*#2kYr248(@HnwE)6($tp zXlV5kS*HxVF!4s7ccrEhqx+^2LSpkB2t)bYmR)HRe&pV<%abLbnk zgT7N2qGl`h&#@}kj^jDy)A)15Bjq-*9}25@t-zTx$0B+?nR_0_Ypwej9q%?LSU^e7EBG9#xVIblGa; zKJ{Twgc6M8b)uD3Ix%|*vIAdIVC-%pP9EY;U(BQC_Nbi%d^SJbk)bP2xjMTQr=mNn zm_=kzsrLjY@j4fjqWAlS)ftQI7GWpli^JJ?$7|(;=79D)K3!=~@K3t2mr{uo&&BBs zF#+nRgRZTM{+0|b>O@yT4BOXGMvS?z3$Np|V*p?rZ!k$^?C4x9TA_}#P!bri?N!6K z=n>&CpbO0(f9v`3kGRtU=6CV znuj;>lFOUY(k^Oj8`DfB;JHxD#Z-3*gyKjJ<||yLt6#5p8f#t|80ME)dST{#h0Zt& zxr_F^V_RLV^Ubkl_}e*Yh%Rhgm%SO_mikl3(>e@T=GvZfV3`|%W%l|@eT3(J{^l;) zB6`Mw^bmH(g)ece$y*}>Uy9i&Q$a?QEagwiY85+*`?46$0d^n@F`vbwN0BkBI!jWm zZKURbwq2-x%GI$v59P2gGB`<25T7SzUCbQw{2$!CWmHyQ+wQG&Ty#r!cS(0h2`JqS zl7e)JG!l~1jdXWQw{%D&DIL<`p4b20&%N(wzx%`U`5lAdKt;zI*IH}NbDrmM{EmcG z`#xVXh4wb}4Y#Nrpll}%>}nHGugV9;59#46F?|i%oJ>F^Ps!?d3 zrG{QFL!EAeB2)4&F^o3kn)t5`b%E&qP3yU#^|vpO9v+-UAxLN{Q(a#QbaIsx^69)D zf*jRwo<#J9B4nP^QD?)ge6AQQ4Z>e7FHG*K?Xq~5j1FY7OW+1aNM3{ln{0CsiVqQR zhh?+Nc}!{F?3|{T^ULLaNnybrz5uHO@53uEDGG>;){JpdTLU4ZiLhPXC1Jt{gsuOG zkNUq@0MlRTtSFl+BA#;Ody2xp?1QqtqFPNdu7P@OQM1R#R2&E0OAkXkP?DVvw31zU zdfASci3< z8_Vyiv+E)HESgRWG+g{*MV%#6tbOKB0`$bgMPc1 z4*9+WLi87F!_oR$A0m7$p2L=WNb0m|NMr&wE9$0im5jdAmAo>C}mbdzSwmzEs_;IMEnL#MM1xdP0TC2TY+p~Ix!PhoLgl6K^ zER|-s=jBMS6&(|75{&vGb-IP%#G1SN`o8Du1a+TLp$*m^0n8s_^q1=&-@1BQVMS3T zxnG|4V7y+nF{wkjQ}mg(!3fFJEbcyntTJqg($JF#!1#8dVo9lY;AG(LhjS__{lpQf zKMR}^pR|4L7)s@CnoMVEXEJt$ zd;oBM%F)qtM5t4h2VLhHv0YQ&qSzBInpdOQrv6Fn_7lDSvyHF_2j8FqybMs;x4jd5(c5#gw1QU)ns+TAv3Up zSZDF6-u#HdkH5yMoR*417%Fqhv^BWpE|`uWP)MYWftlQ)9p-T=@lknv+gN3WWovvr zeH-N3M?6T-9h`Kg1l54~RS)ry&bLVpBuh{UR;ri|xyor$UgU>Y73 z(;KDX?lQgu1*?7cE*7of!qe5bON_{syrmQ^6>M*t(fJ@yxPE1DM*4h&A-+hm${TYn zyp8*F2dY1S2-)P#T=11@ks01dzjcyqCt7!;OD7KD^H_jtR>$~Ge&4x?yz*o{_#KsoK`5aBBGOL@j;=KvrKPX9Ba4(%kZ8f9hHC3SpR)7K7kUpq7 zN9lgy-t#%;>b)&q1FF|XCtvH6EYLTuf8@}t6*zr&@hEI^;q}$k+d#9GFA9ubFrQPX^IWWYs=77d=NKZL0KQ-14WKDSt!O(qdOT#y8a7`~5RJ zgu*y>QKdt&Q<#6H0w&fu0>Ytrn~GyOqD5gkt2d5K#;&lYKvLjN$mAZ3r#Z-gi6OX0 z5h{B5`D?hNMvN&Rq%?Ig=bv4{Y@7^1)&ga_{o#D1`Ez9Z^+*K{*>iA(U@Fu6+zV9v zF;%|5>`R88Q+$k-PR?sjE1ZpT+G0TOQ4J>)Ic@KMQyQBsy=5TXi$c$$XB+^(Y&UHr zNfG}S1s;73xh?f&1v!3=4JABZm<(tG3vImg-KMIvK!tR=k0ewc_{66ry+AL;pY_b}&jVV`Iu>pN8Zw3)N{Fzehk!Hvs{5KRLSD^8Da~sl+p_8q&-#0T?6xcpw+O})V$`q zTq`(15!tyRoXvp~#fQjOPeRrU;o0$FQ$M~=yojG5&iO=--yg`eR~M3W1~rq!1%4L`Nu%3o zt`zTm5vEF!k(3M*+XANc*pQd8^o7%!={%Nd*>R4=(*wgU#}@WDx;LS)9u}m91lzp{ z&KYH)jP($B~ z?%o7EU94aW{(|B8^iyrf@LdG4@Mkm65<>HfJ`AJ%q*hFq4qCB$6OBVuSUjL@D(xKn zz~o~C?xFCeNym`(-Y)K!Puvhge5`%kopTm!7~b*f^M-JJ9q_VNu*vxKT-h&(GOBCN zHf)QcEj_LjR^qa)tAgCunZPi~SYR(o}zA_*( zNin$P0}joOla=AYgVt!3Yd?bnMe0}2^!f+GuaM!% z@aqfInWavnq)^xo8_x_o)8)!CtCxvDNvX&qCTsUMcO*jhh;wjMTwO#_5kUosS6z0u zW3L%BA3(Q*{f*4|S^}%^-<%+Uh3?DtOd}u(ABC1E&ErHLOrFJJ@;x$WbnGzHC+WUp z44kiu*S0oodkHm}HNL{`PJA@|WI73!a2sH|9kRhjuXB17qSWxnIzOD{Zeln{zu4LO zFp#H`(_OK070SHy`0MPAbcs`W#LT=s@e2;LI7BLe;D}YdXhoq;k1TT68MPza9A7<( zkCNL^AFAaz@MqRJnIkX${zv{?ris5k^!M(d(&`DyMktH`)x?te#S=t<10mM1MgHefaI`&^qD+HW*Ga*;D(O0hR`G1sIOBWp~f+9&Sx>y;#3G^0RDf z(!G(gnqelQ*LuU0S-LFFl9OgtBC>5JDym6PukDb)J;Do*TkLOGW-LahcKSe%8_!Y9 z0@XLf^HnE=iWaQC4z+*&uGcpLyILb>l!N@iB$PC1i^H*A=_*gDvog%YNh638VYNJH z-<~G2Jp*_!z79P^t_@BVmU(9Sei1j{{i7^*&$7{l>Yj7LuydeA^HqI@%{TIj&;fDVr2T};M2QH_<oFl-aVh;9w+g1wI z@Dd%LfH7x_CXKJ_Ia`Q58y|%^BZ?oSM$p1Zqcn_8mkP51o}oA9bW%NsbOAXKV&pkU zDQGgfs4~m>!WVR&(a2UVgRCr|GO)&$xRJ}1LBk|J;L5SB1ci4SwD4ZF&AK1;?bABW zaCVTtVJ*wa1pWNp>F17!N%k$jzX>Sr9b0l@^tSOLB^r5N+gi1r`2W2>Iy7wd1p_D5 z4b^58f+Ea7ViW7;Wan)0*aCa60aACu1c44rK0=FbaPhi&N)A);DuRsF*cGfZK}6s= zj+dZa^NyE*2nP(;(L}GXdnUYU?~q=W+v-dPgK{pD3nT+6?Ha!eyYf3;BhzqNt`p)m zOka3Y!j2CGiJB$er4uRib#ZUV-d9eWTu~!~4S;qdj&`s2e(pa6%}K%1e{UU%5+paL7xq!J||CPbGacv=V}t zNFEz-8Uo6TMjasaRJTy!?8DswewEj((@OP7K@q0!v}E9^j%uCK1Kc&hT#2*$kBZ>$ zeAiOEi^KBP_cEGLV;1J)pOwKmLq*Whfr|Xv=0&el%qX!@lKi2do_CzXuxlkTH(S%n z{08rc%d#Fw0l!PNG!i{8X!1!LPt<1nvIxdO5_sqB|qF zKH}NkKv)+*uAm<`5~<8`NN2!b*T%aaW&g&5Delo@{p``(m%9%V@6#ur43^*<{Ex)>5SeT<6PQV;fBRDnr`*hV1l-eigS)jw* z4ea%Pn5`6uuxLwr3}Ed3F7VXm{m}I;^A>u3r(|lwe3Y=l4N(agY(EZ_D#%u0!es26 zKY0Um42KVHSR1(>Uz6Um_ssaSyZjgn>dNEzOMAJ={!QOb)3B){QBX~`vQoo?Y;1?< zBl=n+_b7){?aG~{$jPRm2OWnt+i$YxtMit8tOGV zNz=H{rN_iGQB;f(?nwsylBG=5z_v{cfi29&B6j}^V2AO?KGEI+?ksK(f;pTHEg(Ly z|I->Q(NFtTKTeGT6zXM@`rUQpsY)tyZcZ?65Y!Yyhnj$ZH%r*t^M%Iw&AtRXm zu&4PD9eYsGhVN<+9R*eyrk;=lBvV??;<}`Zn5krNEilA8Bo}hBcmr<2tA2_*i$l4! zsLG(P6Mr_{sa>#v=SoTem{@xe2%%iQ19(12p;Q2rx*nG{9BkYR`LuT7ei5?zIv2ju>MSu9@Ss z<^mpLkqa+us|+=`E#Z+Ws8&|Z1C-E(C6SZJIbG?_%=I{KQ1P2ANA;z$&XX~#Jm_TIPn2L*MCGG3 z7StADNqftF_T`;i7~#j7poyy^BrF^2zvrQn(~sCHOV{cBgJErM8TfbgIa*|D*f&W) z9+Aoz%t#i-@aZ)BKnr<1(Xp9bn&NEfF9WtzL2{>v{W@TIO&BF8#oxz}gaZAnlO^f= zi(tEjCo|#a1?1pZO{imPt%$zM1s6Cnt7RmD^D1!JLG17C_?yu6pFIat*KfUnlnJ{J zi87e>QR<^8y8w%CSGk=ez^^4e^55n>%jke5Z%-=Q#{F7et(^+~9*hhteK@3f!-;v95K=`vLR zNgZ2)^AL3)TF3r=sZPiMH0{dJ0ii;(wJ_;$?VTQig#p7Df?fB~!PvcL#=bp{9@*y1 zh@(+i^ixgM3RZ*SgFP=Rj0W|`nh}qDt@IfC2n0`t0wnsl|Y{a4v-B zZNHc}Z)>w2Su|ptDA?<3#x0?oE~TjEmda(`*QDAU2f zBQpx2b43)WdzdgO)FHk($y4yJ8ShLigMBKvb@mlp z1P+ixzO2nzg2fOuLSU`T^miEhcENx-bSr(sAH;zg=ZqW#>$(MjBrb20ReKkh1dxU_ z^tAHvF{tHhdN^nMNaO^;bC|fL4gqvnGO}3TGjSI7ALe`?^j?a8YGgApFs1yGM!Hmv zfylmmZuqxBojsDs6c!e=58amvdql7=?5H2?#85K&l=*(rym2jCy8oSC;x|TArVEZR zZ_>e>Y?WpJhg5_fvba4qKT>}IFGGXhw4A3x7}T3xIIRvAZeZ4v00k1QaIH79y zQLsP@VK&;*`=gn(YsiThWb(($&B)$t>=?;}5XjwB|JKqJa^8&FKIziefFo_~H4c4x zEP>M`)Zo*!a<9lx3s>9BCx;^Q{)_mNAHYeEW)E-F6zzfCj~iyENI0cRs6Q~l6l09( zy`88fJDokjkDOPq#aJ6@-&ANb-g|fNq0EO;J;*H=?FmQAr0}6Fur&WAdtmG^CIEVI z75%j+hc!>ZOr#G< z;Em4M7Q!qD6|hI*%w4Xeo>{ogbRLMMA1XV!IzB9Og(4f z2X2vRnwzUm$|co+5yNt8j=N@)a_ubuS9AlTjQ=b9kg0AorF_jlLy+sX+QaM8(fj)0 z9JI$4E`v*3vJlP!YBKbM9b}{ZAH?HWYq@0GCWIZh7L$z~m#mG71AgF5wRlF8G#+-} zssX);7KykSMuh^dQH~bDs?_XOHibSF{3(nnFqauO z($Un@%*HGER+(}Y|m*$0iB%PPe7b!x0|t$K66jn18>cEV+_bH;<_&AD@8q@(K!v-}pJqWm$w zc`qzNB$zth-+AW`#z>r?;U{j0M(q%9i_>7pTARE=?}r*nkzJ;X^vjuLpV|5& zsAU*;;kQ0H_=-I`lR>s72;C&D6%fuUTaN{$kc!$QwJ{O6x+jtVSwcUqlu{G@+HOI7 zS3vqbj&51#Jx*N2m#&UbYEtWNypV_pCnHJn;Bx@h4Eo$6YGm1tZ{+h{3Tc&N6zkTd zYB_rQxvg8bc741RJ?^TUexn~A0yub4^C;i2O6ZKO)4*P9d@V6@Df|0-Szwb8chV}; z(-MU_XZRdtKI-}NuTrrpJSW^n9)CY5dOeD63nQof@SfnbBs$?kNZ_1fplX{wvqoB? zs)+O&S@F77+^d70JuS+|KBAx4tjfro(@)FVZCPwY|2%92z8W1;9df3HZQtb3)P~|0 z&+nWG^qm4IQDE%%w4<9#W}68vyS%x0^0(7G_i{pIOQnQ}Dz?P?ZTpdZ&AZd5*lh8! z(+|{Wj^HPWhVjKv0+{c?c&}1s;r)m)7@=q-Yd1MGo`+go~sU3~WSO5Nb z?qodglx7M=RuRY;3@1%d9bfy0cBqdw#an&u@XzF-@*u<4$j7g+lX0gIE8?!|*5<|^ zZp+oss$Zn|eh=elzgWxJ#Q`f7zyXhVf_jI;uy||O2U#T~rmEvP;(}ay82yp_1D>CX z|NZ=kV^&46ha=6<8Y4Q$9U^-7t{&ERf}n z{q7g3zU_4A5QcUVFL(?Lg`B2B!PIUaIqH|sYLZl`8#WW(j=3SdS*r6oj{4yOwOo^K zg2Rk$o#$FbZN|ln=i(_6HD9Cb{Eq?jXZg{80kE-d#thoUDn4I%G-uV7EBnMgUrh$A zLs&~UKN8G(n4%ZH2u*Swu3v;5eYd!(#^0JeGDEeG?j3y+yXnG^g(@x8agOzG z>q&=WceDIO>y_Cphsy}AZM4aD-ysUi9)9cvGAeXs!=)0>8Q{bTIT|7hM1r3tz( z^+=QFn|G3hZL=m;op$h4u(fk&J8CG;WbGIxV-d+b zDAWw^tz`0+bg!ZoCKRZ7(pN-}zXpuUl47RG(bUFVW)G7Lh*{b#dJ$R-R~sr-E58{r z9UcLyWslyFH>4Y>)N`M$dUXk-wb{3@(k}8VxOg<2(zq?=M?x-NKmo#BkxeQLc6NK4 zsT%=CuC^v3rtJiBP4jBFO$YmbyGxfcXtf5w!`OZfscU{T>tuLKpkp4p*Q`4pzQ9I( z#E_N?|FqWaG{IE~6T4FCGj_me)9g3L)qxeaCwOpVbp6yoHazK@%4)ZpdbRJnpM^7C zfwn==9^+|QPVnA&?e3n#p0!NQuBi*_pgQj7yw_pWAvm8EZ!?^pM_h6cZFt?BVDOJ! z2L_O>RzvkT=c@(!k*}=@7JWjg#cqdQbKU2vLh#sS76rln8g=vYOK-7D0~WV4nj0_E zn}d>96m2m}k4g33N$M2Q*pSY?3{?u<@%@DNLEij}6Z_O{LKlP3CWe<$6W5;9P5*n7 ztZw`HeMdmAT74Xgb`7d^N_A{r;+yzA=DzX_^Ug5~6W&;bG0`EK(!eIu5~Gr9tttxAkSPedq# zW;?^9E3Vs}EkQX-Mc^Y7BTlpV581+ftDe=+ER-6pnAEpb2om|iSs|l}m&89u1sdIi6SnENBko_1IY_Ppg&GX!*VMmn~k22s{ID4w! zAoRYna`7)bZs$snmZ=!z@TB-9A=^6QKbNv2;sJzMxLrve--EW-FHeZQf_)>L?sG4| z0>syAyz}trl|4~G|L4*^>~{1?SjysRnlR@3=6EH+bX~a(cO5e)Je6#ubZ530FF*s& zMJuoM?sz*~e+j<&3R8_)(Xr@(i5up)U`-tfzc|BOzf0qznKGaaBF1vP2ryyI?o!9@ z21!u!1ag^vPV`(x*m^d15K~j%In?>wTgzeX5d-`E)mXv4vP>bsXV1uGq1!1DR-q6h z@rg-TPWx$6{6fYFLH*1dWX;mojTsVnAcHu|#X*hQ-8CeEW-?s7)aFNYpebzALJ5`| z92Dsvo4`<9Zfio^dcDsobrvu$FOqXcx+;_~tF)n2DV(&)i!&G6r6q_P)w>flbV!i2 zIqohMAnz-r#x5xxOo{yH!pvpwVvr=rF}?Rm_E!{ z+4HC1Yl>?Jq4Nc^7>mfu2QyV4|zdF)~qm=%zGbnhnP@a~6pu^eK6iq6CDoGkb zzMQN@iAZ0jVSQT*)X-M@v*RezEJ>1N8$Q%05ew^gfU^BkeaDD!&glzY*s{I}`b(A& zWW0GBWTE>Eb&8e?iXbbcE`nA64Pn^EpcOPcmJ0oA;*kE_bSS*t!F8mww4&wRPD)p4 z&FXhp#9ySb^V46w+!O;AioG_9l?K)QKQgvON9_>kTIa+9GEn8V?c1H`YIl7d!1sH_ z_L=bWgmwYM;!UI?xbws1zjzC&NoxSw-oT8|nY9Opk0r*tZL)T)Xq~Ilrf{t=>PMg} z$4dYTvxSYJEcCkYpwI0+C+e5ns{h5Sl2VxNtnh2h@Z@I0dC^DM8}i}?J4CNfszc-V zWxewyow>>0Z}m!%!>dV0f6yJ^^nDDG2ncguF01{Kdh2#}oCbLAdVEv4?6O2bCDF*k zyni2c>rP}>b^ZOP2VzbJjqNk}X8A7+?9Wn+^2UkPF22_KasGj$wZjY` za}%FkNdDWu^IU1)SWIn*(%zcZtmijjsWk7*fG!eoX&85d$#R{-+V!RP%B;5hOCwrpZ`hKpGuV!xL+;lXcHJ8c>>kpNqN zxAlBOwF0)2x9xTd+GdEkQ5w-iOTS-LRF0ik+YJmabP-1SyxV;aD@5q{(kd;DtC_y6 zz}?=rlD>@h!;Wal^_X=*1+d;lR%bdFpFp;q?0u>Qwj;+@tjg#;?5oG}w9_11yI+LS z%=aBRBEDEL&sk$KbjftLeU&AMu|%XaMv$^0`13)&->uBH^?fCu*Oe`?EZuP1w+z25 z*^(?>xIid=eMl(PY6X3iIBjW0`?a_kYmV*Gd7F!4&)AMGpC;$mHdtHY1>`ht-pkRm zj$LBaw?*-2VCCii|b=Gm! z$0YjrQ*s)p=PGLWBI~Ou5m(BpH{zqlLbcQ8d)Ki}@3}RETOH=vg$-XC$;is=o3~rW zb@YJIS?tfKYmy`NG$zVgw((C;oboB!=X$BV&IJaFVpIJry85cF$Tf14TBnY#ib)NC z0V>*f!~jlM{GY-HlYYTy#r8=$mPBTG88@vo(|lzaI)KB~U+$gz6!ibwpfA5H*6&u%VaYdC920N| zdSWHDwu#T?g4tL?eV<`7lXbt1b)k>JWQ)bLoY!|z#ul99n=B%P5eN?#M@SH)sVlqYB3Y4PqL-f6~R8*tRs8Nl-CG1SZj)S5-*(Kxz^rZULC#4_T1pY4Y{GiAF9sT z^}w96+?U&U>I0wVIObEc-S3@xDjJbhxhH`Q19l=im>hamN~yEE-?Ld7k_E?I+6iA( z3}ZP6cqrGsX#bEt?#8y%GkK&fNbD$~J86lYa0?NxygO6A&WqZO-u44zznO3Mx5Pos zI6nh>taSMcr+S8Z? z6{`Z|yKa)Uw+lHU-3+0P)R~wl9=kxB=Dza-)F9}%j0wkz7-bq@loT

k!_AhWa@K(|g!>%omP={;>vT1jP7)k~D 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¥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

% zEb9Et<;#6{;rz{N0p>2}X)7;E3*PVXz=G3tmNUKg;jTuO!?Mp^gvJ)SLXHp=(ahB5 zAm!i$ag>ZvKuP;2FesQIwZ_bkipglOSNy%QRwHOaR|Man-Hph==>)y)azM{&ZjvY= z+$_`mp$To~mCr=wzEM7=M0pcmf*7fF|UgA3!B8x~OHHf}f!#U3JathP$pdqU^9j{lK z$KzqchGfiI!V9>OL{6D@?P#hH z3D%n#1L!W^iwJ+eLr%(H+m9|tUj>9euvB-eR4*9y9ifnTdE_m9b{>&u)4jt+i8jRN z>}&qCc;TA2wf}Pb->okoBG7-;x9EqyDjKaY0EeczUmRBAZsDcukweI1KD`; zO1aEtRuKoNC9roHw%HRxBW=O%MeM9Gq|d$`#Ec*{TraIdH57at%bh-{jCTFhZxwIo zwP$Vy(r1~~!>AkyEOXRb37YIlY}v6S@$r3i4ZX{TL%skU|7*+|7<&8kF+E-D^t5fH zzdx7?DxjMDiW^;l-(k?RNJ(#TOPHIzUFOocY)av%&`8^yLncMMh7i(kU*@BJ1#AJw zzVI@h2A`|4@LpJZJuV0!07p_Nqu=%f5N)m3nLKSKf@0T|p~BL&Tb-%ejs_b_wa(M) zLy8Ve_YYyAtMldU`BLwNY*{8I>9VGlt;;uSv+E%ZSXn-?lFzM|^PoqtJyLLB@oDHC z+2#?bs~@EH7|lg>zZY92S`16yMC6+azZRG7$UwBph#CFXgpulg;f~I@MUrv4T9SuNuDYR*(-oUn5CQ2AiA>waYT>UM;S{uV&5&c&8nQzBunE>Z z|5a8=&`?*9qeJi7cp{{Z1s-4dE5ZfJI-;kK_sW%21|zU80=+GAQSTaK^milG!wS-P zkUKP0dyJX^;m?@RG1Le;Y24Ng@Ncg}@|^b-EF+j!ieHFGl3bJ^(BgWpKA z-Qd4@zQzfP&XClmET1%MkZF{L(VrZwMs#RidS3Y3zxUkoQ z(d=C{py#qPK4d{cFaoSf@4;)17Rm|oQ10NWT-K}k4qV8{V%y5rcb;4E5$Jo_L*1!l zfR_Uhcb~415;Bm{D33G75opj;zyaHLI%E~Et32Xk&vhEo)^K80Y)iCZ!r zm?+0N-H{vAtzYGCN@oQwqf<6M9jzr!v{risS;fK?KGrLoi@Xn1D3cQPz$O$Ozv58n zUw3hBSx6PwI8iETO%& z=Y~qfcAtZ{zRAvBd1n`Zg*dy_LZm%!q}zT2Nn{3kSl?49?^Lzo%Obw!<aAXYEqE zfOBy#EK{X+nbDpXY^e=1>>pb|yIJZ2uj=VG*VCi)28TQyj(5a*_)JgAB4GYQq1ezU zFK1lL&6$#LHz1cH^;5H|Yoa%C$w7|a2x8;md;3*d21=P&|8o=or96SsL&W)!@OH0r zN}fv)`r&nRqMSVU17yhUK|*R72I$WPo^LSFPEpO70-26;3m%di=CEdrZXXQ2H}ic1=noO@ARRxn3%odctE!J7_7WJeQ3Esw-3hXMh`1IUW{af#%O6Wc9eiP{npo<#4 zjMx{4ZO?s^liK37U=6|84U(b zxabeKa|ig0*kUlCd@erMBaCim8&eU@o@;N&3$SnHyzGP_d0h(v)(%sSVh5U>Y5zc4UKM;+@JBYO>noH%#4y6-x}fpza7g!akcT zkl^zN4*I>?k#?&Nxw)Jjf1p%HevjchcSQV#(tYU32hFx_y_)ZmTx?5VdRc5H<}T=v zCioM<+D1ICMJEzl55b~~qqckuX+W#tu~2S#bpeI+V%Ea@q~~F|q)#-r;~e1hhInU_ zH27kKS4wlwo-BehMC1614e<&~CKxx34Jy|zlM9}QVGwXx&T4b{Lh{3V@_*z}B}J}) z`0W{=sGne=$m2-z8=6H@z3_Y`cW!p9LaDPn|296_a#~m}gR!Tkzaf7|yLeJWl$}0(r9W1!=`q#XJQeWE1$C<;ZqG*Ywx#gJW+^V!4_bpL^ZB5fq4K z0RS{bKC-L#)12wGmF<*d=`3ejc;r*q0L&zm_IH!Ev&9?d+5YwW6*emY1YWe|LxokJ zF~y_I3gx`dRT)&t^2x1k=elio_1;H!hvRO)x)p!RETOgsxA357+oAHF%B((Ib;`Tk zZ_`{x($v*3-yvhl@+Abg(l?w!VUW8ygATxIFMZ9c)uyNRT~@R75V2U zJ5TvfJz5jK*Q_7Z+>%gfaepN-pIDV)uFUnDwr0%>g(lHI2=Y4$r*C^tq_a7G7Bj)q zH?g=0P7t`~QKRq_v?BWzO$mP_-LILlwD3*+D|bX;#UL&p&Bszk1-daduYdY`putvxNBE z8br6$$5^Knex*Z7bswaAPvLXMbfzS9&Lu1d$VW%FGbLo$7Z$M@9SjAbuP z=wObL33A)SaAmNwLHl;4c*9VzvzWui)ka_c=WYq!Q?P~5)mAS*k6EXq@#`H@H721& z-PGew67mblBXjY{QOkL#i<~@XY)w=3EX;@WDK_51HNyK2N19j#NinuFeGnOa&HnK( zgVpEb+ZX5m>D+R^{8ugKwc4vS#zdR+Zzw4yQb$u7{Rr;%4J!c|Cc+Ca2#TrmAsY1N z`bl!aPNb!X^5R=jCs#Q$SbMI-9&&O>ms<+$A703O` z!nx)9vsWv2Ac4*&kuQgj4HgEozgYrIbzPv4P$^E3ld*{oxr^l+DvnY9T62?ni0 zIH#=u+n6n>%{ZZ72|3$-T6|>2>~UoP;M=Hr_Jxtg<@Z+94hCi#HL{e7REkUl!Skqo z%-6wib-XJfowwQ9MALF@iyuh|r5s8n1$H}U2p#<{7(HZcuvES|EvKpxb(tIQes^OL z%AtS}#($GEOJ273buS#8AdpqL7#~xLy4{g7%;UVN(TVTSH|PM}(mo$mO$8ljRezHO zoAofqX#rwl7~|P5mkI{WC)n}7Utf$kul#=^LiQw3&v$P9sX+9d4R(tWzGLlVqaYR=Ufe@N(e#6zsgj?W&RJ^Y09L< zK8ZBfZiU4VJqGb?q(aJFBEl7YEA6RN!p=!8G`H9UqXrl|MDP^SEnlJrEzKw^BWlEnIKRyq5OI3E)ui9X2^ zUHvw`3phs>>l1|TMV}ShW%lAif*}IDf;z5kEK)D;xCj|K&?f6V9(U9U%}~QCsY1Q9OSlEy}(&3 zid~By%QL9J;p>mZD8SLY1WPXXNfq&LX(<)A{ma)bOHF7}=@Oz=4{vVy(6J|kBP=KR zI%CBymp44})7P!ieVVDfr`Kzy%q3z=SyJ#soerw>n4{G1f?%#A%ub}H?FOn`jjACz z9#L+LZFkCu21^UZ=A_Bg-5l(2dqH+zADkaY8Yv%iNt6rU$hdn=}Sa&-c{8r~`aTY@VWF6i@fQ+2NP}{?Gg;I*ayi`6&9j*2aCZ zO&c;5WcO8KQ`&PHriFecR!ve)b!2&BN#*;0&@7>+ERkzdgQs4Ibqj2SaHKfWGfHMije_yYGl+p6m=Wev8M<2Y z?cNKp;(E$d>J@F>XuWUU3nd0uxoo}sM{IC;OQD$#@G4mXda~3T)Jie0G!w$f8f?Dq=s>7bC{E42{Ck^qH;Ni$DMP)dXGEhYdDy-3N?_C$RSVw`n<%t}q z?+g1kSatQ+1uY^a=JF|#%=4SMRV$d9?4wtwKo-Bk)5%CU-^4PKj|t_G`ndyNUV8og zaPt@7MVqEd2{pVF7nk*F9KU_MpZ6ll*h{C%NmjSXSyQ$gM%~j1~)h!F)**_O33r+Yf$1Z0$dbG3B9bbenAdLJK()E!4`{m zS+7(c9{gdDgGM)z-E1|>o3J@{=Pd}?Wn<-VY%@}-$dQJJ$QK zA9OEU)YhCSi?&pYHTIJtz5wW83j|BAP;n&dSbTHE41}pa>$mau0xw|qv)K?hZDuIz zS8WDB$(%dyxa_|U6Ws@=E2cUmMWV7qONgEQ>P~*F$-v@dinx=Z>}*Xy6{oj3ZC!mq z^%+nnLXAW51$kKmO@eX}815&9L2A$MW7lGa+`mV$x~KJgp5a9fOTXtyySKLA5WJhebYU^X{8e5FDPO{fk(Q_}3iCPqQ#!n%9ZKobUdtOp zQbu|UJjAoV%K6^MO*Pnfw5!lo?E+6XmglQYVutJokq_PZy_58n^qLhaHCcUCpA#3Z zJ>dd8KgJJ}L$zmI3rq!bCJvy?Z{5m%YOIVRj)cc7uinWk=k z#ltASNfD72e;d&1I}q5O)2TXX$ryRRdUf&#UK(|O!NFU4-uG?gf%B^8#=~{3QN~Xd z*Y$KM?*=|cNqZySPj4#!mXbljzlzi9?t}|plLQ<}1mpZpZwA`gn2!ZdrU}LRJz7I` zzMM#No(w#Yf81kS`M4Z~v0GXAY6d1}PUv#e&AQ@i-mjQMh6g~@25c{$7 zO&WK!6Ea5GNLHli>p!9WuP=T9xPONaJo227vm^^I5T%?JnsrbC&i`vGgOQ463~-_< zIxCEz8W6?qr8w-IrY!Zk;)5 z%TC-Ma|DKdy8vG}#AEs)*Y_f-)L6GlPVuB^z$)Ki9_TQeRHh#MVD#VJ#{*%DD8`)+ zbK`uWVgXZl2^0t0RNCHDHj!WKXux7Obe~sfqG9CK&_5?K`7EdR zXm+1P<%rpacVkY?;`vh?g}G`d*B33m(z*Qc;m`Vp#NgXAN8@@e&t#EM&O18GrPVuH zhq7ZbM1-y*6lVA6m&F>d)anR+l;TNBqu|G#@jSrUaTgpj>?v?Hz^q`4x!o}FpzH}I zhCu|X)Cj(P7V;RwYBZaf6@>r}Z#-Tl2Yah(^gX#EkZ1cX!!{ac^HHDyr#40`uwuSk zQ)jsjh_0H%)+6#p`6Dv@dWEd_CE$-E_d=h4nC)o-GMDys2@WEu{G+B)$BOGlJ6hS@V3vJ0}*~p&EA$y0)(0l(J*?m2y*-^Kk>8~hI|^*169K&c6Z!8E|Km1ow=n;>2xe-2mIuQFCyx7m zN9L>fS#Aj}{HbbfS3rAFyrdl2+subE_LWEW6`XOJ6i!0%5}%UK!}4Kk=RX&EBL z<2K`r7F=q@jKDE9=f|9*b-Ckz zOGNQ2>04;c5e6-0!0&*m<~Oth?Rhe>!!L$Hutl_Pp8D;wZ=Z_nb;v*jXX+7be|*l| zV5>945x%(0s-9YB8@6L_wLPmIBueMTp+9=u;`Vxu9X+@kMHN(c^3VMu3;~X(x(Mzr zqv72IAd+(LWzo#SqIW;N!av8mb+w^<^NyRb^-0kVtA3uDE<~-L5ZY7&H|Fi< zue2rGcYBj`C~jX%Q3Jz)g>48|Po`K6xnfdug~>mf`i4d8f>$JpIeSy9s*VXNuVjFi ztKP<`Ja6hG^4zP#nnWw8nwW5SGz|T(#)s+cEITi@hM0&*i#MMt^$FeHC|q{lEoflS zfOhp{LeI|z_^<`~cx=}&vPTV_purSHD<(ro}6?WS$)x&)#^U6d}d~4 z5YC$wYN;=!*8enHC92F-(}#KXId6MlL45HE7$ES0_M{K>cvFu>eMVXiLpO= zQy5(Bglt8G?X$rS*@zdSfsB+l>~EePbQe6icyrGz_w{6@3Us66-I-Vy|}3V}^Na^8K>5yCe9N$?A9 zNxEWsq)bH%M!GK+x+5Q#uLc37Xwbw2SGk#-dSw|jP+Cg+6rRo)Z)!qvswW^-s~2Nu z!e{?{qV32dBYkPfKZ81Y-%vt=At1F7Q^1c!j4=GlRt`mdL=$=#9^<^_== zdm*l;Irn}voNtyOY@wyw%yoLp%|S1n0y2K4;X0@ia?RBA$mEK2(!$f4v|2CMtWe|H z7^Rz=uaw-)wFk2%2zMN^yct&w?%jnCMjye0ejuhQ!zSvyRYUkQxzsfu)a2VWj?83_ zRjMI*(IfC_Inq`=+@El=rN6{5sI3u9++j2?pERkX^|_UeVES44-B7vHV4wdvT#+k5xPFj;#^5>=(_k#Jd+OWqsT@&J#!LGIDLz zp3xlYye{LU%h*3i^N4dybxI7g$Umx>bj(;a&8Kc&$|Y@Xi01{17_=&L2ar=_u3ELK z(m^qE^$F7rv0zgz5`|!qrV_RH@AZS}5PW&<3AWy43gyHB&W3&4P9s@85fe!3>b|i) zA{m83i&T5x&Kj91+V8=RfX9yeKQZ*u!XkrY-k5Z->M!x8Ct8gS;UBu%bYJy}ziYup zKncg06el2wi9V6vN>t`kzCDyaw0jAQ%LHS0#T@k6HNR^ zvh};uO4Xs%>d@0zL-B_M$NO`}50J&qRN{br+4PjiyOhO4dlIpixuw}qP|#zj6ass( zys2jqxu01nqCf(t`6i#is&mEUG5Be$e@IYMn0fFwykRy1^TYWZL#E?WKk=0RPHmrW z!0_dbgNhWw;9@X1$iH(Wp)q50goKT#Y_#PCFwcZT)_qfbmh{a<5o(wyU@j4@X^q-T zW1Nd!ZPJ}?UY`UfO`YLeb4wN4vCW&@Z!v-~x>NrRoMJHWIPQ@>EwuATL8vwA6`pt* z4Zf-Z{_?3ji%_kDsFbUT5f&e;t3JwUl2oH6*eAb-gZh*cJZ&+F&~8Z04YTcOoun1A z*j)<)OIC%~Nq=88q|Pdj$S_N6hrSX<^%8rcV=z>Cv*K=ZTq9C4Cuk`9>zuGc zt7g<@)e!z>ScE) zVvYhP6rxeb2Uq9A;E=czoI!ms=_Fr=bwlL^Pzy{Lmu$4g+IJi&J)7PB4yML{Su`ex z8h;_$$e8RrNP=mN(X(ZIAo4=56zyAV{+6aS-$@LFIu|4TL-3(D3{FYC6kON5o`et| zPl?s(uEhFR$J+3zIag7Za+<){6JsXCFEgKS!Uy2CRb9cv+jJ;B(FL%%^V8 zbBd#KobB$Ag$k{9$-a*Xu_AY)H(D~0xu}1LcM8>4V1F#7Tq5gAo9zfFiQaL;tR4_b z$AGQsFX~g@heJ`^VDj!F~Glgny4QctNkmlr*?t1hr7e{_tW2R!>?~>MAp(tT7oa3st15kTkf_m zgOKiG>g>Y9rh{(-T_EwQKv69me(VdxQ3)PcR3=cLF7u@Zj#g0;`P}|4=$&5(idVbp zt=Miq(QsA%Q|F1F9PV%rKHs6^l|5KLF{$^|ww(`#R_`suY|a!&-&G4AA#>A#6i$#F%`=b@i!;>kJeL_X&bm+Y_Mge7w-S=8Fj&AC=0|+L(aNE zNM+VZ5vNa&h9DGPk$EBNYIzkPyxCs5JwFtgy>EZWx7TxsZ!D8U{tW-b-~m+Uxmzu3 z_fBK`7!feFyz*?hMuSNojfGLcIHYUSt0k{lAEe5_9=NYe=j5$gdQw;?f&3e^^R#v; zeyTTlE|Ljthiy!UHY)22Uu2&>*1kW?(oske21yECXUtj?AXP*Fp^?K#tfHV@?d7)q z=Db?FU=#wMaakwbBL*R&&};2WS-I7n-4Y8h-m~-Z^YE+2beQd6Ghp3Q-~(KNZEOTL zf?n%>aIPO)-BI8oQty;|UHMO^D?u>6TRv;uRE^E%Wryk#wY)JfJa3wHxfe2MJyA_B zxiZ_R>WTjTN{+$H9JiuLk&9I&r-_Y?_>>-Mv#*|fx~>-CZRv3yXW5%t_|-QYQX0#L z^G=Z!^G&9@MgrJrwO`?GY@RL@yiP{5nj5<7m{YU6tY?oC+J^lY;J>o2*{p#WHZDe+-L>L+STXuk`AA8 z)(ojm7*^l&&_d$C0OD^p4=;G85YunrfYw4(@S~#mzE`(opX>!V2!fM@MQf1Q2-`nJ zH2QT2?mBsh#fl#}=#ZMCI78iEffmA>>yuhkt@ z1fH!0!DV^|XC(KyFINhocwZC;ziQwEFPf7pWwHdk{nX-p`FNYx^j0pO^|iR&WXfT5z3P zcbiO)&A!tdNyEo6DjwG0ZAUy1JzMw(`ZgPfA%?+H883$0QswF9wv9I#;`>i*qGy); z(E}@x<>-&!X}R=*cL>;&P(#^%yqzC|C7fW@H~W#}_n2JkMPi|G__GfUh6T_0SEb;* zUzZTbm;Z8Ay^Ps`>LL+bb1F_4(?n$GqKs%Sm%Lv>Q0kw#@Zzop6WOs+1YgXVu?7(U zGBjL@WImLqUz~n{euJ^qV+p$y|y|ENo>ObZ}@sP<)e_oAMYc(34yJp?A zO6<3K8inO_8m0AmtP4F_E_i-P4uj+V_&>L4lqldDYj6Zju-1Ep`ux5~iI9Z2<3axA z-F+M-=tdq^i*DSOYm4B+4-*ImbW>>eSwJ=i2UbIAY0b-lbuo$40t?9 z3Cg1I4s5-$uN#8FnKdZlf47?qid6QLc%YR$IBIk*+BQIxfyH>n#VGwt6>O81`ZRC=deLxnZPHMwUv3XKL%LTpyU%`9?CCAB< zU)sa$((wbt`r4~~WZTNqLzFp6FBS1?R2pMegfvOc+XwOlETN|{dbD;@H@U-PkDO3RRlsCkr{Sagjt)c7pL zG#3b1xhYISA|^j0?|U)A8wd&HP-+4WNq4R=l&ACHNe-sIa<=^aKjb;USpvd>_@67OdEa z*FNX$z1LoA?Zyk9P?@Guwm??1SD|pYx`#xvBPBlC#mV|cHH1ngREug#6_fGE6<{s0 z8fpTrG-a$U+PG3_8Fy1}4t0vSpo+OUEs?4co$KU*)mdM4351YvIL9}s*_qm1+Sus+ z3JpHhx2zUwV(L|9%ggANu}n{&m1M`TWskw!S}5a2>r4&&aoX} zE~=noWJRf%isPK;G~wj-Bm}*;qtlgrY!x~qa|WU8*SsQ`y*$ao1`nS^gGaOQHa=;b z*z@SL4nKo~dD2j5O1$GRpZfPD8eb|1IPfQ(shCkbB5;_tr@_>OgSv&!(#1g@5ydGjFQM z7Xy3=F>M+D&2N{OkhMv4(%N-{Mi|lE8FnW7u&3Q?|I@Kp^wxf~F>%?kpwfL;;`Sl4 zZ$!yt;&$!kBH6&MZnEd|)CTIQ+`NMhn;Td?noQ2;j&|aN{fkbQw1f{hv&8Pqur42I zvRU2gFD+)d5&D6k5|b9O`wMBi>YMSjpiTx-i?tku3t++=OCdYf4GYKbFBY!*4U|P8 zUy{!&^ z?xzUj45^D;doR!If1%dg9t;q^_Ri_MD|GT)XMKR5zbWH;L=7rH%7(S#GZDdGhe2?z z-kZvs{{Hm2pWfQJo_YWMj~`>yP&!~Bsx^UE^oUoYYZu>d`74Ad&EyB$ytoUV77D4anL0)%5ot$Q4 z_CoAejr6nP^HjgwZ|qIAz-qwzrCdb6#c`Km0`nu%e?U1JnhJ&=^;!sQWSBhL(Qk5o z1i-CYH!M$8H%c1aQOA%{%MAuC#3yA`=xnAx0?O@&?`hN4_%kR$L z?PfkT=PwYsH7ZCj#7U?C^eNK~DzSHQ^1E09UWVGCZnATjQBd zRLOrPJaNcK#VT2^{~+rJTxsg_w| zO;NmpdC?u?x*FALoKX*Gpp|{3b?2Rt_sf@hq)$!3aQP9;$_qcJpUYW;;H3}`LqkVr zHT6p_o{Q$VkN6+{m*Mmy1g?>v?7KIPW{n^@N%gqrqY5amRcih>8`fzTOrLsE5D*KT zsvZeYS1>FkB0$2RMnyG&s}j*Z4t$4WM5XZ!jz|GG1SrNRI> zy*^4eG8dxv1bR%SK*(8P1)%^S=htbv8{K-DUe&Yz>=UmG6e!^W&S3X?c~saT^_{>* zD2H8owP9EW|0?_C9fgU zluS%{HJwRe#Hf$@K9pB3|9SzGT&!R}byI7)uz0;^^LWHEbX4{GM5Po%?#N28e7^=1 z@_V>M?Ro58$^JKVFc!-e>MmuJCr412*Ztjw9rLzH<*?sjTYF0CJcwFQ+7X#eFH#Wy zrY|&nJHQ-9G};Rj#ED!J-=@r(I$se_l_yOQvrZK%QhX{w_EsA`uW8^#U|b%bYFEja zvOyz6_YhF$wJN#%5av?jTj82Hl`vIp%8ll9wb2yZD( z{RoP9Za*6681O#6o^V6_!izm{Y*vT$g;Z~hHp&F0(-5upqf#E@o=5M;tHRhAe@IBH zIxJ{G-Is?HvN@e%Df$(vDYWlCk8R(J%QIzrs+eNqRUEI){ZM_ZECq$>BX0Dt;jGU! z=-Y^Hm3ID6wF@4=^0L~p*r5Bw+Hv_TcJl}_L(cDhI!oOs0Yg^BhLi`)J$Cz=BuH7x zO-hLWf}gHYF?QMz^H=nZu3)EL8K3)xSi6C_F1!86WcM?XrWuI5%&m>(=)J<>bBH|6 zC|Xh~c#)dT%G+yM-^GOd_Cr$d;k4713R8Zz_RWZwLI%@SxdIC>B~@Zwn!>!I;l9Vm z`K+Yma=q?KB^hi+t32E)GKq4;#gV9RWAbGMa5o6E4W(>FAaj;#6)VrR>+9d)mP@ox zRwoEzBzm*eR|ew%v2Xt={Qs!)lZXR{wHarXxw@qItS4}FDOahbOoYTzSoOo4~Kivu=3F%ZT=IR?749#`)QY8MQa0Q^H(O0 zy7ed_Y7(vo2drO5U#O_FEC(pokmO!lm%X4vC-@p2Z~z~T1YFV z?ey0q!%?WboWCa@!Sn$oS@#>JjXh%}wL7V!Ih`P@Lgh<7Jo*rWcCXtbO?Xq=gYJU6 zJWLm1z6UFwD>4B)DJQY|Jd>wWDK0FaNu#K&nb7J)5QT` zjcy(K?aB_n{kjF)bm6(PU(VqZ*zDI`O%3tl5qjn>*%gD z#!Lu5U<3=L9%dZY_BXQcPL-kX0j<6&?9J{TL5mP%gzU?Ie(aA-iKYpyJG4MnIYcOx z1+=~5o2stcGmpM;t2jrZk)eX>OIfG_rlvP(-V}{TwSS1)kxP$|ebX}tC8$KQ3J#nO z%qSncpnWZyN3G;NL9bDY=GeH;$iG!dAN;$is6CY=_*iL`_*B9Kl<|v16Hm;Tg+%IZDEz9s`>n`ue%(v5fU&D#Lc0XUa&f0xsPeW&btSA#lm>U26!@VWO;?rd4+qj zZd7>+FE`+kQ9s;Pkat`q2qGvmWNlGPz0=zF>q4MH2VLR^_bmR%%dTxk|ju z7%VTM_yZ=DEON$NH-Abz*7Z5lr=EHSbQVGUE7(aG|D|Zdf?I-CYNA*Ew>%1-ZR8~@ z{q+C2g`gqPy)#5>SHtOVD}Pkl-8U3U?$p_Lm4GR)HR5q!emID~ITACQIR}7Q`g#R3 zV>fSKWch9fw7)#?v>cdz(}W#+v!82uSH!AYE_3zK!*!8QXhwY#`WgUz$gG^JG!*ay zJmt6|fw=|Oh(Rvcbd1VqYuJZ%IP30DR!my!Pe=MaIxtS2TE{P8*pwT`?r6uV8smx$ zm;S>;6vCTs*!qamwga{poay;M-XS}x>SR>e$W&!(c;N6)<^g2t_%P-kzG&3G5FEQu zr>pgkL&AzD*5zDNF@pRe?FLohlIhqA`e~jrbiNiKG{I0dDk~aZ;eyGbYgl?O5iJxO zN|lR%71pv6VmO5{t9P&&olmrW=hp(wg3ZEMNpSe54Og3$cOc3?V67;|Kh-Zx*eCr* zY<1J0HhDBV2`GY5;FT1w8BNOMO9)D(J3h(Hc()wRf~d2!XYrQgXLq-Zoa7nrWLOPW z@p&w)gdw?>-V=K+a6HH#Tv54y(-i+PHhH2xw)u~-N#V(){45im>LCV9n4WuJ@PA1+ zi3{P6otzM7PPOOJDbSZro=ITtG8&X;YjmB^K(RQ$t0-x&JqoZOS_@6bBk6*3FADD3a-?lk*$bQKB zDxG`DZF(7AWeY1~bqJA+jdDc0Q(u8x*203qt~Nca(RkrUe7WIUCs4N1lwQL>NOfO* zk`w5B#d6%7SoM)aqu+Lym%J3~Oa8rLT{2mXidF6xZx((sT{V^wESC{0-*zjzDL=7= zo#-y8O=nW_rX94%h|iT&l=btyyV+|Bar9jb~&3q=zVs9XishZOP;RFvcr_H)KM2$kjJ&2g~FmK3A zc!dxMrvX%7*pF0v6-I8(&=2=|l>CguD{BrLR{naZ10ma-SDCbZtv;+$p$1-4m75kA z7Tfct7&X2Z>9|;`zrn~FNz4kG$qKA~xpzZgkEl~uav z6EVB4r%+87EK>R+WI68m%;B}K5_Q%(bLvg-Yf-UgW(?SwSJMSHlvK^+FZxZPa@uO; zxsrQ}QcU|F{BeN*sdzF?ZFc}F1^6)a0j7EGDK!!}m(6Sd#AOHw8r_o{nVW81-g|2d z^FH1{giL;f!kig7uZJN0m!pd(L6|hh@3n*jf8J+JV^N`c<32n$`=N{Y$3*r^WR;?3m7nG^^c3b1WXT`DUp7Jo_vPqUMUNP%q)i z@@;R|s1|^W9Da?3kbgc>!WtGW)>GO(<0VqPUih>w4ts)GSrG=W1Yx@qK(D}}{`oIl zug-z4QkN{E;2DA+ynA9be&65vcy78dwSE{%pUc$*Tg;D=Y+G}X&EAv&l|BDB8QC>i zLj>3oHp`3#hddZb(DVeImXkg#bh_$rDQ~#G7q_0cq0Xq?agAl$2`m36 znncfkYS6BN-x47Cr{X&U77P&^+ez=B=(Zu}x%;ga{@o=Z|A+6nG%qCnQz}qx-5hPH&1u#4M6I z9v@B?oMnxiKfQ1n^&|xIL4h}mW0Q6Vr#0SmepG(9T@j{iM=4eV)sp2l< zTp9pNc<61L8fE#o)%;SmZkbl{#n=0Pq%BEI2p6i0)h2H$me0)^eMw=o+a%(TA3kif zxA3O|V2d&nt;fD8j<$@cHrVqQ!oai51tXDl#*Fj?}0m?0S`S2@Lf==)9=dm z1nJ|bpu>$s-+fr?QaTa5rr(l>@_NsK>f@j1MBlkk3phy0<1r%j%5IQ7`R+lvZWpY$ zp1}3LwX7NLP$O6$APd{^aJ8fU!ITw9XPV8`Ow>fZjYP#5{;Jf3m&<#o+D#4FW6bB9f;vb;8?Z?-u4tc=s%zWfL|yZLE!uN9LqKk8ly z-Oe=^*DW`WAiKn9WgI8hu1irZMRlRpuaRDFerswBy&Prmv3nrrf7-{fg;CzEW=hg$ zdx^r)sPxLTie!9@9H*jxo#5->C5{{EA2FF|R5bN>Bz=H{B$N~F9 z2-6D56>An?kKW|!AJ%VfH(se`mS>Y~vxtD*T!i683vAO&!y(>wzuiX0(}sTJHe+WO zCKMd&TGqk+N&S#fBhCR7CU_0lH-n3h5#E0P{tm@m3{iX_BS}BfraeLOguSp`!-yqL z_Z2n_UYa!b@Up#V{?cH)QN~)S!~*kI8r%mr{HN9ZBT(3nmHN+gw@;rcDG?@zTo+Fz z5fJ^1kW;pm@Rb`SAi6K8r(MmQMF5ii*dQVkU*p}ZXX@AJ1)IJ`ivCGoq6qRiJ}>=v zeO`c{cU^er%7AJmVa}9lHYOt9$3jipoH<(e4%|jm%s7eOecTJh{GF@G)v5o!4yFpp zl~WyG4x6vgFMxq|tXfndK5}#qtnGC5h3Knkum`U6Et(g|tQ)KTcei>xGlAg3Dqgl zb1Uy#jbEsl4JEq*Rq2fnK){os3=oJAAVn z%>2AN%tMBIvg?W~;B67vG#O-{DJVRd_rX&6vPs7o9%v`%9JaSip66TsaSed=S}FN$ z$Wqao^LTLkRqns!+`pbX)M!7?+|~fh4xpS|GfG6|SKa+x^$P)d;&6Hl_80MSTYN+c z<-N5N4Qpo}Yxg6^s;C=eYc|0lC~&)d`0bU^DJ-90@nzA0Vuq=?syEY?_roNg{jzWs z8)JIKHm*_*4KHpU<;`Fa!EdSc#*O?PZ1KMMb>QqSdQaaI)`{kM@TUUGyS0>z>&M`? z5--g}mb)g8ZU(s$qa3Y>T)fN6d}0!69*l(n;+b-{-Y~ABFVdXw;R2+lZkpkN0XY-l z*HSGW6*l&6xbhtvA_<$I6rTtNDTjINu)$?XdtO{b3Tg#n(bqecBaA< zAuXNVaoiJ4^8QllfC~!-XuE@Y(I02B@=MmfnPNRB!zmah5S6ja2Vtpg?J7xaca9*x zC6Yiekm-Kw(r}cwJ{bbG5t7lGN06+;CfHXHMMf@P%gZ8&kw=nP zQV#f#TS;%V68v@VEd9xNv=r0*=u0Jkf2*UbamNiu=WBY3;OPp>1y}n_pR<|o)o0w8 zpi4gD9;_WPTA}_myx^iPD2Dno{Ou%wiV}Lh*#&(DZ8q>diKpF{T>CUM@@s=^G{#}1 zPS9C0B*WC-q=vvDG}6yfB{`C!)ARHw&F84PEZYAjtQUArHvL{&}<{OZ*= z5%3<~6^^ljl%?`Q&lWIq*nf>>VBQXxfyS%Q2jO{7IFCn-iE-6kXlYlTq;@HTOH29P zA;e+1tFNP*FhMIzO)J9}SJO8dCSsh#_MS>V1vGW+J^5A3=kCyb*y|21Q=S|ThF8ns zP5l0(rfq;UrlX%X6)WdQd~}?y|4k;0(o;&Vr_V|`RsNW^TYH{09-Y3RRH~B*IsN;d zWbjUK;hZTcUE+Io8g7FOv;x`ba7FSLdQ$Kd<%X=RMbfKC1T1whaal&IF|#O5=EL+B z60;=i;1+Nx%rF(>!sFQYBVve52*{KYrC@((tQb>jF_;OZ?&={EUIJC~BUJ66lB&gN ziWDJ;MY@uwF@hdIEy^3MnvI@73{3@Eu^W+H|}@Mv8xlHPGFK zO#ReyYD8Ls7o?Y^MISaMwXr~?i5L7jK0pUHPk^x<`uGy>E{JZ&7*=h!T~zbGaYer- z#km%xQb-qPt0B>o;(Q!6Ra)KZgFIYjg5F&SFtZ+@Fzq3G8JwP;Nhx|wnrxI4tT%qO z8{7o;!!M=VY-m8AGfUK6x%HpeGfl0n>=G@i2SSt;Ecyw5w*9bEoR%e5Y+ z7#1eR7iR{tZbwrohaB=w4JS$#QxAeQDmy>Fio@!uTPI1bRk2Lc;sQS|o(&zXDFYH{rg*~N2 z=QlgqkquO&OkFGddnj8Hw=~9PBq04q`BdJUPyuLESLl)AIwz zz>Bah=z+H;#hMK&^DFg(qdBGp090xi3L13FJ(nm7iuT@qxToIDJ@+d*8189;IPiXZ zB(dIDeEN;OaTvtc`IeZPp~#%$A<$R$GjufI8p;Mm2yZySw1-w3BvVL$aC9r_sPq&J zjyta!en`5pWcO{QtLQqDNs-?n_OIa9p+7zLq=<`e{U%4b{TDU=3uGUnH8&cPdtMux zjv^YFk%7)1;EzR1TZLuYSP5==tSF%J6Oji$loo70!s_xG?Se>mC!)!Xp3lKeg>yb? z2_@hrs_da=-;s|4hI^IJBAB4nShMW-VvhcMC+)>10d^rw$b#CJ{kX{9dLAmj*ao+A zwM1Nad%TFntvJ}u{~Y5^r`0)sXHur5d%f{yz=*3;-pyumw3PG9AA17Ws*R5WSEf_+ zap!*;K4*!q9QvTH6*=4!!yJZ99_0l3%XK)HHu|eA+NfCSt}f^k1;b~^ zUV1P6`y7({bkE1{YXE3aIvBOYHz2k@A%cO#4fc0*zm`Goak!sB>N$w!w3Dety(eAT z#jpy$92UB`nh)ndaXRF!G@d|98g#h|Lw~HyXGw-VCdpZ=m)Kytdh{a(Rb5A!}JkEMbR7Pnq zj#q51?`^rj&7L2W#JI#V+s~GPBdv`)D~;o;qb3Kvjt$n(buZ3GkAY|1@ZR+=Nk-CImP{R7{LtQDFd2|kd zn2<>&BjgEZJ5zZjtA^x6wQPgCfc><~h>m7vR}*gD<{ZO*2e5~0@SJ4jYO?DQwu?B5 zxVnDQg+hI9R{Y{*_d3?~@bgF;oW=eM7IGbMv0BBt3IDeS{-Q>so|I%))ezrTG| zb{zHM1YVVuT8DqE!OZX1;SG^j(g4qD7(u*CVTAPs1$$S3q^6}8;_C3C#KfN`+(ue_Q4VF%^!nmpn%1F54 zVrL1v^p?=4x^wzPB5=NaLpe-(l4+hs&%PP5^*+fW<@5&quzdhiQx(5U!d!r?2DOvdXoTVj=y#&>chvrHpQNR< zath*W>6fpR9V7M&2j`ex0<{-|p&L%^>-vGS_(%M;eL)%9h5vp(!L)avm@Wtx=X zD2aCKtmu~|6@QDQ7*$n(kD8wy!SN|-^ziJ9aOGDzDq^%%`MII@yZRItFNVNB_#eSq zYe>!zty5`u)+-Jxx+iwk>d8%DFd(3=nWewT8nqn=!D7TfGe=ZlEW%VMV=nz0#2zSU z@;AsOD~nu{yk^o-a^`|7L;T33NR%-^p*^IGU3uT1W!{^*=-0<*YSEE6RMwAhO_9?@EQ&%^T7mBq+`3>Mp;3z&@gE-Qa-gd^y##%?doM2ofh4#bpEajEcqUY`N(u8fq#--33OL7Q%;Yz}zGl{a{|A z?gMxv%7D1op*zb-5>YtwlL5lmDo2){PEFA_- z_GRrY`x4`xuS?HLM#<%aFi$Zzhr-T1bzJw8^&{=KoNfbP`w(JIqV!AO6JdmW|JU8) z?{uFWpLZs5S$LX z^hE_DId;bBMBR@sDc+`D>|0gJzwN7K-wxI25a&7OxBm!P&~acgASNuU*I(3JEf`bE z)#z^#wDKF)0xKccQYY*ifq64@!KWlKN}-?f6a8;;ENyXZX!tsLAO{Yi!L)m^KdbM$ ziUHG$((#V|gx3+(tdAT|NqOIkFQ94A4`0+y3@U+wVZvodB~kCeho4`ZUb0D4HM`K< zxhxl@Wu-SnS-uKzXVREV^--2M#0~WEFWYaS{rmBT3l|LuAyA42_AxaWUnuYp7 zZH!niK6f4(5sINbXP-YRWt}TXOXLvwzSw;%_wDhb98ic($CxMbZnaD_sm#pCN`0v6 z^bW@ie0ZZF-Xn62DlQ&3TNWR=)Q=shIU)X`AD3w9EUSC0OqLw1&UStQ0T$Pu}~I&lhvl zibyyJ;c_iE--xVD|3;p8ITrgSJCXC35HW*0T?4n0Xz4bgMm*puH@nH015;wDTN%QJ z(RqvPH1sInY0&tC$)RM0DAGe`G@-SX)z7ZI0TDurwIE2294oFh`Nq06KiBFbXeii6 zvT5@;5`u`@mtQQZC%Pcm_$hmkdjLR>3vuD&H~<`k<-8dge6mUV`LyW)?aTi9Q(|L6 z@4$8657D)vBSNfTQ_2xp_0C_lQ20`uk!wOae&{phXsu<eMuB@%7aW@X&6Z3uy1(Tp3; zN8C?K{Z7tivQpjWPG0S1LiQ!lyMPbfemMI5oU085J7PSr;HG0!`zqBnIh(EQii<6a zl0SaUTAiI>h~lLy^}aRzA=-$slKs+PJ(8rJ5D-|hO{T^-;z?0DbzfN zrWT$*bh@Zb$**|#Tj_$^_E#gWcEhqIy2|j;H}UZ z?2N2d%vNk(%+$L&>Wou~_}23R8^M(?kOzk8( z5FC)U2+A^#HP3Jzn*5|L4%QW3vB+0@biT(kX3WA5l?A04iVd zn^JpJ=dQ+f&m(Pt%?4EOSSyy&mlX}BNWM7vE8@E%aNAr+W$)%<=Dz<(`-RSG6yCq- zY4mx&l+W?sYm5-sT^A+Q(v^BC-}LV76{O2hu=&)H3#w_~GE($FJ8x1i#bZ!O7*3Y94;*S--0x&z~w4ubikz72Z66sUB~j-^5p60U|2wCA%V|B414E2PXzjVSfEhj**-< zmdnnisT`kKh+5h`F@TGG8XNK{%M`q+S#W#eYda zo!9nl#cVAj{pWa6L(IDH5f|t6Vv-QMoouAxUvKIKQjz)KwTuK1z)^MQ(C6f7h?0feZt^?m;iV-R#N z+HZuqcF11E^3jvrX3vx2Y(S&4*h;>gJyJ=Ul(^)1R>MqHtlHA@bA$KX_c(c)F-J~3gR zEIC?cjHPhd3i;Lb4k68OkZS<&oa6AtCtT&nikYywq7k^{jwNYVS`(XMh;2N# zPNj`!3m-M|{VbsnUiy%B@W+BV`jEM6fZL$*jDB@jxdHRUe+rI2NeqF0YHiRp6r7>8 z+j3Z7w^s&lkk!1HNH=)hV13Zq?q*>yGefmcMy_bx^;4;W<7`>*n+px+5SGl{cZtsS zfHx~=K^9HEE3_s~OR}F~$$cB<28iB`cGX4h4>ipCtT+gMPo zuJi`3rixZj+|x8jCYHXYVAJS}Sz0Y|%`DvIRvRNVHaN*?GL2{!9||j!AIpPuEpAy( zR+LwB6@E1>7lix*UZZealwJzW**gZ3O@y23H3n)~4bS&9@{YU)kl0e<%fMlkHYXI=znW>Y`~GE(JAxfNb#=new`GYNN=ard>zpg9V`GO0 z^Jx3Olr6sB0mCoi5HkuoB74(PS-6T7Lu!*)!swKP|6a@Qr)XQRdzw0KGs!*yPurmP z?wdBhU4~YN8I9i6#6wzxm1KXqJmfsdMsovy?p;t>Mp!{IvPS5?;1TqWdcI+>kF z;LW+rzJh^tK*ac3g*pi~sG~gOU~jM999{U*iBfBus9&WgmFp4RDLHVbXmNt~*0;pB zLU{noYOm@a6}nhYyJyWrOp$3*pDi%xw122d#CsxTY+zGHV5bj z%v=KiDO?ZO?{7HHud~mSTsj#iGQc>E-E~wCwIi%RViYJZ&aeBza&(EL(wlvqTg~Fz zkX9NSFf6HvZQ)&;@o;a}`N8=<2AxaEZC**9KdL>3HVE6^Nmp^L>X`meIJz&q`8+dn z-Uqdk(%PBDYaSfsu3D<+?FwwZ7DaY^hXG*Ep_F)2s+MDAFh_G-FDq%K!JvL@wZ-F2 zHaGgkMnntk0!`aGPQN@<>o`$8f@8?VL2HXG|{ZjUm11% zNOcDd^_$zqzgCFf_YNf%VVxGgm>0rztK3tm_PQH+E`!c~M4W!I5ki{&(6M}I+XkoM zg7!JiIM&;h$Lw`Q&)Aa>ycXv#;6skTfZwqt>TK8ZgiuLOPcqbUzdEW11y-D}zS+ul z@zeFWcLBSKe%fnpq!2=a-ezuOcm7WHgw^b$Y%`LNs(ojv&Z=&8*H^0jZ;o<(jV}9u z_YpTj=ioR;MPsmbD;RlFwFcU#U-M%_-VHI3EO1!yGocF*I#t&Qqx(o%uxm9rdwdYP z4*SknME#(LlY*vo6QGR3LdS*~dSysALM+e2jgLW0vX#g3rAxash?TX$w*p6yy{XU< zlNsOXQs|MU(WocG$s@SxX4Iwhy+rxp-EJSL!U9!+_&s66KKAQM%4i5C<2)StS5f9r zrk@mbFVf=0rFb9#oX=g~?!|?muD?SvmzPW2pN44Q@di?@n=gMnmNt%$FVz;1mD zZ8vfT%W;yxaXh9q*tl79@yg^jFF?ld>f;6gKrMtDs9gBBm;3v)(oHQcrkY;orxqJQ z9wFJgVf#x^KmE3q>yci*YFgPxK0bn@v9+WDh45rOqm@Kh^^YZkTUlHwQUt z^4Qe6qi%I>N7Rsmz9&N^U9;=n!y@R}qQ5&!c^<5)dyB+aa*DDuHO06*a@O~zJ;{gm z4(k1Ai0ndRnrsiTYjnpc1Ji+O}%p2l`>Y$>(N=4GDeQoH;a$u?#~zben{N! z2D#x=;-L^^5a1|Ax-?7rD2;OaoFC#dG&ZZes^tH{x)BvKkL>?CZ-mj1ZjFs#Fs#+y zFAw`HS$b%UiIm6h{74UGpM6gRJryv#2i_sNM=$*Y_Q7==cH z4eo!Fn-E`S+cx1%IoUKD^1_1#%jJ7!D3kiPscYfCm;Qq!Uh~tF#1ZuA+DvuwGelKF zx6aj(AG}xdtnpL@c{S9HBv_nH;b1zm=$L0zwLYf&xY zV(_CX2Y$LR{i0V1%nuci>!JU~fE+s%R&Vm&-kY*dgQZ4}H^g;mjDHc8^fZklVxS%k zTfpp48|PEpoOy8-SQD#!t1wFPI06E?48Iftej%8SS8y;pJA9=ej7gKXWh-qDzzYX2@DMp*`nN>PXg*C=7e8{&ShSk>8kioc8$FEWUhgf6vPw zT8nTGO3*?jjQA|UtYwhRJMQRdzV;e}aoRsgCO`D0T|@B+7rAQK*U3U{?Q1(n zaPF2ZT8d7-#5khtYe_37km(CF=kGhSaqZJ1SD8X)>DeMr<~~y?=i@ zg&;6X-#7&_dEdz=@w8=m)CC;|&6WV3L>}dK_>LZ?30l?is;5=ykIMb@izOC~dc1R;8m_d>#@@HE3Q&qeJUz~kJ0RwsQ%km6L|4{^i zI2*sX`KMl8r!VdOlJCC+v@Fe-%$1~v4=;7Y1>e6cMV9iav1;D>Q%JRA15BWW1ZK=X8M*P03<1z}nZ|zy2 zAakFHw-#3c#3E^5p|<>q{F|BZ)q9^w8>r1nql=l(S%q0sTGi>9k z3S}xeAk_XzQz2r~;lS_rJCERKZ_l{ZUBO>n%O&3+c4$#(j(Jidr#1?6&4;l1~bBUc{eZ%LT(Pc^I$S*wpv zR=R$5Squp&+=L7~Gz;#vOe4O4My$bwV_daN!MtVBQm)Fg?l|DtpR0D9~JBT2QaxbMZNn$@= zws`4V6<3s2cGbIFLhUEK4hosnXYKiKT)IP~&1WMn8;Kqz)~=nBWq)~yn;r4Jo&V*A|~8 z@BL=3YoUFNU4cU{_j>RBz3tn5n%;RSafh*6gFESm~EuKpDspcKDgq8Gcxm zw()J2S8K>@t>z@v&_IpQ+fvH1hp97!jNk^)t~;;sCJl%8fzGT<0ke;o|qcz%iFgg<^Pmr6}nEIDe9C*IdJ zdrx^=5gF6+?&OtSGmu8Y`(gNIj0bd<|N52Mf9rMgbiD3tkl6Xt*-Z~faxr?wO#+6f z-19^nih0bQcx69bix9td{PO43%F0|UIU`4%trV}`y%~GmNy+S*JfN3;u!PCW*wM_) zl$&iM>4F=?%0-hvCpE|Wy2<3DAKA;7Uz?-5k+J>_^#mV+n;Y0psWULV@UvTSt7Xn1 z7-;Md#pOY@!1;UL>pm9<0*$GL%V`t7DCQ1eW}s!VN*}m|wVA{%{D|3k{zRLv6_GE+ zi;Ux^Wkzh6GWC+dDGBf5QRfUDM@g*En(ICcSz{tupE7Nfi<_|k?${6wxd{6#Kx@*W zn4%QJ-uEU)7|lmiu8@LBE0*$-kdO}(L&G(r443k&ie1>;Y5xO37=}<-&H? z_Xe3rzE&h=(;<3YiS&@dwDdjcWKW%?l)bFcYmP{REvF#r;}dny^L8ya!2RRoCsyLC ze``9JEwmhxB&cPwFs$?H!_#y88?y8h$hTd%E`87Pne)f&^U@qXb8@Z$x@h${tWNEn zao&!2#`ubrAwpjdM4myptkX)A$Ls2PO!GlT>!O@9=$=!+K|mwu4S?2W1kcn8%Yc;) zCASO6ZBje9Gm1*>8_*y8KWWfg%KY6sT1r5J0sCsU$?rug!hjCSAD=!0V30e1Q@#Fg zXt+S!%g?`tStX29cT09lUipu}GnHNjeHl^7C6Shev*(gl_0}NA)auT&;=A=lP9~~- zM`-H7D*!g`ibj*`FE2d_dux^AWZiQp(>PHrPkcAW&Z1UFS9&=O+<}vNaY6?C3=HH6 zzbx5I>_sMOQ<2D7pM9ocN<-a-hU$+2`+J^WEdX```b8Ij?8LWEQB@V|5Kr+zrnOZ~ z`&T8&eu$SoZQTVV<3Gu3_2}bQ46cX7{~vc>85ZTceoLbupwc;nN;A^k(nupE4Ba8! z42VjXbc1wDOAXy1-AZ>z3_}bsbH=^@zrFvT&UHSYPjg)}Z#?t9Ppo^bb>EN1g!brY z7tJ6Iz$)MypcjJ(F znm^C=9)2yd{^v{2m~-^f_J+y==!F?uVK)sm=kP9`uHT>J%m%ALs5^3nzaHX14#_)jdaOC$obmHqREc{2x(UD^ zZ>O!~P*Ja@CMAmri;8{w(o98;+Ya#ttB*$Du$^3^qc+H}1fJ)UFI2Wvb2RH`_T=Pg zIZ(Kag{L7#J|--%9^HT5WqKbR-FYi>a4i;g8jM>6NXP&SJW&3jL;#?m1+jDNAE6g{ z7g}qmj#df&qEv~5LG=EB7kg_{E!5-Ir24jn2WLAUMrNB&@NO3$91YWi%I7`Y@JfgU zR!WW?%X@=DlCEPS^{gM`{#JYwhyOTIqqyJd{D%r8#Aj(}z+-zq;j$n2yJYjwL%Vingk#6X1+*ky_NpONFV#@hR<5?UcQ`ps_>- z{BFKTdj@Lfyy}d>_+-%UKJ|=2ri<`@V7Xt3CW9zv&1fWg)h+mQGH^v}59>o)^_};|Lv-(=T>`KYe4g(gDV*Sjq zOk6mAH^fON&-eSA2MXj9VjTASwE*E=$pyhN;@_?R-vNk zUOZ#u*$ea+#|Mimda{O7Yf@OjvM3X}(9c}4yrl0R{Y-dw=()Z}&|~t&=|SCR9w8UWCVR;4hK2THBjBngLpu2uG5EyJg%IV{ql9_ zTEQ)E4c3;op;1@qx_ZVZoVL+(5~_}dA@w04L*m9^j-LVV z5CnZjCS^~5W{a^Te%i=WrASyV%FmEVn5g}8>3Axi?}gLQ^b;4<2j$qX%0UiPtFNzlhbPPsD#U}2* z`k|u8eWhbw@6Ei(FgI15!^#1u==H{Ryq3sUVDOxaL)UO7{VmhnzPc2n9ESp(j&H48 z`IjhJ(Yq40xS|srYZTSFc)gn!z(2ER;&47QrCsmU%j{izNAO5m=>z7+Nb}ta{K+5l#RhJ#`!kdy zoUdSp*<_z-`Asxum%p>#+5@%ESY+(`Gfx`fRaxhrnWn3wwqXs~;y`T^!orxQo*#wI zR|Uu~xf@Tnh;lc?(ALgaUHM=oss|;7hhh2$B=R(MLB*@&b4@hu(O!ynVI)^Wp=?0h z=`4e0-^W+I$X?`lYOw4WcuZvz4Z>Z51sHpKyrKAO24;zRJ@*8CA;yA>7OH#2JKV+U zM=xJWgIKwM3Al3$>Gzff8WX&od8=Rc*!_zjt4&Sl&2p_KW10giuT99@6Nq5fC2Rgm z)YB8c;XMsOwzi+!YlO9J}oGymNkd;PidNfJ}JAymG57-NF>`L6n<6^(>s* zG{mxWHee3a|K_LEP7yf`FE$8~pLH0VFuNM0tS;7QWC6du_0^8H`0xCeMT}9RHg~>w z;@$odM&toOOa+0PgrullQ&9E$@%t#k`B5}sasvp3_|{ZK#QA}pxt|uX^&dy#rEBgK ztrb3hs`M4LB{YL9*~b;thp-FH=flU;MaI)3T#g43Z%otm>SJvnF|P}3l4OAa(=v=` zFfq?k0;-4R^N4d?!b_EDFT_%Og#TwGCRQ)QZfBKXA3A&NII!T7efkUVK&cX3i|BP2 zBN8JM8GaMnLG3Se<#v2f@v`cMIvmYye^-ws$9*uj^dlZV@e}JWghEVftZT|Q1)PL5 zitL?=^xBm)<-oe1uynZw$HZSkH0f!|qParH)K3Hc`vg!cK<`o5OjJ!9_ix{&or7dO z6YYMileeHB4*>4qIqTVlv8Hov`>V%lQM6r5SJLJjZyx5<6keJ_ZbxF4V+wAc(LvPP zZ*dQO5B0aPEmx4zaU$y-1QWSbAjQ+$UP<*%WX{@KeEgfIhW}yl=${H1VSP_UoP!^L zc5ZHrCy>qCgTp|ep7yUQ*Ujs_I=W5;{~SLK75|q-fdgd!ehGY&YpKqiK~Y|NLyvE9 zWCO!~-u%)8IQT(&@*%39(G&2ug(zU$tgsWt(h9Xp-Qt}(?la*8D*=ygz439e!`ak# zu|3Jbluw&lf`JRid4`l@Vo5JidBdx2JK=STEv@^VXdz&9{(-fuP@%53vkSbsCLb7` zgqV|FmbqBt(X|%7<63#6YnV-=7-RNj@}2+dQqQh5Dw3C4-&tOu))Tfq>7x-6-Cq6T zV?owgyVmmmX@k?#2BQ^xW6On|`nM!=n{M<@d}`wcpnBsf`6meiR5ph(5(-EHlFdAu zNPe_NJro=Pd_bXe3?K}qnoKS}{l#6z;49p^cs*YQ&*a*9c+ezPJg~7)cWN5e3{g9u zT|>*r)u#JdLo7AP++P}Bb5T}OWJvT#D1pM~8_i8o$^yJ_Oba$OVC;tJx)tH7L(TfX zrp?D8Rm3v~gEcKLAMQj?LKS`$tfYeluE0*X-{jll6}!vxDAiv?_}<)wMSrea&Y%Y_ z+K_kUjKrOtW!uvNP$KDh`h&EfLZD%EK*{|y9iFs+sAvLRz&`X~lqf*B0~rdgXxjYm z{V;68x=uc^nx2_Vnk;i*D%4g$i(grhYpv&M;C%O@NmRB^7-_L9{N1d-%i179zCILZu% zvGqHXWsNGu$~8&z4U4?weKb)2g?7|22^+LTOxqad_B9|^+@(cJfH!YI0T~fW@CdDE zU7xY3PZXsd0w8FT>+Q^+2XBOJ9D;}UCApCyxWOYpFV~cI+oH7 zzxZqt(U}@Dv76+!nrK+ifJK;LOHERfh8({|@?AMA{ThW?lG42EC+I_{R4ZfZ{brju z)l)LkUwmCe?-%-fyhm!kw?#@#C5(XGBU9B1(Z&wr*G@iB^L@J-+2B**)4lRP~~ zB$hF+t~UC);zqm=FZ18h>|X#^kHYJ0SMLfX0zK?Hm}PgbEzc$f5OH3%Z*sRt&TOMx zG7q;ySH+SRak-zG=QpP00OO7+C=XS(E-2z6DDSQS-@bc++kGC{m!bOplOmUa?4 zrSfdwXikcz5@-+lfw!!WZ{gEn2t?>X0pM=PFjN>${10?|{~D|Mm%F>)@F=#d<6ztzk88<>VngpRerC(GsKRw$(_~!FjrH4Chk|`gwhagP#w#IGe-i zd?o6pQ`G|%l1Tfj5t2`7|tFN=fJwYHKNlTYHTSdr>agXPmvBC zE(unFJs^lMIiKq(4sD|kLj6;(bUh!FqI+Nkn#h1(+}fhWoEfnUt>tN zh!pr~P|DQ?QpA9o&;o(mzT7zrLt_PTBMGAPk$tT17T}W1sbaAst1*2Y@73RRo9X_N z!iqgQ^$G0}_CD4$<`pr^O#LPnqZ-ANm4FLtw;QQ_-x4pK{v8s1QD^kkoQWQVHpwnP$%T+Kx6K7dI(JL)s6)f)K!J$Yes}>~&H7aY@eC|oJ^3WY`w`e5TSi)1Ww@hu43E6e%1ewMD zP&Ese{b#ZMZi!WF{bgDTz@90Xh5Cp67^8q9cM9!GZs!OV{ypeP7W?D5HG;4@*M= zpz2$%UmD{RvWYB+EN84wjBxG0 zD{ND2!L}!rIw#qd`V9$lmPZf!J*cZYixk)4I`S59wANpT0Ek!vGJ+0Hn!@y=hS*Hs zjT7{Fh91qpS57q*ZE}6n%z|^;0xQ_JpU6mwuQjeeCmo3)?`OfBX!;nmwMso5x9aD8 znAjAse=3<2gcR@0RLc>0+^G0pPGJ%q{W!Vv`p;T2(b~PIU-M)LD}J9yX~iPyg@7tm zfxf?vq{Y>#gOGZ3u8(*`-``4AhJHd#i<5?L{hNqN0#ltQGsDzlM&-WWhas##Eqi7A zs>}g_rr&5RA@^?uJ6V6jdH`P;y0=s%lm0yP?5)hx{#(iTR}`)2cd{80MyH616N+&G zZSu}^glrtY+*i!{#5C?3SK=6slG66BT}Cu^4_xo0p8v&_4*VTA^R!eln=4OvFI4$H zC3>OH%c#65h&Rw#rb;)=!Izbjv(lx<4`m@@ik-Nf#pXBS!P6LrkKhs62fWQsj+Sp6MHqD`&SyUo(=AtEf2@k~7$xfi4G`sjhcm<>lp&Lmb-d;)R`r5J{+e44Pd8|+kEj4 zw)nyFtZVfqLOqc2VWj544Ss=nT~eD5J8%*NI~}G{OIU4kjXd}kogk^g@}`98rmprn zz-C@r7TGTzrWZ?&e^H5oe{-hV#t~+BF^Q9%p7q6h0|M<85m}1=EQ_BW-S`|6twR4?E&&OPZf`@H6hE9c z{$8w(*Z6`FL?p5BfQ%M3Ee5W~> zmJnk8%oj2*2>4JIle(gqKX9a*m!n5)-z`*+1EI64Cjv={ZxR?rG#Y#qz;a1ZWEe@- zgST)vmO42FT}lps+NA@~gJcc^nf>2UezPO*L3IseUQA z6)$U2cTD_(v>~Bg4SEt&!;KY7;h+^OS_aJIY-SjLR$m+YH&*f2l3PYwXq3E{oH&k- z*h~~3vu;!BvZxuzi9rP>H})zg1?{BEQ3y`anaOdWI`4JR>v7sZ76N0h`Y-rLmU)gt zeJw>N>n-z1B*q0}&=bp{(-i$!l6w4;GHc4)V^v4$75uyAlf~qqQ!5w6PWTd0iMp64 z{X^&JL*nJ!U}wha<@nli6@2Kg_3vNY@w^zuBh}Np>A(X_!2OEH`a1f_>4J%$FP!_9 z4Ed5;z9KN!pM&HFFwrj^1u0~0YWv&@ZR(N!ci(%jCJvg3CKSh@BcB#+s!H~@1knTt zi2*UuEc-PQJ0}ST3jr0wnVZ_UD*#lG_yRHFhzTC zh1$BUdiC0EseDJqXjN7P&uT;rG;Db!UQdY2@2_@;>?Za?;U#SIsK%T>DM7I@ghOH3 zyVDU7OAVCg+PL&l-<2C#w6nq`SutMk5GZuyhh+wP*$d+4YaOJD@%YR<vj_w<{qQNv44-%_$k6(;KQm|g?p(nX$95?jg;uyPMV{& z^O^dC+1d6#ON(uK7KWaJPjS5@nF-!Q@Aj@LkWQsVj!1uB%HT6ov3bD^=4J z6$@X2QudnhlkJDCmpIBFt@QZntNl{u=B??j}2qlV2^oPOI%N32Fdpy}iB9>6;}WRSmTNu?+w9XrP3c@$vDZh=>S2 zaq(=fw&S|;h=+Q2yQ8VC1A^X_=?-dvV!@M@T!`5z%&ruihZiCGr>4RYY11COD4#P^ zjRIUbQ7=2Tg^gx%!SFHmrtz-&t==(&(b(_6$}XzU z%BacFEI;ob2+~z9jYfXIx3@RbC3W=jn*tzE=33mt8ub_&kh_A#N7bDQ5MQAe>Y%#J zusOtvv!o}>hngaYNztrJ(awWmxC!rpD^lS&n8Mt$6v$BggJODJ3gkBj1*(9rh;XNg zFF5-+;aFh-R`@q|9FB^YL9!*`1s4?O)Srxd9CdQS=(TBegtxUj&Nu@+(X#@6rnZeN zJ!1)O$#5wHUBpM(s%c+>)}M0-#qq3XI}bIjv%+J9L-T1-}8n< zzFM(-bmItx@|cBaX1~u7J93yJM|Wb3YhSnyFrZTt3C|4keMv)^t5{INJVP2sqo__$ znTW4<3XIa(D_|-(*aKgYm%H<9l?={IAnqs58a~UnkSXds{ei_r7m}t>3-JNd1CFo~ zY^Uq{t=fJC-_A8dIGxhcl&RIDOP=M!oy|YIc$lhy$gK^z5pl9!yJ@`m1H12#R~OgXO~}ZaqHa3eMU1)?vMA6F+2Yn>J~w~d zM?$XR_kiz>3T*(mm(9snCp2%5a5)z@`qed5-bRiZ6 zZ33B0vstkXhinSu8Cc};Udr!JJRly4-AmxaM&(a@v#!-ook|6T8jyjDm&d(DVksIDpc)%s`>8L2e*yFiAG!)R&_R9 zX3D&XEH!q0N62zhJPi*0sn8LuOrs_weG&Qb_5pO9WL_ivjHiw+9J{gVO~i zu|-=m+6R}v95d3g-{SLV!gr`?n!(%doUhcwSIr;qIFIgV0Jsg5Tk5NTBaN{`EzxUB zn-Q*iX$5lY8+uViHU-%>E1fJ0B42~1mJc2>{$cwKP_J}dujZ{DBtn7eU{bxS{#QCf|1LY&h#>+Vfk;SjWa!D)2V zBrXkSP2x>-sQ#Y0N=?F`@BK-K0*o4K@RiMU3IWW8Aw~aeGe2-O%O&&p8Xb}-h1B?$WM;3l9HTOAgwPPaTy)pa5-BRYJahcdzERo5L{M9Y~>jPZMj8U zF5S5}4}GXha?5R7yYE{SFhHhiRaX)Tsj1Pr*oBhcc=_F@Y5|sq1$tiH9H89J0r;m! z&~%jwAX3ebE8I2Lq(>-=KL^y>;#Xg;J94A`HfPPXGv3F<7R-8tS*$|oo#H;@qO|jK zUXmT00Lvt2Pgz#`$pA~uxwCPn6-Y73J#n?s28;%CHA-~mU$sKA-UiaCMckNUw;wJYHn35-ZZtVc+({_u`16q9Hig7n{Nv-wArfQL5tpGkHPgLc2-uns ze!o$qdLwE2-B&f2_tSmC;@pw?Om6EPFIyR>*Mg0a$gMj{DO1!~n7>C^Nba6WmfXlh zsDHPqnSTKo+aqgfZGG*1hVZyBUSqFsmm~n)Ma~M|96!PMMXeI-?!Mz>AZ6`!Pspyl zaMAz$vK&MLx|*pzi9oFUAw`)#!*;$%Fnp~>X!|(Uz~#=ZBu|#P=dRtRipz-FtBvV{}mf!v<7KN_>f~Z~8STzm^3x(?C`inda4-%Ec z$UYpT7*lf&UErx~8*%B6z-N3cde*D(7V&zGaeqt#)r=0w<4T^CZ%Ze%8VBnZ(Gl)B zO2S_w2cXLOU|b16X?-Nbzd*X=vEvvnA7R*n{f?+|(iV#^WBwa$fqQ(VvUVK>yC-~~O$u9>**hU)rzpob$Yj?W{{1wm+pP7iXw ztFI)XOph2G;HEcVV&eXx3Ev4IX(t9MH+DCw7Qw$qw^xwcn_~m1_CM>;N50#J*VIP$ z@r65a&1Z(`UzqsLTs0V=oJr&uaalRfyc;FALo66k>d-D)`x-(+$7%`L*nY+V(%RP^ z^l?Jd56q`sPuI~?v&HocsX0s)tCA$A2kk_0C-30t3!dbsjkx(+k3CIDAH5f$Dm`Ua}tg>lJf*8Vq^(VYxZCT zjSiLwZ;~P(9!(;*D14Xu=yJ{QGf!nNG{u4Q{I+AcgjVZcM^_1u7O-aM3;w-+9)uHR zlG*8JDVt-)co2+Y859wlfVV#h_;2&W;}v6?c~cY~)};fD8uDn`Ref32>|qg7$nkGA zz0k^u(XMOzTrWif!P0a7&yONzeMBvMXNl-$o8|CFx<`{zH~-xh4*1_o$3{=sjs-8G zbNBV9eUQEw=*YapcnLW`Lp##k@R{Qo*TYUgchIh8dA&_wqp@YB>MEA04?^tFBW%QaI5LQ=(?a~AJh@Y@r|)lBxAKk&B%qERSL zf{wE1FmM$*MueOw?T0sS&V&12hg&_Jv31lIKItENuVZk5v%c->T=@8R*H`}?lJn+jQ0 z)MFPY3&;GqE{m$#&kTRZ55fm)TclMAd)A{y5lgY>_5~kyWNIV#uH=W;9OejOTo|?M z^J!=YfLUo zTxCn&FJJ`ZtT9hsU9`wFqIRS?iO;aF7cU1A$_1wJr|U}P+klEEFv^{B z_DJJ{yW9-icwYda{x{V3WA`~a;(Vj~@sTA%B1`NKb7wU$vl&bKj?Gm2iHu%heCqMr zXDDBkx;?I;{oib5{NYCL~t0=+R11;XeaU!V8K6^X8vUQFf)^2O| zm<5D}#`8B#Uu^J{rwpPop?Ax9^+w%_1($QyhD7Wlz8r3*_tW*<2(&F-Pgk~7wL;*F z;wL&ULeIe2ymMJY?uzFIhXHIOH^QgB%a`ucH)+VekR!S>De5DDR6JHRNr^s^orbIU zfyg0g;PobMxZTs0_s0iv3oc6jKuR^<=NwAc4gF!OAjp1Vylb>>=SRs^=a7R z(04a=7S%n=_WmBvji7uiVvF*CgSiZ2hRuRD_u}_N$C)#}`S-(ZDv~xoBvc{8Ui^Kd zY3Q}R{aHDvy=EG~r)fbm8?_}TAB#SvaUF~$xMvFQvTcgG*#j@~idFEK8nDaTOXHUt zzA)Hsnl>p08jlJ3BdA|^(tbDhE3{u6rnlLXvf7!{E*JnhPc*Z_fwuUM_zAywM@v3b zU%k9Zfu~v~ybG#16#9frg^pTatnS*5AxCn*N4hEz(@_}kfXi<=Vqrkc+PVegV656< zPIL#Q|E0b959^llnJ?sEZ^LF+f5Uk7(}`@K_B8qV#sM+M11ER$3@(XuE@GjhuZOHQ zo;e2@%mE4yUr5_put#ZALmWG2nDrJ@)L@>YE(bxiuMKYZ!OQ^_y5a*MZy{Lf-?|Rj z^P~F6UtG_RI!~Hvk;y2N1^K^+?3=IDhZoh*aqm+t7Q&n~wHfzlHHvzE3%-?l%BYYG z3DzgWM!t=>f1ip#3ftVrhh-d}{jc`IHri2Xt^8w9+GFW4kviqj8xb+}mmqAP#qzQp zzq{2h7vE&cvCS4E?MOKsyijQ}c>2L?&L5xK;iyKKE7B;vEa@X2Niyi(O=zlWTJ|nO z?NxEb;~+H6#X8ckm?*0{V5+?A>{DE}$@ z&_YSWf63Op-E`u``uv|8^>NNZ%;!w>4AxS|A8JcZ5%3Cu9B(q-*`T65}76!;YN#XuVWwgwC?8S+Xup{ka(XSW{yH zEdJZbbPh}u4%mwGH4Re51LvOxvjIg432Z*r6;5~N;T!0hcr>)zJ4B4-J6CiTS6yl7 zAC*3_Muqv2xn|VRPB$Xy{@2`s><_&2ojYqtYb&DNW}+5BYIw!FMg#(cCWBCdm*5_Q6|-0V)Hx-O zf!Y$+x_X#{OcNdjs9_yG%Qpak#9FQb5JaGeTbCeH=)eS-XYxSzkq;z)TiyJDm(Tox zd~k$LmTkxfa3N+qgj!hZ3Q^9hx86IaV4Gc=uLE4uN_{-xc8ru5g2yy(y-!xMwprgF zBoq+y%twK`suZZ-&tRI?{yNS3##5T%_f}VDWwLcAn~W9665k^sS>%+v-Xy?MQ&cJU zYJ6@zPy)}Kx~b|%F&mFrhol113H&OuD-Kf+nqm}3OD`XJ?gA&y!$*>Ma)98 zFBT5r*Wm$m0B#I(?7k-nTCFGWs)PBXrlIj(-h&Nh=2`9UIvby@BKd#@Y)sBOA~?cU z>n+<;IjJGQ#G2kiGQhk*xPrAsAo&^}&)YvXp(SCHkC(olkZWi4s{`Ibm)N>u7mfa6bglIz_qR$06 zW*M-Fiw@%t-wX4i*dp68@Op4+l{6|#DuK#HrdrYjXZ6hE&#vVVkk~17)04Xz95+N4 z-9h2cbG6$T|L%d{&66JZUWWjIiNBsQwB8Or>_1mw6}#{MoThulV4N2)gC)jda^^g3 zFF$qna>a3q3U8KYVg`cxYc@H{iA#%`Abd_Y7HhYPj@Aj=vRxZI3AoD^`4#{%;j2ys z1tm=KC$Ps?0R(KsI%n_okv#VL&Cpi$WkU7M<%9va%cMtN{VMd`Awn>4A4=6m|3#XE zxGbV86ZD-urutNUka=%fdu!%-{SbBcJ?`7s?|T&is=T+ooe3U7s%wKGwf0Zw{X zmP$I5DFf|d?{wZ2NsP|TdX(>$b~vi|plXJ%k4i3vL|;v+ovChD1e~=N#s8`+VypyNOP6 z>6Qw+2%p1=e-Uz{n`8Dp3MXZpdlZ1|{2{+KAQ9xj_EvR*)rI^6wzX*-Od40_>9~$f zX`-fDhPWP^=F6(e_6=+Xt94)ZCpx}mSvu6_*dJysJ@en+k(a-t<&(~w@_5l^$()1X zZ4Z?(7_tM%&*o57ppt@HlI6FDAYPF5>X;;vZ%7(%E!s!)cA>>-%lflhy{_~z=Yo!P zZ5U!dzH3&-yWts#uA!XqRP&7!cP$zloC9U4?9cCZXABc{Sz!5URqfw~7HWScZK;*V z@G%M5*R^U?Kj798Q~cdx&W-Y*%Oj7oj zSppi>BCCh9o((oFSKK{mbiUOEwYU{%Tmo2Z?Yk#pe51kQ-*5AaVC?u-|ZZfu}SlyuTZ1xl?m#loDh%HO#Q=%822<_6o^ zI1opoRm&rQZEUY%KI*$~5Bp$wjG(7mHGgDiK4`(ICqG6bFlkYpH61jqmAj)jdQlX# zlye5AX9WLS5CWw>>qH({bia5dB@-R2&!8341sN4AUUZdQg13skBj6o(|}ay=gTs@VM@ zDB<75aF#ONfxEY38A=vlbab^ij=l1=-D@f#VApnhW$kHUi^R^3`%gJ54B6QdhCn% zM#>a6J$mms{N-{-wq#}_k=IT+2;cQ?-_%I_C;p@tP%_LEO(f|&Yj)-1li|_jl^U0> zuDT_`B_ zrWu!Vy`SN}0ur0ld>Y$+I2J`u#of9_m;8Q z%FusAu%XU6lJqox6}VG2%*XR9clCTebNWmJ%=H~UoN{}U0?iiPf05X{XLlTr@lW)gZ&)4;hmZvgHYkKZ)-Ku#mRyGaof*&`ZKE1E0 z>PbOWMVQ1Oq>CcU`>C})_zTKs)7W+%g=%7$yXjB&)x^lfiTyOBfJ->$g81|+!z|ag zhkNaNnT9stUDT%?_iiTxIt@uwl+QzE0tI$0o;g_`R|1*BIwue!MnH5`Wb?{;W@d}G zJgb2D{N-I}e4W?4;ld336<{>M&&c|>boNweA_P_AS#r3lpp z38YY~@P^Z@g;H9_Uk*edXR-ibn{JNAr*4^dQ-9TWgBjN3qt`{fg-S*&)h)rk=SF-) z+mjZ(N5$gVXq*p}ery&Y=4i@+v)#UvO%lt)vnYh6QK1%fXmPK1e#3+##Sxr_Rx4e2 z^~iBaC<$_%(~;qeB;K;~%2EHY?il|7?Bqs=1vqiDhj*Gb&&q}BjM=8ER<)1GbDG1q z|5{2=Wj%sN@bXIJW5`)`8_?93j|vFe(7XLC)#t9#g6h={DV)|MI63;I%xK7XNKHm9 z?RQWR5M3w%mmg9r#e9XL0aKsvv9+C=z@OR1|9o|;%JFx)il$Xtz zopm&uCa#yDlh9Va&AVgY-8-K3DFLlDuft}IHJb?=IhW9fS1|}14@Vo@5VDVM0rzSC zbbcnO1E|lOTgVfihH$>-pZCew%7>`VWH7O!A#pFcD;ZF*S{4I*V9QNK9H7XIzgOS; zOKMzOb%h}Z?@ItTjZp}h$VDt}Jaf_*gBM;A4MG^Hu>?h@e)$grQw0jlGqcAs4k6|; zhgqbQwkx-p*I9>C@60s;PKlg*wwm)eccE!KX9(FxISM9i+n!?T#>>`$w!AlLCpImS z@<;-__4vVTzJaxOFE-Kg_K!A@Jfpu1P1STJJbx2DRso|m4*4m>x2Gg zJFnx{BB(LasMo(=qk4*rYVabxmJJqU<8#{#qQk<@FlY5_l41P|{$W6K4=kF*YbaD^ z!7_W*>$Y(Q%JO-(!TNdP6r>T`Y1(U;wd_grOD*C0CTf1j62NH0YB$`sJx_L7ZH?_a z8NY86kydZ__u#iPvosYN*YW$E8;UefgnLIO`IP3rCi)$}77&r(Mv$V|mR(U&LN|MN zpw!0eW`_VZZ>-6CLKwX*;B7`9w9?z?cSpuWKO1{@SUFPSZsN{jL+OSDw|t#8osy8{QQbi>mtvjxjK1XO5BACWfVna z({c}hXxRL5?KY$@S=2XlFL|KfHz^PLMCG3^+3~ zKJNiEQE5%^0vdyD>;su1ouUesFXM}w)3BEhZ96XnlB$7UwAV&|4g?u=p4RUf01U@@ z)|d1&CYXqZn}<=c&B~#zBpkHy=suVjmEO<`c+Tn*tIHfP8X&owbE>n7qCYeRpRbr# z9d!g+`8HtkG=<$SEu&aMG+;-W0;d? zaZU{s+i^TKK^yzLO4T#qWn4oCz~C-V*Z)(BMnrm@7Yh(q>$SavHY&-Ce|6;BA1|0J z?qeO_DW=9CCF>MTHT#QwN!Rrsi5PmQ)+dBnS~#OR{Zj@)DY-yS?VTMdJRFD`9-VLD zKp2uZ%nK1F_CjL^`d;rT?V2!Zn11ic+G}UVuBLPU`-}p9vpnRGXwfF}?;-~+KI{{kyK|*sjOsY#=YzS_L~D9#UfCf5vNg8aU=TjFP*by zGEr41XPt5#M51W@VS6U9(blSx{m00m<|A6=J5)LYhkwN0sGn%|^>QxiM?X}#K4qG~ zEXp;S11dqu@*F_|;CX;?kZbkA`LS+i<%2l@$tRgwOn0ZKe6c^Bzw$?k33!|H{F~6} z$F8>*Oxpn8eIF5S;oM#FpM_OSD#$D81Mr2H;vT?uWww7q#s9l>`tp$$r06FXyn*2G zmQ0iu3-aU!l~*bGkXJRDRUzrcx~64A{xA*J%&8+Ya>AO$?g!m~Z%{wSv@L!{$9i|B z^5Q~xQO1BcQ!+u1fzbHAWtwS5uG1l~VJ0MHN3Q@W2_GvIYxUrAqNY`pylU;Rvo#$L zB!u+tXJ=BxsfYUituWw+>AElvD+6&kGnTD9#*f5eHGa0&q)ahKs^{6CnfJ&fsrv}q zhnRHd$aCQEd*g!rh?QpSRbT1yOv-HQ*@D;3+b>s3_zJT_ycM`D@uaZfmfgIE3?qA4 zXWl`_d8dkHcI*P=$HetK{pT~$B_Nw8TYjqf<`zyQvV}f2kyGC_{{pk&O6M($`(7mX z!U5&BG(LFL@KSob763qbgj5qWx=@j5UHaW z0+Gf~!bx9qvLVf{QX;Q0!!$^eBu9ecy%%P1kp>pe`(A}>GQwiJ_EEBPlirEa!}AUaUwio=BG*=)uS|TD zdUvvEMLa^E+dTxV>{BU@zr85}+Lx{=pF#0(e(D&L!aPLNkO>qTOc&{scWYAo7EgwX_gWYT)D9jOfVQOa_Y z7|*}MV^6$HIO#Uxr!S0Ch{f`3GYy%R*%ty$B7y#is%tin>oF9<@?~ z_ci2tidgQ;Mz`KaVO2*1W3YA)B$$!ky-F|10I_-EaH8%c%g#dh_h4Y8N@$TMY5|k( ziue~uM@6!g$dl`Ow=kpOyS1?d-09<)>!VY;*oUq*ZDiA^QB&tr4%(2;J5)gzaiquV zjbVDh)8#bzFDXcKb4ox8qVaM*C)?TpY_}88TvCY)SkSwwsq7q+TsvVsl3ar&Kd>JG zp%dQzBk&3DKr7@3sv;=#cTODwY7AQHtV8f1|DR3^c=#L0kP~Kq9ZV^?6bChnc9PN?3&oS9T2!nVwhV5uabnFi4*bD}ZQpa3y(x ze?$lZ>q(xS5NV97e9~ZS-_%^$$<)KnYDu5N#vj-r)-|H~!s*CuUY$d<&g z>9NFIy=Z};J794)`xSM7tC#~;^-?VZZGsC^fNs#t-p%&=Wp0tePF^YCr;TE7L*1mt ziZoPu=fcTHyRx{)MdZV;YvVO2nbULT={84YV2)p1EJXc}*-Q6C=XRWYR=V#R zSR{FIvQV;T-1eEU^VLB{;3rlEhkZDCAwdmXTD*U&cb7SiTgA?uvYumvDw0->LO;|G zqGdyZ!3J#1X7y2ftnsJ6FqvTRbxpm55lW)8>8myAg{oO;&Z7br-TeJd>1Qay^sjm+ zS&37Nr~sIDc1y?~UJG>1a-qs=Ewl!aLj$Tdgljf@Yw9UZuf-^xzk@s$#8s3 zdog`MAMC=oF2C9E-k=?McF;f%QePL+CkWE{tXDGJ5QAA;Y48mDLD1f+pKX-YfjJqH zK}K1goGKrX{xOX1UkK7M@g3|3yiy(ZOaLYM@z%(Q=P@YeS$BSGP+_Cuyn3N-HJMLm zCmL8KL*nMSOukX&Jq0#>%pqj59YOROr$(RHMytC`m2>MQUQ#+24hAbx`0}A+T!Dz@ zKeYgIt(GJjWUW{Rz2eJ<)Yt;~IqTkMU&;Ag5&5l`sps65Vz$rs`zcPvFxsuWk@p`e z9@Ck6TKJ2;ac)Us^xf4P(En$rCLbB3NhU%9d}OX}cv~01&BwP1KM6wgMhF%cRvWcD z$0P7_P^=U`tzCE4f}_&PLK5yEQPM^6`2T6|J)@fXx_41U6j1>I5tXJOMQMsikQNaT zsXcWh=>SCmk!cIq)G@qNEJep&;vwj2%S*VPk4XthjYd`?>S?fd+(P! z{){~`!rn8xt-01L&$H&L%hQLMpe3|+wef{Z!0ch4u!!*T&DwMPuk6mP<3 zv%UJ5JeE%C=q|eKA#AO3_{Y?rvVcs0HKY}5gI>X{PBu)dwej+lGYy>eijxtrWr%B< zfTHFr(uzjY;u8HaFW1wEr|7jFAX)JTIIbFH^O zZ`ZHkN)&7kq{#n6S=E8n_;(?FdJ89PtlQy$sg4ctrg28Bm2b*l@mLS7HkjHAAE9+D z@~kB;V23Nd{BQ+3m08kXRL7bn$?saO6z@MLgQU9qBrX`x zDrxp=d~+gmpsY6=3G~Ng5CJ^ZS3kazge#^!Lb(Dd-BY4e29*p{`ofl}k&&75#UR;L z&~W3RAlPa9eTe6mS*pz0FR@(KwBHbzlKSNsOKg+Vjj1|6!>qqYOly{00FI6|!bX6;08P9ALeQ&vF2fbv5srkt#^Xs@DWA2OFu7{VSw9Vjkm z;))w>c5DB>4Q#5K>kkHZ#RsZy{$T_XjtDnLeEFNMCiN%LeJ@k?t0JU160>W8+@5U0+|GtiXv9i!)c*be>tgzR$v3ZzAN`tsvzu zQ97#??k0L<*fW0<@&zWM<DW$D_h z+x~3_r=PvmIV2jC2IW2Ty%G7q&CLncTw;MHLLd3`-8^>{cLh}(ToO!Rb758zWU^6Y zG;A7~Xq?8aluQkEX%u8K8AjYSD-=q5pQNFjQ!B+nBhLNto2CD zh~VQo&QU#vHbQB%2zuuM`h3y$5xK#gXy3R^#-)7cN9sX_J&eHKR;e~JKSc!pE-lev zULZUkO#9F#SonxhDlj<4AZA@%EH4yRMm$gE4v`lU1fi&-F%qQOJa5wCu2cUAhwRqV zvSE)h7M<&J$qqQ-iI=MH5c##ar44%%(g+bI>?D(nhl5NASM1FF ztYxUfT(1i$-^?H{+%f~wcY`od^#HlXnVi~}tQztn4de)1Eugn6_XT83J$3K5*bI7T z*Ui{GTiM}5!#w)F4k^$W>vN<2w=3XmPB+9Q#KO5W)O;*9VNIGZmtj4uD4n==)MZ{W5bh2YECfO#Wp#=rwws@dey1fx=MyEz<_5)bMEaL055xaIqCr<%3f+BpQHoG;#az0wkp@&)-Ai6BI) ztR4?a2-$eGVYU5G_g00kOYC?IUEW8nK1!E&C6L+bY0u6Uy8CCkXsi@5Q3ht+7ZG76 zI^T-O>$`8wUiTGcE8l<=k$cBqbx5_E1A_3WU`4R8x#|+}6QhOdnhIN;^W5Hixs0s< zLcJs+^`>=jq*wxGWat78E6E>ky)evfKhi>lljpt3U)5LynPsD4#&s);Yd(_lEbCv% zCqz5FW`<(DiTkk2vVy9Y`S+>|W~4U~aQCaq(#iSZWVAl5C&ac-bl|6+^;)93v)q~9 zpPnhoX(xQHVGxbh-O1zDYdVaT-gAF%>ox?Op92RP5Zv+5>0xltkDTJhO5I*=NM`#% zvg5AurK#ciXfr=vj;PYTZsC86e;sZPWS4Z9Uz{1569Ju$?|g(CL1V@&afxIl>&ka= zIh9r?|2{0(AX6m03+wgeqSu54&I@Nw2es(ao@p)2>`W;F+YcRvrK>g^wud@?Dci-NEE;9bG2^(z0N-F;?SaTcwlwXpo zMVft`7W_T`N^fxE^xTb)o)YgWIQuMTzjf#^o(3mu75ykth}Kukv2nJK6)RaQT6t%I zggRXR`J*_PRkoLwd5EgyY@R@A$_yLJTU_oW}?crWk6 zZ^))Ar<30!^JdijCguz+9RlraZJ;UNl4X{z+)n0>C)ojlZ2Yc40YOv5Vxw=Z-4i8H z<`NlPjmyak=xz7Cx&>WEyIpM>ixn}zVeS2)f$S_E+VGt&p}RB5Yd7hM{jK9I3_FIM z;Ss;j{QKTDYytVivB7Jk#hI3&tsx|-vWg&!iYFsi-&*9I{?rVdWEhfZi~tjtM$eVk zbx_wvL^Icy2NrUl(I-uPL(+Z>SGW)O7B$!o85dr$?6K9U_)+FSiR$j7<+*~KD)4(u zRns~3{5@kdvZm!B^zP+FI6@-9YvW#eClx}riy&Em8Jyj{t)26WR|YL@8dMv1?qKy# z&QjGxH$@mbzjkmy=mQafAndT6Q{<#}Rn@`$?z6S6_F^|H{7DPzkH#|xVO!Pi>}!?{ zH2dI2th}YaJKjD>-=z^LPX@Dr?*6>^Aklw68gl0z-q)tOuxccT@`Ac@lP&coeK%Fk z@uc9+wQMcnp}|?YR>{Iw<}d3Tk!9obxkCJ)LzCw{xZHw(O^tNpn$c+D6RUH0{xuHm zPo>k^(0%Mq+6Qvlhaj8FF?V|TQsORJPrliZk%(ay40c*Wb2gijFeh} zB56!_7r?dE+iHZPFpz$7H++Tg!3^JxMvBe4r`|{Ttt$~cUFoQdkR_lQuR%< zIUf~!xE4xHvT#nExIe?9^Op7arE~WuT22gBIl6WhO3fIb+w3&g{aaUO!+3`P zH@eX&(?+yoVn%DaHYiUO0HjSFTX>uz3QvEG?26N6@EVjSoJVmcXe|6_aFp-;%Bi#xEE$4pik+?C<*$0X$s9 zxB|~Yy&WkzoJE}SO;jDQ(#^EmTuup=^y!P;1nePWM^LcUqok&S{3#0cv}sK^oQ_eF z?|IHBhhrrs+_VC=USPdksSOQS_Mbk9B{jXz8N0(O8L2h}US9S;p^Kd`Zgi5wM1T*> zr9lDHnrX&q;U%0CWa7n( zHF+hCRS_EaC&#O*PRF3Z6F+E6j6n_gP-F++EO-tgB!@Z>v+2t=46_b*VtR;SWL-(b zg#)k-3sB>xK~}(0g1P%kX`m6@k#ceuaDtX2P?NLi&UH4FbS=7K>xt*a(KG5Z7ZXIB zFRQfPr9Ox0+qgm#1$P}-p5j|N*0JmxmvL`2Zf}?bu`d>~c669^<-nIvPTMa8${AEZ z>Fq3&ppiAB&a&-Y{MPA6?|>rbq+aR)jY5c0vpv4Q%=2wzd4~<`KVc|(o*ZG*sgiQ( zCpv{}f7<%#yO#Wge7{lcrpc_z&bG1)j`$K~KvNdj0n#HL@PoF3$4@^!8CK}iTN;yf zYdLG#YUwVch$FvR(pR$2*tY<(^WHySfrp)hxNm{kc(E@a=C`A_BAG?do$mFJ6RJA7rwaMEbT`oorzyv{fzJ#|G4s+ zMbQej1RSnC+6PS1yCf>uKK}W=Z(QgUHH>bW#$Q?vS5m32Hk+ZEWvClSJHT23MvJ_c z+%HiOa8Ph)?o^fU?`58l!oD61oW6L?LT1#-HT!P3U$lwd3C0ZXU3c~uk~ivvaPggM z%^E_|$B~puzR@j?=VIctEh1iUwL#$YT0IeJP2bUXBmq=znKi$h}&{ z9EO)Icp9uro;YnuXMIf+VdUSjnDCHJtQJy`j7f4N)mNM8$*LlJyFwYO1J?~ca~LpJ zPQN*6XJMn<7@Z?tL(C2S23M&&>+hV${j~(aJ6pC8hFQ5_aZjrAuJR63-AptYOAObv zvtECJSeACRs-L!%Zkha^H6`!pZwvI*(EZvR8zEmKHhgC7#5}y3YJpS^?qgIy2802a;jfO8~w|KY~mmJt=ji+m=tTi*BJBxE~S>2aJc(H6K6P` zIZ_BL0Trj0H#w}_-gJvpZkW{Y@bBz>q{$}~d#^4Wwgaa+<0nZBj|3* z{kdY@p~*X)zC81@z$$$I(?HW&Yr}?x#q%*-`WdUa%FDTZ?#$r1nSCKER+D}O88{j1 z8Q>}*kuUJ;M9CABNe%eI5D;-wvrL%v(eelU3a?*u&2kw1(2P~bTHDcZk^D(ZV=2c? zSHMkvfMDveSg(7=ot{1cH$uMT^yhB`ha@%a>IzoshgD=ym1Z-bUga-e)D`aToRh?- z?WOy@nti$VEQwX%mDhmyZ+#5?rmPXZK)k(Ulz^$LwiK}zwPpc^e-X1t?K47uj4H$A z(o@SNzDFDiY|~WyGSZBN1i*#i^xL*Zk9i}R0(gqgx(XmeMXAY{i{{dj`c2|IQ=or; zWzxr8#i#LU4l$+kn-V-TlkU*v!1Uf7hFAjOKl?krW*qa`0!t?4owzMwME~&UgQB z@Hb{v^mBigb~2JAKilwek-0WMj%2Y2W;9`ltb@g~*1TlYZ-bD=*G^q(z3{ncTk@Kp zNOpv+8gya2MM7osa@q7|ZCU0G@d;$`2hNSyM5UVBU2jsXmpGa~+hT(-MQTZXmG;x3 z9#d`)p6*SM#-Trvu)zJO#!a8hp!^xM7EP9S34D_2=qQP+P40>5S|#_RCz4#-1GaO! zW^Ti2JB|$BIABP@E~ZF>h@pJ!j@eiN?IU0C7VoT%9}nD`t>k9J?hEI!`6sg0Bpi`A zYkI!VhBU_IIAee^C`NlRT@Zb(QJfAR6`_lVXB0FUzI+oU>0ms+OlJAm22|iJi zmufVYz?er>PgV#lW!ZFZ_5_r8a7HH!T3%hhc;Wc+Tt)K|8!YAoCoY$#xqh5Iq1cB! z$xzk8sVdohtn-4t;WXxu1l{?0d?KyKe0N}P1-U^5SX3FNCA;$C^}T~t5F4Y!27#dO zEH=;~5wZh|i_tgf?XIOVTSiM?wL?8h36yN+NL@nu?|&H0BuRYmveUgb5E-)VVsHo-$ENd<*J)YJNXEK7c__5s1W~Pz?J)4hHr>3=ce>!O zZ0pN8uBp%abM>@@wVyAg7%C{xGt@JRVn9~A=@7Pv>gPC7a z5RNl=>u>&SuB&aC3j)oc^weAfFFtyotq9YXv|L(4z0Tkc%lfA^r)}KGioNiy_{Xa7 z^pc9Z`5C&7&sRbU2m$N|Z*a1B@Z~^-$Ng@q+~Xg;daXD&xv}--qcIzcW%7=@$MZ@< zz*&m#6LeL9O=<8{m7*A9ky6n0UwJyTizk1c<6O;#-#$BY-p*}$(>4ncu!RjCm*_)0 zA5H#4zf`o^!8}ctMOj)(NOT;BAKm}+G%s_GC{$KfLG!5sOZ`^Nfl}F+e z25w#3(}Ij^Z73_`7awCtNNyf%T_n@`h4aV5u5)bpNpC2ZhjrY-3Hy}2qYBKf`;Y@m ze+(yn7ER7VeO#RaY@z46w_DXCpv}`IbLveR75lHQ7EC3(&AM6ziG1~_sU^76jVhut zUI)~r!Ign!@1V^JaX0F5!t%Yi_`bk$kGLDMBDzX_(+GUGuB=!T`>UVzM#zO5p~Kw@vQU!gV>-di(C}v-VSV%= z*yFNZk^5gI$SWnb6YeJ}3UjJ3<&yfczY;}OFoUlA_FkvEwP+avV*^0T1VqG{xd;&87f#56WjJ7!{Ug}}Ew~ZufJ+AlF z+kRIu48mwuOEfi|H5GD3y8lk?Ign)Hdk|rPiq0ROM%*4`o_|ATb3bD-R%y>apQi0X z0Wc4j4dWMh;|h=8WelJiFG_X1+_!g0S7^=-7B8Bhb99-GyKL_g*}E_-&l$E9R5L`7 zIZZ4{W=hH8YYfUuL}+${t94f*B$;G6h+;_U62>C8U-fvSr*BT&T8Iu8lRur7+(WQ` zN$1#mM!GV1B_QXuENc7U8*0sxx7r;fj5b@*rDzfF%~TLuwwRtZ@D5U{0uc zhaW3!^fg^XdP61)n+bE8mMMdM!Id*IaBBBPXRtjkajmSgsg9Fx5+#MdwlgRq@#03O zLlw&@oY$i_TvNU0JiEU5IWNkzS`@gp7YXzzt)~*=ANS&3Ly@_90vWwI*PNp=YIc4R zv*|^BVN9Q=n*G-=_{c143{%IFPIr#-cz={BD(RdZbRnqRo&fSzD9L|WYjSNz!;?}D zm|uQcDK{l$o4(X@Q$L?g(7h{ zXPGh7sgp9BmfTsi>5JrOR)2nH_Puy#hY%1*(yweF*KbVgh%lP3$dpZIBS%i~ zesGEHQnso0%sfxu-*~v&1~PKAg#tL%>oRcn1$#a;j^seK_DtK`{nB*qBTEBcObvLu zH?d}ff@i5>D&e0SY7Q(?jY}X)xpe2teceCL@Txn%ReD^#;!#1Ion09u3=J?_D_;4B z#-Ve~*_3}fXsuoKtK~CSk!-J%U6GMx`GldhDn_7BST{a1dt%buw08E_C}s&rw!Ut- z`l&=_cK>Y1hETmBoV;lsw=nXNs`3@e|8V+CdHm}~d~Tqo#v=BLj`?guo|4Y-hBV$Y z`ZiK(35BIGr8yasl?$U=4;cwx%GV!@Sb+bf@*oOA12gg9!>8l%UFu6fCsZo`DiCp@ zBH4KD;mfMJ&kZL2#Xo)om-JUDmBVKc(|d5IoEOt7KSs=YEB~TAHr(qrHb-Rm{yyX4 z^|#y&uRTVgL4K$QWmSl5+8`N(psS-f=63q2Gp1djyX-ae)2M z9ueH72Ymf&O0;`*F)PV?)#TRV!Axc|_e21l1n8N>e2PbGd1u1A+fHiJFh8S?u%`#8 z;JIknNY_w-HBB4e_9haOzscZKer%g=Hy9Fr z(-`R|aMa?V(G8eDnNHYP9NSNo zJdFs>`yG=wYAAEBt%&OF-${(ON<~!=O&C=M-A~Qv{@3$xCjLK~s%VOQxUq;tHkuY= zFX0TOf4MZMo+fYR;ypXa(<@_U#O3j_Uy6o7uIH~*AH?g|$%mi-?CJKwj9>hj1%<{v zDW_H!h6Om+gbQA1PAeuJjZjwY?h^j?PO@h*#7L^iFLP#o@7W_^Gn;QvmC5e75@l>* zmy(AEQET^)x{eeKi4G^%?_u4Vt_0s>xCfouTCRpYXP9Nt%v_4SsjDm*nKn1A_gpxm zF_J)U>9uJkS5*(!V~3{hNY&HVZi_$62dg}(+`Rd4|2Rn=NFfWv8n47$f4h8yx3TwO z--H;i8FT=@SO(JmHLr57#^LF;N$NueRkAJzUd^w1iQk}-LilYpZuWa+LSz*u^dW31 zV8)SAWOOP$JGgEyoDT8YgCp|MY90qyhm&7@>PqIEGOB#(Wb26>Wll9%mfW0jki&#F zs3prluH)`c{JN)Qx|q7JA%#(MGLVarXbO|Iq;koc$c#2g@rqA zSt{-gjdeU#RR4f#xyr*BF$2L!F8eWXtC0Ue(yZKh@=}Q3S|L}H7m#oMg-EFz3o|z( z@Wi(*F)KLZJZkHrMF#4n=sC&K!r5rcqGpKvkIveuJZ}aGboIUbk$Z*QW^bGRdTP-w zkrp@>@MuT%S!S?PV*D=tFtt!3k_CPsQu^*N7mNl$VX_goe1ii9P{R>_D=7oORq*OB zw?-#R(9*$7T!#-+F1XfdG(IcoFBweO1DE|US!gkR%$(NIz8mG18w(~Yb2P0_x&QiG zzj)Hh{KsGx?XQeF(TeEScC=|=40YRjo*&A@^D(>%$TviY_4 zZ?Sw*WyzV+t}!V)uw%xm5o0Z$P-)BRSvBS?c?vL7jTwDFCO;`YWu^4HmDx};3;WSGL_FO3Cr{L&x9pMi>ehhVP2XML>utTno$iRU_PWgT2Ee z)uoku;bbkwhy+ih3F>Ijql#ciApz0$x#4b2iS#P)Xe2X9Tg7<7jBOSMy&l&>-%4AF z!DhqXPZKpS!B)bHAg{HN3I}DjEd85C6+jBzT*V_c`G*5Q#Uy)$)J5)^i32jsj;=#cW{dIqLae60X1P!zHgLUD)l%7m=<__EyxH@D-B$ zG-j4Fx$cn%Ns{@_v@p7k0s9j=M^)id&q|0Xv)>x*%NHi}8YPwBhpv;{L)f`dXgNy_;EP(oW-}%%uWriQa)=k)l3vcPT6M zw!!@320F-o7hE(<2-}X_8O*m2b$Z5rK9% zaBBmZE-c}${-M~5Zr#6bJoSJE4OKuBqMO}(&94z-!sf$TwA6K(NiM5o4Q3{$jCSZ7 z3}wj!sNj%ExHLk=k*e^LooBL0;@nFqf?yppLnTXcKi0ya_2JJ z^x<}Mh1Y)W-y<$l-++9`0h!9sOqAD`$%E@c0RkwW1Ix!_b&{4+(Kg$x%adHtjj=Pd z_Lx3QV*WhE*pB*ZH#lCaN=Mxq$1W3m%nD6({}6sg<80~n_WTNqYdJVs*8!g>Z-O!j z&-)*CaqWUY_gJKf@A3kIpa>SFu`+b-&+Tru!vw~&0l3OZUg4vZfxX4?z_kHikMY@jh~=7&4)^FO)gI(6sizMEvc3s@RQN;DSR0XVm|if9&8?jyBXTt`cC|B~v2nyCrO6 zK@(F8P`*=Ovp#sA1^$`YX+uBEiaiDabqsKH$m4*$*sC7!Sp9fPQO)j&W%)3T0fLgD zdbXd|9D0Oyu1>oyH>&qfBGdAMKG%7_7@0N3 zDM7NMx3y>8=^C?7n_{oa4%swZV*MU4RxM-cQ3nUGS;D=&9uX~ayPJ}-rt^3;CmcBM z096|0vN%V18c%yYvB|JO`<)UK9s;iIgoV#u3%AHvEI#U-UgBgAE*vHQnaPCq9og%D z9JjbgFkto-gvN75hZOHEgENY^?{FnSP)_sOSIQYfS8r{WjMG<&eNt!G4w*e(Q4v}J zZx(5O?u8Tx_I@a}S5^7!Z_&+3LI8P=v8|@Q=Q>B3Rg3lCth1d^z3nQ&XLM=!h8FE> zaFA~GY=cMms7I=!ERZDmD2UVL14J)*wWCS12#xR3rDa63ll?Y=9FM)DF&7~mht}u; zI;|ZUt_syLm=Q6UfP^K^JgISlF}&=vU7cen`1F!NF)m>HYVfMa^aH?}(6;m^u@%ub z>}@`_F7gi-hWZ0Uw@{|LBwYb^^0#t(uEhDMwj6dZ8Pr7z>6=GK>M_`zqmdXQZHFM9 zlx2A->B05_$%*LosTYji$Kd716TzvkgQ?U<5_PT-KwzhTfV5y)H^%47B0y5Kh7o19omXC{s+Dyd-6#wUSVjnZ!HkPkyrf}R6Kw9&si%{_u%*Q zX=Qx!f+w|kpOp?R2>?;r;9#n#Y|@GZ?JQ1vs+~7N^}a!a%*V!@??EydPw4)dozt&T za;0)MI|6S8t1P9XnTjmhst|gco!5MMj)dJM7oPu(^G_vg_%+T_1Zv!F?{)?hj(xM`Qzr}GxNBe7JvHWE3uCn$hIEJ#x7PLLL+e(Zr4 zZ+06bCoSpNe6O1LqMWcH2s>zGTiOjrl7~BDqfb6(sSty%iI-*uq$Y{LK6ittxAzsh zE;qm(<319f&L%YubsA(y2z~hNB~ZD7nKBF_)mIQzPXJ2gjFcG%#KmMuo6ORXJv_e9 zu5(dD04KSu|2i1vYCT=fOevLEI6Ae+X$pNO)K&yL!XjC1K74yh87X@*`hqIJb=(}ls1t6SmM&f9_4!ZD^s9>yL4z2lQ<*r1#RWzroZ|0vlAFR0K3W;VoCHI!B; z=@BwVxTSOTS2=u)QT&I_-~A*oMUqo~>rTnY60|xdacN4;>0lo+^)W)rDgE_|=w@y% zW(SB0h|5&D=`a`>ypbt558w&7bHHuhu9?1kAwERYx&{%Fzvp z@KGv9K37;_W7Cj9da0(TB29;8dS64{h>JWrdR#82Jh&h!8NtuI^Kcp-$y}BI1~sd{ zx4%5XSbdRb43fu;rz9>S1`i__V8H0nKuqj45s_%`Fy>fY|F%N?3L?d;iugMV(+z66 zSB&oZ8$mv$7E#kl-HmabOFKTet%(t{PNPhbCx{#O)1&LUrI+g*w}i6_Z_(~ z*K($iFPn4exy$td_zUP2jdBJwl6~6}B-XDN%1m-Y%GTQrFP*5d0Oylu#WR)F+$6Z1 zZj&@XxB;d&JQJ+wzhCyy*3&H7_R2}t5m0vD-hM8B>6eH$yp4_XsY?s&Z9>pFpOps@ z`e88P?*vJ|-7xE0MdR%4`z^I@V+&E*Z>ErQ`WyEuTRE-pIM>eww$54UMi1e|$Nv12 zhT0;wA?fYv?_hK1OoPAPlzJFn} zJ>T7Rp!XflD-R%Lj=C4tyN|U%MzGSIM=r32-hI;?uVzCYM1sF=06mHVFn+Gzo=fof z5#POtF!TPL154VLJ2o63?=}?C_N6YtDfoW#G^r(9X*U1AI-2!ItXc`ev_CzH5SB0za z40G2vl)dQu;W!YHVlMRMn9;}pyrmU^nt!%ZhUk4~_66cHkw8PZGWcNFO*PPk?zS1K z=Nyd74vt>KE**oQGTrO1m@oVhX9EM+nY}zs5u1RpFwY_W*%;`KVZ?ox6frR6J5i+E zgqHELxR9xk;TyGlC0HzAiah{u6ta3YOoZnyJVS2US#tBr! zFg?c2@-QTUIHmtM$VifZoN2s}re95cM|6pB_SM=_mBrmh$CQ9vp+i9T7JTBOKpNN; zy2Mx>fg4G1kO(w`NWN5S<0cMSB~f(3G#Ym%5L;qem6iPE-La4;(buU=L%9&%KY$cg z2mL%9!O^X@J9KblE&W3Fn&pWD%Ls*(FNVtx?hM)6dnt%DuFV@C$u|@7yl)eO5xchE z<1X(pNX8_R%m>-hCWhZRvvk8;LY z@E8h_(pFu{Nx|d22`#SUhJwc1mCLjINc*Y>hqRwY#nmbJZ3z&KMs=Tp-Ly{D`%h%LrOq;5KEAtwyB@9(; z`2;S3c}KKwS1<*Fo51)|FHDi$+{#YIG91zEf|a+*o1mf}Th=s-+%ZgwN`R6JO9AKv z&S{eHbywhDhbXbjo2Pg_Z`@QPx5&``)?N&pZ4a*fIzZJY7v#t^22+}D*5M2E zwyS53ppKqkV<|g#G$41LLbN7`q~~`Y%t)tP<#v$dMQ**Dt*#K|NU@(8ZkCFeAg19y z&q{h*Xm6KhX(-zMaS9+}>hpQQFer-ZlmRuTa|4+uC(!mE2=&q-gvumU8A6lj+yZ9R zv#YHfE{#Vg1A=-+9Ugrg!BG!jBtRKGIiSH)FUd5k*kmOyXK2P4_M6bSzgmFY99$-L zs7y*5Fx$LLW@B>lyF*qEv0vmXF&>vgUceYn(lu=~UiwS(-7n~=MkVxA;{AAKzEae6 zu458RxaKE$YBh|zomOuazU7Eva%*a$=W^+uz6RbBch{PPGSC%j{PTsk=bZ<3eKfPa z|Ij4;B1(r$2pGnY>t!c~Kdgk(5eP@G6_v7V+A@z6{6=GGtmUy${xZgJcU%Cvyh+)} z2Zk+gQdl`RV0cM5K!BrR4|aXMshvHPjaBJ%$nmC!6uV4ADl^5uw3KrE`?#)T?HipY zEv3Hrh&i<)DY)1%9WRVwcPTc;@9u5j#)(^5_zVGooP+d`#MpLY@qQ`eN!I*cgX#z` zmsPUDn{O;m0n=f@QX0!#v|AyF^TXv^~Lm~7s^NzZNNJirv^fW4s&H2H+o`IchP~?HCF-YuZ37 z@`hCs~zcJV1#>vczP6`J8mJNg6st6=YJprjt zA5iX;$n`U)g-Uap;+k*lCf`56f*Sg9PgbSRY=XO7^{RuZ-yw65L?q2KcI}C%HO=<4JC5+uZ97N#_hDS1(a$Ws!?~- zsMYY1@>nrzpS5|8L!a#6PpaQ4l_ev?L*)F=-8l9(O`8Jy?6EPTUx+@9Mpf5Quw+lR zwbmq`A@#$wAGij=3O<8ujR8G;EVH3O_s{9xP%o|{Uh)4Q`?+3FIcc9pcJ)wA9K zPxgAhK8UTfdXQ;6*RD&O5{T75DlESwve(a=H&xmhwyKu`?yq8~?29Qx#|gN3sz!mY z&I8z(Qzw31FAI~653{GkY-{WEr5ko~sfZ@?v2M@(`6EKpck}@pmvSr*Afv4A%?RQz z*v46A!A6k<0FMX|*4~ifzti>ukRyeN1-OIe;W9*!vc-SB%jH(FG`_GDR4jHBtm83%Op~*!Wp(D9h)! zl)$p*$0WI;5NI$C%Q(Yx5S^#4od)d~@V*bLC-C^IXds(_yk& zzm;#F<@1|vqX0~SC|k#@iOH+tIydh=*JA(e=~XBvi;2WgJF%t>>aCy|bngr0vqz2| zZUe0Izv9%X-gJ7=l?h}N!$0T^(yl>GN${jq6zj5DEL}~W9Zt;;nC`=zZeX;GA5XRZ zW)n56lX3S5>)pTKuaq+#FuD{1)_-qFYQ{czjT>C=cLN7&HAr9I}&pH z=)^%=MM%T`{x zSz&G?2TSUF$YZkzu$^DK5OAxY8?s4!&Cbbs_g`*{BK?O zMn5K6Zufs$|37^$sW8QTg|4x_{g(^b diff --git a/examples/text_to_knowledge/doc/img/text_to_knowledge_example.png b/examples/text_to_knowledge/doc/img/text_to_knowledge_example.png deleted file mode 100644 index bf2e2212268bab759100e5365249e174653e0563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 754435 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 z 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

  • !$(hL}>fnDuA)uUtb|v6p`;AC(GA{ZLwN= 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 TPvA2+A|)Bne(Lz0Gle=e zXNFz=(BZftW!LU=e>&0ueH8!M73$a9S@tTOUa{Tg1i|3S0J<26D=24Tz(7Y(g%7c3 zi<16RxoB9s)3>~=A#&~Yez>C}1e1)5BU(9`!`@&2^)(Q#n4R6(HWgF;RahrahSvGr z$^ZS?i2L{7uS}KQen?cXtYkB~(L!|wMZ4Gs#UM@A2u0Z`?9rmeMxhe@aeuuny`*J_tD4>nR%uz?Xc(9UJttv%y<9( zjs*v8h#q@4tA(=iSzH8F;>bC6wLTt1(ec zpo@_}_z>5MS8D$xehALBQnWBv^6c#JJXlt??Q!}eTIPH``LT5n3;Ccr!*?x30w0?@ z;b!J3Bj@GSRW!C;fW64A$hR75|ATk>v+M_^vC-~=KHr~b{&?M?d&P21Ptb>l?h}oD zMEpU!c*c~`*o?tqsHIT%=lme=AmaV;_ zn+5%Be|e)rK8tFG0`LtJDw3Cwl+}&tyK(Z0C#&B7gR;z^V0||iGK@(own`9kDlkqO zP6mW0@=@lCO_UtMB!^Q-g89cJNT>I*wE`;?+~~NFwhWX-Wk7Rj|B>$73HYnk9_?Yb zgPrU3#Xyl%3H)(V83YdVqX5s(b*Uz)O+EXb0IZS+b*oLh<1NC}WN5r|;cjLmdO>Ch zwduz;&hj9;8W7m|44Ep!s5mEpo*A?DF70#q5Lp zult)*wOufB$?`%ven}TcDe6_`AjbJYeNQwcp5Ac>}a3UVhq}f`7IB&^k1tnkw zfnPj}O+C0Nu(iZFbF1?$FubV{#OD91WjJ>^azc=Et#h zp*V~)nL@5L?t3QMP0#t+hoVlsaA!JHGm`=bMF)*sR_ujk7^~FNx9`TI>_E)t|?2<)SXEn&PhZ`W<3r*{_*vZW%2ZE zv4{1&h_N4LZL~fD^pLfz?}!$-hX$M03>IfW*1|LJ^qGg1-wi3y99uDu^X+e)mrp7c zS)^)zLIG(;!OR3ODwdNg;k5B4{KOb-Iy757r5Eq{?VwYgB3}CnY;0_(8wQK^V>uy+ zYwYu%d>O#0F3`C4U8~yx)9$RWdE!=LLULzoH9~xRLFCIhroIT&?~F{^pA!CaL z0VwIT465Ms+TA_Re)4PaH$+R=FFiG_q4K?T!{#Ih>X)owxm(d9;`54-agNAR*@yc7 zTp-E0D?tgPkOzj=9RTy94j0e<_HC+rjneBpO@}|V_*7=w%Jt*I2lQDwNUzZI6|P>< z)$0{%{p?qnqF?q3Ky*o}WBA**+XL$nvMct$07R}9lM|aA&xqZU_SB_f&;Dqx>#gK# zp_;vae(6_33kuF>U~Ciez@so$xTQR{IB) zNlh62w7|o(`@bxJi(V%%7n=OLGbu;+-ffyvzF~aepC8{|r+=87@7f!8Q}9lY(LlUY z1yHa<>a%I{OU^;kxV1rx5AWHZUwVGAL7k*hs*T`2mML&O#5A-lZ7Stk;5BN9weU@+ z#{{|h*wlptgoky-`9PT9S@%nNQ()kb=;13%9n+u5lFi0)e>ZDDoJw`Fn8}YeS}%! zFo?6U~OxO+Bj&N=Tzh^wo1e-qSZ8Fj&)r(@)iMlO6!&Gmskyr}uZ2k2Q zl)(a}cux26bJC)4@V61H$`aIW4`7sPj}h+YYy5v&tb8O)F;HRGmn-E{U0-&jnrfNTe}89Zkn! zP7D7vYd_f$8o1=#gmuoWO{YY=_y#q0-vyU}4p<`bjSL(AcE^yR432<%zOb9L#I$-{?`5y>;?ycr>a5eWYeQE$PPRoAtR(v5U?Bi$_}-Q7q^hqQD_he(%ncOyuO zbR!*-(%sFT+~4ya`v-`yu64~h#+mpH?$5WvB==^aD*h8Eq;M-h)>j173lTBl<@x2673;A~ z{=~#YbDsg58?e+V00Dg-NIEOO?ymNOw-~Qx{qP~_pk(%2$m{WQjsC;sUxUg8WVz5`6LxPP?V# zJ@}mX;)v7ud6bkxrXqhbX0TvP2tmm}xUgsi$(=vabGn#lqEr&~DS+Fa(nO-N^3)!O z(eT@H+i<*5I|?jiqgS26>lX_b>U4$*vM0e;U(8!eRnIv{7J7Z|wFX>qs8KIqX9hGw zXgr;Mv}wd1W%*D=ICFd#sr8e5i3U8n67m4@HOz`1IPTZvz3dU;wZH)q-2w84fNm(Y5)&?emf)PX+;3x(SnvPHi;xsJE4FS~)Ni#@LxD#r z+Jqi(KC$Q4895&UpH|b|Y&98Frdgg`X{+DLf$6vo{T}lebS3Ow%^4Mg)_}N-lmXk$%8NupuK$=RVK0o{A=RG({KnA zlBtF*_Q;Z#Fd;LfAu9Z@?%QN7c~~qY@!wmQfmdrH0*kH$j1F9;zY#Kii8~3=C&X}k z9EywbMx5*~vEBLo5ZiJxk#-ejSGHQm`FiJy%4U{Ly79H#C35aLfJmJZ*S)FBWaNj`Uy_EGCS84-}fS3rJb)|VN7uQ=_{$w zXXDD1#3L}C3c?`$^i~&L>ey0m#Nft1jg@_g!hS0bMpEo??h@~XNK`W6%(aBYcJF4D zlr|94QSbHf2b z56K*8l&~(lJ|wqcw?SGEOr!nccD$Sh)D6l&>0ExA|MG7eW}Ck0rhF{46GLeH>3Syg=*;$jrpt>qjEcNEE~j zq!SgTH5P)jy8DOCw6z&{0a)m%z8E6ZR#doL&4hb3pDku_9xH`;&EQREX-eY*1iluW z;!P&awDhhBxwo=#DA@AfY!GxFjb>Gm7la;plWG#{i^2XCA6up(6&0m?+uS z5}C5Q;m#Dq1fkT|6z4{R$B;6v6TM_e?8`qwk0L66e|eT(`N%P< zE|uE2IP_eVaENy$Ci9VC(UYrr1l8oqU-+%$hVpB5Lbg}<-xiW#QG8jH^Y|zN=6R{L z?TGIq)Y&qq{D^khlfROjdNA0+Mc*+KL8Y>P2s(TOAM+llS-#xcF^Y?l?&F;8>15D6 z;YhsqK{fg;6&IEKK($2sdMlH!bp>{fE9x5am06yW{|1FvQ891$)*5>P8i`PX zOKe+(_n{~hBh5K{U=(%w?^QnKLYRLyI(TldBn^Q=1d=7817`r~#7g?nbJ9niufPqphX!VcC@TWVC zc_?t@Y7ZQWyRM#r+^4m=EEK0J(4=;B&HR} zPEWLgfTE?0TWiD#me>U$6B6ekpn8Y`(rh!{C}a~RckpwEw1I#W>iyT|B$i=6fYZQ2 z$=0fx+NmYssRvzG;QA_={o^ouKLK2QM=)i;B^~h_nJ*UoHk^O?Xd;^0SUM%IjT~!C z_F}GtVK`C#zsmtWaQ^gQ3&a}6z_lwEzv$BwIw(K{h>wih4gTusu?9AeX%I{)0FqaI zPrKn;k8yU^b{US~!$S%z`S@DRli*s-oZo}7qDBZRBo+F$<|F}jbcuU*ZlJSw0Upo_H0u!-T}l@ zfW*gLvY{D!dZ&4jOpk0K&v?LbQ~Ny2QDsJcR#`qmhtl__xW4=E@iGNNXl(V2kre&j z{nYyMX{^xw;|N`2TtHx#6FL+)6;&(KOocQ1Hixy$I;cxz!N1v}gJIx0kfPB=gzLz? zGD0mDRA8u{2U7iBTA4;MX9`71h*Fb?V$j%I|+q zv^Pkj^xTV*r%L&MlYB|#cBs~Gjs;zyrJ%DbNS9!+2!{ba(vmR#P@v-i+EcqqdarbF zcK+RhMTBUFBzedTX_wu)ZZ55%NL??}8-Vi`3wj)C)OnePG_4UnCDjcz6n{{Fa#E;x2s~sEcs^?F(g2&Z z`W=p;bw&)Oi=>f#07OGRe^n$ZG+H>yeLe+HJe(1tr4KL&`o85?x^L1Du>EOhDu<hZ{Qjr>#PhDx@G9810@; zGGe<_jp*CNm_PkBLvD=ass1}O$>)DD0}shRIrTf&c{mqcCQ1nWbc$F||3+OHLcIX$ z-KM|-RsyOkTAL_&?7K1zm(lPTMi{C+`1g3XlTGT04%S}L zv3<~*=+52`%ANsgrG{Ys`GCod+mj?ioE%h)2|wSOonKyJvlhAxBGziOU!Y^y`5I5+ zxeD$U7`JK14tqq1`iVk}?6T)-@0~OYPR>9Rp|tuuKYG??XJ#ts&|p)6rd^Q-NXEOg>D28VXmi+eQ9IiA z#)-NEspKoL2eu3(i+^d^{xWFCt5hi)g)qSiqon!P{mUNqg~N4Zufqcbt}2`MU2bzH zWO<0w4!cya+LuZlKrMV1_SIvGHbc1wiFgxVvpZ;7;ia)s5xynXIj&naO?_NI18=x! zj%$oXrjKfj-+u9!MPa}MP!vILpcF3atpZt(tg)|FeK|buM4xqjX{sa52chw$5U0lL zL5_%kN^mo%z}znK^QnFZj;AA14cj;-ShBiVR6pi6^bt&ad>OE6<_ALGBkFqn6j!Ra zUYEOiXjgo|^9MD6-}Fvm?Xtl|e2Na~Ep2(WvLbZBEl@9fk@J!IgKqG;Zb$$GdI1GJ zx-32(njNkp>&6k?G-?kkaiRVWn*Mtab0Qij%)l^&>0ORQ7Pg0bz?X3LN+A1vre0vt z%_IHt`DubyYl>8f6oB=92dinfw|MIma{Td_7>+$!i)RIhoh2fL~L<57|w}xsV8?*gGD679~wnNP> z$5CfwW#!71=)Fxr!l-UE?uN3NtNMN%OKurtRDKse&i9Qv;!TZ_d^&)!C{F_hw{KjS zE=swPZ+TsQz6k<8Vho}$K_D@9qRsQdwf}$67+Bt-a!|9s=A7;BS`l)XBT$4(*XAE2 zhez*^Vc|uFlw4zNGlXsZlptRvS6S{v!dV;i5;w<(J<=;(bfkWJdwYvsuxr=bg^tjZ zHx6uw*7MBW60Ly%BK&1n(1`kV@ZIZ|@(%*Boh`*XE$N$~!WETU6 z!@h97ct})D^oe3t>S(c+S@GTwz~aE<0R>3C)$tb!uHHMSuAoX3L^R9_Y>U}2=WxLu*+&}%k zzGL=}%sWMv-rW_ck3k#ueVy}uAuMm4=$UvpX0hVt{yD%+Hy}Cm2PZa81PU!Yw~h+f zx6VNaGxNh?{kRqIK(%V&n%5=qDe<-Z*d()gJeP2GzL+3MAbS0VHDSmoD`IRy2~~4& z)&%Jd|ByZFd5>|}IQM~bUn`UnAM@xe{&h~(L4$(#&+a=sAQ0Xg(W?xxOiD>f(LvU* zwN#krmWz$an=XLCK&jA@{_l0bgk%Qa0Pm42;#86kqXq^BC8oV2h$_=#^{xw`^3ocJ zf6G$bm{mgw+b>CzDwmS;9N|j;A2cI+jX`gi&tG|GPTu)}%ljOdWf99p?`<6|7%!7b33yY?lE5|uz8Zj0{DP9m0lIVSo!RA=v=Nlf_BVEae z$@Q{!=sWEQOd5@^gW?fg3FH8$%7SV1aehPXLGI)O5-K8NVrH%g7fj`iY$ZAM@bb9a zD-8a&>#_YkU>HD+5ET|9XMUTNj*=#^BBD?0MLb{C33*_prWSAf$Hm>fi9n)AIh!Tu zep&#gsWRqIA3|S72AzAU=C_ZpPgn}0WWg7^C7E6^>z}Pkz8IEn^0<6s;Yo+Bpba{( zablr-K)~l{nm;9?{DELsjllPR&zps*Qa=f&D%QI(}yNrn9SR@qakR5{@}Gw#t%x9nefeV41H3{5xb z2LB_YO;|2Fqdwnw4yA1YGL| zLyis)tw5Sl5dUlE4{d*=7KD^KwP65T@BEY+=G#nPeM=su+=o4DCe7*&8B3q6$)NU>SlDX|3hw2o}PW9pd&% zb}-`q_&>xI6LOUNQ~Jzgju1>#i`)0SVAj$md$46SSWQySn6+r)V_=Bsg!zK{2LKiy zM_JZHNlV2$8Az}h&NoH#_;8Dl=(>~}o&$ThzBD<-e)1_Nl@ev#PLd5=Hr}Hwup`=p zxinUQ?^_-T5w8Q+569Emqf2{fUcF}r?XwExMKeL$95|9Bu$1?cp9UcANI$!!J??vu zqjid&SO4u=L!pnIEz=y%Q8<=?$%2DS3pnH2UAS$5MZ(VM4u-c}94=Wy7Vl#?zrRyB z7z_r#g+y0nfyj!yeE#%rzR7l%j2AXzwGO9ExIo?UWE2}xq=#fDP-?~*wQ=$VVPQCb zcn6;>`Qi1|3&nugl<&nI=d3Tq3nXbj;msK6o|K(4<-27|69JtvGi518BU(hhaL`hx50s?w|4%ezA$k01~Sq24X%^UZX;CCd)TMpuIW3#+Afm zVhs`+4gofEv;QkmqW;C3J}WTv@yfty-Mf5z@ppB55jay2tT$m_*$fc>??QJYSDE-5 z82LG=Ft2b({i(xIt=ihQ6acw!G16&wn5YJly^mFTVaY4ZZ$hbjV{R7Cy zgQ3Q@Kv*8`Mm=gnyO(E@NK+Bs4|8AbCY^cBmtFx(Dws_E^){Wo$RLa#3pInLEG0&T zAZAUYRE-AoFuvPW>a4SYatV6Xa839p`9V#eo~|aVaDOFm@CfyB)f^W zwN}aoHXdo_%<-_->jx%5K8I1#XRdf1lF4_sk&e%pTs4!q?4y7+jE;Bp{BW}4^>FEk zAgL3r%WF5Ea}f~|7N!o69o5mX?r;9@y*>#I`PM$?`d9s@ipU}k+|5XVDb<$~NBO?= zDDzgc#dQ5w$liC4zqytA%?y&B_kVN5pjSA>D=BWK)I#LOg1z@19}(2cDTe_@9|fBB ztRJ|ols(>8)nH1&NPZBM)>bCr+C2fAaqmf`ST3NmgkWE(`?p=gXvM-~1V`GP?+h2O zsuRt}(fm>BzS1HXW8C|BF;r%7{N74cQ)#r({P>6VZ?Qs}xbdnQCyYQ4sw&5~vRo?g z|1C;E#P%C~sOpwY8f&nUfX2wwZ`Y+W%>S0iZ`OyxVALU0`c`U}L2ptDEN~!0EIKbg zUsE47bgwGGe}|k3KJuea!GF|!aM$r283vSUlg|z9(YkqAYx@UI8HFy&K9B=gNh`y~ zIB+sw8~nlNOfuNq_@5A(g(UN_QId^_h!kH2>2hZ=as0{aN708N`fK{cEFCFyT9S%r zs+VN=ZH~QBu+~?6c5xUiTxPxLoaJ;6T7^_{On;11==T%jF@M5-Uvt7DO${T*sy2U3 zQR~55#rSwG^7^svpvy$Z=3Gvjm;L=nFA4LJx>{<5jb@{JgEfA+(cvZ)vQoSH1IVlB zero@^v+-lQCol;1tqp)XzYl}2^U87Y=?{DmvDH;Sbcx0l?bhK&nQbG07sNi6 zOGIF{axgn~!M}ju&oUki1~PEZxKuga$yrc(!h^`ZX#lU%#0Hvwqs) z4HV8v*FB&m6krbzXUYb^Xgx{^v9TcV&Zw~SubnbR%5(&N6b@sN+?ZK?&Oq!xKJYqH z^;0w*6Or>xW>WODUfCM`aY?|%;-CYK1P$n zuGjDJOnM(=L%_nogtGu?NxXIogDFvP3iOD?{pwDzec{jlR*K*Nbqq8cZVLua&9YvU zJ-R(Gx?%f0VNe+ZmHkS)cgic7lF@DcbbsY~wjp`HoB!1{a6wVO89pgx*KA;LrNQeQ zLg4uXjd;S2b0wMN8^RVc%+Rd;@F1Mo;7mO>pu}2b`no7=ZEy=WjgB`2QOLof7`r2X+|A`EwbI4iaruW%H%RETM5rY1{EMZfS zRjqz1k$f$d$kDN2e63%%nXk!3eDAj4bu>`;1C5zjFGEcy0<*$@>h;sflq7$<{pPy? zXZ9g+=I&zdsD)$bSrRU8?kLacdLX!dC;VTYq*whODp^dn?y^`v{gMpj$UC)XehzB# zdAQ$Xq51mX<^8^^-iN!aKhorH(!o^k(F>c)9$8{~e1+}54&R3o^NtS(%PaMVt*S_O^3RR#3QGJ6r|?YoI@ZHOeVZFc=J|IShWzIN*H4O<^*e`^P}WCq0dvyVZ$k65 z92`D5f0J6F+!qNoeRdeeY!Uw~a@nf+?_iqT*Yi#Ldjofyq4U<@`q(M^P9 z)OPWY2Tki*7S!Lw-aJkFcj7k?jyHg;Ud)0C`$1w762(^NWS#2B#=S~rS!{p7FD$2- z2I=5v*nj2QCjs78WG0|r`$#6I zIAF}i^m_;oC*6&X_oR+8T;KL6!;DY`+!@VS!mDmIy5vn|!IG)BlCooNM}owU zSIxr(-sHqL08Sx_v~keBq7gMYC`KfYrz*70XQvi8(M5zdjdqdXcRJ;RIW~Cr9%u*H zqC6u@yo}FMuzmiC}-+}ox&$DAGki=IthF}&5`9) zs<{95n3@Vx;ABY4oQHEF;;1J5pA<>HV8@TPcE72MAi(Y7Q}ChzFDA~*~}AK zVAZXo7K@mj2lFbrWY)hj4AXaPj!au>(?8O|L_g03<<#Z?6R$aXNXN{ui86HO<^oSg|B#+9lepTzL7CIHv@86RMes;b$}*jVlWG$1ASrd!h69j7C! zJ=|6&Uo)6aD03y289V+E#Qfn%ZJaIYUfal5Qb|e4CakjV5Omm409#c;_W-z8PuFM+ zQB27Nm+xoxv=&4btN_#`xpv!mL4SO$D7T)2wJLyc&e;H1FJ$g)ewS^0(wdF-jozp~ zAn4~61*esh{9I(BrZtg^e)ZtaSihUnw2?JbBoA|r2gOcY;p2QY4ig$xceR8FpU)0u zTu&(UnXUKtZ+x=4MPIg-4v;8y2?XOAmyqKP`b^x1Br0E9{VoN~)FujInO-#-4G~?6 zT3fANpP*sMR^LJ)#pvq>bgqJ2`9k2$ef=pb4!-1J$u7wUTSD3cjuC%%l9uMXhDW-Ep zfT)DM)AgRONS^YmXlQWvv(;m4d@Mkg0d_{J0Ek7vCYXLV97X$TEKo82zLK#Tm6{Ax zL227d?d^|RZAP@&b5L?yzB}mOn4)f~q+~|L*p#fp2+~VuW zZjmB&21XX6cgFh(T2v*xLnkdZbMJV7P91B&AGaR;u;V|MKJenPNuzmx{ zW=Fn@Ibz)Bez8Sr!+wuEhTEwW=9khv+jl$QyCiMARMET#iB>aH7rOd+6IBf$M~H}Q z4l||d{RQ&iI~{Kn9IMfy=m@AJCb2Q~*F(to9fD|kU!w%U`6+V2wc{x5Pw~(QGr$!W zf}(4T)M~rI{kdw#DH1+5TQ{;%rfNqOxn;ve9?Lda65aoJ3p_}nVHZeyyZkPKL zqFED|m^bf!WN>?EHyKjqc*20JrpqaB7~FQC!&1BWmR$}vFBWkSM&>u+<3AxvPXVOX zL`_Mu8bDMea^`bZ`6oTOV^*$T!Cpu8_;n=LlYj_xje+-FY7(fPcD;8-h%a&W4Khwg067Akjt5y})`0@Wg7HTD&v+MkgXU&qH z+mpdD_V@N5tl4Kb8`r}6b*w=I9yajnaE-3D2ed=C5A5TqT+olo3B`8}K#=~Yinc<4 zOxX~2eR+O&?`!9x)P%O-nPu%93|z3Ml7Xo_tVe*N5r^zCAj({hylA^JT*uh zXBMPi0VR!EPc%LLvk(PkQc%l-GY!$5mXVQ>$_V^aT8-}jY^zb;kN+ynoYHfyOPdrnRokIisuqIFVju&YSacwJ^Xa{_KIN&#>&aOhG~T2P=j{*j z;Uu@Wa^Ht32t*+c{WTK7L8*t;Y1IV~DQMQ~eEIDB_JbO=abk&%{M-}RZ~uU_5GGt# zw-BD1zz|n9n4p;H`7!(F;5gZIbhoJc(M6?l+AHoVO2B?%LZVWslzCx6F^WfkNP}m2 zO~k{u_dMP_${=5d8kEgFnU?>}0ySinA4WlSbTToXA^>$LUqVR+n;nSG|E>Kax%kUj zM&t4Nqbey?;_w2xwR{d9Ff;mU#0?HQz|mnt0@i zgBiy18mlEGT^yj}%%9lxWl3L8TBb-*Q&$+eV(E+24PkC$Bb|&nOF{$xyYqirVDFwq zpROn|3gGJPO0~XUJ5ew7N}#Jn|LW5$c4vh{t0vP%t$`3jT z9j0{XDL@OoUhj`RKx^ar-2(Mw#^vT?vPh}MRbS#j1m07}l2o|}sqz2r(nZNvhQM`m zSL?cGF7FO{0c{*f`2HFQvD80(s-Xqb05a!}pnOCpV>Wu$e*c+ zzvZI6L`pJ=C#m?#2v^8R{WBwDlm6-zCI9*Q`W;dxkMBP`JVXTyoAySgT@qK|8i&UM z=hoM{K-&I~VsKD#Z+qm^?J3YPT-9pUL$VgeR|9Rao%ViI1%u$wBB-`q^;%QOv!17J zc(UDC-HW~w)%;!1YsWbpaMB(9E{-U+6HEN5W5smTkbB7;hGZGFg$Z|aRI4r!8eoV*IOBe zQ@I=^SCU)!J#w~ELc{21J$Za#30JI=uKFvwa0yg3H+`nHyK^UIMR%yb{P*t)29kxU|({#@ZhomZLJb`*J#=F7lOJMkXkfgu*-BO)&A|>ua9C6cAkt%`$>T{ zRim61AQYI8F_f=ln_pHEw`!-T3%e9_f?$?ylX+HF7G>$k%*;%I{#(S_#6B^(xv%rv znSTm;aG5@LL2mD5c2O!)#u>u6Kl6Q)(M9|#L zM*OEiMZHNL5Y5usgmG)~fOLz+A5K&&9lrXFhM*WTY_&dp!vTJ&g6u=%<^mJUh3))8 zaGAo~LJRg|QHpzI0pr75#A?K0CgXt|Of*K951g6vZN+79V4@dTt#A*bR0_syd*EnM4WDp1$`5PTN1I7A`X-6J^7z6&P@p! z#bOttGRV-@e?a0dO6)(VGn`odH)yZ}RQyS8+*DHavwktc}Uh0R2P)qF6OXnlrzD-vg1e z8>x@Vl&1{{LUI?Li;RO8_HQ7WMmp~I%U|UnGZlju`Y)JceQHe1k+2N5?0km2zE2Dx zS$`R)k-=|7l2kF(wK3ZNo;WbFn7D9$t~B}iBEQ}{&w#j%o|BX?BXS%W<=iFS z>hLH~E2Y&24-2ab;=tB4;+q zyP}m6fU)BKsB4q(lZNR2u(YF)1GJW^*mQ<~D|HUi<<`36XUb9SvjW+0YnFd~*ZG=Y zM_!Sc$nfwS@em|c1A|Pl6w@9@6->G?FYPKz6&4Q;>9y%aBdeRouk>dQFn1dE)CihT zOIO2>)SeoELJhQBeTt|e)lr_iYkosbz0~PH2azH2d>b71#RS#;D;Cp8Oa@#3`I@;8 zlg3h+>}v9*{lfk#&%K+;(yHrW_JYQIe!*@LS~>TssU!-uR`>RJHtSz@hhIJ_2ThKv z!u5&`j9U`W+grYCUl-uE&t5g_i`|`?K$$!FbjigYdi=1WMJh5o>OOp2ScpW)a;s!Q z#e~A7#b8a`N)vjNKJdi?GQe z80!8EXBBH!w+$$I!VoVI$`G53$!h}kl^{W^#DtA02KOZLQt~7qh|`Fv#6-7LeuSsK zxAtr&Ryb7*Q^Gw`j2x8tbj5NcKlaA`5)eje`BE{zYfDP#&$6^%#2S}+dV=GkQ?jx! z*veLuhrQ?OUOYu$8}@o_T`O<-4|Dx>9Q4rxT{2Rp{IfeNewtpfyf5v!ZE5vwG4Vza zRV4MZj7t;qy}M3QcXhtXcWVS0&Hx(v&Nb;YVvWc8fe9gShOi+N$Iw9EzEI-vCgQzqka)+CfE|v$WHZ?`2>cVvKWlQ29ncD)vi>zH1zG*-!ubl-`Wi z>px;a?20X?dv3_3OqQc?4SSW?x=-FVYHe|?O2(QHOdG{CG#oDSn1!5Jyg}N?E!Z?W zrZgorKY3eHN+qt9nl3i~foXUDhDE0oHl`R$QED=n&vWD%U1p&~GLgj+v{`aLKwA*n1nHQRL1TI(OYBHn2raNw1xaH(~Nl8!5$G`hfR6y#Ksi6 zqq_N4kdP+J&HAzVtCPGJlD{;W!+TZgd?r~oJ4Q32k{;}{>rL1xXPBAduBNBYs(oUC zy|jPr|D|o~<#E01i3bf6OrdWF@$Shmb(lf+h6yJkK7s}u^fQ>Ie-kTpR)ejXa(DOs z+i0fBg6d1$vY#9b%ZcIp2Rz?gJP*^ zkKq{1mzTn{Gz)b2SQm_br}CLeezS{7s5S_v>IPM77QJ4O!_ zxjlXVGXE)BYbHC;LHySIrJDHUOx0xL(e=ZN#?{x06DFVCuaA4F??09dbz8I;SHpg|ZSUgS_&r1h18G!5uGihYwkc>$QZL%?B+8DGt=_EsOwFnl zq*Cvl*)R|st1u@tW`D;?MgRTaZK#_$b+-*aB(&YNf9H&9G>+M?s)(W+qH97odsXQ; z8y>3(Q5daFLu9R7aoGQ$Hua#dC+NSK$fuz_P5;fdE9`HjKvftO)jIAtjsK+Uh3??; z73_^(IpUQopqmu(KLV_7_i<$G`K5$#5N?4V~#=33MnTKHJbw?KB29 z>=tMHc4-)eR(2BuH=wOb-bSYim~)Cy5jETQ4Y6c8>3e)e=`h6wstCaXws}v+md0(h@=D&`4{Ffn;|YcmyVX z^+o|b#-$$Uk7oQDY|XlhV--f`aXz^QB6{O{<%!noB#^{&^SQ53-Ll+0G6+Jm{Z%u8 zG(wq{^pB<9XcGs^D{ZwpQdTi}X&mt#x8{d*iBFeq1MB zmb&|=aCtg~dx)YMf04uYPhHp+`PtR7#aBpx?^e4Um48IS9Dz3$36J_QSZy5n(^p;L z!&RB3%f-7~or$~P5akAh)X|Jmt^NYsGQ3Z92(-G3HlXx>jfIK_nu}{TD;=q-u_P-#6dy5 zH8eYeGZ$w-dm%*LH92pfw@lLr9x8nK+V`Ex#Z8WWmTr)r_Msd zBy~1cw7uuS*=ztP#UHR(*?vOG!a93YU{sfX5R-yKojZNAEkRTqL(Alq#%Ze-!8I3F zk+^ivNyCW0WlrMb-!n#vUY0M@FwF~q2RTJW99bmt3Hlt!KGmn|cSr6(j%E$2>s zX5kWLv1?pv;G z*Zk$&zWkAFJSjXUqlu0k&y{kWBQv5cOCHZ?@Qg! z?wAT!X^}heJ@G&~>WK-Ts zCAZWS0>mB7MdUjzhN1 zC-`kZFz9p&FBSrgxU8c*jOrHWW`sgf)7X<`f=L1HmQt@Binczo!i%&XkE|{i%G)t9 zhR{w)c>+`BQz+T#Zy#4Vbbm2UyUv>{V(Jsz5KuGpg>GTnHs@!e*FHUX=;YGAM?`t* zw)_Hv)d&+^pW#TyCUSN@wSXr2TNG6IrDk^?24#!2acC4OZQtf-9%F z_(qOMw!(~`8+jY{edMyGgT}+G=jp36CaH7S)TqTy?yxZj zgI}0U-fnZ6@vL1X(On<(+1WG#6hTQxbO_>;p9uvNGLCeLue6)@*Wv36@fSViI@G=@ zc|q-Pb&8nBU(?*;Ex&H{RE(ySyF|rTGM}&S zAUoBh`?c>MA|hhzRurJe;yXJ#ozrJJn;lm_Fin-iG6v5K$0qG|X&L6~dVE{{cttYS z^Cna80onfhRZ;iF+z)=>==rB>TIi&|#o3FGaj>YY7>(y|d-c%C+-FOt^;B{oYPFl+ zau250!QNg;kC8=Q9*5;uF)rs)Ol!Ll-sbkhP3m`5y&?pOl^<5ue2H?6b{JxG)|27) zt+YXdjYk>vF!={7af}2mJXzIm2hUSasN(30Q4W6}6rq@Kj~GsGU!}F?1Z1{mYgI-4 zK581Vi6-ZPkpgxrUMs!sAXr#49SdReV65}c{UCygZMFQZAY~xDSfjCE_4Gb$T|H|e zBczLNh{SzUT_iR*-|w5w3mv1N<<3T+{_GrQ3u70c3>n45`vjW9jeM`@UJHXSf9s>& z2PY!**bI9}{JV{c(T{Y~cK%%W@uRWCZ1dr5Skgt_`ydpb0(#cf0^6*(Mtb|9{htOm z!whOI`e>_~6)nHeR*y#)h}mAk$kSEza;c4s9e9mJ|I$5y?7DQ}yDh9jPuden`J`g! z7{RDU{Dj~Z9S9r)bOr*VZA4`=eDA(PM6j(xOxvmK~E_U~~ zdixF+>N(r(=|vKc?#V*q)&|OrRhYkg+5SYj}WPKwNrPVZyd`L~y^%h%bwYO%oysf@7&oM5aJW)nrJ+}WRIt$<%*-k#? z=IXEP+*Ik4&458b@ zJeTbID{5q%jT6yTV1=o)feJml9p(#vgD9C{5k1q1o#ePoBY)T(_L5oZ@`DlY(?{6y zo#Kjt`Vb4I*)_q+Wc1<&cEOWd<{C>Wj+%J>(~Y+G>y%%clFq~W)H4rXzs)5J0dU!}~V}fVvp?8TNy(A)M*d z$d+fzq=l(aCj>UU4!CraB7|5AYA-IWthdLTX_2ts`*n+NwneJss)$p@6Ac3Sr5%Ir zI8$SYI0GTEwUsKioql8)K}VPa9ZvyBiSs?Q__UF{f zU_)Pc7Rv2!ehwbuZ-X|ajlLQg9bIFE_2$PPzTg-jHD@wzg)NQmFsbDD8T!QlJvHF; zV5q|_DCynLxru5t8u?pV6aKU>fo_4e@VvXL_odD3My@P+;xLtX=F#i&VbzV~i7lRF zOEMY=ou8*+yqAS|9$Qs3cF*oalvk27+aNHJq7{uGp=~i#zA9|qsW6mR7SNsvI!5`@ zj>@ciGG4o}#{TT$y)SU-aGLw!9JzirQh|Rx3|vn2KAeT z_Zg?@&IKShf1Y$u!F=iKC!$SYxHXMI`2xwGHjux}SiGu!)j{+FPZ;mkAZt43SN%r& z&a3uMxiOZ&%cfcuD>L;GWAJY>+g^P$Ok{F<==WeO{$wVG*}$`(S4%Zsa2K*{+rgjB zhZ5gj0^b3Wrsi-H`GNMu#YH~gn#;$qlFG?L5x3Z15j^!L_4o^ZH-kDgB=PZw%(&&f zcG!k}Ds|@tV0^+t@Pb1lW%6^ZcUIJue$~$aHPj~hP=Ei4i-osEsOa(p=Y#I-Xw>0n z=SYuALMZeZsE+~)sdU8f$u_(kyUG=rmd-8773fec%FKj`{OHkF1yOUbsk$(Bh)R-C z$kNfAojq?8i2YOQgB<_Ze;}XpV4}wlc!E+m(bF5ySWHg30WPaJ|KK;5J4E)QT4Cy# z(Oyl7K7o?^^Ey4`2)+<{vCr{J)kXvHah4HWi2){=teY3yY z^%eC+n;O7B;FI^SBIf=G&)9&qaA1oJ=w8XUgP?;)F-L4zv?<<}CFtl$HK=;Nl|))> zoXSB3jH_v17H=t^;6j6Ob9L5O1Hq@*JhabZBvdtqA{bp34wI;96Uw%qa!gH;rBSlJ z0^htVE1$#J69iUe$7Qv%^1$NUzHqv8Mof-e7@qZuqq@~QI)?AMFBwzBD-VMSbg)<> zz>oc^V{dh~T@4QpM;8;n(ZTsOPcE<1A&a+ov$WF}=IpatY0m#F$Y1<(9Hd(ym=SEk zAlEGKW<>2!4Vu(2RIZ=YbOc5D=POO$z5g?={X#gewAJ~?jIo24r6?B5Z{XrAD>#9X zrtssKXvoQTeOVDLAqK`i0!conf^gnWxmzSHa-q#n-=UPz$wNcJK5hyU7ze{J)STUF z*qf_7QwyG_T~n8&W&JT9kp5C&MLkRiZ)nWK3A&DK{uH6Q9nMc)nlrMrfQXKTS#68G zTdoh(UxZo|y4a8t7NCvS?{0d8DOIQJXxgC}X|D_3Z0@j|X&bdqEw3hyCocCdPkCIv zDWMBO$h8RBlG*fp0Kn@WX!#^BxfiV*(KRVYr!i*~iWOG8nrJs|$}p*v0iBJ?o2)}+t7&#%v&qkh0N8n1Uh zyl?d#wKbVZ(n=;u-jFz}b0rc2AzNRE+jHCxI*qfgwm0%}a+v$oZu`>|pmsyG=;{T1 zAU?}Mt{|`BC-k^CkN*?W1CN=Eyt3BblA3UCMLRe;XFqXh4-@+8pURWHc#x792n2WK z*xE5_Rph)%+<1w^8B_Mw4+ao`DLjVH5Fz*R-&{s(CB`URx>+I}4;R7n}Y60?|7lOEGnBX++I!Ql+PSD3YGUZw9mLQpup z^ge2K^%&Fbx+f$$!3>jiEas~2wW7T3+wy+|aG_mRRqjV@8&zf+W^av7vT2VVk~r&p zblVEE3w7gaEcuZ=CO+-lS0^smM5SJ@<>iv(Q^*J!s!&MTgNv>9+fc}_w|b53-vDFQ zY?kfju9npa9Tl}nA?P$fVZA?tC83tVlE*j8g5w$dCnaEs+jT}45woD-#jA!Wls)Vc z(DuUGYTq{O7L{lJr)ubI-VXm`IE8s1k}#}=-;o0 ziN66la70WD7RfiO`LH-dXc2qbfXlr!_p8NLAZ4LUFthDD%uNff6#jy>>;poUO8nlSot%!pz1 zTy`#tx^O?Uk1y>q-?28jyp+@l5kz&V8As7hBQsv0x|mH*58uhyC=R0k%>KBHyfk7p zd!f@R&k{?biMq@`gMcuwtW*Lo$)c3upJVVRg9|NSW5yFU!o~tJZLl(mRY*q^Xk*s2 zVB|D3VgFUJ{Eno$e2Ok#E(jG%oR+mUDugoN(|H_JsFkc(6l2gKYgH4dMYGoZ^yUcb zORLE{ST0kUVX^~PI$#q!N3XB?Iw1r^^!lt{hsBgAv7&z5xUoMC$mvP|Jqir_3GZ)j zzf2dq`~}HJ1h?7%yVBjU2%yXs_NLkF-OU>1Eadq@Yv(sUa#F9^#e^^F7>Ua@QMNBZ z^Bm3LfXfJC6;OQnr(XdD^T&*R84CWgg8GpY?jJyl(2RjrJZ|Q!1|DgUb8R=;C9$+< zxL2#qcEpCfO0A9u9kv(7mjZwX0Wj{eYgco2S@F=1ltDqg#mQ(CkSam4?{E3j4Q!ierc`cIC}tg5UL=yud8bgE8q723zF68VUe% z>Yc6Mdw@)^7z+K1dst#J%%`JFjZg(&_rloM{v#}EJn=0r42zgHRUX8#UyKa(rw0$L ztrw|lVdj@USN*w9j}i`Oi`ZXQF!SPm#0K=Zo-GS0*t$44jBW-q>foP(DfIdYIWM?% zvYoteYw^~hB5K)F{NOi-=bYYlw34~fM1&pAAcA#`Gsz|t32?0aizzC|8LN5FbT zE!OjkWxNamN))=2=xSiySB*YX(e&MUN3h z@;p?3gptZ9xc0ulWBPzHq7{1_jaH{Vu)6f<70~<(4nC?3_0pTQBWz^b3s^jC8)CP8 z(so+gIPOM^xt9seZz{pIuQ540z87b(*9Ilpa4u0Qr+0OOgrq~!zf8h^7$<+>G6Q&K z5|kAj7+^#Oo8NNM@bx8Zh`$!G=ipQAYmvT|*tv>SpImAka4ZXEAbtj=^R-npZK;7L zCr@Q_IS8+)c+1Dc7T45=enTy)*b;2)*5#s@EF<}s8)@SNhavItGSqT{etG$RV7!BX zvNEyKF{W?VggucpW@+!@^15HmFdj=*C;*tYBf8%eeg`)1x#7R2S>xer{Jio&3q*rG zYa*(cXj<8WtF%!V9Iblh^hoj3bjiw(^M;PJueOW@Ur&Aw=!BYP@P^S*%)L>mlZFsh z3P|{67;_-jI<>c%{mgmjo+9|}q{9Q=AJsJ&q_?;=nQY@Fan*N;#IPfWgNa-!l>bW{ z^3LbwxI|c~-eR_(^>5C43tZYRK((`dP?N+HwlBnvb&g}SV{)53gUZ zpRVZPB3;gFO7~NN&gvX$Jqk!9+z3{55r*rx>k?UB@lfVwyBlleC)m-@vMNleC6_~y zQnpzJOTYd}VA;*_naM-8a|}s*f3_#3B$5wzC6~E4>O<21k>*vb2`+{P&u?I*jPn#n z^RI8>YBW5YZ21E4YLiLMe07~0QUz9`DV8ENByd>WZJop6+;Jao6m#ge&qAdn=kEvT zsu(E$=8fht%15oWcCcgrwoQj#b^Ntohh!&(y!e&<7CJ~VriyP|tiZ240WuaFeA;k2 z7%+vQlJ)ED_7Aq#0HXeIUvO|rl9{V@i-l&Ftv?rIfR`cc0t|0Q$87~(tkyS{Wt6bXPGWJQOQ=3QnFH9>-P4>8E zKi!)xWDnddBZ4GL`r73Bvi3~aSn)a;Zfk88*&sHZt7#{mSQfzSB zDS1&t=e?W2n{L~nkDGwm&&gOUz_gg^<^M74Xzv7gn0Uplt22@cu(GmoZI3uiA=!>k zuF?v>B(`ZLjyen2_-H8@_E!vui2Y(g_f#tzgu@ZN?0RMLem+R;L)Nd+O?7M{uGLl>z z{2t$WFE&63>rB>}X&g;TJ-KWiuiGgD!H?BaH5yTF4-B4rY- z7Sls)bz^@k3P|0NbwS`5*haSCp)~buFM%1x{YDtDf~`}nrz6xW0v2T}Bx+)1u7IF| zN?mwHe`z!9JzV5;!VghtgO{m{8mpts&D!Ov_CPF%8@%Ll)zOy)b^?18^qoXC;%)we{ak0D@$gQXzIh7iIV}F_tDQm;Q zFo55}aOqFQr6o6OOp@9e_tYDmZvbY& zprnpfS&~?sVJR3`nbX@zGo?)Xvh36~Q-HyZIuZ8r7~F8!yH#>CU_wbLn*Kfd?$pRg zr+!V+iuWl{=C$RsnU+du^|#y1}_ zA(xm@pPQ-TH1wpv!~`Mcy>yPP@+7J${FzMnEb1FyizQapM1bdHPSFko;8}$C_lEK3 z|1Tii_!ALg8C7M=df8<1zK3fW5>Ye(Gsj7j71HRafxE4(f(gm=po`UT387r*0y~O1 z!WbRSIZn45-!Z))9ST?kR+C&mW@hh01>$R3z*K%ySm?2nrZ)?pis^;p`gN_@Hd2lX z#k~VB)Rd;Md0?)EK;5!&U;@p4k470Ld#-oB^^tSpXhd2Cfmt|_#bb43UNX__Lcg)E z%gua!L1@ahw5iNBLr@L_+Z8I*dhph36Tk`<$)^z6^9TjT(PTvVBc%vPwJ2V0c8*R? z%5u>G5z@j_z5Rvy`SU#i?ire&@a%2qj5T1DJhjRuvtiJ?p7}bCb5X37!m6<=Hbmc5 zCwTj#5{G&&DtIJX)6yUNvowksAZb+X@G~Zew=| zYvg7~wKxvs-M>dTxX83ZTABI(0*yVnNHdFeTX_I`<3#;ne;=a3!bId`EZkl}ZA>;1 z*f5Cl99=m7XJ&ns7Pn_xJ_>xOB=hz4y}7ejaJ7DI2)o#PsS~98~y7i>3#~`H=@7|LbH;Bf@DI|Kd+A$=@U@n^VXzjg^ke> zhNt^&xuiru`IujBE%C?t2V;ODu8&(BnGr(nlBguCs1INdumqTw!tZ@J-GAS*LH;C* z?$fq9!mu|}%6kuZ_!xWjMoUPxN`FG0{CXbV%jBlj)7|-g!eKm}E5g4)>2X`a4sme& zK!5I6PZ^*{>|2^Tl^Cs^H6nxyGAD6s_b>=_K2)V$U2kr$%ci%qZIN!yrT)I+z#iaONxv76V_aPb!n_){6303)H%L<`8ru_{bxLo zcXk=ApdW6lnOgBT5|8K1lVea33Jt90Skd&RlBCwf_p57C?gxSj4cgNwz{vKY8Wkjf^TQOgrT0A0#!D~uT5)kz4%ALy=E2|chwRS_D$PQIX zW$+(18gPY=%+0aUrzSX4fX9mUT-36g1bapI013^n=f3~a-*=xT_juC9^398#Z%?+< z5hG=7qy5(R=!u~y(p6^Y1^pnhTFrq)q1+{-g05enaWB^lbSf-&Yo-tW!!Ptk7Nis{ z-g4CYoLYZe_VRy?6ONf0JseG*SW}y_;q5=Y;Fa2|r6{AZdv54}fXJoJ#( zHfipxdK`?v=l)IZzy(-2ni0!Bq2TS!qBI)Pc=*wY@@f9oRm6bLD8e9^)TwRAfC^zc z!f;3f_1QK;&4+9Q@6mEL?PFvd+Mh1?`Db_?o(otIj!Y=oH;@9x8RS`3Q9X{Qw;n7P!GbQbZ1HRYEK9hN*Vr+9F0 z(#`(FU$ve#0G)EW7P4^@)CS)3Hp#hF1b|OYk%Qkj(n{E|h$sYiaZ5NM{X#h>Wja5< zQf;4{F0a*+gBA*pA&9ZdvC3J6uFz!cZ*F11mP4vPM}7v!rH4lwsG$ z>5I^3uE@C8On;ZTUYU9My~Fm}4C~TWBNHETYC4srSrhLAsIYfHmkVt1d=O;PALSAx zF;P)2wDx;WWUP*86I`05tZp6 z!Pl_XZ7j@8O%Gf9vc&e4zI_$zO|>~4l7bdOxR&F#q-@vDWqmsL((gr!_2(zr=#ryX zx#Pi@k?sxDLIM>FLEj$#-e}#_)qem)m<;L4c2X zwduv}i|MYYjXL7QixdBeb=B192b5LA*Hq71Q7T5^Ifv(=T5<4E5+jQk^*CHZ;_9nf z0g%o%=4jbPM)CIXg?ssnLf%HBeL$G|Ni6v$olz}9K?vE`p7}BjIJD|8`J!!Sov~lI ztw*|63z74Wy~Y;$*6X1ZWJj3Jrl3sKQ>zf+pU@n-56&Z=>4tbd~;vE zJQ4B{*ZjzgGk>k7W+q$KOk%@}}KPRxJk^>qG;G%MSEewnWmC85~V#2!ly>seP zOX;xAUpSg4KY}$cFHR#n+7O3_>rmfmJ^sm5H&w7h4+mLmv8XaV{`#b1lOHc`tJ0xP zd(3|Tg&a(>b*a0cCtfDeD*pw#0*nBSPdPlJzTjC|*nt^9{@{%lFmP0s^V-g#eKdS**31)V(90-9^b{N@$F& zX75>zCE{ejBnDh3oB0$*_$R>8qLRExrrpEaOU$n&Spz4NzTvnhH7)%QcJix{_1`VRk;F#)jC6TJkT&DRR_EiRP!}kj|4g_ zzMIYqI;%1%tFTG_$_Q45*I#{dD37N3m*Y`UO*({KRJkGhBd=GM=Rnc@f zor|BgQY+q@b1kc)F;sFQ*lHZkFNe5C0c78R4s^`l|Cr0GO*TIyVu>(ExvClovKm1# zgluL}1`=Y()G}!XCl*8NVx`BK*Kbv6TC#3Xk_H)H^L~Rhlx>>XX{D9s_gX49`>^^NikZhuHpMRiE~d zxn~~*yVG$N7u>ITCgZMZpOQ@+nTU|Zv{O-!8cx2J;v~c_M&Z+`WSjVs3hu(b4Gj#y z3X0Uk!X5ftc0T5iV1xNVcG<1eTzEvi!wQ*ue1PS<*e#3`je_nr3$ zsZ0mIu&2o>igbC~rWGy$NVBjQI2;{N23*X!=@tku?}b~P+F^#+zMbq5KJ9eBKWOJ~ zhW+sVcs?qo$Ew7Yb@sqb&y-C@v*?|b{SoY|>Fas*ZdELe)OeF`dGt@;m64!&3-jYF z0O2a`{3Uqqm)WP;j&Hli!&ASgsqSu_UOMgvWsNO%>1Kle0AEK&5d9Fl~7oJXgl55BTYQVB5d5tvhlPX9LxU@Q3zpdjsp>bE-nHc$t60u5am`prTn;0fHx zJGaQD4PR&ZR6|9|D~(>4j;CE$zlVKOG9ME^@7CVou&_d{DA41oTl;lMndwYjI`;fG zfr709Eo-?}`svh8$0!b}Tc3orWvI*R>9)FFfOs^$tLdAjquV*!)6_5AdezcR@+lhF z%jFU~%v1ZLK2XH^-u3L7ZYhmNjqQB%&iMIHg4lHae-4x^#aypc+5XHk)s1@s?9R-D ziSL-@??Gic`gux^aZ*-y_kpIKM*&;3gu_CQEcu`}(p34uv^K1fqd$wdPtUB#4PWEB z59yT0PwWF|)M?YX+gT^B<1+m(gE-F`!2RO0g?K-{t(jj=&&G5v>Z;KM=GGtH2D;1n z=6rlS>q=06J5UFOygZy&P~6z7Jj_9By#9xp0$f%uI;_0fE_4gmHd^B!?E_gbeoyX= zL}tIqhvC51Yi_x8@x46xj#jxw8*SO*Q5=s1UAi{NLMimSyvV9HtM%>UFGn7YE<>ka zmqAf8?$zLbmESB*d$EBs8_VUCgi3wcSM>=4vx9bwdkybyhQEBceuem{8dMNg=ce>p z@s3I5a+)_Oc?{3eH4qIbTT9+ZbXAAp3!VX;A{Fq(?P>S$Ws(~u4P?Dch}4NZA&>$( z*f)-reb30%XF-zVYmz>Etxky4+DPAOxCSa;f5^Nj)u8vR6$1;S)*W3J9Z9RP;tZA% z=Ky!&sd7d(i8_;oFQ%Nm3J@uDkS=He|3SiHiTEr&-k!(S!0=f#e8JQL68yVYypyv% z6kuspSI`{LvMU}gH+aU%C50uiApe#dYSz)e9$Atm>5>?KIrO4%+~cNfde%&)Ggd>| zWSI%b6}y0}+V4s-9e&H$3jI44Z-i>c4|~+&hYyDl zz!EXXt3f9|GoItiT7#pCw?;4itzODHwzunL>DY{FY9JJsVTA(ub`h zId<3@!xio&b;>aUJ7&f(%)#N9{$;~Oy>Gteb3so)_k@Uz;Mvi`+h)oQqcJs;%qD>& ziYj7HCWciZs@mT5qjik`*Tgn>`7=UVb1&%kTV;mFZziq=4<=d9Ld^QZ5A^CIXsuKs z;c|Mir-bh!EpB>nO-4vbB%??&>bsbN+_lIv1Q3UAdc{VoijC1d^AFsGh@mJ+x6Lcl z-;T)jDre`u)w=RYY^zit3gS`(7)rK*MG~heh-@TK{t%z$f2}mg;s5n7?$`xXbaM4h zm+#mREzmuP=Yj!8Q5+HL)~l%IoONx64^z?X!_^bD^wtTNb)_qzZ{13$SIXf0W{5fI z(@jpe!(O)OQh&yH$ipa*Mgi{oV(h=#luPT6_uNt)*$8dYXWq3orGV?73yfuGUAG3O zxZf;Le#>8a>-+B%_^flgoTVKs$X)2rqb)MfFT==?UkS*`#WQw=*D8b$uqoe$5^Q}S z+Zd=dHua~%c4v6;$v-Td$`bl*4T|@Mm2OrU{>M-gq0tv6>82&P^Zv-RzMt`&iiJRdW@;*#p26B#os6;Yazs4|5b08PZ8vY(7D!V^vlg#^vM4T_2$K=@)kSDaTBXb$a{Qr zuvW4QtM(rdWlLU#0^L{Pg#CEZ9zf6`v=Hm5 zsV}(V_(ap2$NU{7tO&H~D!MGJSaYZ6%(vZhna!b0ge_uvF8}6?@8y5l5J5ph83XGj_HRC>L7joI7v7DbzkXDh-^w{hqo98Vs&53 zi||kD-mLlPb;Z2KLXj8Rp>WB3RCIYwF(i&4m%N(JYUVPXQqBr*h-e{jn$cfMwiyU1 zMvhRU%96mUmbuq^A3APCW^+GI_s*0}1y9fZVvt{5`o@RY(;>e_t==Sr16DCLIx^DB zUF)5E+yFpoGREF?<0z!iq~pngcj^Gb049hJ1H30xU;yFZDQBk$h|qbt2!>$M^k3qI zIhaQ7cT@?co!39^mEM}8UOJUwO{3++KXuN&8rMkFW=5t=TCGjo2=~fOoN5%|ws|w)y(SUcpEl3ls{VR8 zrD)Q6u>T$Tex`%rNK?mqDI){05M>A!6>BXl*{24sXc!QJ4DU{95IT#KisJPbO;gCq zH_A|?o=j_4Gd}4DVu%kDWoo?9#*TL1?OaVVRNYIN9!!7?L9YQ`yHO;S=m+CHgKUS3 zRt?ry18&fB+?5QLLYeW);iU3G%{Q(F6oSR|xP8_=Rc%llv0)xk9$BLK@k&t7ua9zz z25Dm|qQv~MTZc}7lR004TG4-peufPqCh3KZ(N3mKq*cMpP7*?TWeD`z#s4K$6^BrD zdy^{64Rf3D9X z1*(^N;VQum1Xm8GCMzHxs7l$E&4|Eg>?aA=Rga@Yt{U#+j+4UEr8jC-5bh#~zGtR< za>bdLex*5%_OANMZm62TTd87_=>ZwAlU{I<{waN(i8zzTD*-X{3E;gk2;I+WhtV*e zz&SCou*`5wC`kOluw1T}`7>rJuy!81WlpgX?#~GCVQG4?B1oEFteuX%sP^2rMr_JeYv{I0n0kITI`uW<|ZhYW< z%1h->0~f-*wvoAX%v&D=!G)-1*D3Ulv8@WZAT)qVr`BMhxD&dBqkjJ$Vz<9vI9=H<;3KgRNajZtT3A;r200CA0{T=bZ^_o?B(m*vFK;T`^q|M<@)k- z*c@<_4w~P2xiY<7g>{eIYJs%6Ury*9c7QrDs9<6uAF5@iX+DYn=;Z&Qvw%M_+>f=d zdoXQYyLpmw)8k)8@~y*alaI1sK= z*BKd7%iG5C={a!GX&tcBXm1xJ%mZVWF*wiVti%~i@#&+??}i49p_*B>sA|+~tNvIebAW zmJCUuQt!OF9_NnJd(|@1IKgNUAMjNx1`lQydW|0B60wA1t<+X$ict5{m>NDS_~iNs zHrW<-&biY@(As*u4Rv);x;N^34Pb`^v3W!SA?MfiPvDY46-4p>I-xE^5L~2yB9Tm^ z7y#(6X8(``<(;0{;<~k*@)xbS(m*aMf?B@oi^{4zp+3KH4`fX zN5El&msIhKQEiX4qRQ%sa()R=sN6lR*=hs46n&sSuC+u0R&%Vw+IQMDJ3XAgKsORR zO##h%HY8KBgef7m^^V_ioS!Qii;SYbJ5CuRKC1;7ZB6a{I=87=a;l0>)S;(MWaWF9 z|EW@7sh%DIantx`>D_W7E~L4om{Phq9TNVSQG9MB~(k z9wt>4+T7RHN4E$YNT7Mviwo}k&7vI+%S3mf#*>f;^G za*zqUvnj!|&+e-Fdk7tR(XJIu&M?@8_QxKHGQH%*+!=sND#F%t>rFx_Aw+Iehpf4d zYWm8hal`tWe8}5We)Q*t-8dAMCAWFi={MnsOduje1kRe-=k6FS(Gu#Jyq*H8e?hRd zq+W!txF2VxBYW2gUAOC zRsLLAl4r-_JLOeENT|an!R=@ue4kRbSOM~F`FYdXCjd3HsV&3n7<%LuM;WUcyJy2B z(icY4J#^6Feef;8DJFvnzqAOXEb*pb|GZDC^*py0Lw~N#FKfM2rJD(|hBB0=;R|eY zIWLFQ-!87o;hTyWerg;-KK);rs_4$YL@FLilvt z>zUh zWo{n8j87|zcRBf|@wDak1;|OFeHi?M_p;3R9UT@y$^WWPrge8fpX4fR0m0Jn>iCE$ zwc*<}mjcFaR`BO0>q)iL1>ZIEuCz-U3<8mK7|h3=W}{^9QHExVtpyKs+Mwy^!RWwc zcCJ6>L%y@Q)U==3)!;B@?|{2s?YEC+g{jdmlnhbs0@5GJqt<_f?^@PxPcHmk?IlLZ z4K||MNj%vKxxre_OGr~6zT)>0fPB}&B>vqYJ>c`XnYh9&3f< z6>B#L!K{A2rIya&qDSZbP*;izH>`9%%S=D_o+c1{IgRhjK#6Ps7- z|C`jM{x_+YSrO{6hu(6fw?y4aI3}0LI%_u;=DxUML|~U9EA<0@Ro@qu=o4l3Z*Z1vNPIDXA*r6Kkze z9f^5YLJRjkHZ+FwKfLIvzIbOFY(d{{y~%ro*;4Ipp8=T`0$phM!8YepV6nfdh;@Rm z)g$dpY_LYNLgvDtG7O;^B9>_Fh!*0d(_O99qrhEocl6|>{o5}-+F!`D!1Kna7OyPk zwcb~43H(Q^H61NqtDNwv`gdAz5~oxOcRH(iU!WJeIM$w^YzU{48JNim`+_%&LF$c| z2&O>KT(eA@&?m~wG_ znJi#+!)L9xX7&>&%QZZX23xPjy5mqxOTVv9)G9MZ{SB)Egk#XtLA#uihu0VWi!)Bt zbpfojWpBBw&s1G3yS)-EZ$Stb=xC}Vpe!F$J&5NfVwi4NKRB@`IfB=E**K-*pzpv1 zIzEa3x&=k)Ba{#>egEb8hBha08HwM5#=mh^b%`0f{vwSKsdrXu35T!Bk*>p@lsLLY zdfMPz7DL+dI7_ALq20bd>ZK#>xKEJ==t-~FG?y^rY?N`AVDnHvI8K=oU|blVbXSsP z(!b6E!?`fsv!*+Fn=pm5ez#AyTD2bI#Si43kr6+~8c!pBr95%^)OVh?L*hThWv@C2^CE_^$kIA&bjMqmtiQ)tDSxh>B$@Q&D&G^*z zxqCw6Z6DkBI_p(RZ!6OnA4rV-23B5eYt}s{xm*r?H>)KN)t5S586SHp>}lIs%@k&4ceOPU zyan8dSpDo`GV~dB>cm*~cFBAio<-rp(K%c7{)Dy0AofBhf{9>b{F<)5jrUMjVfq3n z73eX}1G)~dMU?h=)fiJ~)&4QJm9o&lwDgH0$yOS&fA;@op?H91f z$R#WF=ID}fz{q$wIqtE(*y6Ak^gX@H-zIZ$wzi&6>tY&I8U(+Ua0yWGb_1g^NJYqUjKdSMgB6?u)Q?}7Cb-t( zbc966?HJ^EG{vZ}xN2jB>Ylu^Wl%5hPm*4|3%K02&N;u;EylL!`CH84Q^_`ZdS9s7 z6P>|+wFmvJ$uM+e(%z(#g_F|1W|vtuy;U`G{6dKy!!1erIK1$VpE{LR9uQBLM7=9X zrTaOI-QaqRk%G)93T4%V^*7K!Wf38QH7@^$B(#}G=YM2O;Pxd}3>v+8O0{Asc#)vn ze8Tl^^s^h^GX6y)RkzRdc&hJ`FnVZ14a$-W=l1VUycEM3Cm&CV#y!th!l(=xeBQZ_ zl-Y=k%pUwDjDoRlI9y=x*WZLS@BuW%<7&@CU1E*eO$uAJVDfNU`TQfpqryo1h5~nN zz9th&(g?y>y4@~iZr?{%MoQWODPhleC`yXO!v5JE3lmd}({`hntwb(jRz&#XLJYm^ z^@;DTLvrUZtWBSfc$%2Ru)=Y^ke%xmEJYIP*v?GVAMy#ftfekN%yTbd5gwIY28WV; zF`pEpN;fWF;(tXS!LNoiaG2zRi3=tWfV5uKWMUBoPurqT{g25#!^^X*RnNn zKKw=WnqcLol)%XLJ#x-U49%EUSg?bQWq#C&6c8p{qikP=60WrcU{2#b?+k#*b=OAK{reN|TRp(%__n*W?DANd}f($H}24<&H^XZ%* z6U$Creg{9Tj?YkoR_JA3QhYRzxMk1mbgJHE+*c2!j({r&6Ku=0G6CNOEL*mUay0bp zXv%r`5+sY!TS<0u5?J}3Gumm)>_*%r)`bjDY?wx5$2fv9j2Cx%9h>J}w}hgqR}3!) zZ{H?3sHna(eGRq?^nTOc0k{wszcoPlB2oF7H-y6Z)m~q*+Vy9777lAm%}ni0Oi8u5mgjis z;(&0JZPhc(T?yzX4+a+pT&Rt^dEUuOZXN<}P-Z&BTlG}be7-*@GhLBaJ+H)uW308T zEU>JmYfseLMf+&pR1_Ff&mXa)Z^b9rBIfNR{@d2E`mWUfsv8b>TWIV20af0NmO6M@ zOyuR?_xG%xe)FGYeo;(I!sb*R@d~!t@Vggl`L!K7iKiddDw4jmvYwr|1P2obJAk*; zdjX1)U3#|fuY4c;i92HruJ?bf(Xn8n3*A18{H z^0wm(?|@mNxZKqiXX$V87d^T#|BL{peA%B^qRBY}JdL-y-cbJ-`9n0|4_8Qx|7str zG1p9Y=Yur-dJqKRSqk=;X)nn?3iLnq_944pxc=vUmu%^9kaqx$Y!$lFE1Dtf#WZ%v<>L_T7A!l& zz-^~ZiOZkD@XpgYHi18nU(yqsUxBi@hm}kTD3f}RU=qLCxGcoaZ(b5WAzdNBAx@V^ z5QLlOA|odk<1hKR$=Jf;wtni@`NM$T1f96zo>kS2|KKroU;B3{$no~rJ9BUyk2{| zX^0Dd?1+Qsx5Fi2WB4Cn9Dfbh7WFfI&6+JO(a`wh$X1A5$z&E^6NNSd*71Ux4#jFR1?4n>x8#W8gXTR?>tjB1rm z`qdYAKA8*CK#VP-oEZr=2$7mJIylaY*GQXbU~ET!HJdVOA*Q$^&(r<0=E*N#Gkj@O-#i>qMCE7ySL_g#p+4Oa zyZA2Nox7DORZ3`g;9&v0wb~gkFSH{$)1rNB38B&;J`y+euE}$j_(iu?w`>ky<@c?2 zv19A@{uH}oyaE^-rbiix6A@cG?7Xy>&6D1jID*fQJ@;yP7O9*e&RaIS^|`_q84(iG zp*49l3@8=oIPQlHGm55I`FGP3!wG=xGD`lVMm`{s@b z+-oUR)evU6PuZ>@BPgNeIuy%@hA0XsY3r8mMX2n zL$fmLToM|kis2|{tN$77;;m~lb>IO?H$Z|W!~H0Tvs+fB2DO1f8Uv4l z(2(84)<vCjOQiwu-Q%aW1yDJ%ayN9r<9^wUlH3 zS@(M^E?EmXhe`$iz_@E2rWb2o^^OiQhXOZn1j^u1TUZfAI`Am%-#@fwc-3Q=v01Ju zX=Q~jXt;!AJ0fY350-(O-LELxrX%tCapF7m5pF+TM!bY;VI9(w3pY_6e7t$WL@cIl zy;~Ptpw+k}cn|&^9>{dmtt*`4CDIKHqf`uJ5crAEL%@FyjrNzF+O07H`0Jw>tXjkh zjyKhqCyy?!U5(8%_#xyiWWX&I8LGvD_9yX*t;(a(N?5f?Hj{&_)dMhw|9ZKz1mE+{ zJ1Z;6K?5Ny++Szwysx3ea8@_op_fm=FMj3Y27md-q!~v47@SqxD$>UN{-Mzrh%*++ zCU@gX*ZOp(!;dNQnj%}64L_8=+CH%#RpIlxTzw*;)oqj8$$^&BZ6sUk^kJt`qlPa+ z4#0u{x83(y`sxng2e4i5bC}+PKD!7A%>b{}7Tmxh+wQrSB0mC>z1)E9zsIxd!2cf4 zFB$2#SS5_UF~9a5<&Kx4zS_UZ*bT=LmjG}5$Se!*)=ryPzY=l-2o_$#R*7w17I1d! z<(ULSa%Bvh;EOLXrZtGejL^tg%a$@jiHV51$G73<6*3EdZ^#H;tR6jf+-B54r$Y0_ zh<9Q{cH=Sl6dL4DXYk6T)TFp4jLNhI2Ko47Ap_(06ERiIo#Vy-T%iJPF1tTDl7e64 z00T%F@IOJqK!OV@7xQ);d8uZg;(Y%!J(hFLQu@G2e08>hqyn#%o_jZ8gU^PM(nf~k0n32S?$5m-Of+S@%maHTH%$~y#0 z!RmBG$^!LT<5T(mIny%~vEc~0m8WSKolmKmGXc~i{3?A3RhQe1sf6DhH zh=Q77N+dhpQk;#%2gwgW<@Fp)ooz{1i2L?f(Tk(3qq)?PZ-YJb>zG=#&a+W85SpoZ zt^6m#VbeawN;6!PCe020q{ojcMDfG$BT?NVTquK02sND$r)4wA$2ha-^Kpb+>qD`R z+z`KF)GTL#*87ch_6>H`K-;(>AR){LDMS#1;NESD%9te=p;GCd9K|&Dh7GaYfilyD z98*y7QxDcTtld?NET@YXqd5|TRu~8YRY?X_0^}GWAFet#(>@(oAu5(8p`AlTc93BS zvR77M{&q#xy>1soKEb~MB`(Dwe@KUorAnqte&45U0vtVRuc zHApMBswr>{-%IdwaG-RfyOwVb?MY31MAU;6q)} z!CiVyfKxkdGkUpe8F(!_DEyi3%$B@3X-8H)TsCiaJ`>91>}AH7SOmJ~0PZ7}e?0C_ zUK&J8==+LOGRw~{$=$^<^cVWHhx;BGyYNP?xC;~rY6T9I+ z@Zscp0yhO+pT3K~;$jqX#`S|mAqTc)k9l2Z*Y5e0$0NmjebSu^IWjWcU3RN4R|jBO zb}Mz1J9a||d*)iF%srxtn0Rgb(~DE#)AVRE@!KB91Egv>TqA3t|Ih-LuRZS16qV=D zJ(t*$^FgO+j`AJCfUTsEmq>jlz>t|vim#?BjOhE10gYX&e(d2ndm?|L0pwlIWgDu1 ze!C$=HHnrfejC58D*bJBvj=e|&~5~dwyds}JTFGBkFX&DD>aS%>t8e{FBQA6WUTUy z5X>!N^jr5Ql?L;ct{fly%WP|sh1&rZw7VZzriDHKu(egVugz=P^**zy5&u2+C=p#P*#e^K>{ zfTBOqrwP?T*>-jZMZefvD>5!1_Zjgqd-^*vM@B8f!Wz;=;pK+WE_4{Fs#Gd+8+|2q+dh67}=^~R18}A$g1pVSa=)>2^;z6NXw$0F-}lDPQNCrEq!ohsp-l2 z^*?2C(TlUZdos_u6R=exD%`vynB7V9+3${clMZUKMVWQA9gNzBYoYBusMZ1I?zxK% zs2@sHXiLXm^G%;0OB3c|jYH}!Lk7%7Pn3_WQ!6ydE48k2 z3A0#o@A$#E%HL0xKC;x-BDSyU6DqExLiBW;Qq=r%BQ|k6>+9mwr27VluNiw*#6eLV zDI~b0W@=DSw4QDW(uV=oaP4cZp%HRBNojH8!paMTMP!9Xv}}hWbnNgw6G-;re6B2%IPAuHUC~6j2AO)Yh|lw7zL`Zh!{$0Nh9*RviW*=@{%q$oGM);Plj|B_&MZmn}MEUG!gUTxUPJj zlNxgy?RFKEm`FQqYJTW>o!(M;-(OftSh7ab8?l<9kitp-FG!(TAVOgR#XPoJ2#fOX z5t7dt)G|1Te@U*zY5A##%jl++j%OAVA;DP+gEl4K4Mb`?*tMwk-vRw5wJ@p5mwl<)bp}b>+952+!;Fb+M;R+;vFE~oC zMX}qM?@MgM{P?xa%TMg(dJORJSnsRf!I{jz z&|ML+s`@#BK&egGZA?be-@Ig2vFh=wnz1njntel{>nAG`r0tK56vxqD97sSaH;u2h z8&hQ}1ECH3z;6#9($NJFLXn$-DenQs7PmVMTQ|dShGV?gW%W`O<$pCz0CUXP?y`0GDIi=f!^Q1e%8Rbmf%8wkML@{typ*)xE&Z2Oz0z@% z`M7t2Eq|f8x$SoJXX%*WFJ`TOc=Eq9RRv*4RNC$3C(qBf?P>q)U2P7=h$Ae9FDK}K z^tH#i9(^9qL=;Pr@R9uWEK~sV?uUF-;%}l8v03apmn@Dl%W)vk6U1sGd|$tcMh5jw zwJyN=_#?YKw-rS*QkQuuv~)ouSfEFcY&4Z#5hK{k@t2CM5+u<3XXuefLcSi*hJowD zk0+6C;QDe5TqyxWQ!ET7e_4X~o4=cb&*K5QsA_Qp%}KnDRQ6KuO}V#j5WFDm7bAE` z=%wY=_$yl+!e)%@A2i){|Ibbql)6qidaga+T+db&UWF#cr8qI>sZMt?^y;+#)B5|L z8vn@@fu4x$i7}vTS!FqNubXSnx+1os68Y36e>xBawhhvY$M9vA^z>lGg)LqBFBM9{ zx#?td5kB+=e=>ws5OkUX!-aNXY#|{~IGX z3x7TVy6cDkl)1VVV3K6PO-w*>Az!OIfU&r&@*c^L8oSH3asAvXsg~FMS)!K-LrK}Y zlPK`65{1{3MXmoc!rE|Zqmpu)d|UkaB9R65l!00O2bFHi$Dg?ld|oez%fj|>3`OMF z_YvYPjpr?;3-yAS;)H(Pz0w%sS8F5-x|uI1=f>ERl8mN?miZRa1umM|$MJ!Jd zLsXo8$Q`!~N#vC8KqDHm9%aztz(}Ze`0hcdnNtu=4;_gg0g(%Se&vA*k~q=4*u*o( z)dTSM=M~XGyT{;tokimq__;^ULULx<19H)Zn?|!8&IybyLOFZ1kx8vR84Q$FMu^oW zkJ#=VzhAyy{+n>+)tfn8_2;@M1YS*VL@|tO7)EI}N492#eEJ z_Vq(a=zD)7N4u3SwjIXhF1D3c^JnQFt%y7{K^Gk7tsj2<@+7yFpsj*y|5v&FM{5Fm z2URu1`i4z@?%!!k@3AzR!j<;2t%|qj9HiOx&@e}`bh7$ver0>WX%I?%td$@TxpDgj zCnSjEdg0wm`oS?hMC#JO@dEbDVjH&;&vA9>!oV2|Ip9>vop9)D9r*%DlH^S|t%q?s z5NsVN8|+r@SG=go8?OFrNSK8sk-5p)y|NKw*M)j6?@_zbtwcc?bFug}=xjFNO^@EXt zef~?UoRPT@gxT_O&<3oaUi@xSylMptSI&jsBvdUP!}QOOQ&NKK<`EDYty#Nm1^@9{ z*1Q0h_8Dw(DcGSOF{u9eDVTc1u#5hyP{ANVbnyea`OjjKS4%dzR~Hrsb6Y&jB$`_3JwD%HRW4M-P% ztsf27^~wCtde_8vgB&JajuL9wN4}BiU&trhLqx;68*qSrB%31GNrmqvbKHD8NVl_w zkhG0a&H4UAg4^MQ89~k>zxj`Hc6pP~-p>Wbg3UA+ad#U-|u@u+HHE&f}>4%$mUdM3KE zRQ3dK&!{SzGdk@b4Ma1NL-il z{0$AaxMBo(Y1$MjIA{+QKA@;7BEDI;t`I|q@Y4s~&N5J?^sbqQ7Dv?;#iEwL19A+9 zE@&i<`i$5MUzbb+KJ;zKj_j2;h7RW^%B-ET{9qC=IH^R9j1dH%p=VS>!u*8PveRW^ zVj_R56#bc}`mlgo@9adk#}RqlJFx4vc;{hLC4$2^3;Mxm^fzN5qlp=dey@{Y_D#bc ztCrMz^}kY_16Z2-`hS_@m`LJ^u)5i`1iSI%su%m9ame{_V$liXei6MmAmw~C492rX zGEsbA(tMQleKT3oZqF=ZB0J}M`a9>pJZWSd&`+P^f_7!gJovevGWPAsC@f>!9R(?GA=D5fL8W7wD zO!%Y(3(Nz$^YJq@_51J4sJPmZ>-SLdxv)~mcP%5E=Lu>yPcf{&u0UQ3FGLD z+&=CIS;+?~?I3T0AYOzNM2y970!C#4{$K`!tsx{7xFeeD%)e+|H3AeOri|TghA%=8 zAjA#Wn5B#sPfy=abdksvZz{W3 z`JF8=Gs^=dv=J6d$2|-m3c#e5HJU-bWUccz7=&s1U%eL^>Ew^urN#I~7Qd45-T2-j zdQT4IKT-GNcm6liayLts78_{*E>%_eH|86#KA8FbtMu*++NQ(X8Q0d1yz*9wAaXV6 zm82^627#*#c*hXrN5`Ob$oERy)zNL-6~!iZ&+Fht>3Qu}eEYSz@e>fK3j#DB9!qF7 z$MbGBb+XkeWH9@@fmU(FG-eaHujm&Woh#!lll5RWY|_XX6B1{*xQr+s zkyc>Hj2MKddMX@3c2}GISrBj1laVamxBll>y+f9={h0+XWq&nl_5p!^^^3?JiH$BB zAuLX1EwStrys~NiI+IeRw6J`$A}*}v;3LrlUf(-A@U*(2N8*Tt(d}FRoVIwpA_(oq z{P!Z&r!yQsd3(_;MV0_k+Msw!w!|HG(9kgqu|6Vo4v0gVto+S6*yf)U-OzgCD~AWi%R24D=b}35d3(XTKBuRFws`_aHBQIuGj1bqySM zLhzH)6$9yhpS*_gz5`}{WQu?^9!|y8zqxfwg8In@IdNhbk{~MdubsA}!9Zb^2-VHk zn*SqQWT~RuO{t6htO}x$d$&FHG?s*Sr}>EShi;OCyLvVjX~|kc?2$GO4wA9nL$vV( zi{_v~lh=#z0TBFs14AJHpvg z<%TQ3#Q_xo6Ua?omnOgyKG7pOPKUOqYOnunEt)|c@IVDd{o6hkDp=|dPEvZJtH?6a zY`Vtxdv{QSl3BHu5ofdjo!RzRsy6cg1mbcgygNi9z z9FA(Zj3$A$F}Ls>DeiUrSQgL_N!aHvp>cf^@Hi|sV+NPQ2aJYR;~P$Q4%Zt zYz#v#y=^#Ru?Cm^@ztpB8g0JWR_6obCh96?x*$MdR&wmPMDRdI;1Tz8lx><&sYc8S z@dzJ9wnIFY0D1*eICa1!Oacbp*s3q*+k)@!b#j({vOw;!v{4ZM0L6Y6k1;f~XWqj6 zj(fnyOtO{~4Zt~w|FjChXu7COQ$9I;!rV^+Cglo4!CmP{7fb?F41MTpKJijXieSpybO>R$(3(ojgO!LKm>$UAT zy4r$k!*s#P@I#!m5tcHlmsUY?)EpVoXI0y{OBD;8Jx2*FAg4tQbQ$-dXPMUP8dY}p zE!MPD*rkC-GyG>bhKn(JsGJ!pdXq!9v_NRWwVOLcLLPSFPreUV=K7t>&A0g5-@E=R zLo7Bkeo>a`K;6?5;PpsavNunOx!b78mtN(=D%^UCZ04E87Uw|N#@9JR!=03%QVT%X zde&$6{{Yw@?#)bj^JAk?v<>D_%pYV3-QsmY0YbmHWQYmtVW=0ouT-T1K+B*uYE6}6 z?jN*^$_Vql>@i(^?D1Z~N4Lu|d%jE?41S|orSS>TYwL&wQ4F?fhE@x|kVj8?^CIu@ zStq&N!OuMnTO!*20jP5Uk~PQEU5y*M@x(XN3WV$+hRcZb-&AGV^;F@}ewbC(*g`=# zviYolhNQxt!(~s;c`wvvTYW(zR80y-)MNj}-WeKSEny4@u7E4~Vd8P5mFEBt-VHB@ae2tW@5_dR1aVFBQ z6v6>`f{mWNfF~&Cpnv*~6MwhQx+IvrE`H+$uz=zK-hnKWdht}nV(lH0m+-$V-A;ib zl;L$uX}eOpn!3(tr`Pplo~=(g4amAcdqpR4)dTCuNZ$W7v)n*w>=USryWQHX5NOIE z`wl{*EN@Xe<1P05@(Y>UvTjKaEQ=J2O*~HCAaS)c8kDXr5I!pM5ViGAc$XmHGeYBT z`JyguAPKXtH=@F!4v|wqYohAj!nuz-32xVwY6mqb+$a0R_}E^(;C^=zlA_})2%Rz` zg7zLTos$6sbtSy_)0CSai>Pi%WWy^KFRZf?e*PQj!oAL+$n6#&1whdlKr2vV9cD0d z=ncxrgfWG}I-y0fO(bnMw}3BED3M-Qn}LEpYRRqbL7b3^at@QE9gVnqs074`GKg~z z%xyYM$u*=Px(-T4qy4zz-+XF%8_%r0RDAuNaBmH_1| zVe920S2Lh*kAq}s9(MO4{VO1fBj8hTeMn&ZO?a3vK82SuqsR5Wa$*_MJQNr!CvvE? zS@0~=Eh@Fvj3@-Z(+eVd?_~9~g2gyR8+N;Z;7cClpz*}V2jT#sRL-2ZCKk7CHWEnV z{CpL*>no4x9&~(WJw8f&(_d@K4kbu~5vF~|;f8l(CRt*1Dk&eSYe?dbh-zyf8)Tj z3pTS5{99TDrTm5x$G9zVW0TA)AMV~vggPTe`M!1`1Q&l$^Xs8e-hl`vaFY_G%ese{ z=eORa*Ye{(PC;! zllwel#k}(G-6}Em*;cKn@C@DCUs_KTxbL-$u3t{|vxKV0@ z{~JF7qFrn|F!G0ef+YjKxYDa53;y;~2SO4^k>1udT+K-R(R$Zu?~Yr4+`(xFiFUbv zFCf8|A&>SX#R|3N-mtE`nHE=WHq1&xUzk1b2@G)$l_iIBe+WF^zyo;+cZ>hpS02kQ zWfW`IpL*>!&9m06h2$V>JF>u1$(QEM|5=UyiG}m?w#9v46>Z&0RlqCm6us{eSHUSw zl?>n69m)*Uf)t4|te8bp-*d$uxoIg4XpX4D*Cep$y2C?omO#1)A!16}xjpAP)C1>h zU3>ehM1G?AQAg<4?;zW;w(To})4#{0)jJWo{-uf2i~}+d(21olssZ08K0lq1u~N65 zT1H0Zqmoig11cqTpAVjMyc$TJ$x+hyt5;JN0+0H5PCoCY7{VgeM8RaNQ=`Dgm)RQk zl9>j)Y6x>O>fa4uGbc(BrtfZvB%I~YBS8*!pz@dd3Ns8LWi5gpok`5mOjfVMYX>k8 z%)e104#N!8JlPC?OgUNmiP_vgDb|*lO9YX;5 z2>aZWLEr0XH()N(Y;GgbI@jkKone#0$ZPkup~}h(lZK2KJ3>eiuAQw@q3HM_MKvIBk>9j%b+r$o^iF{{*{c*+g=x zvc*JphJLe+xwr5v284Q}KnhW#mFnnGt50`I{4+Ub;K<@B+(qDE43Ra!vZud*cR!lO|gNdX0YwXGpzwyq9;92Bv{6#zWYjkiF=ZN?XE9N ziVkv$gs|N6^=xBg5!k~Kw2p=zU%CU4$dAw!3NIBbHiXZ7dv(hlXN*_8;v}5MFNaJM zXo=3RuhAx(B5F?;!$Ju5PB#Y}F>@`QuBd+mPojOXCCsXPX6@=#(jyYcPi^-TDQz_o zo5{wAmqRQ?x3fnfEi3?VEi(Z1{zJSNIjM?Vyn~9fdI$n~8Ni?fewGRqvMKfK;Em(5 zp<~y&`!47>bEX1^45($yzh0$$hor0XhW3R+;nl18(ShY)5wv9!Hkl?_*E?BvtMFea*?L{+~@9Z zbe1U}ItOl_XBL{5J$MA*Tz{_c>1xH|a;u)|n%ZD6XT(Rr%>FoSU+^Y-soi61wOx2m z+e7dp7?`R;HE#9ero4xCIDGhM7$%Wfu}k+r>Uav|lOu|({vEvVEkK#hS$KOnq;O^t zF!{d>{KL2x5F*LUs&R}*2zs1a9Wx`5cR7s1G26l0%4&ECf8|h$MRbP2DKrb|9?(io z)@;7^cu&YMTh{E~@x|%Ax2~W+w*6;ns?N{;M)^Lc`UWg=zf#x#aKL0&ks}1Q**Vjl zjNGm*weAG`jY$nWwix~>j%C)vS2Un}qvNpN(RR@n5k{1})XNB=dN9 zy|_ypMszzGNF!19qH4s#1wQ^J-T*bm*;tF(k!WG{FmOY(GSgjasL84?!(_3 zn)FdH1mlIEfpKMAaoeP1U8D~?KT|5q)Cml zC)>5+pDpd?@`L>cc&4aoQ@|97^?HYQAyJ2M=AWweGoMP)+?THdhG|79wVMO)>0J{mel_KFRdWSC}kbqpFbBfcI`=$o&4C zD7e{6mY*A-=h(S{1JTYY{0c_Y^(K48P0+*YWMhfpoBBYuFkYOl`%1VV*jJ_g{5S`F zS)SY{{`{BO_YMcnHZ)tWmH!heS|(og7)y8fD6XAZeD9VlVPD%F=lI%%Z)AHAAffBN z`}gFgUoh#lekakY_Nw$1HU(@SP#;wRU$YtRFQzaiQ^#<}cq+QAr?>Qr7a7=6+$oJ) zJ!0HsAT(B9#b&PwN|s1?Hd0U~0JK&@E)ks$N zA80O5N-Kb2kN_6uvCvLNQK+0W)i-xR}Q~gdMj*{ zS^wSvn^aaN{nmgNE_M|jvgsSMOD3GGIngEyD~n7o50|xR*3mZGYm6&SF z>m2-|p5sq*TTNl7Hkx6NU+UpUzL%5Ntx-u>N>`qS!?_8YZk;M8)3x*c#Hr4oN-F;?4%#ty#%QPs-;Nej2ftm(M(C~ZCsP3(HT*Yfo$ z>ZU)~7a@`fEG?=gi2VZIEIb~2nqz_wl|1)^LBRpA!b!~j7O!KYK^mvrdf?;07^(>T#l8uEyA@y_#J1K1iSycC%NpK`x|vOVxm)>dTg#1<47L zz)1W@qtMXzj)a=BHk}ud>D=B$BC0F$smoEZ4986UM~G1!sB<}=lwcA~ouU{aE;H+zC5x<5Ui zwQd|{Smt7nsHO7tA-+EB`Bz+D5d>)YxA+^>pMM3AIsOKK+2KqEJ0+l#k@??KpQX}q zw`1pRYC3nd?q~X*s7j+iij7WRzJI-{_n$frZ~pkEDPspf!94mx)oEB56(GV1`RQHX z7HYJms{{Eq=8+v_ckP(w_52Q|A!5v$+@jh-&5!Ek>NNYuEdK%>#7ofTEJ2MH!~m!d z{S+b2Q9cTim>)3dy6suum5aWi2WTnQC-c>sB}zmy&&aeqK&XZN-O-MBdA=~&=oO{& zH}rtRuhe)}BYgfy`OujsJ{CN#-Rs>KBUA=8wB#^}IYxKc^8rJwG`G}7%6r(SuNl0@ zZ@6m*&8e^6h}$LT$z3>R(yjdDD0rCtGGP^nVkC}+QChXy*g6$8Ma-~0)#E$tf=GLs z?%63+qLGU%#1evqn!|!C)~U1EErI?0yn; zOME(~V~oxZl_V*biop2TU{(d!_X^qN?!E96>h#17&c}!vRBL4Jt?=jiVQAZDTnmWG z2Q>Dz2dfl92`zlSzO0j~ zOiNGg6+RGQ@wVPB=jkZ2D(34%Vm?6v9YA_4HTl)ItuN+1^hLkL45x@3Y*)@LGxhT_ z4>=#6Hv2a6r}!w(A@>(;=N@g-f~F6L;jVYZU>=~OE7V5vEebd1glnvCHNKr6-0A-5 z;SbJldmBn}_{XOizGMIi`C(Gtn7{EdjaQgKh~d`&EqdfEv@f0hz(;A+<6zPvt(y@CiT%mH#k|-+-cZ+#2`DE+8hqol|GdzJcK4D1P~XLyKK!7(q-Pg zXCO_f;Jr1EZ1d+h+?>n`x75DB^gS9L901eeOuXpOeP`H#vlY$)B~54HDTa5&iM42{ z6o@lISRY#QK&V^Z+U*A%7DC4kKVJYmIS&3cGJH_IO-km`g4>QED56sg%{6=pt&6|G zIr7K_qbpnZ}e>zRA>Yg(-=Bxa}8x@a7WI`G-&yhMA6 zmVCy~xaJf(!VyC(h$&<`8a^Y3`j!+R1;>@4Tq-_?7S3jFh`EnfH=%9{gn3JaXNN(F zGFN&6a0e&BaLN}|$mWfC*6Y6a7!5e@z=|K^dGd#GQjVsUAKWg>GGxe(1Aqa|@5N~E zFx+85JDU;<;&{-S;|1A*fOGAa?jhvXQ+Hl6go}#3C)^zRcc!0!#&4=HgRp$!086wb zN%m~+1R1C*OE5o7et*vMaI<156@)h1_lP2n&1k}EKJUz-_^a-<;?DzHz5Q+8i&8yt z#uSU3WICn5=DEXnON2|y#uTOuEKhh!SxGR2atkX^9vaM5X$Nm3{Jsm3X~sMWQ-tdY z5Yqok@Z211bjDHhgSC<8D!+V&jP^#7_d+TtXC@xHKT^M{2*aru;zZiE)@-LB<6eyR zBe&KXnQdey#;Ub5l&uXc@V-63YFTZtubYx@1VA636&W!8c+iV60?;4G&XB%@V`5^W z+jc+lXd(^bzq%dpZw!c3c*2$3-WM$2EeNW)+gEY{qR3OrO&+@HLFprJM?D!@7aOh0 zV3h%-AK4N06_N>Miu&W_&d@+3^OVAG=UAby3EN;}D|>#L!Rce#&;=F-Q?ynpc^)r+ z0tzYWgy(hyaoetn-)O)8Lf*QBOA{n|AYKa$Z-p=^c}nO#7i48K|4J&O`HOm2%EqIa z-QOsiD{i+-KZrd80jkhE2Etse3o0rdaiHTxNsR&fhrK_JSwtiuvLOI9s{Yo4;f^&R z9a`f^5_HzRxbPP}qyqaJL!sEi49Rb%6>$~Bnvli5*l0^HlAcIzurSpp_6GgFkevno zaCQk!m1L{PH_Hu9*{4XZ3QAP-YS>X0 z?|>cWFlNMefQn@4IO?XS3v=cSQ{kMVq`V<3x%QeiawFW_u4Knh8A-Xpg!-l}#Jwvr z(og36dkiq^8nMw&IsGs;ZH4Px=+7YCMJe!#6F~94y)5wURT4&OLnrn>d~>khP&b7$ zQ{&;}{ag#6RXhwYp9tI!Vc4?y5hNTGHVAuPO(jrCSv_3sRrGmeh=9psgMd%oYLPrP zxyNd{-P6&zQ91L!f+2F>7>+GDHS|L#!t5}}M;U5|01I=BCK$rt&GdkVEZ}J<)%yB$ zZrms80py6R7(=AW)rVj-fi^*XnHJq`s?~B>6pv3PZmTMaI7-r+CVt}`yT+C3UD6!u z5(COyl*N!1S)w2EV7Ssp8Li(womGZepTKJQbax=l>DP9=lKRNWFwQt@JrAP50*B94 zN)0ZvLQT&R!PLE~bUFIP^4Q1A%`9}=Pbx^-z(%VxJIJyeO({!;q^T63UL(;fXyu5f zvJu|l!05sVb$m{Q!oohM%*c&U#Qg^cGbCydsUN_fL3C94;Lg~v&(4%FNA2PdBxjL(XG?jf%r| zYdzmC(hykRtljcKVksptC4tV7`}>6JSUG z%I3xm@#|GTXZv@U5-EU?6TjBG%&vg5b0UHz04-cx7dZOyZAs4!1)QqQh7*Ea_Q$O= z@?o)fL>qr^JmjdHuk7Ar~}Xk z1FzM&C-uaC{Bxs&6pVP4s}%w ze5f#ggV?lq1@zQJYc?W`kD>D^kJOw8cK5#<^1;X7N3HIf*`UvKQr)o4A(l@|QY#?{ zRoj)$AWqa=8Tqfjh!s>c!}19Kwd=os5KvXS(4ttgZZ#W8N}Wsm3WqlZpxt|l-z9>f z_Id*1h;|#=fe2?nn9lDR5I8Osk?3f!KE?XCP}`e>Yyk*CEFSr3u&x=fKQi0qY8i6e z-rxd4wVf@Kh}2uU>4ML4M2NG*v%rbo9uGZ>Dc}ie-JDZ=8{2V8mPqxP84kHIpJ){b z*5XPzcD*x6f&ZAPjTcbNHcnc}_e?I!Wu@iVz(urQ-Zqw*QuK`8Q@0cF=*e`kqB{n2 zD%>1+tt%#631j+775H8}G_>Dgl zpl*qgz(@Ph(?!WtZ^Mr?y7h)={mGA2XKDFne3C@OK{7~x>AaS~b-FUvfQJ>Q?tBfK zQe?Mevpwck+E8Ip`)p({V`*|N%5+rijv0UwxH?3B3%n4^6&enI9Y&bDfeyOd*gp!D zly|pOt|;&aBK0d z(kB2+0x{1X2WOXnA;8~z*hH=f%dqD^_jDBa-ykmZy6$_9d?6F{j;YLXqs#5)@FOv| z1zOHh>(X>>PSti;I`8Z^K#$&J#Ox3McQlu+{O@S?78PrX#BrXDQTpq>bx1BnqecR( zzwjD$+0pazXf}DCVmq1sqXLnH+?Hwm&Jz>syq*xEPCQui+`toC)mKv%!?$kO&)<#} zI*A6i!;@MTN-EsuR)Ee$f+mPZ-0wl;o}1CFtd4 z%P}s~CMoa#5lsO{y9}L4@LPIFQ+7*V+ULz>Tq=`hd-oq|x!P))<% zAkIqV0m&Tuum1&Y_uTo%B_CfBrQp_2r8Qa4{K*yZm7W^P^S|C}2Ku$K|ArVP_7vO6 z2e*Lg)qjr}i*SVu;lFA4Fa2#urv{!VNx&l2M8XA0=n+Z{>r4#G&(i|g~~O1*ihl7w;}{OT%LJZoPs3~UsS{M3Puq-n%XIC^2Q3=r4< zD|g&k++=|Lnc2xb@!j%a>BT^~HK_lKFDnzd&gOs{H36++3cYr0H0+)aEakjbpZg9t z=jU>2SMH0_biAyS0}Ve+-mgfqN;V-VfH+sPRH0Uq=LPuO*wEDTqtT;2$@)s*F*-n> z>(Ve;WR;G2X8cfkG=Htb*}#*svdEaPF=7Eh ze#JBEAT_)I+*X{$;(~c9l4n0%MWwS1Nz#h@V<+ahZM`;q@q7D!n6*EmK`oAoB$10c zwEZ;Yw?HnwaPyb6X%Jc1Kva@ih1LIK0pQ_ElNM}N4mI)!3TD1S`wjtof&mUKY~`Sz zJalY8;Z+qatCH+PLMVq)f`Hjl(CE(bGn-e&T>cFL4)c;32x0bJ zJ^r^dQHJBuR9d~~YwW`Ci-rLodZ9n`ro#a>V{aV%II;-x>u3Q`ar;2dc88$N%s zoXB?e`3-!h&3Mz>JyX2(E%OxUEgk0mgQlgypi!a?C)I{hioh}v<9Ka7O;08|a({h_ zV7N+`-RV5q@t+o5QKtmqoyMXoqYrRPg1OfHK;d^z6rKylQtp-Hnvz2*W zZqK&Z8$9kNt0J{w1^*|^UiFn@nmx#gPlbHK;0?EpF!;2RuckUsbg;A&$_OdjuD}i( z8(Jdc6icxw-w#m7OY;COyNZ3gb02gj$t@*YE76V}6;Znnt-;nXelS`5&L+UB$04E# zj65|W6-Un#(8iao@BO>}^Sz%wWifgafV;@;h6P$8FZF#L#I7#8s}4B=qq98#V-0>0 zyA9m3M6+4_uO6~aJOa0iHG6sI9eCwmlL4OsXdz=& z$vJ@zl~YbL6ZKa8K123{L$q7Ka|WX_67}&i62UgTORf2Yltv6dA$S~=qC1chG9JTX z&|o$aDt!UOFW`LCMae6k#8pfsyX{waiT|@oIO5$Dt{gt*MDl@8-fI6U6JCliWG$;* ztU!{ROytj1cg>OG#DOAbl6muGk3pc@#s+&qVCjClzO(7`pM?@LCjPUQ-(0@lMD z2)xv)N_8cxJh?|~2n42;>l+#ZOm%AYTy9xxFcnqL##FotLs%k%SHj-V0+)J`X( z@b%DeGwOGmJ#H}cRCOUGCdj%R&ERaSz5f%^yj+_)+anQ@F92{>u60rX>Q%X)40G3e(F%a&ilA3 zAP-wI^^?x-;x|}>3W2zyhG-Ib)?{>yVc^3Ph`KKa5jxO53lO`w!lKc3ck8ZUFN#lb zX@#?b&0zK^{IPm}mx$B^c)b9TURwd1#XwpX@eJ4tay~of!WX4RLPDcUf0gVI4fraE znyW%4H61t4`JXw;t#3;5liaI@K>N47`V^E$)ekgQx zm+)5ytAE_{w^^BeNq%6u0rCg;B5WQbR|mv$!sb4R^x`1i0%U;2!`G^#si|H^*zvy> zA2_pXn(uw*GO4L>gbT*6qY0rCC|Cs26s(T$*Np-co+UNi4!FgHsd%^-!6J$bS@W&( zr_OQ`cnZ;=3T29S_JrklG#lGIO7KZ@X6Px;KTN;#lIRfh|BUG!O=rnn>>5=gv$4?n z*+ugeSq(E%VkF%jU$nj$>Uw$qYsw0|A@K!!wm{Pi1KK621&-oT6}i=%ikAj<^7 zdH!83;M?%i$XJcp{7-xfJ8VwDDfp+tN-Lhw)juu;>A!nu7E%hB@%Bc~C94GB6OC^Y zz}1I$X=`eJqx^u9(!4n-_NJ60=w1l0+11}(Uv68eTX@8T#ez6IPJtcS{lE6Si1NCLPF?to?kGYOS33-hez25>IQ?9|Szx*tWx+*TnW`bZ7pj5gpHQ%dwg& zsM*|xZ)`Y8ti$MnPpZF-L(vNvgl&_#>m)(U{1_++VF)$iHSj?Ml1!2g!^!>*sHTT( zu!LZ5s)dQ%P2F{8ZK5HHmiT&;9wG$Y{)%96p8h%DB=rPtm#*#6UK6lbQQc>*Lr7S% zYwN}X3WrChlG>uuI({8q=i=!|c<79UJy_>=B@bDe6UkkZUMI+-2KDtvnn7#-a6t8` zodCY``-i=i4KoeIVlecMJn-3BG9YsFzwhTfridCT6OJfq$rYc5zg?~>I;PL~n!ME; z&uR#jQ(i>Xf%=bXVZ?Lny5Jy-Ct}`Bo$ba=0YaDKL+5Pka(Y|E+SU4+jTXwVWq;a5 zoNAi^n+*FE0vJaepw>ciTS^x_kW42khE-|XwGxY$H zUX-`gtz1q|K~Ao6(du@#Jl7e1wtR=gPXq*cx6GVQrRr(w0$zNGxy+E1Gq?sgX%pPm zJFUP%xLi|%p+;YpGERo5>(RB~~o;X4ICVIkUpX?_T7 zSM#ib7rFn)>=ppqK?2sDNMQu5ru^iGWO%5-s|;|}e=H{_d$Xy>=QVU`H~Ns_=?Fb@ zq99*mWaeaNCRNk0s>~iwa<=-z)VT0$KP2r2yGynS25?CcO(>?Zeef1cA__Rup14>I z*LawSW%=@3);lTrS2e4uamOXM=F3w2VsN#E@<)LQBj-%Pwko-ZKW4ubNYZ)WBeh9N z{b(L51x%+m|3&T9_D;a1o__qDS~WW3p;b0bkO z*3eds#8va+8i8=#9QIPetGA)Uft~R&JqpHNK2A~{XiokE zXHsgHO?7nxkT(d(@*e;_YNP%0QwvUuBPwS>F;kxv4+FQ33ErfPao4!CU|X0=>fK0& zh;NI0da!Xj@C?*pX&RDiH%F~sanEZ->R zMR*VE9mjy6HD{WYHj@EsAamt*?K#v4UL?2)ysLp#vDroy``%h~|LNPh5R$sIAa4{3 zBjh_0O4P71jEqdZnv5E@grIy%oZC_7J%*f^58~T-7L6QN#;N(!-^8KwMKi7pB@53+ z?(@#`r}wT`t{L>_BsgETTm^sFq;7Fh+9cvx#9uz&0Cr%w4}?@_sk7Zvc>sCwes{5m z8w`E@^@fr14oVI~I1kHFSEKli5u3+xJzF-OoNPAO`}#K@JhlPwMN&@jHLx$A(#iO; zjW-9Y1paGU2bUFcGPNDSwRBYxhn&)Iw?J+t3J7a53>?Z(j||Ngmrcr)@L~F6S-N}F zcwwylq4$I(=n|#_DWwC$a|k;sK{3L^w0UC(Yz5O3CYrkE;QLw=2-(|kv%6OJaUXWU z7Q5fOVOZ`v^hgOH|=`3Tp_Mn0gHZjtgfjM|IcW%q(R9r zlxZNj17E)dU=GM5Ih`H;ywPC2HgdhiPt*8^0VjzD@b*qI1@Q)xuuddnaD}i;_`E+XgK9q{!LJLOwjeyvi)qe(?1%v<>UCWmrPjZ=LL zD_LeXu6Y{9i*#K|{>BmiqVr!hx1I-}$^rKKKcdbeD6THh){VQnyE_DThd_Yf0fJiy zPH^|&?he5n0t9QC;O_1o+}-Z^Z{1gK(t{rKfTH#}d&#$;@F9Po!4T2EkDRVYntEU# zK{qp0bZOcWOC|$DSa!%2$;U8o`AI|thq|HR4|8VCRI-G}m+dME>e05#ehDII(Jk|a zXtr#jEr@jxSF8{i*u(Xx1yJlryWzKCpdfzuFcJl)uD55oJ%Z7CsSw^G0nnGr8o6lud7`}3r_)jL$FWA)BU+Bja)Ql)zp(W2nSn?L1A;)sI&ep z-l!$v#i;VyxMF?F8$Ey)cY0Erp!fVAxL70PXxPqDFOb&jaohD>>GiHQ zU2?*QQ&+(49@tqCx{av7nB!7L@YMz3QM;o;B9p5;f*~b$k+9rE#?v;v^eu#C%{&s8 z>n#pMZO|!nb$S+io8{tTo+V2pYp*YYeH7SC+As4xSHEUTRR@Sb{YP_^-+-*Ck4C3R{<4rfxrk zldt}JgB(oaFl*PEWlGmi;A)Y>@f_hFz|^Jy48(f+SA+teUb|cMmEULGHm3o3bf3Uy zc#WgbqW1c4oMq>&W_tN=hs_(#+=JZcG9sGqlF)<_grEGNf>1+hd=V zGKFY5xjiCukX=h?@!a9hu&PkzL<8d8*$7!?DNul_{>Y6E9&S7HuQ635s}r{JjBAleQy04F@`sQ9vVzAQ^Rpi5M(V2*D#6D5XKhLeYSH9( zd!u$!kkP+$eAI$1pm72G$Z@Sn%Wl`I@Tz``&-`gB#0sTLCHcZI6(^Ryh%fWYUmRm{geC< zE%;Py2#_y*#DCt>ToTIozP*V^97;8jPsPR5He((43(#zd8V1R<0Ys}Va#MlrMHq?= zLHHv`3**2ms2`dmz57+c9#R!hs*ttDstHsSi zLqqr`|2FDX5#W?JBqLH^c|h}t)&b-iT*kxK<73bqqI|QD;^K1$CX~Hj7MK8QcicOu zia=blHc)rNt&v)dfY>@6=K((e4D0NFReNR+HY!NvaVh!yS*d-N_s#ZzQ7d?u?^%Kc z`B4Wr$UdwW{;A8YoU=d-RQmxGC#c_driY}H*_Bj;Ts`6lcmEp%*4afA+>Z{Zm4iST zKiJUjSPM%i>wUqtyjJGQDHJ0LCo4G6Ui zKmX~DHKRSGk5xFthP4%Q&PuP~)lpKH+%gDpw%_mSikM&ryWG~M%vrn7{xQ{xEm!o|kcv>^jHmvo?E zN`Dd^)QAOunMFrs@|o|2UaVh&2KM}N1=m`QD1fkj=}7#UkW}IU4Z$U)CAHGPE~$gL zA13yYp#m)7jh_)5lqnR}vJiXflX8WgD^HZi$TS-TIZBBv9-(=__{g6=G3a(b518CE z5eQvhWYdxS*B&Si|0aA5+XuLYV3Q3B;c=d^^)meGjm*I913^S)-kd)SWWU*m;y<8B8V8_)ENM!lfLiJxe^U zYv9jTZBC!2=NcJ^7=0u?KQnqsw%#~pJgR*W7D48*7?$yWxkLamy^$Z&*gvu8)Zh+H z{u51ZvEkyxb)g#l{F0-KZ9~)ScH&;bZZej^?oOrAY5|pGWG!hgk{AEN`;-$24_dxt z8<8>9O=td{+amV0+jT>OEwnk9@=X!?PGl) zs`Vet_s4Vd7gya%9OhbnhjrYF8Ul{Y2%!%~W56C~2AKegY@NC}W5&+P)!CY(kN$d$ zk-$SUNEdGFZ;A$RyP7^}_W>5dWU=-CjAnr9DERHOuVQfgJS=D7AGSY385>hdM23p1 z+D<|4Q%VDqIH)Qz6&2V;5 zn{eClwb!s9GbY3sPmpqPT)GdV%Vv%_h!|r&+t_SDKl9|VTyDVcW;V+RF{S_aQ?QdG z$#oA)X&iE*tkz3!jy|{t0=HxU#fe?_-u^hL^~3xX`fno>QSdYk_a3H`Pb-=GeS*3B z-U(ORXjhKT_yx-bO(Gu@A*f6W#QLWT6a$%v1aEBVWOT^1v*#v(g3JeX3>g1GVQzm9 zPLwP(XCjKWihXWt!_OTVnz1avC2Ej;7gd7~45Hp<9`S!oRykiXw%&H7w|8D(K#bo^ zcW22+c2qsnWm^|FVvY+L&X&V~?Y6@0b>nBxrFrQ$C8^cRwOi2nyv7g?GrMFF#eKi=IYijx_(;IV(z%W=Y`&nQk(V5>C^&NEr{zSGn9 z&35*zS_M+zwN0eqZKKQOwPNr!asZ-H_*z%6MeVN2zMyEqj2%Yh>?qBWsh->FN++D!;EgWic{?VtLv+ z4d-gB-j6d2{Iii#^r)Hoboh~;`HZfkESJ`pkb~pTR*QkZ)m{R(E)LzFf5QD4!3q9> zX}i<@22dvFb&z8DSzx~Z-Rutj8k;lMTA+KzoQ{4m8tYlqcQCqvx_K5G6Zx4Q4q^JM zZ^>F`n3k`Aw0UErW7@>!o>(??P*Z5vj+^qii1e%DN8Q#kb;w|e+tc=S0BBIlkG_Ic zkiq!ZftBf#h-@e~w1myW>x?0lFk0)5s1p55Si~#ZC(;8@-LN@5>1@J)zH4sn$fiQ= zsPRWu2*1kX(5w&G=Mj;$KtVT_#qE4uGzl1jUstyn>YJGpVj^sB_b|=+TPvGV=b_)Ce`*F78iA~Pqk7iKSOryTp;6+A!#SW@8(aNN3%9CcHNY;~Wq zBsQuysAK_PxFATtveFRRxhO z(wMh2yZHOn(-Xf%EhKUQ?CT9}%vYleY*v-K9E>N^Dd9r{=)m-%z=W=Gh92qI9K#J& ze_I#@g4U5LWN5k%?#j6u-A1ta6XGyJM44ZNn>j3))C09>j!A}t>yy+$wl2@R)7`ob zkH2;#ZE4wHe3n%N0&3@hMSRMtUJ5b2MGp$7Yp6z(2B& zet!b+5$iDW5D|cUCYFGTO0i(4lAnNvdS=WEk4Zy%0w8`;*G3_fAzxAYxn?}r3xZ6( zTw;kj>U6U^@Zx$h&weIfZm}hX^7z#vBEpcEl(xwr-O#Y^>?Bp5vX-=+RCd4)>WO&% z5@YX?OjF*ueViBh=Wj{5c$N?#GTI-lwA9iS)gQu&=n=}Gmmva(Y@gi;Fg2KTlPN+KPEJ;UXC!QjpYb}aiy;Vod zl(K)o6m2UB#gXRc4qnwQvYn+C=2ELF-zt%^P=NS#7Los}XjTp=Kn@0~H57_QSB>GJ#lZ16p zZ@@=A;35(H(J|kx455aUN#Bs^BF2* z26frx%3Ar*fs#mr1p5yszFd)KO$qc?P*UKP>4LS8hU7@rMnK&8FZ?RxysI!d=S)pa z4QqY!Z>ngRr0><-5>qaa_|vCjf;}WEwST)#iE3qTR|1{yoN{CqrjGRNoqgBFER&p9 z22-|oBKk+eCrij^2Jxb3go&ts%yaoH~ zXjuQEN%`sxZw8L}zG-8=4XP8X4H$d^ZL$S zk_j0%efU8FND^ar_GC9`=t)am9R)X^^0IGr%>oyjslebAHY}={a=f zy2?M)tlQNm3J~-H!Dlz9wwx+0MT+;G2xL^NL@~*~D#Hy=&J%S-KF^_pj7zvv%oqu) zctL3FudO60{!NwLfyCl|K0vOU)NZ*~;nH>qwzB+4>~B44cNMj4B<8OfE&NuO7{>Ln z4FXQtkVL3m7&+!8pJIqw)s{XzsK0>M1#VFRY?(jH;rKPB=a`%)*2By((R4gyH%DKG z19`t{MaMI1q))8Tm&)4lS?En50_N63_^4NG#vW`^w|8BrzVJZMxGDo{gm+CE*!^mC$|4i8U(rYh8 zM@B*kOi*POYi}rpkn!yyW88AH&On^~w3g^K=Fm<3ibqs6)T_i<2d?5*681!wlDt5m z&HL52FpUGBwJ<$YeY{dXVG$}B2+#E$S}s9kE0tl><2GIWTW4;p%%lYV_vg{$B% zSj9Wi>u={%IHvZOAFv@z{@Y4Y^pgZF(60U2!sJTX$$5ve7b^DU5hH#rP<+}%HRRr4a zk4-;s`H#CMORsI>gDsiWw0jjmH4=s2mPz3}NRvE$bS`n|_;OedlGB-WadolMyp-WB zoXAw?o1aP~Vv&sDe(qh^O4;Jpudyui-94%nFBdu>tPrS@$4A+o(yVhgF0jmc&GJF9 zHn}EdrAQdKg-XiD4X7$Kh~vY4(y1{h7#vi%Y_nbBuF$T|%+k5|>e_2w{SytdtKR@Y z!r*~+JB;WW?ZOlEhzJo|V3)bdeoI#C0)TACCINwkfK+;3PqAO`ky|Qq=GVHIX7Ml|r@T<+gaLl3)BJvw4b`RZqTHhM9 zGUitW>Wq`}f2Fu8%O%c!N)oS7twsOB{_B3%EwMC8l#A$q5-}&pLX_$s$%GV$WX za3;&kIAp0Q{)^b6eckSHo6`nLtCj*r8+S$^^u5UYbMv-gE!QCQ1PSfM3K#9oW-Xr5 zeThZ6j{hSZqDkH+vR^!8mg^3zy z@DlO@rGmP`;36z@1VLa!S10lrHXl`eCtflRC6)0r_0!As#9?uoVc|0}FU%@UdMQW_ zkq*X;B{9&PXNLB?I0Pt#<)cP$73Pwo$D4#O zjLZI|Nc&ihMfhv+IUkF8QF@;pEp01iT?vl! zd?Lp>e#M^X9Fy3cE@|BZB)LAt{{+eDLgVN-mQ>#F+DD7^G(dBF;wp9efQ^~Zft5vM z8vz0;LohKF$S2%K!CW_sBMDZt7G4}`9p`~Nm-9es=bY-KY6RD^+Iw z=BfuCE#w(!T8b}^Me(GLqDQOy-oKjwAr4ap=@8% z`j6X!iPWj`x$xgr8=HHA!@0avtaOo{K3HR^Q4Ef(#8}Q)V-h*+2*gbnN+S>ps0Op@ zP^Xs*3M@-v5Gz)JK4DGofT&veeDe@MyZ%hnawGOG=9xi zuUqD7!%n?q*ME~#wvY!j;t%=2^LnySHVXB=XoKl(RT%vt2x0dn;p@xubE`!|GM^<; z9&4Y?IoV>`T<@OO2`f)a-lC*74s}pAm zq4u4#OS#6kQJNnLlCa8Pq|nAN;si)vE`YEC%2CWO?%}FbvWT;3jWQnDx8tg({f$@ELJ_ItM3^!cS<_MLr9~s{L_8(P|N8@97+* zKS&-NsJ^QX;6QlGVbYAmngHoe=uZ>0*UNyyH#GwEbZ0MLgW^9vND_Habs1^j?@l=1 zI7}2O{(awzJN`ACn3c4AK6#^>g$Rjw%e_DGB;kP^z98d3%_ zpDABZIc4+dNPf)W<>0wn!w>lB!m7orbYLQh9Cl;*I)*Bxjm}3~yU+SHX({ALt%iF7 zQ&V8q+&-EJdii_*O>xucbV19GzI4(M54DC$K|tW9(C!N6pAEi|(O(@u4%Gop1U0Xn zjY|5|hSeWitI_lXzo$b6;AwyhZ0StNQ-onylxWjtGojg8zoENAmh4LAVVv514MnNNxuMIP$ANsRm1%4ovDTDF&p+;5jcErz_3b z`~hp?cSBccZ20|LfB&fvRUH4OVOTCzUykS{7 zmoYTBsvQ|`G~Mq~&khjw%-noCp`3$;DCUd2@?r~L<_xb~uO+`>xFFCXttI(X=vfi- z*(w0*HKq+n*XKFf49SMTp00A9?_Gv23UHH7+aJxqndt;XQuQaFzHiSbSlh3SPvG8c zObFUQOP@J)tb>xzHejASMYZ@zi6?c*)F5$+X>I_3Llz2Tps%%wK_-+ONx-23EHD-U zvxyDuT+17X@g6z$T~iH4Vt5k=GF6~QMq)pgce3@UB&-2M@$^bA56?~0mCIJPnedEE zuSEYD3rtbmx^XUDX$PQ#FnONYeCf?hvhCtF7V*49Rz6vcfQQ4#-rfM*H79}j$ug%M z2-Zf~(+p4!xg52ftH67`o{;8z2&HLfve-BH?fIkzH49%xxmXg}XnckoA5h9ydoFC6 zQy@-(EHtTGmw)@$b)w4c zWO|1XfCB&Z*O;l-{?M!TX|2U{%U;*Z#1BNpaWK4bI{UUHl!Vh%ugVm}yEUSkCtM@w z*AN^fg)7w0{->8Swl|zweniw4cZZG5KLU-{!NqyUx=eDTM{C^s*xv_y86=)>#h;Us z%y{~f+Z#;?IKdYCwZA>otlTrvJ=SddDj!ZW6}CTRL<~JXw5JwhCXLt|eQU!9IamxQ zQ|(H^&csX40O`hpMMjpd4jEY0+dn5hKXm}lSGu6CmMvR9x~gOd*_FUofoAz#hQkr8 z@3Pcjvi5PAvh ztY#EX^o)w-pRD)S_Aq;iNDSp5=gF_Goq+I4hfQNX@VlTJL0I=?I~)^Tco4;=gb9Tb zixQU&>z>7`{3yB9RP^JZZ9ECRm~sG_n9m<$raIFz)V}A4YE@$hu)WhBFEO9q^V>z8 z6X#>(%@XX48Dk*Fq&S|^rk^Eo#A*{?7#-PogTxn3=!f`UX_8uhj5u-O`b?dC9tu@$ z7-S{WK1tW;I)F6Fay_4fu9}g5o6rfOmfJ4{K}`l0bv{nKPcPnSG4XTAfkr`}bY@D77AE$Cy# zc}yumFDadSs8{mO1FG~WW5b^toOKw~Ck<;EW+zH)k1lRX1l*1RK*L%S#Gw=IGb zAD(Fp086`VoO@2nA}08+@p-Bp(D(YUSKzfB!LTcB(uyI+x(LLg*d#2TvJ{3`jnZK> zeNO#fo*Z+lYj*d~ zus@YeU!m2)Y*Fx8^GW#a)e>nf`{i2g1x^4B;8_a#X~`;&PBd!)kd-6O&W*T&ol||~ zI0?d(Fo&|723B{t86Jk3wJO8p2p3*YI6VYwI$N36O*aA-`hP`?<<`C24a0)+#3~q}; zz+)wBqfay!6l^|Y=m~xQ>v(~+7#K9yb}9Z-y!~=$G<0~0n22`qOiy53vqi0XzoY@? z{mqV9db^256v%PVEeu`=P1R?|S5qS&BZ(%4NbwyUc7gXf4S2RHVcY-vB7j2Jv z8eFw8UNJNs;azS3Lun!#xRXMQ{ z$(Sq(1H(7p(sh~2DUy{S@UZgGh8^01Dd&$$Hs>XHlg5i?pdN5`5gS6!$c2i z#!mP5!ne`1pQkSVHVa-F;XEsvU62T7klgmq-z9u&Y>qy6XR+z$N76(1kh@vbkH5Kn z7#w&Coa)d*l+}90JTCH0a^WxFY)!gix7{&Z#vHi-_xdTvdEN#5*juuAl=CSyd+xmW6ql{N{R9Y|(SP31y`B8;1-t&6@$IFA0 zhK8;t`P!eK03zk%+{*I;lSP{cD;(nRU`e^&;9lTj3k%9|C0OFky)md2rD}XH%e~Qw zs31l#0W9sx3h> z3mV>WL8$&h*_yr*M2icU9c&vfW_qs&3)*wA55rf+>0}@Qdw}HxTUS1eIhpzv9y?`6fUCC?WU*JK!=|&&o@WSR~#PwJXMQv-!evQ5+4)V z@$6zG!(jC79&hD1g=aunYu75gJO~3h+bZ)_G9+7QQ9}MVa}BIfKAi%ryo}7E!-wAQ zY7&qW0v%9Y4QMgo0VY8ao4?cENi>4<^Lv#gw4<{1%W{}$)@Gi{Re2S8l= zAyR`EKt%vTU5eM$JHu;a4l__~I%gI{xCJCe{t1R7q zh+VsNSNoEMJa21hBMk?U$X?RdzzQhd3we;sizA5m6?i4Nw&@Xu3Wjt_a`kCQN1MOh z+by+t=0XvmHU}_M!*HC12V6y#-v1KEsE1!g+2(p{=ujSoYhau6Hgo+HuTeal8E#h8 z$|T4FErCZVn8ca8)U_0k5_lcO>k~ZOwLDi*9?v*nr9m?Y<(UC&-l7L7k{iDoH!ha~ zvCm$%&4V?*F%p>Y(&nv$u#Fod;MaC>RQ;YLfZ`Fl$0pe`&#)NF0$(^=&;5&o|qpo4^1UU{iMr@L7V)rzCf|dqGQ%Q#%t?7`4NTSj)mka)>@WFl0dNgrtqW5ly#~7hJ#8J zDLkC?_sy*x4JUFacGyYZhn%KGjoIIMp56EwlJy1ZxoUxInz2S-;AEyc$`w>t;R0Zy z7YeL_Q^>+TV&ESk40=9(5M29ue!%5_^)-Oua?@wh`6|$;0aC1P(AOyhDEVb;dJGk7<#b$DaxCCLz{cLbw8GzH=VS=tItB)< zwVNbhIJKRmI!^-n8*2dtjSHPYXQ#+?iS1S$!LMJ0eSCm$%RBNJE(s}pr#@f$0`Y3- zvX#^=t&1ie=Tly3S>o$}7KMnQ+t#At%(wb_*pf|H`z3Z+ayOKKK&v2I?T<9Z@`-Gd zc^C#1*h8EG)tG}_K1XGeLr4MKWgD86+Mi~lP~NvZ;bBm~!x!t>OYIq$$}y)dMM4`% z+?=4DjDkRR;McBx5skP&h+`-xqI^rf%ui8(Xh4b8n%yRxe@n(QRgFX`S3LHQpa_R% zEQ-?*-g*KCN1OMx*T-xEHT z>}CPm?dm|VlnJP>PG@YjM_Fa&(i!?QEC>)%V*lV{+xI-i*6yuW*`Ck4FS8rjuzMjd zozNL&=*fqBK#hTuKpS-w{WjoPq5y+k*nTg780Sil&5hj{E$WA0K?hsr`5)NlU}?%F z3$qh%Wi5z%%KN;N0e5&esczl67c%sn)LN|5Jt`3dT!$nv^i)Ol+G0ADq#Lq|W zpz|~pGAi0hV|%@_`O2r7kXtuPm6ELI(=2!j8heFnjMvA5JX1rs{W>-N(=XrPdJnR8 zf7M*WLK14l4#31X|97&g+loa3ub!b+TrW8u@G!6l*eIRFpR!Vge*BXFz<+bV4lrM? z4gxx<+8xGF_X0=uR_i1zR$9{Ba0)|T;9p)da4}xjZCwY>LqUQ$l+oG#H*x)W7grE0 zeFGIbGlL~0+}-CGS$YojF>+v-(LYJi(cA?gV5|3acM7G;msWyiJxH+Zq9;$xl5#bW z0<7O+ugNwDWFS)^?qLrlk@09WMqLAWzukw7fMTLC^VpG3_XjOhrMjNVR^+d4cp)-g z?>x*5s%fDW9c0yFmEuH5hLvAD75M}SB!&HMPn_&{_U8zOhll@&HhM@uio`ct4Vmxl zNi6;=r*hZ?B~il9)Scmcm+pCrH!Gy(t1#k`OFK;$9-dv(BvoR9n zkkBT3oAdcbVJU;*O>5x9fAf5W2h+d!LDdzN7yTN~T$r8+TCB~D#zuQ9{ppg)j=KxJ zYP5|TWxb8i#OkfyV6He~7AOJ=9RmA4Gjp_h-SE%W9S|;$T%IR#q;IJ1DN-3QPMB<2 zdHSzg=(nOQ+pU?VkQDb_y$Un|)`z1!6pTz>1D$33?-sx$?+R1d{nTTc{5K-c9(<{e&ig|!X2Ffah)t-|}ePI_?|$*qP&zeCXL3;FlI zUQn&JU2yh8fo6aU`hS?q`4|EDY%E6?*zNW&8|80^F(AJ(@#hnsqnXk;kTK=wZ&QV` zTr>f@Pu?vKNGY%>W;7+HKkd@}{&-TKD@6&_8x7XzH35DS=~Lx*X|Kzy!(5KCYT|{I zomZvaAtEnDGrXC$Gu*v>UTvW%66hD^3k4|^iL_5CbxaEh_ZDsiA&R#2xPxeqp6~c0 zNkLp0vP9abYmS)*-OzRMPMt0n-yKP}Nec>mE7(osFIoczG?b62d@l_3rRL zk1bbK2!Zj&OV`Q&2aUjtoke*crE@uedeoexr>ygnU5#$_(X89p$@5ZVxyiWd&~Zzs z_VbagYWlDioO2L*KkRs$T1%Okr3H-p7igzA#N`AMzm}rxO=gm8Z{~IiYGgv430dTD zZCc^%aSA>dY(Vms0SwU4BmBS3tQz#Zjhfi-x=?k98ROHRgs>L_p)C%+wE1!|EP0wD zLjN*`FANz{|GDuF`y$%uw}lJfGsY;3ebWiDKv=XE^Sg_v8?FJ>lqBr>fs|!N`4~gG zb5aw|KSLY&p-3OWyS}4J_RiP{yTg~rZi*>ze?9j^W;AJP*@b%)Tag3{uC6kQ!X{8` zf~ovQ)47s`TMh!nZ?%H;BLz!`ue5C-W{$~_d~`Qi1fK$8I!nPFbNh@Y=C5Z`!>)jj zj`7h93EFeAP`^}Q0=FfM#X4onU2w#9{Gk(vH7@&Kam#eE(tr7DU?I+wgtb!q{iP9+ z{?I|8s@>C0qj5%}o*ZGMv}(M(mf~!M@-hHJk&o6M*Wo7Bz_yixN33$5@@hy?qXY*@ zD@n{F_2w4JGJUSSINb=pY)VFK?9_Kuk!xeU#kQi_rO!L|R!9Mx`~}MV=dXlbCiP2- zF4L?pSVfXbOuC{aHEPGR?D3s4cop|u3ClIAhFtQp&PkD23k(E^&NKrp>;zEOW%L!Z zo0FYDIWp4Np{(*Upd2&sJ8YdrkHNQr4ld2@M|Vbl*K_d==jZh^VKCc3OR;YlpnURS z_v>(S2ZP{jAr*gm0bowK-|JIuG~F z+AUX$vjK}s)X{K|zZ5*)70WQYz?oXy?a^l*;UbU_fNW_e|xgIKj zJX!4~6#(=YZ-=uV>|3_tE5L~htIg3N|pOV+8$IExpw=3jVuFIS>5lYqP}DUR<#r{ z5IgBmMym`f>lD@QLpadnhdUr^RsRswMdMVuq=04ivGrY4FpAmx;g`TJmION;=L#oAxre~BJ zXdX2N<7QZYqHH8DP}s)`vF7h15ekZeR9`JB;NU>WXT$+$UO0d?7lgS49<2&TPE|Ktit8gg#3~46Z^d) z*y&!RCb!sSP#vvSAO)w_Y)b?cok1Ds5E!LL0sX31rOU-NkwBE{z`1f5amun(&=t8( z*cb%~g7(~#&>d#=Ty0YhOoI>L0dm!zavq^0;)EMqT)YQ^i!V zEO;50VS5r4p@47BI9;;me2`rdj?>1Sr)`oSa>NEG2|B-;#SeFY9eDn1W3QPaxzK)- z31+?Y8oGIz&8xJdL7FBA2`N9p=(W|Aan$!>xffJ_wZ6)6-s`&$~2% zvWF{;iS9CBUu^xfTm8euW&{@5M@PRPMZ3P&Dgv9*b-=y&==W7n;+e$?lT6VBfZA=< zo-R`)c~$vTGYI$GM3&rhnR27`9LELS9fe^+RHgt`E``kFsJzq~NWj4wGwJ5+L{crH zg&hULAVfZ9zJZ%3-lXFLSKD2(i0`-=c8-q2uK7TXD9^5%>ry~=y*&j)4Rdtbpkc|P zmtphcWZ>0fViJQ^XY}oe*U#ZhLo%wDx(BKLWY*(cUXnDxlNdy#fE=;eYPXyXC%{wz zs;uF9wrm@%`k3*#Otp79dyDhM*csa%mnUZ18!xR}I85@QTjew^?9z%IN<8Wfa|p8` z4wNQANoZs6c;%UEuoqm@zYL2z31LN)upde7=f%SA-$Y=Wx$*s&$ed#=rcKw_=Y=J% z1?1rG(P)kzno)a97Cmu&^)FB;P0Xh9F_b5KQPBw{M^aeiw|=9)0DtFiz!u4041a)V zlzvahh4dhjpzyFe!x5HEAy!f(w*IG-Qui<2g?H>Da{qS0>%HT3H@+B!TD`Lc;LA7& zWs5m*6?3!Wx>$^u1b@*k4uImub03ZPkBVQQb3dDlhH5R!o=l_J8B9SQ;dk*RG>C%y z65`PHn(B3T^37NqUcq~%Y6H#KZtfMfLK#n^wcnTkWT?`>fjaa|_}qB%KJ^o{6;-=b zF22XEBV3ZD))jyHUwKUoPI1Oh+X6(X;_y>abiq4uS~boKxCYGY5UhaJARxl8d@p=$ zW-WsB@J2!brhmm_7b?>zPKr*D2gYiCnzhs#;jIuV&EnC@DHB3rBQ51iSf`2^RrslL4xhzZr{$Z`XxqVz*Pxa=q7l`F63MFbLylNKP%6-rEmqeER5*SLnyY z6M}ByQ8KmU3SZ!CCQgAQZ@Ju`U*xiLz;`WRh`&g5y**WqcxfY8jb+LTy6od#w*%DZ zY2fDnFBn4%NFu*yUvUQ%>eL$kNOQ>qvRNO!?@q7;zvyCYw+XwS;f^(bn~?)?0yJ%= zWyNd(EY(LpqIJ7n5AFc;8JK6TJQ*e343$d*zX zdrWIMioE+wBGr`myrM>Fsrt(%vTOSUl-H6bj(2OU@N@WlIuv1iVoDCW#L}nt-&~^a zbGTek&IiP9$MiwWeTU&qRCdQTLxYMP3(OkOoV1*wM#aO$ zrw}iAhp0YfX><7xMx#GHfmh|!hsGa^K7Ep^m$7`~(wfGjte11(hW_f$s@cpzzTt2b znSvZ@fQ92M`g8lLT-q6LFP%;;55re{A?7)7X$s?C6za;SEIz#F z_vejwsj$G2Nl6Yj%|O=E48Af$y@~7-#(B=opYFwgv#Zf49oXP!4ni?(5xx ze^l5S-}P+7@nUOaiMNb|=lGICIS>LHND@_8!4~5@bhZ>|ZW^_DmMsSN0ZoB5>go7 znZ9Y6X7%T4J*M@4b_r#5uKNyQ%!nT*9^3HNwnDN@(KbGiy0{}q%rAsHINpCqyOqqW zxBnYgWy!e=su@rO>ApW*;h-w`<@jct!n)Ls^k)ZCn^YeO8_i6iMX@f#01f~D+}iLy zYm@aK$EieWHELH+e!!dTO1;DHszNGef3D`pSj2z_g|1J) zr0R)OTBPV;jts$2MLUwD~K^GcX3>3-(t(_k{D{UHqnb1LlA zwJ0a}JFYfwGOjT8wCQBGvKGu7>-%y!5cIm(Un3sb58LMgWNeB zT%S*{R}Q{d-g)&U8&{sg;3B8K%<{qqIQ`f$#mR>@|H>oWNMNr|=I$+kQr= z4CUX*%}N6^bZqfxwvtg_(Wy-K0}DwF+$NGAe~pm{gQ0_UZQ3}>bRo$La?_`HwBey% zXYbsz;8B-j0MmesnyZIzh|rSdrd}39yL;bD0pEwZWbTUd_{YX5zJt*(T!MY`y9O5c z;fc894)=aPHm-Zt5QKb@F{DuttM+@j$+2S(Pf`K_)1dAYNaPiwcwX&dMJznMt+o;O z{i5aXJ0Fa&W08(T)!0yNUpW$CyA~PO^7fMIOZV#7cQ5`0g~z-k;bygf`8|OR38t%q zcfjiW6w%91OhUX`&c5KYL-K!(r-%(zyzUi1RfRLb^fA^BYeEDM42lQ5BSD^k6Y_uC znZT(`H+uP@a0QSHCZ~$z(LM!Y;=pU6ro)3F&3vk}v)IRTmGTTK*_5C`fO7ql`LFid zlzvCQYIgE)=T*YOWFF1dFR0(UDXrc?%Nh! z4WS^8X@OGhZuy4YHq83V25@`Sdw!9qf~cTqz;I(aHi3$f@vUS03YZ)(b~)cHMF+o> zlwA4X4x^GVYSi-8ndZ~Jw6_A$0eI55d&Rh z53xbKitj$Eq$cRjUs`tGunsaT{YP`lt~x+Oq#F%E5JM!+LK_uiZNkC(ps)0+Xh?!U zV4(yU%VKgU7UGFI--XqLC4(TlC&1K|uWGJ-<|7S9*6KzxVm2;Y+zJx(0Z!QTqVx5p zk=K3QT?9GDNV&pf_Lzm?kvDec#@2< zUaA_!aW9;BbLrsPu>jMz{Eb0bgWFGHVX#klqq;4@18Pn4(?>L(IN$kSELaRfKZ@M5 zi+;X^YthATY9AD-QS%1d_(eBTNC z*EYmCBs>#+%4hG}Bd!0?W`AgZ{xXlcvv`pU)!ibuVcD{;FhIK`in4ki*L+m17iFP# zX9f|%4KITkP5T?Vbq=e6(5Zv`Wczh(jd04rt|3>Eg^ zcS(BKhPd;t_uPD43|=0eJb*tUiAKVQdk{^?MQv#q3QhDsG@WBqrrqPV?`+$)YjP7O zH`(SiS(9zsuE};ywl$M&+s6NTe(Qa|^tD>uYq$4_V)P;V|QMfk3jc$P?zwn~`Ug`5>&q03{MY3`g$g7@`$>g?_l4|(n zx>~oF1S#nF4)p~i4BG0BxXx^*HW01-=YsVTea3aa0HI|_liMytfFB%+l3noI(iw513jxhY7w9oCqCN?1oG^d1MLFRuP)hAir_e@+(`^h){TB1=6(;|u#dPHt8#au+r)Hj1d zRP__1P-0hKhEr8t2Yp{=tA#va0`AJ%0)G%1AhWT0(I~t8%}As>Um&gDd0%Wa z;IcmJFm#)TaksF3X09G0A?puO=&sTq1q$}YgQUA0_s5{xA_coQR205afnQKa#(Zf) z5)T^MoJOaYG#r6i6~B=|lDmIX0y$^!kr4O`WEOu||H0g-=tw>x7*pjZ&{B3Fl8rh+ znmKX7vfp#MKQ|=E<7b6AJZP2AL-c2CiH1Nk%=M2*)nA7`2OT}%@q5#X%wUo$#_$s0 zvcz@x_3$>wuYrP*zM3F|v$&<`8@rhKIgzvD<`URGvZY{TnQJpb6!Lp{OiSQD>T?EE z9#vVTCT$^9wGB}goQIw=%#E%9D*x_qY{_IMcc$&`-h-NI%j@M1Kf+L}=yWsdy!#vi zb2gtfF1UdCcHwP09lBot+?ah1ouH@r`vxld^*4Z9V{d5bn?Lm*K^c@6 zW%k>BqH4;%(^5J7o#q%YlTN3RyAxdKT{uW?2JS*dnH>svx2ej+PHMC@hi8>WcjsjG z?|}GYAv%oz>*6o+J6TSyCQhMNRm!H4OtU+M<`x`?%rpZZRBsfU+3MZZp zC)wr!jK;MY9g>1s-hB_5N+w5{HoxbQB9NtLY`H`sw-zrE7|(-qj0Zqs;otbZhgk@h zzt6AwDuh$a{LP{A{a3b5APVod{nUJSi5-5Qw!6w66Yg`VbZY}f%T*?;H>Up^ew(`& z-pij2+#V|eHyj;mh`Z9);LH|>Q8R9(*+y3CFBpHpMi5Dkf4oBHGgRUaM$`ca7fj`Q zo1oJNj!Trni7diYb}QmB^~U;rn;vrt9c#t|#hgT>ypALRp*Wk*2s}r$eMY^0)nfWT zqohKeWZT@$lp@~V*8C1a?%(>Xd;vlW94UvCzVU6pNi>YagW>X6GQ)8X7{|Zl1rk;` zoa*%e09YlfMj2GP8`)&DgITsW{_L9jetwnOABxOs2-u8}q(b^$@-q7- zprPGcBvfuj*TJ@r^H}lI5rkIv{Q$-1KfOJ2rQRTGq(PJpI=Pr^+{k;_UK!^qtZ_WdXK;(w+ zr#HPyF{1dlZ?KyJm@F}b;ZsUl9d2y%)p|N0w#FR)o<$4>#XP^TPm$zG!0X(}Af1ek zh#-Gzy*Ze)`pLDMNHu8p#WA?tmGuA)mp)`9CUMw(u*$U$$R&K$RdfT+8r-78H*PN) zGqHH*knS9uW3q9I|z4R*R`O zU+1NKX-!)$HzW0rPWg|n!OW$`wEevCdgyiC^=6j{3G>vX=m-fZVxP+U=G zMyQEY7i_}lOnjFJ+YCs&fbTZe;W=88el*k}9OlY$L5b1h^%UKVT9Q!C?Y3F$bJ%&e zcP8TTj1LR%o`4#M3!O}yCurE6Ycc`1(Kj)7poL(qzADsiR@I7*RCxZ=Tq7gDIWj7c zv(mLcTPmmGjILG-;=Ab-?xi?+5^U9MwWH##t|aUWj^)rH&M~KlxSgNLZD*tSMo&K| zk|OskTTu>Gd3Hlr@b>dtaaNtr=T)b^Kxso+Y_iVdm*g^d=K6?<3t#F|WW2GsD*%X8 z>_=7RUj_1m6|0TFnMT8NQqCZJ4pu>oTEeA(90kjfp4dY8evNoSULoOw=Y#_Cz_xn& zG10Y-#JH4LG+JmX+^`zLfB#?j>Yu1RN;uXj%^U8iG<)8c1q{(Y;F_*IwFUKG36uOC zx5I5dXDY-}D#`_J%mC5{!4PN~)%7qU1iFw2i$6GQ&`#|1HU#P@^>AI= zaA_WDXNIFnBoMmM>)8RarRBH2PXHd)47B+j z>#DqY;gp``B8rLz2)(?@E;qk4d#klM4s|T>0kbvHZk;^Iwlm>loi9q2PV<_~hYQtH}ZyjO$Nd^CQS!=PRe8$M<10CtbB4ahUAT}keQqfMs0xDk!We%R2=PpBbSCwPO3l3J> zhBpl;6@lET{#VjA<)@~-O^NmGxaA-cL6u@T$bI7FxTlKe602WlG$b*zufgfpyj+RB zC8Z<;AP7i8?xV{5?rW0 zl8>rR+-u*jfC=;>=|t-PKxAs`6i=}=4dq-3Snn2T5J*-T!#$dp5BF}>8C>RI>LD!T zu-thr(0$C5nxg0L2I`dYRX^Vs#ykTziLTi?%~-C#>@yok8knxc@HH>0rhIXRZc($B zi?;V~m*Kmrp;5>Tem^MVg-!?=jZ}8>`eYwSlki70XkR1fBNBZKwE@-3D1o(GvtGDJ1 zIjqAkYVgKj=$?b|dcb06A}e4C0>Bo1n{W3b??& zhe5j#_=!}~U9Sdokl=a6)2q>2&XuBp1^FKi0mgo`Q!)RXzma;b-IpKC<^7f}@J-^Neh`kwXV?OS_ec($WBcu%IpISN>pz^B+o zhF`|K;NI#_FqVYY>qhjf;Cv%}U*fbPwb`xyWhQY+`X5na5_5Vz#GetCLz@>{yMW=+ zvG2tx+*^{c$Et^HA}@nqKgZRi7uiGgV%BKaS~!#Sa|0!eyn0&;@9RN^tl6~Hj=LGz zJ|l9Ngr36Wrk_+EQJ+w&rr4FTjA}mTeHLb*qlFd1&ODkOWnMt)$#jOJ3Z&3TS8QN0$%Y#OxZG7*-{a#T2u-6xq zMrQ{WdLZ-v2+blC2-mB7IM#zMNdD*?N%PdH|xgB}u`YO~9u$Tm0`~@-2=C#t-aX|DM|JC+-|Lm8`^AL$C z!bz{uD@p@IA@KmYy{V=o9gCArOMR=kF& z>BFFHq_R!$$9@|eXgA3tihsO4mjO^JG9gCbIVV6Q;HF4R4!k<&{u}*KE&MyA3Dd>5PGYz6`l>`m)tdL zrdDkSIQ@3uhI_PH+4WaT?#BNhB^K(~6jtV@c#o{A2aX z-qP#*2~E0DJ{SDTd+^m$=acvVm}!iBMfl5sgn zZbs^Xc8D@LyLl43aW$aM(2Fq)c8-5ASP!OYWv0n72DrOQ5vip4K*PDUM`ClFut`mdyZWXD^_z=I^1CJ{|pc|3wXV?RnDusPa?%!behy})w-e*hey-6j??iMZ+X~Q zMC3q0gRD<4YA!c>(rR@o0CY~0Vk>jPDVF&>3-g4+&yc$ZN7x#07lfs*etJ)-)OEQ@ z%^!X7!$_T00YXSWLq%WiH`Z5+Kc4BYkz+I{9Zr#=ZX9dzwnA}Us`?{bb*?`xl3u4)xvAwx z_fyaq3L7Pki|yN^YVE=}iil1~LDwdo>Zw{^E)6s%MQ5u_Wq``*)TGr; zJ4n51werkavO^y$7mn67+kBq^a-#vej1qJE3|!>SySCvRAelrd|03c6mbV4|SR$)g z-_vb#U!yiG95Df-R$tt%48aS2>ec}jCsfl|wb8LZ!#e;~MDc)s$_m>{Kd?6ryWGSZ zprj?506|3eRaZ58WglX9PbAkVAOLU?rEY(^<4UDdS293IGz*m75od69MF^{P!|J+ zzLbIl)<%A>tunaS7RgDvz{?INb1h+~QU`4}1K@Ei1}}3N7Dv)fdlg_f2iU*!D*=cw zPf83ul^;`77w!EM9ABFCu-ZI6D9bRduLVJ{_{gBBi}m)*@DO6JIM7Xi=yj_YKO8B^ zW+3~%LM6c~&`3p0`Cp@d%noU|-Z80Kg#R!WjkJfsJZ2WyQb1G_;esX=Yx{MKxDTMZ z7oLIs0eyRDVLd!kn-ciLFoh8pGvyYY-CVzDa$h)ondGJy@T0;ij%WPagso-4>`W-( zWH`Lg5!Ca|SPDT|mk&V2+%;p>6Gg$?%Knpk%miBj{Y=icFH-pY9(YUrHqc#Q;GS#Ze~o(=yF@W`;UK>;WCym>E#=iYHR=P>_Lo8!!2bZ< z!}NDo+?bz$A>H7H_W7`Xe4QSj4p!C5&EqV14Pz$LkK*C(LB`(#1L+Nj1X_e?wSmK% z#3TwT7){;RLE}O;d|v45K=t_5r}8^+(Xx%E&<5Y%3MEM6m^L63&QGcAOZ_1?nVX6{ zpTAxn<`Vt*$~--LuhH*%xoF^vC4+(gj2C9rV!iyk=HTAtzuFxj0g=1FH7x@oC<0ae z@oWi34-RMunSd)wxEKk%K&3?fKTxFc+tJ7(cpj`%K25pcfh3n7;Tf}b+&4y@9ayUn>E&yLWd&Ec6oaAG{5HRd z9%QQ83C?E+Vi*&rnadh1Dyi9C*6XhxccsEafox!#MSqM}0)A`O88-r)*nS%_X{?#U zJA))Qt{`-f7!|+mQ3s0amM(;>XvY)W^00d@-b(b8lkV6iD2j>0hix6LOZHxfhzg`R z+)_jh~Zmql5rDxqDh-Hik!L!KrR;X(g9YGPwSXNCFG(%z zs37=UXc+Z(a}j{0zUg`E)*ey(o2U+m=t45EIjopdlqxvIi|@T_x7Kv^cv%-DzqX!C z>&gmx$Tr+gsL2$xQ?h(pw_ar&9uM&*=O%lQWflHH0@3=wlq(Us=sb zoF@#HoW>0X0d)TX1NcQCCE9ttH?}VOm}G`~3IMiThCG0IY%q)(O`t*mi$cQzdgf|L z+;;kWKrYaJDj-_h4hJtUnO2Kqh3}U8M|Fj8EN@Iv+O|@amhz7&BBwPRg7Vf<8TDnH z#roNhTe&(8nS3P}I10ntfC$F6m|gkQKEa#+nG7 z6Qoh2B=Z{dQa^3L|LU}#vNSImt+-d~KYsEjVxxR0rV|F<#?b~}i;{3AUVdJj6YQWK zyeO!8``fo5I*c>2?z9a%L_l zJSn}kmWP_WKAcBZ$^4Do?DEc>%8r!(JCe+h3Tt}G59Oj-3ZEm?p@Pcz-$#=(_wVC+ z>MFqWOD#Bd*O|(i{8*xrjt}8-0%uydy*ggs+SFJ^r;?#u@Fo3jx%Q{di)Zhlw;bN! zM?ASW>@7v-b_?Po?C-EnS!#X|;`>&ZO#^s7aBd4$?O1&lu%qB!RweaqVI(q1mYq1p zI~s@!QzvH7DI~!Ir}Y<7qhkI(rfCP$d$#lnp9@ zh+}RyQXWVcdw+kEyGvv3IUr~06l|-Q#|*@0>(V@7y&4W zT*w{axrRU@T8o$fs`C}mtbU?#=KM)7I8qPP8`Fz3Q5aN-*V>3Z0%-yL^%{RjecTEd zthhNnIPSVpu5~$j5*rDe83b#w@MJ14SEJG|j9ll^-Lo`)`r_61mwOEO@Gt_%*{icE zVEG%!M#aQ=F|DTHbvsu27AiKy#|H2Eh(e(;^vD9Nh>F)f^AA*v;;|67$APIPI=a_R z8Sdi&;qrPmwLDDb%vDfS1I-@w!0nLg(GUNI4=1M{FU_wsfzO!_nJgpz=3Wb`pawHv za^{kK86%xsp>S_Xr%jUtB8FEW0bl{3>qSS&0pNHNKp;vavFQ&%`eHl)EAkLY*Z@ch z;hbmfmtC>|h5}Ed2_^-|?}N?J0wG8$xwJUjjVS8U-diN63019I*f>1Q+P+>uSNK_P z3Dgx{6|6j_4*S-KZ)b|%ab{-7^q{UQ7ub7no~n1+X8}-A)snljM9=Ae-k3g$(VDFx zz&@Sp_VwlS-AI$l4WOdm)@=1WP)EEtQr>y6(IoTD}g~RP1d|k8%LDzU!N^1{pEDk zXkcd1)%?|C4lkaNDHnpKvDgO!TklQH>XFDMlQXONKT2h^f&*vADFtHmte}<9ol&oxAyab z%h6wdF1w9N0qmGyAWfIQKc0$!%`)OV<`QA{bGkO+o9&OufPTTWkVBcKht1hNl+y_F zss$WMQIY)Jg(ij+>7Ryy0XHdnAylk1C%srJO(4u* zYNZdsIc9EGKse%=F{ov`9ri#JvKp)!l@tNFXT5_^oLe&;>6TuNw5MDQh9`a+2YP{k z)jGxErHdtlqj6hc7O{WZ5$5*3`2BD;;Bxg}lI=9zDX_OFR@(pAv!j^|7$svCO2T!i2g^Xsi0^q zxh9$q*E6Kb=AGs4HWTSwhQVRcZY+f*pRX~<{V|zgc7hHo0>5Z$K}Tf6M>c>!{j0o8 zmE~JY9k$JqRo0>)H`dYWDkNNOZ~UV!_+4&Z!WfZkfQ@n@8oG3t zSFZ|$F$tY%%~+J?e`)GFt#@J(CC$+r+iDeFoc5*q@2zv1yk=n9D&ds3C_ZQk)pbj; z2DBxqITkOt=(;tvBgce=PjDN0Sg zE~fjE8>L4Zqv+c=4V9lCu9vWzDV9mq`kgW)-gog*mg+<(O+d2ksxuWBHY+&@Wf|xZ ztBvKSj`kzRwvX*~cA1#BG3NrE5d77*>p&xWp0O10-tEr!%w%PTQZC8Zsbb%4= zv{+&PZh;OFK$gu6@WGe_jBvoL#K3en<*(l+SrI%$iC>~8xxE+Mv6%LG;;16{q*&kX z2#QijqVz+`6AYweusiERi$Rc@My%`?QKcgA8d0jeDd7eQJ0?ZEzF8YZ-Okfau zR?o)W8#Hp5V*o?lhtj-OJOXhUDm;Zt<8F{sv=fPUp;89>;r?rBwZkG3IfKFDu)OCr z0Er$jCjA#6^EQ(!1duuYLW9f=b5NkfY{OGbnH~?p8IGgeThNmaa8>79x)V@B*SqL1 zk5+?`#-u8qP^NG-Ef*58(T%zdQl=gNMh)% zNbS333ee90J=`n+Xy_J-qvz*#>?jODp=lk`a*diCSrPym;j2K}?sYwga}1oO7~d=v zFxgLU!ZcKln5{i8cueJxJM2M^!fiG-l4t7UZwy;P{z2^ zFDw5)?!fHm?%lpQC%FkS{hhTFnuPv36Oih zKC2b}4z9Eeq}cy)Gakj2DkmkL^+9?0$5f<^X+Jb}_C&hFt0N)8nP!XNNF6ygM9 zlV{7UKXVh$BaAw(MjVZb?n)b}^uI^+?%(tEh%KJG8-9lV)?Cr7I;`r42C*dOoKSsM z4&E6(V9Fp%OK0onj$1$G0SyNT8P&!hWwK4ZCbUu$SYZv@*+^(kDV8pT^3xqjf>8=7 z?HC4VQ!Z?9^=7jdmL1REG9I;jG^qRZDZ-R$V&r(?Kvgyr(&FaVTLyK5Mg;WDd+FZf zIW_Bu&GPc*ki6Y|L$zU*#`h8kSoM4}SNhEk0vg?EbM>?BUxxFHI^pAneAJI@%oV6d0+e2nPx!K$3T5^pw!3rS4Pn^dh`EDscT z)_!}=taDSRug&$+tZ0FH&)Ke`Y1fj=PR>Ta9WxjM!C~9KV7IYFLay`j+#M+v4y-Qy|VgwQ31l$@b*A*#RtGy|C1`fz1)B*QLimG&{C0cQRRv1 zet*!3kj<+HYBP!e^(Hy6+w|} z)>oKC>Uda;4+=FDIOw=?7Ipv8U-%*8%nLb?ihM3{n)codP)t<;fUV#?*~laAnKxx* z=iNGE##Fh3_(?N*xXaBY>f>EjlY3c%}a`)945O@EH3cDhM$g)zH&@;&IDH zHcV!DV=lLXEJu7+t1Kv^jkoGR0>TL|qL0bqi znGJd8#cUson%Np$rDtwd^)-W|Hdij+&U0(XYwCPmetq{dzkUPe5K9zmOMwMrBqBal zLPB6F&L8mxkdh1jON-?V)|-vf0!9m@GeXuXAnLZcU6cP;4lh@$kWd`(C&$l$)7(7T z^%z;!Y_TN*1mMUGk5eX59nzeETU^S9r}z7mv*q>I$KtM&N7;|)#8rUCA5F2d=O9Rk z;>XOk`JV6bJ2ZF(+mYB62=*oOwNJsi2?Cvg{@XfF%BgRP@F4?~q|BWC-;$mr`RBlu zv_C8L=fnRl7(lSnPk-FpeldtqCD=Qv)@2>oq=)N@ z9wh>Feeuczc@0@0((X>s?2$j-#SwrRFZf*Q{NB+t0X_BWSL36g3L^Owa9VIgKItbG z2l$UjDI4Pyv36K=<1VnjG(*fj#vigHz8y$c5g-Fdw&yW`YT!{YKiu=j``4^7SbdTe z=o@s&7;qN~o(0BNt6wE!iK$rI$`NIFSnkrPyEZr2A<9=!9@*966o0_qeGrp;R9o7t zcR7f!A|3&CGPomqPwzU+Moq`ggDt@9IZN3=s+1_0a4tL!#)W)Qwu=($D2w@^Dpyi{obcFxX@b16*Mg zXTgu;8})Jp2A}iZvp`Qs5WDaFkZJ%Hxd11Kg-ae!lz;{WGorEFWrl5)3AC4PY($>~ zhFeEvNRCzyV70`_`;FCM1x6^L=-a2jTv>5y2tETzxoG?R679*$l-3i=8NIuV?>r;> zlH$~cKs>$X=EG}BA>|4}?~Q4py6rB}z|ru72RnivHbh4&k>mir7Uiw`Lk_p0t*gTE ze-r~CLR(=63$X3PE#^mRXnmuLizB85ZV~q<(i8Itp?wv3aNn-zNx@$9cb=QiN-XH4 zdPSo#X()%(4;SZNAfVLjY%XW$im8Ruek+8qt33&ME`pJWUkB$3gO>rDO;m7X!mype z8$~jgd8B&B0eJ!Bw0VB;GLnj@76Et6dLAtKVzhLWV9L^DUp{ZYf4H8VpBL#TbdC%7 z44+R~r#~~daNizuUM6A+H>ugmSh?Mp?7hkyhB*uI%ABlA#?hds5wIROx^MYD-|X{x z-emDQJ@FObd$5^~p#FysM&g1R-Bavm+^YedmBSmLZ=$=3RsI9X8~uaV6)V>xfj5Z$Db_gt09VU!EJok z(hIBEG@lxACW?`se>2!JOj9m=ftpG>k18XhzUwLu>mJwowe9uC`N%HYq&Cp-pivv@ zpfU`(OSUAPL)0>EV)aRj|DUUaT0GCWolLrI%{5( z|0wqyYtNUkQKpC9zQ{_aGm5L{3pQ_T$0mA1!?;Mlx!00MR*ADcNxH0JRzx>8X(0f> zo328N$X=7mtXFbUfCdJe=2p%GCdNz_mObIRTEvfOwk zNTGq)0-4Z{KE$BL;SEZ1U|x>_R{BR7)RABC4yC@Y+^(DxY!97U3lj?d*aa!39Q`(9 z3ZEQFz3|JslLY(lipc@3kddMbTRRT?m2Q%bJf)$g_G(>Enb|L|XKoMV=f@4t*skXT zf(%Zpl#Vj$_E_P4pfl&-0xOm+TyMdn^5>>{F~v_oUI!B4k3gLl{kq`q+&eluoog8+ zSUJICwkTKm%CvGfnXg>ZYA?hsgxx_Ori|LteGpBDA~Nqi(-iKkSi3WZRN_@b3dtag0@R?VnOHrx)`xo2?Mym;H~tI?LMXe%md4uvW)bUywLIJ0ii=PT zqBy-Zdyv4n_f4##Hm?K%#i$GfZ`0u^!t6IX+_h;c2-%|k^^gW`b{jL|iKQ`vLoJa< ztuaQut!Zf2PQ{2Txp&vHo5^x`8>#S)M@xPCriRw44s+NbvP5N}geM{4M zGe~^s`cl}U#ua3o5lJg=A!V&wEhj5N6-Pr|oDnA&Z(a|c7mH4W^JaUrGA63eU+wkE zMwgL`oM+BO2W6B>F1Z}Kr+eLVm4A)sSv0v2MCxl!h>$}kDd&f!LTx~q&lHi%#1A@$p3s&T4W_@-}aFT{10ub-{fdk5nM9IRh)zn6o8 zSeUfHZ?8AI|0(GS)8tw5*sOd}d*1HtLKHJ39rAGGJQkG`!K802wvG;+B=<_KL&hFW zq8C0R=dMf~t&-bi&U%v6uWs}`Ji_iYPGwiSA7fYXyRU7hX?EISE87Wv%P`Zd_tO4O zd=-Anx_HWSZrA6r*Lv@CbnxLEVHqqn<)2_)2k#7bia=VZ+CUd=E__n>V|IY%=SoeKUP?*$NNq^A~ngX9+c3xvK{h?oF5mmRGRgLbx$mM zx5ppiEqxW3*GjWXRmsxiQScr0}B$2{>5 z&Tim0;Qtm7A?9G0vv;7|MsI;ROsqHiy|8~@cT8P&yZl8>aW;-%=!ewRXcSzo_m98h zZ>?c^?R9ocSQVPFZIc_aRw46;l!Y@46s_QJ=waD+x3>j!D#cfvym2?ioesbfoo>?( zaDfqk`;Slxnc_`pu*Ls=w#-rA(o({1Hg?rYR~^_i2EYlW?GlS^fd3#4IB>X%?(?{? zNFqrY%iWTb_w}cG$1UOm4)_uVz?UIt&MP=$!g4YhpPn#xlDALHw`$-Uq*8y+7+B2y zFksw(1W%Xf@%k;#juiaIkI|x>hVHTK?Bu!O>Hjj~ZX;{o8d`cLF znv7A?*OXgfDhr}!wxa}XSRKL`q*Pw{Wn+5}s?IGhKTKNim!c3WyO)ly_gSuC92~Nz z%Bu@<)P=*nY$!C~;JjBJlbeZ}^XW3xZ@w%Ru*=Z?C?+BYIN~F5e>86c-#^eQT&_*Ep(sqt)Z#Is?;N zYxL{hI=a2H>dgsf8tJqwuvWqlu8quAfy*}Mz#U?? zuJ2eFRXra8hAve7BAHSO@2#$H=dUwu(3`K{ItQi^fx*?*M;t9RdQ4R;JgGaI2|H=pyS-_154mlI| zLi~&|KBJc-@uy5dWp1g|EuC9qV3WvwS5-+(zT8PqNIt^ljU;}6P8;`M5RxT9&^@$ z(@R7XQku-kRaU(sa->sX8g$64TLH^eP)~CvEBR%B9sZdn1g*y-Co}PP27w%`<$hrQ z7=GhfA;k|Y7bk&zCW8_zAlXMw>1Hh?*PVUtG*x=O=&zr>JoMuMb@VMH z3A-n8D??_E5Tlcw2cP5NmRsCv_3;#vj=^kALXkj1Gk?y@X8G1UJ_xj|0WD~L?$29K z=B0z@ulLl<9-#d)r4(p~aEdGI>E@JTGjU6V*WaPai@00t=Lf29YTCChJU%sgAkiz5 z!6NQ3Iht})H;SfV-igl_b98ML?ZaPSW;cI%^~UkFM~==@Pg?Zu?2u2s}8S&zQ2N9jif(zR8rZctPG+?25AyHUY;`YZ3GTxLPmgaKy0 zkSF~HGU3|?@nQ&vj3&pA!^R9{QOKp^>#?x?rip0?B_t{%T3#OxN0MXSpA1=SxOe5F zSKQ$0W&rEy?dna3SB6Id;7G{pG+XBbJxJ7m-{=yQ2-p?_ zX~v{BC0r1ZrEB#JN7z$Zt^R|g3}@S|-X5vJ7=6p_3Ht6H@Oj@<>b?tofJ6Lk`szD# z@2h_LwIZn+?vN!d@G4-LH+8F*-M$(7zG^Uwe8U3SOR23ZpS>1ETI&LdDAW-khHu%G z$rUiu5v5Q$YqBO2Xx7%R;v;2?!yLxskMv~nA#ilt}*?xWs77>`HTPKT7Xk6M))0e<+nC$wMJu&J;bjgLAs3)XRMPF(^R@*mZ4f(c-XX2 z&z<1?1$E!2(9Mosqz3*`*VG$U?m?=jjEoIIjKWnhrr(Q`t3bg0h8^;|B|$h711}qD zwL5CFU;@tGM)E<`qb0Y_9Zv{YYZ>JsJDir^cXtjvsc6FiFocB#lCkn^rBvsxlg|`& zxPWm(0A9f{RG=&y=FzujWm5WFf>1PQ{Q3#I$B_5h9w|;(KqE#E2^tI$9I2ZY7Ep0S zeEGGxRN+DZ-{}*=@*$-V;>C;Yc;#)-?eo=O4G-vJ-k~P04=o{D`?`hZLQZqV5uB|) zx>N@`AmV;C(fo`4CU9WbEFOWbziejcuN=9~-zv**AXoN%gORLd-&|H%^@kdtK{yn@ zAbV0p868oLD)hl0?M@++6Swo9+_JhMBy(|8>{xNKI@nGDiRw}7ON5MP2U_yDDwWD# zv%j(4Raq@o-vQCxD?_ZOg!vpluoPj)CPSsSyW?385{0Xxg1MhR9rN<_&5&^bSM18B z=#D0B)mw)&tn{A=Vzv&q4o&)WKs?-XEhrs>Mjmw}n9F)e7+9Pez3w?k5|sU(9U2N_ ztU*>*a@7$FlE*h>vj-GY&~;$qZ9T^o-S(cEuuI!IXNgSY67u0#|9U< zSC8BS-MWhsk-jgR`OWrQssGksSiWQ4-rZ5MQc;vS-=ECSb+|i~s|@piz2J$I13@6K zu5i~{J_>tQGBS}vWhkv4h7n(ImNXym5cy$Kennq}1T+iYBw8`?@x>IPvJOv+Q*`m* zFmyG1y4<)BWlEt9p{CFa;?<$y<1)G>{Ki+$!OOykHz?`#!1Bvkr(Z_hl18Is9O$NDrQPEjf?ieP zdUh}|IFt$hd{!g59mb+p+ycb0Y{dW#WAz%v`~WuFd?zGIgEzp$`gJgY2dq@!b^`A~ z)rKG6S32A|H2AGn8tHt8h6V-{y}Sg3T7Xf4HJlI!1|JM^3g^Z6+;ufmUC0}^7C}QjckV}eAqsMM}GG$c*F3- zI!rHlm}$pz^|v@e4r6dr69B(d0#e4&PAU$`y0O9w-~0|dG$&y|MT{RRF(BdgH;LBd7Gpt_{|oKTK1`6dXzi-QAZMlH?Rq1a`jP+3*JM+{3FQLy z-&yG%5rjIUS4bU5ugr^csgd*^S{>KRm-T8WmV57LqW8ag-PE7FIULBIN_^!^7S)RH zP2Z$b_}d9R?UpzsY_%NhAYp{mGzT2a<+6vq(0==ZE08P%L!2YjlZ?K#r{<_mw~lkh zAhpqh5JD;``B*Q&LkPArHQ^6F%$Xp_Zo=v5J%$xSoU>|o#jYNe-6X%sQl{K4GKA9j z#ci<#3pPYeS!y(b^tQ!SZR4hNBMAm0+XxOh;^KF~F@>R9h~Bd@t-;3^r>3}D0-t}x5#}>fW!_p_ro{B? zS4;(=4}Nmies#E!G6HY`yblKT1ECtya?6o6w~L>Tt@Su2L2~NP#xe%h{8zu3S2cN5 zaJ7Vrp@fO0Eu+McJw+;5h8{=0>{rB@cG~DQSE%$<-5CBf{L=K zMq6$$l`^tJi-Val4Sj*S$U$e=UR^MoOmQnVMXJ_vP@`1l#ufO^0tSJorRi6tO2>=a z^z+~E{~|I0m~CY`t&aP!HNdcYLYwoc1Z>KXrfP;C7_6Awag zSKJ5t?9Nr@)@TA$V(e@IauqK488b%5rQ_2%bUiTNKHS`8!;tw%=HLv-sc*sXPk~>2s#{>n?J59eLAzMh z{dBA5C9!Oo+-Ra*{}nTwWAE@_;r-AdU8RRst%iw&Un)6oroab`1Y_Z854!o_E~9R7 z`@egzkpBcxY@X-k3(@k@Nyt?2Rs)~U8;?1^q&P4d6+>;9hm>XzK;;5}G`$3&e^ZzB zn&W%yBC4J8iE3NBtV+G5>S#+t#6Kak3$+^QO;qW=B$92}bvgZFprMqC?8b-Faena@ z4|9-;w*F=jtw1OLZ3AbrD_eyvCrqhnmbDn3Cx9k~@&Sqbv zaX0+`W1k?Rsq_p`>K} zj?Qh`AB|sLZ;skf7;yN3$-6UZMjms^9)HOCkqunYrqPm~vME%bHIUa@0BCQ*wwZG9SIdQqau-p`|Or#}Y zVgvt>Q_09X^ojc=wEKpLn~N_)_&j>8g42FE())R{-+wgdsCC@!_{S=50V5k;%Cy}A z^`hitY8+_fFli0h_-bmkldJ0fk|fnj1HzB1w7-2g$%yl_vwxeiQp;3f2=3?(dCW}y zb5b}E>vGe#M(F-IHe%XhrI(kvo2Eh5!NW%He!9asclP_%D_s3kgvfSMDBfSnhR-x%b#*@6H6i- zqzoeqp5uJ9QT!~K^_7f>X-g?&@~@RbJgs*Ogx&S7eqR8$_=LlxaS5$~q(1zQN_!(| ze+W=(etUGStJ+aYgCVVoIJPzFb^4B4RAgX6IUgWxiuRHMTfeNru-;?!#88JLv~lTq z^XJKY_}f=L1Zl3Vzk7aU_BCVd+LfL#x0b+_rBKV!)tbsk;E#U-==LnOt6yzJyhI^h z4e#i938KA!I-ACCkxdUSo$$SA!Dzna$S}U4Wymb|dKGBqsDl6yhAufBfG|WC&iWgY z=an)9t{+TajB%>CoN+USSCK0EG26H#PZrwE4Gl%}@GR81$yMmXV9kdYA}W{J&&3-p zEUW6&n5dYT;!%kY<2|ke(C$Q=G3d)ZSc+}5Z4=KIn~`lUn2`Kl)0L|g-&mheY7zb| z6*GK#{@P(8Fxo+ybQ0i+@&m&HGQP^5j+Vu`-{o;2J3LxL5q`;*-`%)GhWiF*G77Oi zX@i-KrNZU7wAjn%V*AzUp9Ivwa<1Gsjt1}CYoX9+#SP}f4E>W3nvjNDy<$qOH{zl8 z7a1w*9%|U+Js2-#ws?!*x~JBC!co}Gxl`VwuL-?5H4*>TO^ZT#uRdM6byqOe9$3h! zi3B(Qgcs_j@!KFZP9y9zC4HgxHJzKQrU63|Wjw*nq1zWJNSNF!+2HHNIRQc@Liwa$ zkHUd66Jvw)6~3-#K-)s5`bGK)Lr+%R^d+7>5fEOD2zr6kM}JYN=KY9}nD1XJz$`NI zNChfshIv##YB7zr_HdLo-OY=z50lNrEERQ1eK>r5ADBh!{NBe%SRELpM|f+~C09+>dQX!th9kaiST=2^I6DjZJ;QW(_aFu(uMIJY7dRg&TZbs&OeDg~sFQ4U0 z+Ky_0j&`v<)W%M7eJJs|T;1>H+^JOYz0+kyUjkFeD*!Egqk4oEAm4mUpdrYdDZqLm z?fhVIC|9NeR?5{=0k7!HU~7gGJb7xVS&l|{;vL#A`Xatb%f6S`l{Fz~eV;j$uZ|6mlph+C zuIgwJK3k!4#@;=wpDC^PpwM$pid&+9lugY>>Zc9wO%H}h(z?+pT0`RV+gYn*LwB)sIu`&DGfc}caG8}IsScEmuP5eUZ3B5HT=Mj z8%#JFAN944ebBELQv7N8FVrv4fcTd8VsP-nvhNgc&m~Y0&&#ux>7zLo%4WkZj~2I$ zjZLmaJe$K}vuHBPy8(z(TL7$3vXHtJF>?AyeR(D>$hU$lvWWAqE!9**7|hb2dufo0Ouu9X z16ogRABf|U|NQy0FG^J>3qO^})ZyH%3L#y{7nri|z)M%*l$sZA9IRckh>Ndxb-OIt zD=m9BU4OSbtE747{X1odxxVAITmcAoC6@tD)1ux0LF=?7YX8ZX^SpCRsi&N{ZA6H# zC0Jc}H@TwNDHnPP+bH6MX`5ObHT7n(8O=;n*y=?`1c`e~QiN#=#qu%w%M|~-r^4Ih z^muw=YW)T?PR{(E+;iudWG5R>*juN?TpQbmp>F~t@KXbr2-AGeFJ_m~9h(hLby<8% z&FRF_{d?(++V{_%F$pop0rBgf89|$&%vT_)CddD3yyb6@Pf2t%R)(lw(xViJh<&qi zKIdDCA$`R`_!s5N+RF1W?B!)sWDwW@HnAj;X1G+Xnp#JQbB|_(TNq>$l6m*%t=?KpGhxPGgvl zD}u5#v)XEPrhm?#Im6Yker@m1p*0@)rz-S^gP+cG{^+Z=u`ic-FNoS?u>WS^xG|at ztwGTzYh4F?U30pFOEb6XWvYWmk=H+w@RkWV0e}Atq4PPb`toob(TWzlPv)OqG=!XG zDCth%mQx+st^T?wkV*?kFIXR)>^wD+MGx}EtuZuLeYa@+)grgDdgddgdZmP{>-!<2 zlJkEH+UN5q%l3z1_ocultL;vWiQa69-&ooaYC2()^-dN%qvw}v41o8E=Lmv}TtTeE zda`3K5v&z1&s-ap*4 z`W+lS0|N~2xQwUH@0nVli``W-DbM}SyI%4*P1QH<>DKZ!rO@*cZ0wv;>wdOV4Q2k^ z(jqPiC#AC$bW&4zii76}!VX>p-unY6-5Sb-(%3)nlQ4P}y3CO93$^lX6e-NxdsX8S zG@q3zEI8e%?WXdxKUD6n$eBJlR4jxNp@+Vff6?t+&Iu3V!d82T_{inUR2oYSEr0S} z<`#H|8~TYoVQaQcpzL2*_h{o+EMoa_CQ_&!bYO<_S~YnZygQ+(zXUT&-F+&|%da8Z7+vn*Y@S zhWM93JjU|FpdHT#A8~>qsU&&j^CAxlS#{Rzo-nq!G|OYeAUUchaT@GzOw2f2pP}=r z{Z0|_as493qA38wi+YbnbeyM>E)XkrcdChshBn4W-sTW}aILu~hF4>4KRsNYB0qP$ z)ZhFK*Mc@xwDkm8tlK% zEoen&2{jgSJZzw8VZe8b0zG3(>FjwH3n!{z5@Q-0{N9yyNv|h)@e8t9XQ)_=?#Uex z=i%bh_V54kp{81!&Of!-j614jg##>L&R^mtlTABc2 zpW@l_+=fp_p?B$)t#`clu-)r$x$dda)y_!G*sTu~iB73L3a$IS4?(d&|HYn_q609uJDF=X<5eY)rQ3S(D-q)+=fgcSr?Qr1yGr{`! z4|i~@Dvg+@trQ@!3uszWMD|B9gTk>RAF;<}G)Z9FH=(oflSv*X(3Vr7o=9Hp#ku!s z_TBU0+A=?vHHrSZ>^N&>>EmZwE8ow*&^Ms*L+O|$uCMZntkv=pxDhTARVa9^f z9K~>Ps~sDpUT@AI)m|D_h$qHN_ta9vK5CJbaaIO#r}BfiK!dpT@Tgwo`wBk1WX+l9 z##`456SqHWKk6bDEjZy*M&})I7m1-4o6Cpl|LrvXP&XIGwm&;Fs|GA~eQuUHwijDk z6r#$4LqY_$&tG;6hGrKLL!$GO5%C)Y@%>NQ9J9?p_BDuH)w0^x((PY z`C?LAA3oLz$g^Ni7h8c)p>H}R<7e|a_6&axjbu0}b|X2OsV-NfrKB#!?pX}JVyZ$5 zPL_3NxhrC$f;8F$(#6`WPvdnh{WN z{XZxo@l66*zG)%zT%Uy5DTs%%Js>*^EkR!C+~rlm7rwvYk4kY)uU#~P@22Sq?P?-F}Y}poh^TdTr-l%BIKpgm;RuTL&sxlI=hMb&*Mcxn;Gef zaIIVuw@tV8v7so*++V#PDFr>d^=V{#Ch&F-7Qb{R`gh0E^SJGuW=4ko6nfY4JsxOv z@}&k0tJqqS7-&789)-*fgfk&ir6S(re4%qR@GHZR}3($hVhr{1ky#oWEB+MeYNE0|l9jJbnXy#*LJ&`dYL_Zk^ zCbK7@pOLXB4!H*cOT=yxm!xMzDtL5L)!jxT^9JmFx~FFXr(84Ezk4Yo2S%sE@Q7I3 zK9;#g7FyriI5tLBet!?x;O9T66>yONHzugg8+Ummx>#j{r5eY7emCYOTI>+aNEG%D zZ5nt1T?yZhb-a~=qrF7Ti}C+z*Z6U@I3M1=c~D3H8Lw4)Pb3(dC_au_7G_06LD6N5 zrm~fpGuViOjY7PBclEl+%jM9b)f7mP4Jxg|DHK%hp{|E`wWw9Ro%)Klp8WqG3eN^1DN+QfHT@Li`)gvl_wy%ru>(oI6tppJ3xOEwm$O3E`jF#%Zys4&>@?w4EPl;wxJ z3sbSWax2LqAY!9ERsRyCUUT9ir9nviuIh_5t!R)G&95i%l?f`SPxYlFbjYlf+hmVu z#B}^vM1*n7G6=%{G5arayfKo%(k~~3)VPjP1)@znYsA$X-nffzU|Ra8GC24U_v#Xz zB;kW=NDcANl*wqjQoN2)|Jxj`_=ide8C|~_E(KXw&{1;4&!CfGBYaLOF1<$Yw_?qb zHaIUrk3Nqd3P%mC?tY=HN;D@y$1+Rle79#TdKv6H(`C#+2 z)lGTGSiY)0s`3=V^yRFf3a9zj_D0^tmfxD~uE7eDv3ThDRwcqoaZWzRR>YBzT>n(i z&8TG^MS-|sx)Q3znmyN$V1{aC zjA?3$AQ68*0h>v=V|(9?_l4$q>4gc@-e>JySNOf-`p1TInk86bs(aN&#$`!1iYkGy z%Z29Gz1iVhI7s^GI4^ehOBse z%BXH&$iatBtJc)bATr!}h$Cni0$ptjoX?$Obs=n~!&=wnd2R7Y?(DfyhWe}$V-x9^ zVuh7mWB&vvMYm08hYrSxvwX~(R;pkX3rkDwtRRH<eJI+yZo_V~c@4{P7~3C*IrR zOoM~4vo0XE9NwPz;epG^{PW@CLo;>xVr*d@nqTA-2;Q1xP1tnlVrHU;A+R{u;msT@ zzLWIB>laM>oc?WI^&m{|LW#p-Tadzm{?acB18W6-tH}2I*-&Sv%;WVJhE5^{Ohvu| zCFk~EG6w;tW}~)`nEaz#+B}7w0w)?TCbxDUyc+dKp(a}u$80yl6B&IqisMxBKF*_x zvbB1wqRAr^JL*kL9v00v@li8G4ub5~MaM4@{xVd#6(m2{3{EaYIW;Q!rhR8+Q$66r zXZ0Ht?pWno8tOjqR3VNdl6I_8cK9MoA z_)>=yR$WdJ-=Wq0osj6rQ;eQXx6d;+ZmqDdcrTQ$h&)OHotf`Kb#Ky+!a~S?vbc96 zB85LwJTOxNJGe%jG2Yy<*1C@{0CR;NEU~-U0defCGh;x4GCSI-Gu` z79evJvjI=PcyD(X7EVdp(4Md^U7GnF+2&lsDJh1Ybq{vQ>5;9(n#XcG>9eP>^{UmD z@7l&dusjS9ltj$)kmtoaPCU^R{6Qb&jQRI(1np_?J3+3V~&wt@F0AIp1G^5t1Wu7);f(; zM3nt6=hPTR?`VI+eMkLLSNMXd@2{3=>nj4uElrDiDE`fHGM5eFwxmtCAqnT~~`;8iOdZJMqwi*t7? zNiugpl5sZkpa0J33n%DB5OKkT6OieT>pMl4X62DD21vYB=0Yq^fw9)UbsyNCE4se+ zeiJq?padtvs zuds3V`zQ9f7)}uKLUG9MW5jD_FWvU>$$h>f?lRe_BaZiSx`k+x)x_^)Y;*(bZIkEH_Nj&QkJPke!sjL zbIH)!+nGEjq5}v5FKzbYePsC^Wl-=%V6h~hO_U{efsG1?ZWfsR^_I4G=Kf1m`hXVy zhq3(wWEXLT0Saer?*77uuKm6e>A;ihsGe5Cbn3Amo-BlPHG0}@YhC+Q>%M9XbAlxt zSk=QIx1)^QP>&$V6WZ=h9ep&>1f=j_`aK=zo|ee-vV`=7KDwVW9u~HFPt- zKCp$UG&-gCJG#XNJqe@t^FXBIvk9Er0=u+BC%c%QE3f4_-y4zw>wctB6vjkpAI!x> zU4?LGGNzf?a`UGid$ZaaISa3#Pu;i2!}F9=+wb0bzp+CXd#yy+gO=-6bG6Lt)Zcqy z8D&Q<89|zB3msp#3KB?KihdA#KUjJbeiMlELSMsLQAzO1XD!cfRsW2JI_ZZ~8y4lo zX-VZLd}RLvpsQtN1G^VsVN31jn|VfN=7{Jc3vim8p7_K%M_z1QH}h)M2O!(Oa1X0h zaonUij6=Nst%`}Xy^=`EiMU~v{RDzu>6@!c`( z{bF-#LIUltqFSY`BLAkA^8B)14Eg519utN8v6&X??cSbDxFwz;I z3$5w4nm}3~BR-M*ilabvcr-IN=cdsJgfrWJ2_3f7>bmvHznh|E2vx*$LloX}ogS2# zy2g=-%pD3RnLNc|T6q;S9`YTNu4|1?v+s6j`WJ01+w)Vgy}M;gQ5vFwrlk|#(@h*n z5@`%1`b=OTu+5u0G|J=dxfiV!+R5=+P9(wPsg@emih%YZ^*=Mb>5q9E8bIeNCeC3^;umg{qr4*2shy$tTc-a+3s1PANQ`)dSevT+ouc!gUZMsFX(M^` zGGv>Xoy~Jk=^Zy;CVf{3h^AzZmba^6e9QQeQzjbd#xeSRV`@c5m?P!MlQb38`0P zoedHaRM}Cj10g&5!MoTYlA!`<3g6A>c@br8)=ajOXyA`NB8|h{-Es_d--DWH>yk>^ zw9f9o?z`PD7r(E!i4=tgaYKfPnIME3ZRhkU?TK6(%%4!}`hw$frj6d>P3&@o5qjvT zOx|z*C=<|Rm|mNB12dbcb7QD+Ud#mHSPIL_%7~GLUbg6N66N`{;YOdH`y1NdYQ0Pw z4{kjU&}KYd{)C^#1FZZ=xhz7rr(Bmle5hXrT!gai3Gh8s_)}^WiFi0i=($Q~XJM>( zMH_f`jL4A2)S6%xnV=;nQKBcObzkgi$OLP6Lp~d0@e?GM^}Z7}6CYywZSW*hvK%nS z_NfcGdy<@0y7L#8js2f+NKts+K{=hJETnLfJ_eoP0MwWsnkgP>5y(J>0noN-C0`FmP2+=hR+6eG|Ui&Dg!6Fj>}2D4(rpPxaROSMPp ze5*(ukcNnKLEv*Ba1rqx=%Yh#BxGnA89zQFC$Gbm1>liKmp{OiZBPeAQ&jsGCZr1u z5>TK}$kxjz9Sv8kXoqG_N)Ez80$x!o1R!))R;{PkZgI*XX?W-0KouB|t{ohAd1lsS zP;k{ei~e$;aTIa(Z=%lLw7?zW!#an zbL+bkP7i&(7&}Kp4C<~l}7#fJ!s|L3) zu`S6%aif-i3?PpC6>wneu;8^K}8iLkpy|40d$dKl%dQKUH0w| zFCU-DH&A%Qn2y-7hvk;$RRhcwRqOjQ-4eyUqe6JC7CaTPGiOTn}5kN^{lB6 z%6MvX|Ka%kEPy!`q{i{`CdIN?Q-s{#=6QbPqZAL&LS`?xr$Vu83q}+QV9E$V-_--V zO9cw-Z{}**N=%x*@JzIrv)%xRnx?=(LLcT~Zf*{3XDslvq% zswn|Q3lvU7R6>>JUzes-RM@-RP-1L`W1J+kfqTpbQwkdh`0ai=-5&{nbfwU;~9VxKcySpd#)z;x{`;Re7 zsQ8R#Zl2 zj}`vrv6QTnVB-sdFedqAH8u^IU+q2Lojd8Lm+Gdbrl=Sgxxk>F)W~r}us786cx}up zYGc5rZ33Nl9(E+I;-i-eP+$qF9US?Os5bq1ZSGbh8%WM!FQ+aqy+h9Ii-J} z+KuHUq@;-GM4&X~JFRR@R52!T)deG{|L@O!iMaSxZc3%Xtkuhd^wamqM`cbjbmO82CPg1EL{M8i;GvWz8>@uE5QGWZAi@650klHj zpXx$RGNS~r7&EmUfaO%Eyi?irKOK?tl?+R|LgRGB(p^Y*Jvh(#eyJzBtI5dlg<+ow z8yg0Ljz+c4TN*Om4$4p@JoCMK0r=IY`i+z1c!camDND{F)R;7)wHBSIkDbagsaowc zfNP>N7`2P=CD#a02nPoTLpPXlS!2rK9l`~b@XJ#BiK5v#xL)t*XdLjeC}oR8!TR^- zml|2&tQ|3iiPs0#633b|3+czV_8CMi+~wqKwS%q9l#a=S6-XVOjlO%E@ewe0z776Z zQf?zCbhdGU51>C&y#BoPk8?1nR)~bZm4J-MFO`NCG6}3fay7@~rY6y|-5Jda6?{}E zcW@BsPhj?So6n$zvT|}er_(cIAB2=|(lQqs6r0%=@`Fq1J+?bPOHlDs1)*I2APT<) z4VotO@wtKvvv-66?b0T*$o>*=Bl-+8JKs~KeIdEBo?mVj|txsCF_S{ zWAbkDRJ#!k+E0K$moP70)lGFmc>Rg09URzH0%()(*~(q)A8}#7q&1C0;~YU+R}_yN-CdvXZY(=EL<+Fvb3JW^{in470e0j%EmYV5Z6u+2&w8YS^TxavfDM7&cVUqemArz?B`GZ46%1#@Ce6$ z=th?*oP+4Tc!8~A63-Mh;@)5jq+F3JCgcg!zPSRa0U2%`pC5~x4>S{c zS#?&O=6*U=hR<<+edYk^C0m#*Z`aa<2g~r$@Twz)|eF@1{U4YXOD)e z(G@wMGxbPsjcRiw9ek3+jV8rFY;} zpwaeNF)}YufGSSDd1do(-J4#|dQF4P=?5)0!^OJ}x>vF`&j&!+>-UI+F^-OoJ#B50 zb7jK~x~ZsZniK_A)*BL^#4_8uO0Q2e_E7#i{hXwbhl-`on40{X#?D{^O{>B}#zf41 zoH1UZRifPF*mi4A<7*2^&7nB;MPjPga93=lx{7@>W)sBfpLKv zb!o7Dfyt{i7|eF6G$V(y8S|v=H&zx$3xR62u4aRbA$X(U2{?>k9-9}ee?MToi$MXC zX$9WHq{Ty}sDXij0W8p`eHhzBfL`n+nOXC&c&w|~umTK(7@zS?t|Y(?@l3y9cd9?Z%1{=UWN%LY(twmxb zEUxKfQ22%Of=CJJhxL@pk7`Au%a-+C_WYu+?J3lx|NGB~krC)bMFR;H(il8*Hsuf^ zh}hJ!pXgS^#$_{6q`Z2s7)~Y69f{s3gR|=ahIfO>AH`~IJ$XaYe`Q5sMt>VWGMN}N zTx<{ElOcK(iLfpRva_pHnEc<@BKqMPq5Iu4W3#8ePzb(Ru8o} z{fk{*UBO`3^MY@Fm!ks^Njve}Z&;lEr+WTGxh5=EN%pTQmXBPhxbpx|4F%fF#~ zr1IDHyFQL|sx5o+CTpa5<~KTDF);N$ zT}w74E#~ixC@5eI7FQG!lNM(!b`)%|-(5AUWLoJ;Bz{#9m@@!D(3E--Ic&~9H1h2S z14&5cPnEGpfNvDKK9C`tY|`lcRkN&%y!r@4lTtBG27AjZavrZwC<)aZ3yWbzMWd?5 zrW$;Dhv$R~`{xN&;Br>^O+t(hvDgqWDtsi#ZQ z@nn;-EuXrS2v6g_Sn3usy7_U3-(gQ|x&PBUitOJ^iUW(zd*zWF83 zv_j}(e{p5$Q&chn^CS*%MM2Et69;%ScL#-D3|$t@n)y@gs3%*H(zlrUkt|gQQfGVv0no9_%9& z-ICfaY^p6-3vhX7zURk25c)3Jn8)%vS4}ol{f1kEvv3=M9<`qoK{$UUlrE|@@&nVo zU4e;dMn(p3B~W>Xc|MW;>{U1*Jt{;I+whb=|c&zhlEK`OM)a? zFJV+9_EV<;(APdn4u&E80-vhkC$e8h3{PhsS<#I+NvxbS1^|@6B z-hV|en;BZ<`8wco@(#Tg1>Pj+WM=;XbqGWzY=JD#QHR0UPE$_AC~el5nTWW|)Tw&7 ziH!^#6ic&X*!a!^Z?rMYyaVFH8rM4=(~#fnAEmZ9366wLe;GgTS%262u|)c1vIJ*0y6cEX;M?tPGv#2Zk1z12sK zYkHFl6CdX~A7V9xm@JlaM96xuL=8Lb=AYVJd;25HHapH=Iy0%kI&sYZp-qZLv3AS7Z!-1m`^j;fx0RZj<7w_BLqNzeb}Xw#1-j zREbVoWcVd24*K0zewHhJFIX_xtnqzFk2U%CLz+PQL@j_6e&rgHHPrqmEJCN4r40Axu}}Mhb9pe}uzfxDrt6Q1 zPFb#eeXwgvVT$`_z?KMhzW$BntUavoUvmx`W|^g4;Q1AJs8s}T(k9vUp{y)`OMcbO z#6tu!^n4&`^}Rg&dVUVmVc*sNe6V2|aMF>&Fn(NR`oF2+u_nVmB2O`0{^5!+zvs>I z+QhJ|{{WVa$YiAOL_V}!uAr%Ckr5O3Xy?avELK`8Ne#bl_P;6s+v_4IPa`6L2xk3H z1Oc~9^_wi@j+-|}T>^*)_P(;orU*gT%IruM*c}aGpxCWo8 zm-NX?y{^%2Yd`)C3OT?kHK46gpUu`rF@)8n#w~;WfBglxh#Y8CzJp$^_lL6Q;?z`f zwm&uh0TQ`StY%@vzirKsg~kA~Y+7-h|H{d>G}U1{b(goj>R|4V7+$w82ExBKd0ktB z5TMA`-rm1VG71S96><$`W@D97iyD=3w`;zIrog(4oNWHTUbI}^sGxvorome+v+)X_ zKK=t1r3w*;$qN>1N~k<7r@?ll>q%*ArrpHlV%v}JFKe+gJ^)cuCd&i+%X~!0%qO6V zU!|4W+PZUy_=)s(2#9L&cgA(}fQs0DzP`q!>O~vtl@l7^_9+_6eAte6{_CJ22p%+t zr}rKU^{9?4-v8@NhQXeezVxL^OFJlLE^2_8|%KLwSdd9e7DTYa-hgDV(Xuo(Vy#I$^E1L zn|kr+9pliO%;E4ilr!H;h{zs~g@l9?*rYUjMRoGa$3@gK*tv*!?5iEmcwk&y9IP#s zfJNt@0wLIh%`eo<*Em@pKsixJ0W*uBpx_prf^BJR>cy{L0z&Sa*caiF+v?XL=l+rUZtCnuAD=d^4X zu9S!a-^NQv@D*y9NB`^4=dCuZmZXXyhe6Z-Dp-?xtShXnE$kI~D-{@Zc62cQU(-r* zddRMmmHqD`twJe4JZcqbF;y}ph*WsvE)As&nVg{XC6c$S;cC6)M}+jk%&3vkHDSkS zb-uxh*INwFmwK`Su6v8AqzM^KfK%MmIm_X!euN*X)cN4PR@H{y_W2ma*PyR5a*iZw@VD=_Ev;;HbG*ZH}lEr#OC z18yq6{tjK(@WsYQKx9fth{77pPw@IRP0BmCIgi%N5#X+d6&8r*I3!UT>lUPWnDPk@ ztf1Vc{%!8@N{hOTomJKE%TW2^3qVD1w@|`&ZYC=`9*CO@40(w zSLQ{g5xtdN1?tWIz!GsRs5&n3dk|NWw?BB>;&G_odv_=~H8fVm(3Xzg3wZDS4?o#7 z#_6tUNgr_?Y(svxuaSm?JQE*bnIgFfyFMF(L@hlH zYf5?}i~2+2{pr%KxK8QR%3w>lO+|+B}H%&OaKuW$=0k=$Savq#Px7e z%7)}*BHf>y-oddftZZz(v$J0wYq$n)^^!xr-G$fP*8P@fsKk*7VUlcf)vt8$1J!EA zTu=on#;CACQuN3XEr|#x8T0M!ZMD}3-M((2x}hPV=Z;9*P|e=XzW?9C5^Qjec;u*r z=z{Qcf~Na{3q+p4bo4=A13B2D2Lo*aQRF+gMA)O|ha_z9RyEX(h$Ow|)C5GhlMA>6 zz3xwuWH)JUJh^g0jq|H{{=(gj(~C4!oF?Z31pX6dmXn$M>J8Q{_ZLi#+o<*fI^>^C zqQSp3aTiko>}*$|;Jo-~2-xWJtwpVqF!Y!^Uqb2>ud=+7cS|gy3k~W@3o-MMkMdD8 zY}xKgSw-8Hd{TJS8A;?OOVp%@$M)pr4lG=6?#@&hDH_jW2yftu*pft0nPm|EZ-mX{ zU7$D2w{Umg(#7{(WnKF@5tt{*{Y=pssIc?KDzpqDY)E#&*EAxG%S;9OI~&ViQ>4u;s#{Id!-r*?4ha(!earX1y-Q8^ghI^94FLVBg zp)T>{+p?kb7J7W>LDep+enefqp#Q%dEM~bUy+nv9%pI%3$(K0K{Us^n_5Y6U_VWT^!!~Tt-AF808lM^;TZZExv}-|jF~FM z2Op^TEg+r?T$ah(a*V&H=@nv0YXtEK6I>I2urW_xC{7T9Y#dN!Iv z`yW)qOLGWz%jU%zW3#c}S>HIHg0ZCYHH|uDg}R>bFqEHm$w1owyLVhHS|kz2pf-O3 zyWh?*lF(K63l;S1fBOUgP7WV6&v~3Zd#E5onb46S@iL80zB_`lpes6m1$)jIrCPwi zfkvgR`;%I`ci^x~iEk~MX0xrxt(?7(Yc1&)mRay&K4|vvhDi;|O^JxYBU0{X^R5Gz z!*uH}<&LfCyE6h1GxeE8WlJl994>+M-)jqH|Cx>?n>{?N_P8dU9Jc}g*S`e`F``7e z2xna)ZQBGWbsY+vuB#}Wp$w7NJVb}nzEduA+k&bt;)?o%F0KAjdey;o3h7@ue zqo<%nk_!`>^SP3QTAonFdloEu>xC0 %M&l)^^K|z~HI2g+$J{a?d+y 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 diff --git a/examples/text_to_knowledge/doc/img/wordtag_example.png b/examples/text_to_knowledge/doc/img/wordtag_example.png deleted file mode 100644 index b415962dda24c32c8b0583cd1b15693168543251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 695571 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