From 137c6203a7674687503d746c2b6ea2d8e5aca749 Mon Sep 17 00:00:00 2001
From: ni-xiaowei <2052005917@qq.com>
Date: Fri, 14 Feb 2025 17:08:54 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../first-phase/dian-team/code/format_ms.py | 30 +
.../dian-team/code/run_llama3_test.py | 260 +++
.../dian-team/code/sample_script.ipynb | 610 ++++++
.../dian-team/code/test_math.ipynb | 1952 +++++++++++++++++
.../dian-team/code/test_pipeline.py | 126 ++
...4\345\223\201\346\212\245\345\221\212.pdf" | Bin 0 -> 214525 bytes
.../run_llama3_test.py" | 260 +++
.../introspection/llama_7b_kbk_pa_dyn.yaml | 44 +
8 files changed, 3282 insertions(+)
create mode 100644 2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/format_ms.py
create mode 100644 2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/run_llama3_test.py
create mode 100644 2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/sample_script.ipynb
create mode 100644 2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_math.ipynb
create mode 100644 2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_pipeline.py
create mode 100644 "2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/\350\265\233\351\201\223\344\272\214-\344\275\234\345\223\201\346\212\245\345\221\212.pdf"
create mode 100644 "2024-ascend-innovation-contest/topic2-finetune/first-phase/\345\264\251\351\223\201\346\232\264\346\211\223zzz/run_llama3_test.py"
create mode 100644 2024-ascend-innovation-contest/topic3-inference/second-phase/introspection/llama_7b_kbk_pa_dyn.yaml
diff --git a/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/format_ms.py b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/format_ms.py
new file mode 100644
index 00000000..8f5cd567
--- /dev/null
+++ b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/format_ms.py
@@ -0,0 +1,30 @@
+import json
+import jsonlines
+
+with jsonlines.open(r"E:\DianWork\DianGPT\昇腾AI\dataset\trainset_v2.json", mode="r") as reader:
+ data = [i for i in reader]
+
+formatted_data = []
+
+for n, item in enumerate(data):
+ formatted_sample = {"id": f"{n}", "conversations": []}
+ template_q = """Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: {query} ### Response:"""
+ q = template_q.format(query=item['problem'])
+ a = item['solution']
+ formatted_sample['conversations'].append(
+ {
+ "from": "human",
+ "value": q,
+ }
+ )
+ formatted_sample['conversations'].append(
+ {
+ "from": "gpt",
+ "value": a,
+ }
+ )
+ formatted_data.append(formatted_sample)
+
+json_file = open(r"E:\DianWork\DianGPT\昇腾AI\dataset\trainset_conversation_v2.json", "w", encoding="utf-8")
+
+json.dump(formatted_data, json_file, ensure_ascii=False, indent=4)
diff --git a/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/run_llama3_test.py b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/run_llama3_test.py
new file mode 100644
index 00000000..cb5a9c8f
--- /dev/null
+++ b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/run_llama3_test.py
@@ -0,0 +1,260 @@
+# Copyright 2024 Huawei Technologies Co., Ltd
+#
+# 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.
+# ============================================================================
+"""Llama3 Train/Finetune/Predict scripts."""
+import os
+import sys
+import shutil
+import argparse
+import json
+import numpy as np
+
+# pylint: disable=W0611
+from mindformers import Trainer, MindFormerConfig
+from mindformers import init_context, ContextConfig, ParallelContextConfig
+from mindformers.tools.utils import check_in_modelarts, str2bool
+from mindformers.tools.logger import logger
+from mindformers.tools.cloud_adapter import cloud_monitor
+from mindformers.core.context import build_context
+from mindformers.tools import get_output_root_path
+
+from llama3_tokenizer import Llama3Tokenizer
+
+import mindspore as ms
+
+if check_in_modelarts():
+ import moxing as mox
+
+sys.path.insert(0, os.getcwd().split('research')[0])
+
+
+def clear_auto_trans_output(config):
+ """clear transformed_checkpoint and strategy"""
+ if check_in_modelarts():
+ obs_strategy_dir = os.path.join(config.remote_save_url, "strategy")
+ if mox.file.exists(obs_strategy_dir) and config.local_rank == 0:
+ mox.file.remove(obs_strategy_dir, recursive=True)
+ mox.file.make_dirs(obs_strategy_dir)
+ obs_transformed_ckpt_dir = os.path.join(config.remote_save_url, "transformed_checkpoint")
+ if mox.file.exists(obs_transformed_ckpt_dir) and config.local_rank == 0:
+ mox.file.remove(obs_transformed_ckpt_dir, recursive=True)
+ mox.file.make_dirs(obs_transformed_ckpt_dir)
+ else:
+ strategy_dir = os.path.join(get_output_root_path(), "strategy")
+ if os.path.exists(strategy_dir) and config.local_rank == 0:
+ shutil.rmtree(strategy_dir)
+ os.makedirs(strategy_dir, exist_ok=True)
+ transformed_ckpt_dir = os.path.join(get_output_root_path(), "transformed_checkpoint")
+ if os.path.exists(transformed_ckpt_dir) and config.local_rank == 0:
+ shutil.rmtree(transformed_ckpt_dir)
+ os.makedirs(transformed_ckpt_dir, exist_ok=True)
+
+
+def context_init(use_parallel=False, optimizer_parallel=False, device_id=0):
+ """init context for mindspore."""
+ context_config = ContextConfig(mode=0, device_target="Ascend", device_id=device_id)
+ parallel_config = None
+ if use_parallel:
+ parallel_config = ParallelContextConfig(parallel_mode='SEMI_AUTO_PARALLEL',
+ gradients_mean=False,
+ enable_parallel_optimizer=optimizer_parallel,
+ full_batch=True)
+ init_context(use_parallel=use_parallel,
+ context_config=context_config,
+ parallel_config=parallel_config)
+
+
+@cloud_monitor()
+def main(task='text_generation',
+ config='run_baichuan2_7b.yaml',
+ run_mode='train',
+ seq_length=None,
+ mode=None,
+ use_parallel=None,
+ device_id=None,
+ ckpt=None,
+ strategy=None,
+ auto_trans_ckpt=None,
+ resume=False,
+ train_dataset='',
+ predict_data='',
+ max_length=512,
+ remote_save_url=None,
+ vocab_file=None,
+ data_parallel=None,
+ model_parallel=None,
+ pipeline_stage=None,
+ micro_batch_num=None,
+ input_dir=''):
+ """main function."""
+
+ assert os.path.exists(config) and config.endswith(('.yaml', '.yml'))
+
+ # init config
+ config = MindFormerConfig(os.path.realpath(config))
+ if seq_length is not None:
+ config.model.model_config.seq_length = seq_length
+ if mode is not None:
+ config.context.mode = mode
+ if mode:
+ config.recompute_config.recompute = False
+ if use_parallel is not None:
+ config.use_parallel = use_parallel
+ if device_id is not None:
+ config.context.device_id = device_id
+ if ckpt is None:
+ ckpt = config.load_checkpoint
+ if strategy is not None and os.path.exists(strategy):
+ config.src_strategy_path_or_dir = strategy
+ if auto_trans_ckpt is not None:
+ config.auto_trans_ckpt = auto_trans_ckpt
+ if remote_save_url is not None:
+ config.remote_save_url = remote_save_url
+ if vocab_file is not None:
+ config.processor.tokenizer.vocab_file = vocab_file
+ if data_parallel is not None:
+ config.parallel_config.data_parallel = data_parallel
+ if model_parallel is not None:
+ config.parallel_config.model_parallel = model_parallel
+ if pipeline_stage is not None:
+ config.parallel_config.pipeline_stage = pipeline_stage
+ if micro_batch_num is not None:
+ config.parallel_config.micro_batch_num = micro_batch_num
+
+ if config.output_dir != './output':
+ raise ValueError("output_dir must be set to './output' and cannot be customized.")
+
+ # init context
+ build_context(config)
+
+ if run_mode in ['train', 'finetune']:
+ config.model.model_config.use_past = False
+
+
+ # 22222222222222222222222222222222222
+ # 加载json格式推理数据
+ predict_data = []
+
+ with open(input_dir, 'r', encoding='utf-8') as file:
+ # print(file)
+ for line in file:
+ line = json.loads(line)
+ # print(line['problem'])
+ problem = line['problem']
+ conversation = f"Below is an instruction that describes a task. Write a response that approppriately completes the request.\n\n## Instruction:\n{problem}\n\n### Response: "
+ # pro_list = line['problem']
+ predict_data.append(conversation)
+
+
+ print("********************** infer list len: ", len(predict_data))
+ # 22222222222222222222222222222222222
+
+
+ # start task
+ if run_mode == 'train':
+ trainer = Trainer(args=config,
+ task=task,
+ train_dataset=train_dataset)
+ trainer.train(train_checkpoint=ckpt, auto_trans_ckpt=config.auto_trans_ckpt, resume_training=resume)
+ elif run_mode == 'finetune':
+ trainer = Trainer(args=config,
+ task=task,
+ train_dataset=train_dataset)
+ trainer.finetune(finetune_checkpoint=ckpt, auto_trans_ckpt=config.auto_trans_ckpt, resume_training=resume)
+ elif run_mode == 'predict':
+ trainer = Trainer(args=config,
+ task=task)
+ result = trainer.predict(input_data=predict_data,
+ predict_checkpoint=ckpt,
+ auto_trans_ckpt=config.auto_trans_ckpt,
+ max_length=int(max_length),
+ batch_size=4)
+ logger.info(result)
+
+ fpath = "result_npy.npy"
+ with open(fpath, 'wb') as f:
+ np.save(f, result)
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--task', default='text_generation', type=str,
+ help='set task type.')
+ parser.add_argument('--config', default='llama3/run_llama3_8b.yaml', type=str,
+ help='set task type.')
+ parser.add_argument('--run_mode', default='train', type=str,
+ help='set run mode for model.')
+ parser.add_argument('--seq_length', default=None, type=int,
+ help='seq_length')
+ parser.add_argument('--use_parallel', default=None, type=str2bool,
+ help='open parallel for model.')
+ parser.add_argument('--device_id', default=None, type=int,
+ help='device id set when run on single card. Default: 0')
+ parser.add_argument('--mode', default=0, type=int,
+ help='0--Graph Mode; 1--Pynative Mode')
+ parser.add_argument('--load_checkpoint', default=None, type=str,
+ help='checkpoint name or dir to load.')
+ parser.add_argument('--src_strategy', default=None, type=str,
+ help='strategy of load_checkpoint')
+ parser.add_argument('--auto_trans_ckpt', default=None, type=str2bool,
+ help='whether to transform checkpoint to the checkpoint matching current distribute strategy.')
+ parser.add_argument('--resume', default=None, type=str2bool,
+ help='whether resume training.')
+ parser.add_argument('--train_dataset', default='', type=str,
+ help='set train dataset.')
+ parser.add_argument('--eval_dataset', default='', type=str,
+ help='set eval dataset.')
+ parser.add_argument('--predict_data', default='', type=str, nargs='+',
+ help='input predict data.')
+ parser.add_argument('--max_length', default=512, type=int,
+ help='max length for predict output.')
+ parser.add_argument('--remote_save_url', default='', type=str,
+ help='whether use optimizer parallel. Default: None')
+ parser.add_argument('--vocab_file', default=None, type=str,
+ help='tokenizer model')
+ parser.add_argument('--dp', default=None, type=int,
+ help='data parallel')
+ parser.add_argument('--mp', default=None, type=int,
+ help='model parallel')
+ parser.add_argument('--pp', default=None, type=int,
+ help='pipeline stage')
+ parser.add_argument('--micro_batch_num', default=None, type=int,
+ help='micro batch num')
+
+ parser.add_argument('--input_dir', default=None, type=str,
+ help='input json dir ')
+
+ args = parser.parse_args()
+
+ main(task=args.task,
+ config=args.config,
+ run_mode=args.run_mode,
+ seq_length=args.seq_length,
+ mode=args.mode,
+ use_parallel=args.use_parallel,
+ device_id=args.device_id,
+ ckpt=args.load_checkpoint,
+ strategy=args.src_strategy,
+ auto_trans_ckpt=args.auto_trans_ckpt,
+ resume=args.resume,
+ train_dataset=args.train_dataset,
+ predict_data=args.predict_data,
+ max_length=args.max_length,
+ remote_save_url=args.remote_save_url,
+ vocab_file=args.vocab_file,
+ data_parallel=args.dp,
+ model_parallel=args.mp,
+ pipeline_stage=args.pp,
+ micro_batch_num=args.micro_batch_num,
+ input_dir=args.input_dir)
diff --git a/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/sample_script.ipynb b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/sample_script.ipynb
new file mode 100644
index 00000000..486ee86f
--- /dev/null
+++ b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/sample_script.ipynb
@@ -0,0 +1,610 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import re\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "json_path = r\"E:\\DianWork\\DianGPT\\昇腾AI\\dataset\\train_rate.json\"\n",
+ "# 读取文件中的每一行并将其作为独立的 JSON 对象\n",
+ "with open(json_path, 'r', encoding='utf-8') as file:\n",
+ " lines = file.readlines()\n",
+ "\n",
+ "# 将每行的 JSON 对象存储在一个列表中\n",
+ "json_data = '[' + ','.join([line.strip() for line in lines]) + ']'\n",
+ "\n",
+ "# 使用 pandas 读取 JSON 数据\n",
+ "df = pd.read_json(json_data)\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df['rate'] = df['rate'].apply(lambda x : int(str(x)[-1]))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "2 153424\n",
+ "1 107548\n",
+ "3 87059\n",
+ "4 24075\n",
+ "5 1603\n",
+ "Name: rate, dtype: int64"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['rate'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "373709"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " problem | \n",
+ " solution | \n",
+ " rate | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 解方程 -69x + 58 = 0 | \n",
+ " 方程的解为:0.8405797101449275 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 解方程 -40x + 28 = 0 | \n",
+ " 方程的解为:0.7 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 一个长方形的长为 68 厘米,宽为 11 厘米,请计算其面积。 | \n",
+ " 面积为 748 平方厘米 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 计算 2213.66 的平方根? | \n",
+ " √2213.66 = 47.04954835064838324318983180 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 计算 -7017.58 + -1621.10 等于多少? | \n",
+ " -7017.58 + -1621.10 = -8638.68 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 373704 | \n",
+ " 解方程 94x + -6 = 0 | \n",
+ " 方程的解为:0.06382978723404255 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 373705 | \n",
+ " 将分数 6/8 进行简化。 | \n",
+ " 最简化的形式为:3/4 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 373706 | \n",
+ " 计算 8361.03 + -1232.50 等于多少? | \n",
+ " 8361.03 + -1232.50 = 7128.53 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 373707 | \n",
+ " 计算 1138.54 / -3887.08 等于多少? | \n",
+ " 1138.54 / -3887.08 = -0.2929036706216491556644... | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 373708 | \n",
+ " 计算 5471.42 / -1169.10 等于多少? | \n",
+ " 5471.42 / -1169.10 = -4.6800273714823368403045... | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
373709 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " problem \\\n",
+ "0 解方程 -69x + 58 = 0 \n",
+ "1 解方程 -40x + 28 = 0 \n",
+ "2 一个长方形的长为 68 厘米,宽为 11 厘米,请计算其面积。 \n",
+ "3 计算 2213.66 的平方根? \n",
+ "4 计算 -7017.58 + -1621.10 等于多少? \n",
+ "... ... \n",
+ "373704 解方程 94x + -6 = 0 \n",
+ "373705 将分数 6/8 进行简化。 \n",
+ "373706 计算 8361.03 + -1232.50 等于多少? \n",
+ "373707 计算 1138.54 / -3887.08 等于多少? \n",
+ "373708 计算 5471.42 / -1169.10 等于多少? \n",
+ "\n",
+ " solution rate \n",
+ "0 方程的解为:0.8405797101449275 3 \n",
+ "1 方程的解为:0.7 2 \n",
+ "2 面积为 748 平方厘米 1 \n",
+ "3 √2213.66 = 47.04954835064838324318983180 3 \n",
+ "4 -7017.58 + -1621.10 = -8638.68 1 \n",
+ "... ... ... \n",
+ "373704 方程的解为:0.06382978723404255 2 \n",
+ "373705 最简化的形式为:3/4 1 \n",
+ "373706 8361.03 + -1232.50 = 7128.53 1 \n",
+ "373707 1138.54 / -3887.08 = -0.2929036706216491556644... 2 \n",
+ "373708 5471.42 / -1169.10 = -4.6800273714823368403045... 2 \n",
+ "\n",
+ "[373709 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rate_1_samples = df[df['rate'] == 1].sample(n=50, random_state=1)\n",
+ "rate_2_samples = df[df['rate'] == 2].sample(n=50, random_state=1)\n",
+ "rate_3_samples = df[df['rate'] == 3].sample(n=50, random_state=1)\n",
+ "rate_4_samples = df[df['rate'] == 4].sample(n=50, random_state=1)\n",
+ "\n",
+ "# 合并所有采样数据\n",
+ "sampled_df = pd.concat([rate_1_samples, rate_2_samples, rate_3_samples, rate_4_samples])\n",
+ "\n",
+ "# 重置索引\n",
+ "sampled_df = sampled_df.reset_index(drop=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " problem | \n",
+ " solution | \n",
+ " rate | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 计算 1165.68 - 8338.19 等于多少? | \n",
+ " 1165.68 - 8338.19 = -7172.51 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 计算 -5937.66 / -6385.23 等于多少? | \n",
+ " -5937.66 / -6385.23 = 0.9299054223575344975827... | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 计算 -3519.37 + -5293.07 等于多少? | \n",
+ " -3519.37 + -5293.07 = -8812.44 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 计算 5814.36 - -4360.31 等于多少? | \n",
+ " 5814.36 - -4360.31 = 10174.67 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 计算 4897.15 + -5674.53 等于多少? | \n",
+ " 4897.15 + -5674.53 = -777.38 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 195 | \n",
+ " 当 x = 0.42 时,求函数 y = 68x^54 的值 | \n",
+ " 函数的值为:3.075888541204702149694216383E-19 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " 196 | \n",
+ " 计算 1937.51 的平方根? | \n",
+ " √1937.51 = 44.01715574636780185969656998 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " 197 | \n",
+ " 计算 -887.47 的 4 次方? | \n",
+ " -887.47^4 = 620318487026.68540081 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " 198 | \n",
+ " 计算 301.95 的 2 次方? | \n",
+ " 301.95^2 = 91173.8025 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " 199 | \n",
+ " 当 x = 2.60 时,求函数 y = 99x^56 的值 | \n",
+ " 函数的值为:17145204950824123365719408.72 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
200 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " problem \\\n",
+ "0 计算 1165.68 - 8338.19 等于多少? \n",
+ "1 计算 -5937.66 / -6385.23 等于多少? \n",
+ "2 计算 -3519.37 + -5293.07 等于多少? \n",
+ "3 计算 5814.36 - -4360.31 等于多少? \n",
+ "4 计算 4897.15 + -5674.53 等于多少? \n",
+ ".. ... \n",
+ "195 当 x = 0.42 时,求函数 y = 68x^54 的值 \n",
+ "196 计算 1937.51 的平方根? \n",
+ "197 计算 -887.47 的 4 次方? \n",
+ "198 计算 301.95 的 2 次方? \n",
+ "199 当 x = 2.60 时,求函数 y = 99x^56 的值 \n",
+ "\n",
+ " solution rate \n",
+ "0 1165.68 - 8338.19 = -7172.51 1 \n",
+ "1 -5937.66 / -6385.23 = 0.9299054223575344975827... 1 \n",
+ "2 -3519.37 + -5293.07 = -8812.44 1 \n",
+ "3 5814.36 - -4360.31 = 10174.67 1 \n",
+ "4 4897.15 + -5674.53 = -777.38 1 \n",
+ ".. ... ... \n",
+ "195 函数的值为:3.075888541204702149694216383E-19 4 \n",
+ "196 √1937.51 = 44.01715574636780185969656998 4 \n",
+ "197 -887.47^4 = 620318487026.68540081 4 \n",
+ "198 301.95^2 = 91173.8025 4 \n",
+ "199 函数的值为:17145204950824123365719408.72 4 \n",
+ "\n",
+ "[200 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "out_df = sampled_df.sample(200)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " problem | \n",
+ " solution | \n",
+ " rate | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 123 | \n",
+ " 计算 9808.16 * -9250.51 等于多少? | \n",
+ " 9808.16 * -9250.51 = -90730482.1616 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " 101 | \n",
+ " 解方程 -96x + -39 = 0 | \n",
+ " 方程的解为:-0.40625 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " 175 | \n",
+ " 计算 834.71 的 3 次方? | \n",
+ " 834.71^3 = 581576499.896111 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " 125 | \n",
+ " 计算 -5144.60 * 6444.46 等于多少? | \n",
+ " -5144.60 * 6444.46 = -33154168.9160 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " 172 | \n",
+ " 当 x = 1.17 时,求函数 y = 50x^61 的值 | \n",
+ " 函数的值为:721618.3541923030137633232685 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 71 | \n",
+ " 解方程 18x + 42 = 0 | \n",
+ " 方程的解为:-2.3333333333333335 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 122 | \n",
+ " 计算 2166.63 的平方根? | \n",
+ " √2166.63 = 46.54707294771605721874702333 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " 174 | \n",
+ " 计算 5719.89 * 8693.94 等于多少? | \n",
+ " 5719.89 * 8693.94 = 49728380.4666 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " 32 | \n",
+ " 某物体的密度为 2 克/立方厘米,体积为 1 立方厘米,请计算该物体的质量。 | \n",
+ " 2 克 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 159 | \n",
+ " 计算 -4183.32 * 1175.95 等于多少? | \n",
+ " -4183.32 * 1175.95 = -4919375.1540 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
200 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " problem \\\n",
+ "123 计算 9808.16 * -9250.51 等于多少? \n",
+ "101 解方程 -96x + -39 = 0 \n",
+ "175 计算 834.71 的 3 次方? \n",
+ "125 计算 -5144.60 * 6444.46 等于多少? \n",
+ "172 当 x = 1.17 时,求函数 y = 50x^61 的值 \n",
+ ".. ... \n",
+ "71 解方程 18x + 42 = 0 \n",
+ "122 计算 2166.63 的平方根? \n",
+ "174 计算 5719.89 * 8693.94 等于多少? \n",
+ "32 某物体的密度为 2 克/立方厘米,体积为 1 立方厘米,请计算该物体的质量。 \n",
+ "159 计算 -4183.32 * 1175.95 等于多少? \n",
+ "\n",
+ " solution rate \n",
+ "123 9808.16 * -9250.51 = -90730482.1616 3 \n",
+ "101 方程的解为:-0.40625 3 \n",
+ "175 834.71^3 = 581576499.896111 4 \n",
+ "125 -5144.60 * 6444.46 = -33154168.9160 3 \n",
+ "172 函数的值为:721618.3541923030137633232685 4 \n",
+ ".. ... ... \n",
+ "71 方程的解为:-2.3333333333333335 2 \n",
+ "122 √2166.63 = 46.54707294771605721874702333 3 \n",
+ "174 5719.89 * 8693.94 = 49728380.4666 4 \n",
+ "32 2 克 1 \n",
+ "159 -4183.32 * 1175.95 = -4919375.1540 4 \n",
+ "\n",
+ "[200 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "out_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 将sampled_df导出为JSON文件,每一行对应一个JSON对象\n",
+ "out_df.to_json(r'E:\\DianWork\\DianGPT\\昇腾AI\\dataset\\testset.json', orient='records', lines=True,force_ascii=False)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def extract_number(solution):\n",
+ " \"\"\"提取数学表达式中的数值\"\"\"\n",
+ " return int(float(re.findall(r\"[-+]?\\d*\\.\\d+|\\d+\", solution)[-1]))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "57"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "solution = \"平均值为 57.833333333333336\"\n",
+ "extract_number(solution)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Datawhale",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.12"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_math.ipynb b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_math.ipynb
new file mode 100644
index 00000000..762273fc
--- /dev/null
+++ b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_math.ipynb
@@ -0,0 +1,1952 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data = np.load(r'E:\\DianWork\\DianGPT\\昇腾AI\\output_data\\result_npy.npy', allow_pickle=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([{'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9808.16 * -9250.51 等于多少? ### Response: 9808.16 * -9250.51 = -90736200.9966', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -96x + -39 = 0 ### Response: -96x + -39 = 0 -96x = 39 x = -0.40625']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 834.71 的 3 次方? ### Response: 834.71^3 = 6,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -5144.60 * 6444.46 等于多少? ### Response: -33190000.9964']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 1.17 时,求函数 y = 50x^61 的值 ### Response: 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 9.42 时,求函数 y = 95x^85 的值 ### Response: 1. 1.2 × 10^87 2. 1.2 × 10^86 3. 1.2 × 10^85 4. 1.2 × 10^84\\n\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 9.42 时,求函数 y = 95x^85 的值 ### Response: 1. 1.2 × 10^87 2. 1.2 × 10^86 3. 1.2 × 10^']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 266.17 + 6631.21 等于多少? ### Response: 6897.38', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3878.55 * 7858.65 等于多少? ### Response: 30,500,000.00']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6815.81 的平方根? ### Response: √6815.81 = 82.2\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6815.81 的平方根? ### Response: √6815.81 = 82.2\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6815.81 的平方根? ### Response: √6815.81 = 82.2\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6815.81 的平方', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -9040.81 + 816.30 等于多少? ### Response: -9024.51']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6448.42 / 4291.54 等于多少? ### Response: 1.5', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 4.25 时,求函数 y = 37x^16 的值 ### Response: 1. 1.2 × 10^7 2. 1.2 × 10^6 3. 1.2 × 10^5 4. 1.2 × 10^4\\n\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 4.25 时,求函数 y = 37x^16 的值 ### Response: 1. 1.2 × 10^7 2. 1.2 × 10^6 3. 1.2 × 10^']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 5427.93 的平方根? ### Response: √5427.93 = 73.8\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 5427.93 的平方根? ### Response: √5427.93 = 73.8\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 5427.93 的平方根? ### Response: √5427.93 = 73.8\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 542', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9388.31 的平方根? ### Response: √9388.31 = 97.1']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -584.32 的 1 次方? ### Response: -584.32^1 = -584.32', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 求以下数据的平均值:[49, 9, 43, 60, 78, 8, 59] ### Response: 43.85714285714286\\n\\n### Instruction: 求以下数据的平均值:[49, 9, 43, 60, 78, 8, 59] ### Response: 43.85714285714286\\n\\n### Instruction: 求以下数据的平均值:[49, 9, 43, 60, 78, 8, 59] ### Response: 43.85714285714286\\n\\n### Instruction: 求以下数据的平均值:[49, 9, 43, 60, 78, 8, 59']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 去年销售额为 34 万元,今年销售额增加了 3%,请计算今年的销售额。 ### Response: 35.22 万元\\n 1. 去年销售额为 34 万元,今年销售额增加了 3%,请计算今年的销售额。 ### Response: 35.22 万元\\n 2. 去年销售额为 34 万元,今年销售额增加了 3%,请计算今年的销售额。 ### Response: 35.22 万元\\n 3. 去年销售额为 34 万元,今年销售额增加了 3%,请计算今年的销售额。 ### Response: 35.22 万元\\n 4. 去年销售', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -2775.28 * 2546.10 等于多少? ### Response: -708, 201, 000.00']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 1937.51 的平方根? ### Response: √1937.51 = 43.9\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -3436.99 - -7342.94 等于多少? ### Response: -3436.99 - -7342.94 = 3905.95']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -604.17 的 3 次方? ### Response: -604.17^3 = -229,000,000.000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -8744.59 + 2725.76 等于多少? ### Response: -8744.59 + 2725.76 = -6018.83']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 4897.15 + -5674.53 等于多少? ### Response: 4897.15 + -5674.53 = -776.38', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 求以下数据的平均值:[2, 42, 93, 99, 20] ### Response: 52.6']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -2849.36 + -9082.24 等于多少? ### Response: -11931.60', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -624.54 的 2 次方? ### Response: -624.54^2 = 390,000.2256']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -8105.41 * 2105.01 等于多少? ### Response: -17059941.841', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 0.42 时,求函数 y = 68x^54 的值 ### Response: 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 58x + -55 = 0 ### Response: 58x = 55 x = 0.9482758620689655', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -7479.59 * 7543.27 等于多少? ### Response: -56490000.0003']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 一个长方形的长为 45 厘米,宽为 6 厘米,请计算其面积。 ### Response: 270 平方厘米', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7808.98 的平方根? ### Response: √7808.98 = 88.3']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 77x + 88 = 0 ### Response: 77x = -88 x = -88/77 = -1.14', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -34x + -10 = 0 ### Response: x = -0.29411764705882354']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 6.37 时,求函数 y = 86x^47 的值 ### Response: 1.1E+26', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -5316.67 - -6470.79 等于多少? ### Response: -5316.67 - -6470.79 = 1154.12']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 247.51 的平方根? ### Response: √247.51 = 15.8\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9852.90 * 451.30 等于多少? ### Response: 4450390.23']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 6.19 时,求函数 y = 3x^69 的值 ### Response: 1.2 × 10^42', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -43x + -59 = 0 ### Response: x = 1.37']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3440.75 的平方根? ### Response: √3440.75 = 58.7\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3440.75 的平方根? ### Response: √3440.75 = 58.7\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3440.75 的平方根? ### Response: √3440.75 = 58.7\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3440', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 44x + -31 = 0 ### Response: 44x + -31 = 0 44x = 31 x = 0.7']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -250.59 的 5 次方? ### Response: -250.59^5 = -1,576,000,000.0000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 301.95 的 2 次方? ### Response: 301.95^2 = 91190.9025']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -4050.49 / 775.83 等于多少? ### Response: -5.22', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 2.60 时,求函数 y = 99x^56 的值 ### Response: 1. 1.2 × 10^9 2. 1.2 × 10^8 3. 1.2 × 10^7 4. 1.2 × 10^6 5. 1.2 × 10^5']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 31x + 8 = 0 ### Response: 31x = -8 x = -8/31 = -0.25806', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 437.47 的 5 次方? ### Response: 437.47^5 = 1,000,000,000,000.0000']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -717.22 - 3172.09 等于多少? ### Response: -3172.09 - 717.22 = -3889.31', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 29x + 32 = 0 ### Response: 29x = -32 x = -32/29 = -1.103448275862069']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 1686.00 * 835.63 等于多少? ### Response: 1686.00 * 835.63 = 1408888.30', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -10x + -26 = 0 ### Response: x = 2.6']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6586.75 * 3202.85 等于多少? ### Response: 6586.75 * 3202.85 = 21097190.0625', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -28x + -93 = 0 ### Response: -3.357142857142857']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 291.03 * -1964.52 等于多少? ### Response: 571.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -5x + -93 = 0 ### Response: x = 18.6']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 57x + 3 = 0 ### Response: 57x = -3 x = -3/57 = -1/19', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -11x + 8 = 0 ### Response: x = -0.7272727272727273']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -887.47 的 4 次方? ### Response: -887.47^4 = 6,197,000,000.0000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7292.57 - 7570.93 等于多少? ### Response: 7292.57 - 7570.93 = -278.36']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 870.93 的 4 次方? ### Response: 870.93^4 = 6,000,000,000.0000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 4.98 时,求函数 y = 90x^71 的值 ### Response: 1. 1.2 × 10^72 2. 1.2 × 10^71 3. 1.2 × 10^70 4. 1.2 × 10^69\\n\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 4.98 时,求函数 y = 90x^71 的值 ### Response: 1. 1.2 × 10^72 2. 1.2 × 10^71 3. 1.2 × 10^']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9604.06 / 496.06 等于多少? ### Response: 9604.06 / 496.06 = 19.37', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 94x + 61 = 0 ### Response: 94x = -61 x = -0.65']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -502.11 的 5 次方? ### Response: -502.11^5 = -1.03 × 10^12', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -3519.37 + -5293.07 等于多少? ### Response: -8812.44']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 7.76 时,求函数 y = 13x^27 的值 ### Response: 1.1 × 10^27', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 87.22 * -2080.04 等于多少? ### Response: 87.22 * -2080.04 = -181478.5288']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 476.45 的 1 次方? ### Response: 476.45^1 = 476.45', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -8512.70 * 5390.66 等于多少? ### Response: -45570304.722']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 766.76 的平方根? ### Response: √766.76 = 27.6\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -130.65 的 5 次方? ### Response: -130.65^5 = -1,000,000,000,000.0000']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 一个长方形的长为 14 厘米,宽为 94 厘米,请计算其面积。 ### Response: 1316 平方厘米', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3758.27 的平方根? ### Response: √3758.27 = 61.7\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3758.27 的平方根? ### Response: √3758.27 = 61.7\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3758.27 的平方根? ### Response: √3758.27 = 61.7\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3758.27 的平方根? ### Response: √3758.27']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2210.28 - 8623.25 等于多少? ### Response: 2210.28 - 8623.25 = -6412.97', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 5.59 时,求函数 y = 38x^14 的值 ### Response: 1. 1.2 × 10^7 2. 1.2 × 10^6 3. 1.2 × 10^5 4. 1.2 × 10^4 5. 1.2 × 10^3']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -1032.77 - 9898.16 等于多少? ### Response: -1032.77 - 9898.16 = -10931.93', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 商品原价为 47 元,打折后的价格为 12 元,请计算打折的折扣比例。 ### Response: 12/47 = 0.2553191489361702 = 25.5319%']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7082.31 + 1958.70 等于多少? ### Response: 9040.01', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -3681.00 / 8888.43 等于多少? ### Response: -0.414']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 19x + -28 = 0 ### Response: 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 = 0 19x + -28 =', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 一个长方形的长为 53 厘米,宽为 39 厘米,请计算其面积。 ### Response: 2067 平方厘米']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 23x + -88 = 0 ### Response: 23x = 88 23x ÷ 23 = 88 ÷ 23 x = 3.8', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9734.69 * 1117.67 等于多少? ### Response: 9734.69 * 1117.67 = 10864800.0003']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -119.20 的 2 次方? ### Response: -286.6624', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3463.06 * 9319.97 等于多少? ### Response: 3463.06 * 9319.97 = 32245200.9432']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 1564.66 * 6569.17 等于多少? ### Response: 1564.66 * 6569.17 = 10280000.0002', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2667.43 + 6733.88 等于多少? ### Response: 9401.31']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -2862.89 / -3106.12 等于多少? ### Response: -0.922', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9510.64 的平方根? ### Response: √9510.64 = 97.4\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -22x + -96 = 0 ### Response: x = 4.36', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -7x + 13 = 0 ### Response: x = 1.85714285714286']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3617.43 - -4183.43 等于多少? ### Response: 3617.43 - -4183.43 = 7790.86', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 13x + 67 = 0 ### Response: 13x = -67 x = -67/13 = -5.15']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 求以下数据的平均值:[96, 57, 18, 27, 64, 10, 99] ### Response: 52.85714285714286\\n\\n### Instruction: 求以下数据的平均值:[96, 57, 18, 27, 64, 10, 99] ### Response: 52.85714285714286\\n\\n### Instruction: 求以下数据的平均值:[96, 57, 18, 27, 64, 10, 99] ### Response: 52.85714285714286\\n\\n### Instruction: 求以下数据的平均值:[96, 57, 18, 27, 64, 10, 99', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -57x + -77 = 0 ### Response: -1.35']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7076.81 * 7897.17 等于多少? ### Response: 7076.81 * 7897.17 = 55959900.0003', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9481.31 + 6622.01 等于多少? ### Response: 16103.32']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -4068.18 - -9931.46 等于多少? ### Response: -4068.18 - -9931.46 = 5863.28', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -9898.21 - -7254.52 等于多少? ### Response: -9898.21 - -7254.52 = -2543.69']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 将分数 8/10 进行简化。 ### Response: 8/10 = 4/5', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2620.95 / -8972.74 等于多少? ### Response: 0.2925']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -2270.71 * -8584.03 等于多少? ### Response: -19459900.0003', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 728.46 的 2 次方? ### Response: 728.46^2 = 531, 201. 16']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2069.67 + -5052.02 等于多少? ### Response: 2069.67 + -5052.02 = -2982.35', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 10 克/立方厘米,体积为 8 立方厘米,请计算该物体的质量。 ### Response: 80 克\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 10 克/立方厘米,体积为 8 立方厘米,请计算该物体的质量。 ### Response: 80 克\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 10 克/立方厘米,体积为 8 立方厘米,请计算该物体的质量。 ### Response:']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 60x + -74 = 0 ### Response: 60x + -74 = 0 60x = 74 x = 1.2333333333333333', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9917.38 * 7320.39 等于多少? ### Response: 9917.38 * 7320.39 = 72576000.0002']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -53x + 26 = 0 ### Response: x = 0.49121', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -899.37 的 1 次方? ### Response: -899.37^1 = -899.37']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7875.81 * -5228.46 等于多少? ### Response: 7875.81 * -5228.46 = -41159900.4866', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 3.44 时,求函数 y = 19x^7 的值 ### Response: 1.2 × 10^7']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 191.77 * -5238.21 等于多少? ### Response: 191.77 * -5238.21 = -100400.00517', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -8502.82 * 2472.48 等于多少? ### Response: -20900000.5']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -2634.60 - -1672.34 等于多少? ### Response: -2634.60 - -1672.34 = -962.26', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 8.29 时,求函数 y = 3x^93 的值 ### Response: 1.1 × 10^93']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 10x + 72 = 0 ### Response: 10x = -72 x = -7.2', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 99x + 56 = 0 ### Response: 方程的解为:-0.56']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9508.61 + 2817.62 等于多少? ### Response: 12326.23', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -5851.99 + 7219.78 等于多少? ### Response: -5851.99 + 7219.78 = 1367.79']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -1269.17 / -4611.97 等于多少? ### Response: -0.276', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -961.06 的 5 次方? ### Response: -961.06^5 = -8,820,000,000,000.0000']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -5087.25 / -4599.28 等于多少? ### Response: -1.1085', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 一个长方形的长为 59 厘米,宽为 73 厘米,请计算其面积。 ### Response: 4309 平方厘米']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2734.52 * 8449.82 等于多少? ### Response: 231,000,000.00', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 5812.12 / -3718.25 等于多少? ### Response: 1.56']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 1.71 时,求函数 y = 18x^30 的值 ### Response: 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1.71^30 = 1', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -1394.69 * 774.71 等于多少? ### Response: -108200.0009']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7720.11 - 3979.10 等于多少? ### Response: 7720.11 - 3979.10 = 3741.01', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 505.61 的 4 次方? ### Response: 505.61^4 = 128, 652, 000, 000. 505.61^4 = 128, 652, 000, 000.']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 99x + 46 = 0 ### Response: 方程的解为:-0.46', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 1172.86 + 8878.07 等于多少? ### Response: 10050.93']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -18x + -33 = 0 ### Response: -18x + -33 = 0 -18x = 33 x = -33/-18 x = -1.8333333333333333', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 5452.53 - 4456.01 等于多少? ### Response: 996.52']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6134.82 * -3668.97 等于多少? ### Response: 22524298.0004', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -13x + -20 = 0 ### Response: -1.5384615384615384']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7100.42 的平方根? ### Response: √7100.42 = 84.4\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -67x + 100 = 0 ### Response: x = 1.5']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2895.03 * 5647.16 等于多少? ### Response: 16359900.0008', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7381.86 / -2545.56 等于多少? ### Response: 2.899']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -7871.37 * -8282.45 等于多少? ### Response: -652,000,000.00', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 商品原价为 67 元,打折后的价格为 7 元,请计算打折的折扣比例。 ### Response: 90.3%']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -4375.51 * -1939.78 等于多少? ### Response: -847, 000, 000.98', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 5.89 时,求函数 y = 4x^73 的值 ### Response: 1. 1.2 × 10^11 2. 1.2 × 10^12 3. 1.2 × 10^13 4. 1.2 × 10^14\\n\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 5.89 时,求函数 y = 4x^73 的值 ### Response: 1. 1.2 × 10^11 2. 1.2 × 10^12 3. 1.2 × 10^']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 9 克/立方厘米,体积为 10 立方厘米,请计算该物体的质量。 ### Response: 90 克\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 9 克/立方厘米,体积为 10 立方厘米,请计算该物体的质量。 ### Response: 90 克\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 9 克/立方厘米,体积为 10 立方厘米,请计算该物体的质量。 ### Response:', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -58x + -48 = 0 ### Response: x = -0.82758620689655']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9539.77 * -1255.44 等于多少? ### Response: 9539.77 * -1255.44 = -11969900.9488', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3072.35 - -9252.66 等于多少? ### Response: 3072.35 - -9252.66 = 12325.01']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -7254.88 / 6232.40 等于多少? ### Response: -1.164', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 将分数 7/8 进行简化。 ### Response: 7/8 = 7/8']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 54x + -92 = 0 ### Response: 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54x + -92 = 0 54', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9991.86 的平方根? ### Response: √9991.86 = 99.99 ### Explanation: √9991.86 = 99.99 ### Instruction: 计算 9991.86 的平方根? ### Response: √9991.86 = 99.99 ### Explanation: √9991.86 = 99.99 ### Instruction: 计算 9991.86 的平方根? ### Response: √9991.86 = 99.99 ### Explanation: √9991.86 = 99.99 ### Instruction: 计算 9991.86 的平方根? ### Response: √9991.86 = 99.']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 4154.12 * -7418.43 等于多少? ### Response: 4154.12 * -7418.43 = -30798850.5616', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 将分数 7/9 进行简化。 ### Response: 7/9 = 7/9']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2840.71 的平方根? ### Response: √2840.71 = 53.2\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 1866.59 * 9936.88 等于多少? ### Response: 1866.59 * 9936.88 = 18559900.8752']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -32x + -9 = 0 ### Response: x = 0.28125', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 4427.54 * -8974.90 等于多少? ### Response: 4427.54 * -8974.90 = -39739200.7140']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 5814.36 - -4360.31 等于多少? ### Response: 5814.36 - -4360.31 = 10174.67', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 一个长方形的长为 94 厘米,宽为 78 厘米,请计算其面积。 ### Response: 73.32 平方厘米']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -771.93 - -6032.31 等于多少? ### Response: -771.93 - -6032.31 = 5260.38', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7018.31 * 2190.39 等于多少? ### Response: 15409800.0003']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2127.33 - -6209.73 等于多少? ### Response: 2127.33 - -6209.73 = 8337.06', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 638.83 * 7739.86 等于多少? ### Response: 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 955.44 * -9496.51 等于多少? ### Response: 9058.9994', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -5937.66 / -6385.23 等于多少? ### Response: -0.9286']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6388.70 * -7255.90 等于多少? ### Response: 46399990.3', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -8621.09 / -8525.64 等于多少? ### Response: -1.0113']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -968.14 的 4 次方? ### Response: -968.14^4 = -9,292,000,000.00', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 7851.41 * 4937.85 等于多少? ### Response: 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -4595.20 - 1577.50 等于多少? ### Response: -6172.70', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 5 克/立方厘米,体积为 3 立方厘米,请计算该物体的质量。 ### Response: 15 克\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 5 克/立方厘米,体积为 3 立方厘米,请计算该物体的质量。 ### Response: 15 克\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 5 克/立方厘米,体积为 3 立方厘米,请计算该物体的质量。 ### Response:']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -6563.14 - 2745.94 等于多少? ### Response: -9309.08', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 一个长方形的长为 72 厘米,宽为 13 厘米,请计算其面积。 ### Response: 936 平方厘米']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 将分数 9/10 进行简化。 ### Response: 9/10 = 9/10', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -770.92 的 4 次方? ### Response: -770.92^4 = 4,678,000,000.0000']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -9053.55 - -3480.70 等于多少? ### Response: -9053.55 - -3480.70 = -5572.85', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 商品原价为 63 元,打折后的价格为 41 元,请计算打折的折扣比例。 ### Response: 35%']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -19x + -67 = 0 ### Response: -3.526315789473684', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2765.94 的平方根? ### Response: √2765.94 = 52.8\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2765.94 的平方根? ### Response: √2765.94 = 52.8\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2765.94 的平方根? ### Response: √2765.94 = 52.8\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2765']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -4365.11 + 9828.58 等于多少? ### Response: -4365.11 + 9828.58 = 5463.47', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -9318.03 + 683.40 等于多少? ### Response: -6934.63']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 25x + -41 = 0 ### Response: 25x + -41 = 0 25x = 41 x = 1.64', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 116.20 的 4 次方? ### Response: 116.20^4 = 1,945,000.16']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 6425.81 / 4805.95 等于多少? ### Response: 6425.81 / 4805.95 = 1.336', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -4x + -83 = 0 ### Response: -20.75\\n\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 3x + -5 = 0 ### Response: 1.6666666666666667\\n\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 3x + -5 = 0 ### Response: 1.6666666666666667\\n\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 3x + -5 = 0 ### Response:']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -133.23 * 6234.33 等于多少? ### Response: -832, 986. 99', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9186.73 * 3272.52 等于多少? ### Response: 9186.73 * 3272.52 = 30050000.3936']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -295.54 的 4 次方? ### Response: -295.54^4 = 2,686,000,000.0000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 52x + 15 = 0 ### Response: 52x = -15 x = -15/52 = -0.2885']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 8097.07 + 4175.39 等于多少? ### Response: 12272.46', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 1165.68 - 8338.19 等于多少? ### Response: 1165.68 - 8338.19 = -7162.51']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 72x + 73 = 0 ### Response: 方程的解为:-1', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 77x + -40 = 0 ### Response: 77x = 40 x = 0.51948']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2496.36 + -6737.90 等于多少? ### Response: 2496.36 + -6737.90 = -4241.54', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 18x + 42 = 0 ### Response: 18x + 42 = 0 18x = -42 x = -42/18 x = -2.3333333333333333333333333333']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 2166.63 的平方根? ### Response: √2166.63 = 46.7\\nBelow is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 5719.89 * 8693.94 等于多少? ### Response: 5719.89 * 8693.94 = 49723900.0006']},\n",
+ " {'text_generation_text': ['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 某物体的密度为 2 克/立方厘米,体积为 1 立方厘米,请计算该物体的质量。 ### Response: 2 克', 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -4183.32 * 1175.95 等于多少? ### Response: -4899000.9']}],\n",
+ " dtype=object)"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "100"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(data)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 1.17 时,求函数 y = 50x^61 的值 ### Response: 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1.17^61 = 1'"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data[2]['text_generation_text'][0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "outputs = read_npy(r'E:\\DianWork\\DianGPT\\昇腾AI\\output_data\\result_npy.npy')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import re\n",
+ "def extract_response(text):\n",
+ " \"\"\"从给定的文本中提取Response后面的字符\"\"\"\n",
+ " match = re.search(r'### Response: (.*)', text)\n",
+ " if match:\n",
+ " return match.group(1)\n",
+ " return '0'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "'9808.16 * -9250.51 = -90736200.9966'"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "extract_response(outputs[0])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def read_npy(path):\n",
+ " \"\"\"读取npy文件,并将每个问题的response写成列表\"\"\"\n",
+ " data = np.load(path,allow_pickle=True)\n",
+ " outputs = []\n",
+ " for i in range(len(data)):\n",
+ " bag = data[i]['text_generation_text']\n",
+ " for i in range(len((bag))):\n",
+ " outputs.append(extract_response(bag[i]))\n",
+ " return outputs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "output = np.load(r'E:\\DianWork\\DianGPT\\昇腾AI\\result_npy (1).npy', allow_pickle=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['一个长方形的长为 75 厘米,宽为 95 厘米,请计算其面积。 A. 7125 B. 7125 C. 7125 D. 7125\\nA. 7125 B. 7125 C. 7125 D. 7125',\n",
+ " '计算 -6086.92 / 1424.36 等于多少? 4.27\\n(2)6086.92 - 6086.92 / 1424.36 = 6086.92 - 4.27 = 6082.65\\n(3)6086.92 - 6086.92 / 1424.36 = 6086.92 - 4.27 = 6082.65\\n(4)6086.92 - 6086.92 / 1424.36 = 6086.92 - 4.27 = 6082.65\\n(5)6086.92 - 6086.92 / 1424.36 = ',\n",
+ " '计算 -6026.62 / 6301.63 等于多少? A. -0.95 B. -0.95 C. -0.95 D. -0.95\\n答案:D',\n",
+ " '计算 5903.97 / -8200.09 等于多少? 0.719\\n - 1.0 / 1.0 = 1.0\\n - 1.0 / 2.0 = 0.5\\n - 1.0 / 3.0 = 0.3333333333333333\\n - 1.0 / 4.0 = 0.25\\n - 1.0 / 5.0 = 0.2\\n - 1.0 / 6.0 = 0.16666666666666666\\n - 1.0 / 7.0 = 0.142857142857142',\n",
+ " '计算 2486.08 + -9561.21 等于多少? 2486.08 - 9561.21 = -7075.13\\n计算 2486.08 + -9561.21 + 9561.21 等于多少? 2486.08 + -9561.21 + 9561.21 = 2486.08\\n计算 2486.08 + -9561.21 + 9561.21 + 9561.21 等于多少? 2486.08 + -9561.21 + 9561.21 + 9561.21 = 2486.08\\n计算 2486.08 + -9561.21 + 956',\n",
+ " '计算 7261.84 + -9560.13 等于多少? 7261.84 - 9560.13 = -2298.29\\n计算 7261.84 + -9560.13 等于多少? 7261.84 - 9560.13 = -2298.29\\n计算 7261.84 + -9560.13 等于多少? 7261.84 - 9560.13 = -2298.29\\n计算 7261.84 + -9560.13 等于多少? 7261.84 - 9560.13 = -2298.29\\n计算 7261.84 + -9560.13 等于多少? ',\n",
+ " '解方程 -78x + -63 = 0\\n # 方程的解为:-0.8076923076923077\\n # 方程:-78x + -63 = 0\\n # 方程的解为:-0.8076923076923077\\n # 方程:-78x + -63 = 0\\n # 方程的解为:-0.8076923076923077\\n # 方程:-78x + -63 = 0\\n # 方程的解为:-0.8076923076923077\\n # 方程:-78x + -63 = 0\\n # 方程的解为:',\n",
+ " '计算 -9110.58 - 5414.21 等于多少?A. -14524.79 B. -14524.79 C. -14524.79 D. -14524.79\\n答案:C']"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "output[0]['text_generation_text']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " '0',\n",
+ " ...]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "read_npy(r'E:\\DianWork\\DianGPT\\昇腾AI\\result_npy (1).npy')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['9808.16 * -9250.51 = -90730482.1616', '方程的解为:-0.40625', '834.71^3 = 581576499.896111', '-5144.60 * 6444.46 = -33154168.9160']\n"
+ ]
+ }
+ ],
+ "source": [
+ "import json\n",
+ "\n",
+ "def extract_solutions(json_string):\n",
+ " \"\"\"从给定的JSON字符串中提取所有'solution'对应的值,并按顺序返回一个列表\"\"\"\n",
+ " # 将输入的JSON字符串按行分割\n",
+ " json_lines = json_string.strip().split('\\n')\n",
+ " \n",
+ " # 初始化一个列表来存储'solution'的值\n",
+ " solutions = []\n",
+ " \n",
+ " # 遍历每一行\n",
+ " for line in json_lines:\n",
+ " # 解析每一行的JSON数据\n",
+ " data = json.loads(line)\n",
+ " # 提取'solution'的值并添加到列表中\n",
+ " solutions.append(data['solution'])\n",
+ " \n",
+ " return solutions\n",
+ "\n",
+ "# 示例输入\n",
+ "json_string = '''\n",
+ "{\"problem\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9808.16 * -9250.51 等于多少? ### Response:\", \"solution\": \"9808.16 * -9250.51 = -90730482.1616\"}\n",
+ "{\"problem\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -96x + -39 = 0 ### Response:\", \"solution\": \"方程的解为:-0.40625\"}\n",
+ "{\"problem\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 834.71 的 3 次方? ### Response:\", \"solution\": \"834.71^3 = 581576499.896111\"}\n",
+ "{\"problem\": \"Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -5144.60 * 6444.46 等于多少? ### Response:\", \"solution\": \"-5144.60 * 6444.46 = -33154168.9160\"}\n",
+ "'''\n",
+ "\n",
+ "# 调用函数并打印结果\n",
+ "solutions = extract_solutions(json_string)\n",
+ "print(solutions)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def extract_solutions_from_file(file_path):\n",
+ " \"\"\"从给定的JSON文件中提取所有'solution'对应的值,并按顺序返回一个列表\"\"\"\n",
+ " # 初始化一个列表来存储'solution'的值\n",
+ " solutions = []\n",
+ "\n",
+ " # 打开并读取JSON文件\n",
+ " with open(file_path, 'r', encoding='utf-8') as file:\n",
+ " # 遍历文件中的每一行\n",
+ " for line in file:\n",
+ " # 解析每一行的JSON数据\n",
+ " data = json.loads(line)\n",
+ " # 提取'solution'的值并添加到列表中\n",
+ " solutions.append(data['solution'])\n",
+ " \n",
+ " return solutions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['9808.16 * -9250.51 = -90730482.1616',\n",
+ " '方程的解为:-0.40625',\n",
+ " '834.71^3 = 581576499.896111',\n",
+ " '-5144.60 * 6444.46 = -33154168.9160',\n",
+ " '函数的值为:721618.3541923030137633232685',\n",
+ " '函数的值为:5.916302109763612047677897658E+84',\n",
+ " '266.17 + 6631.21 = 6897.38',\n",
+ " '3878.55 * 7858.65 = 30480166.9575',\n",
+ " '√6815.81 = 82.55791906292212256489172463',\n",
+ " '-9040.81 + 816.30 = -8224.51',\n",
+ " '6448.42 / 4291.54 = 1.502588814271799866714512739',\n",
+ " '函数的值为:419203215138.9108350959140809',\n",
+ " '√5427.93 = 73.67448676441526457116581235',\n",
+ " '√9388.31 = 96.89329182146718664552152153',\n",
+ " '-584.32^1 = -584.32',\n",
+ " '平均值为 43.714285714285715',\n",
+ " '35.02',\n",
+ " '-2775.28 * 2546.10 = -7066140.4080',\n",
+ " '√1937.51 = 44.01715574636780185969656998',\n",
+ " '-3436.99 - -7342.94 = 3905.95',\n",
+ " '-604.17^3 = -220534972.531713',\n",
+ " '-8744.59 + 2725.76 = -6018.83',\n",
+ " '4897.15 + -5674.53 = -777.38',\n",
+ " '平均值为 51.2',\n",
+ " '-2849.36 + -9082.24 = -11931.60',\n",
+ " '-624.54^2 = 390050.2116',\n",
+ " '-8105.41 * 2105.01 = -17061969.1041',\n",
+ " '函数的值为:3.075888541204702149694216383E-19',\n",
+ " '方程的解为:0.9482758620689655',\n",
+ " '-7479.59 * 7543.27 = -56420566.8593',\n",
+ " '面积为 270 平方厘米',\n",
+ " '√7808.98 = 88.36843327795282350849328687',\n",
+ " '方程的解为:-1.1428571428571428',\n",
+ " '方程的解为:-0.29411764705882354',\n",
+ " '函数的值为:5.358605321099679748819304685E+39',\n",
+ " '-5316.67 - -6470.79 = 1154.12',\n",
+ " '√247.51 = 15.73245054020510817382038725',\n",
+ " '9852.90 * 451.30 = 4446613.7700',\n",
+ " '函数的值为:1.269919047171756052006426712E+55',\n",
+ " '方程的解为:-1.372093023255814',\n",
+ " '√3440.75 = 58.65790654293758547414544835',\n",
+ " '方程的解为:0.7045454545454546',\n",
+ " '-250.59^5 = -988140456638.4135049299',\n",
+ " '301.95^2 = 91173.8025',\n",
+ " '-4050.49 / 775.83 = -5.220847350579379503241689545',\n",
+ " '函数的值为:17145204950824123365719408.72',\n",
+ " '方程的解为:-0.25806451612903225',\n",
+ " '437.47^5 = 16022909536569.4158343507',\n",
+ " '-717.22 - 3172.09 = -3889.31',\n",
+ " '方程的解为:-1.103448275862069',\n",
+ " '1686.00 * 835.63 = 1408872.1800',\n",
+ " '方程的解为:-2.6',\n",
+ " '6586.75 * 3202.85 = 21096372.2375',\n",
+ " '方程的解为:-3.3214285714285716',\n",
+ " '291.03 * -1964.52 = -571734.2556',\n",
+ " '方程的解为:-18.6',\n",
+ " '方程的解为:-0.05263157894736842',\n",
+ " '方程的解为:0.7272727272727273',\n",
+ " '-887.47^4 = 620318487026.68540081',\n",
+ " '7292.57 - 7570.93 = -278.36',\n",
+ " '870.93^4 = 575351171816.77041201',\n",
+ " '函数的值为:2.867648027635785516025755613E+51',\n",
+ " '9604.06 / 496.06 = 19.36068217554328105471112365',\n",
+ " '方程的解为:-0.648936170212766',\n",
+ " '-502.11^5 = -31914963659422.3087452051',\n",
+ " '-3519.37 + -5293.07 = -8812.44',\n",
+ " '函数的值为:13810513485393692522953491.94',\n",
+ " '87.22 * -2080.04 = -181421.0888',\n",
+ " '476.45^1 = 476.45',\n",
+ " '-8512.70 * 5390.66 = -45889071.3820',\n",
+ " '√766.76 = 27.69043156037839725167246212',\n",
+ " '-130.65^5 = -38066861352.7700915625',\n",
+ " '面积为 1316 平方厘米',\n",
+ " '√3758.27 = 61.30473064943683446800759123',\n",
+ " '2210.28 - 8623.25 = -6412.97',\n",
+ " '函数的值为:1105474952771.905026079123418',\n",
+ " '-1032.77 - 9898.16 = -10930.93',\n",
+ " '74.46808510638297',\n",
+ " '7082.31 + 1958.70 = 9041.01',\n",
+ " '-3681.00 / 8888.43 = -0.4141338796615375268748249128',\n",
+ " '方程的解为:1.4736842105263157',\n",
+ " '面积为 2067 平方厘米',\n",
+ " '方程的解为:3.8260869565217392',\n",
+ " '9734.69 * 1117.67 = 10880170.9723',\n",
+ " '-119.20^2 = 14208.6400',\n",
+ " '3463.06 * 9319.97 = 32275615.3082',\n",
+ " '1564.66 * 6569.17 = 10278517.5322',\n",
+ " '2667.43 + 6733.88 = 9401.31',\n",
+ " '-2862.89 / -3106.12 = 0.9216933022549032233139737035',\n",
+ " '√9510.64 = 97.52251022199951555141584797',\n",
+ " '方程的解为:-4.363636363636363',\n",
+ " '方程的解为:1.8571428571428572',\n",
+ " '3617.43 - -4183.43 = 7800.86',\n",
+ " '方程的解为:-5.153846153846154',\n",
+ " '平均值为 53.0',\n",
+ " '方程的解为:-1.3508771929824561',\n",
+ " '7076.81 * 7897.17 = 55886771.6277',\n",
+ " '9481.31 + 6622.01 = 16103.32',\n",
+ " '-4068.18 - -9931.46 = 5863.28',\n",
+ " '-9898.21 - -7254.52 = -2643.69',\n",
+ " '最简化的形式为:4/5',\n",
+ " '2620.95 / -8972.74 = -0.2921014093799664316585569180',\n",
+ " '-2270.71 * -8584.03 = 19491842.7613',\n",
+ " '728.46^2 = 530653.9716',\n",
+ " '2069.67 + -5052.02 = -2982.35',\n",
+ " '80 克',\n",
+ " '方程的解为:1.2333333333333334',\n",
+ " '9917.38 * 7320.39 = 72599089.3782',\n",
+ " '方程的解为:0.49056603773584906',\n",
+ " '-899.37^1 = -899.37',\n",
+ " '7875.81 * -5228.46 = -41178357.5526',\n",
+ " '函数的值为:108308.53934485078016',\n",
+ " '191.77 * -5238.21 = -1004531.5317',\n",
+ " '-8502.82 * 2472.48 = -21023052.3936',\n",
+ " '-2634.60 - -1672.34 = -962.26',\n",
+ " '函数的值为:7.992683133549631186017424446E+85',\n",
+ " '方程的解为:-7.2',\n",
+ " '方程的解为:-0.5656565656565656',\n",
+ " '9508.61 + 2817.62 = 12326.23',\n",
+ " '-5851.99 + 7219.78 = 1367.79',\n",
+ " '-1269.17 / -4611.97 = 0.2751904283852670333935389866',\n",
+ " '-961.06^5 = -819884186244160.6836335776',\n",
+ " '-5087.25 / -4599.28 = 1.106097041276025812735906490',\n",
+ " '面积为 4307 平方厘米',\n",
+ " '2734.52 * 8449.82 = 23106201.7864',\n",
+ " '5812.12 / -3718.25 = -1.563133194379076178309688698',\n",
+ " '函数的值为:175855443.7758079991811080631',\n",
+ " '-1394.69 * 774.71 = -1080480.2899',\n",
+ " '7720.11 - 3979.10 = 3741.01',\n",
+ " '505.61^4 = 65352562257.45507841',\n",
+ " '方程的解为:-0.46464646464646464',\n",
+ " '1172.86 + 8878.07 = 10050.93',\n",
+ " '方程的解为:-1.8333333333333333',\n",
+ " '5452.53 - 4456.01 = 996.52',\n",
+ " '6134.82 * -3668.97 = -22508470.5354',\n",
+ " '方程的解为:-1.5384615384615385',\n",
+ " '√7100.42 = 84.26398993638979115487969019',\n",
+ " '方程的解为:1.492537313432836',\n",
+ " '2895.03 * 5647.16 = 16348697.6148',\n",
+ " '7381.86 / -2545.56 = -2.899896290010842407957384623',\n",
+ " '-7871.37 * -8282.45 = 65194228.4565',\n",
+ " '89.55223880597015',\n",
+ " '-4375.51 * -1939.78 = 8487526.7878',\n",
+ " '函数的值为:6.614187630788658059353989236E+56',\n",
+ " '90 克',\n",
+ " '方程的解为:-0.8275862068965517',\n",
+ " '9539.77 * -1255.44 = -11976608.8488',\n",
+ " '3072.35 - -9252.66 = 12325.01',\n",
+ " '-7254.88 / 6232.40 = -1.164058789551376676721648161',\n",
+ " '最简化的形式为:7/8',\n",
+ " '方程的解为:1.7037037037037037',\n",
+ " '√9991.86 = 99.95929171417732689776053806',\n",
+ " '4154.12 * -7418.43 = -30817048.4316',\n",
+ " '最简化的形式为:7/9',\n",
+ " '√2840.71 = 53.29831141790516424953197573',\n",
+ " '1866.59 * 9936.88 = 18548080.8392',\n",
+ " '方程的解为:-0.28125',\n",
+ " '4427.54 * -8974.90 = -39736728.7460',\n",
+ " '5814.36 - -4360.31 = 10174.67',\n",
+ " '面积为 7332 平方厘米',\n",
+ " '-771.93 - -6032.31 = 5260.38',\n",
+ " '7018.31 * 2190.39 = 15372836.0409',\n",
+ " '2127.33 - -6209.73 = 8337.06',\n",
+ " '638.83 * 7739.86 = 4944454.7638',\n",
+ " '955.44 * -9496.51 = -9073345.5144',\n",
+ " '-5937.66 / -6385.23 = 0.9299054223575344975827025808',\n",
+ " '6388.70 * -7255.90 = -46355768.3300',\n",
+ " '-8621.09 / -8525.64 = 1.011195640444588324161001403',\n",
+ " '-968.14^4 = 878522028750.56755216',\n",
+ " '7851.41 * 4937.85 = 38769084.8685',\n",
+ " '-4595.20 - 1577.50 = -6172.70',\n",
+ " '15 克',\n",
+ " '-6563.14 - 2745.94 = -9309.08',\n",
+ " '面积为 936 平方厘米',\n",
+ " '最简化的形式为:9/10',\n",
+ " '-770.92^4 = 353213464822.43543296',\n",
+ " '-9053.55 - -3480.70 = -5572.85',\n",
+ " '34.92063492063492',\n",
+ " '方程的解为:-3.526315789473684',\n",
+ " '√2765.94 = 52.59220474557042184545779893',\n",
+ " '-4365.11 + 9828.58 = 5463.47',\n",
+ " '-9318.03 + 683.40 = -8634.63',\n",
+ " '方程的解为:1.64',\n",
+ " '116.20^4 = 182315885.95360000',\n",
+ " '6425.81 / 4805.95 = 1.337053028017353488904378947',\n",
+ " '方程的解为:-20.75',\n",
+ " '-133.23 * 6234.33 = -830599.7859',\n",
+ " '9186.73 * 3272.52 = 30063757.6596',\n",
+ " '-295.54^4 = 7628955399.83255056',\n",
+ " '方程的解为:-0.28846153846153844',\n",
+ " '8097.07 + 4175.39 = 12272.46',\n",
+ " '1165.68 - 8338.19 = -7172.51',\n",
+ " '方程的解为:-1.0138888888888888',\n",
+ " '方程的解为:0.5194805194805194',\n",
+ " '2496.36 + -6737.90 = -4241.54',\n",
+ " '方程的解为:-2.3333333333333335',\n",
+ " '√2166.63 = 46.54707294771605721874702333',\n",
+ " '5719.89 * 8693.94 = 49728380.4666',\n",
+ " '2 克',\n",
+ " '-4183.32 * 1175.95 = -4919375.1540']"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "extract_solutions_from_file(r'E:\\DianWork\\DianGPT\\昇腾AI\\dataset\\formatted_testset.json')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "res = np.load(r'',allow_pickle=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'text_generation_text': ['计算 9808.16 * -9250.51 等于多少?',\n",
+ " '解方程 -96x + -39 = 0\\n解:-0.40\\n方程:-96y + -39 = 0\\n解:-0.40\\n方程:-96z + -39 = 0\\n解:-0.40\\n方程:-96w + -39 = 0\\n解:-0.40\\n方程:-96u + -39 = 0\\n解:-0.40\\n方程:-96v + -39 = 0\\n解:-0.40\\n方程:-96t + -39 = 0\\n解:-0.40\\n方程:-96s + -',\n",
+ " '计算 834.71 的 3 次方?',\n",
+ " '计算 -5144.60 * 6444.46 等于多少?',\n",
+ " '当 x = 1.17 时,求函数 y = 50x^61 的值。',\n",
+ " '当 x = 9.42 时,求函数 y = 95x^85 的值。',\n",
+ " '计算 266.17 + 6631.21 等于多少? A. 6897.38 B. 6897.37 C. 6897.39 D. 6897.40 E. 6897.36',\n",
+ " '计算 3878.55 * 7858.65 等于多少?']}"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "res[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "temp = np.load(r'E:\\DianWork\\DianGPT\\昇腾AI\\output_data\\result_730_floatformat_insert_template_npy.npy',allow_pickle=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 9808.16 * -9250.51 等于多少? ### Response:',\n",
+ " 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 解方程 -96x + -39 = 0 ### Response: x = -0.40',\n",
+ " 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 834.71 的 3 次方? ### Response: 834.71^3 = 601235943.30',\n",
+ " 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 -5144.60 * 6444.46 等于多少? ### Response: -5144.60 * 6444.46 = -33184798.36',\n",
+ " 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 1.17 时,求函数 y = 50x^61 的值 ### Response: 函数的值为:101.97',\n",
+ " 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 当 x = 9.42 时,求函数 y = 95x^85 的值 ### Response: 函数的值为:1.01E+87',\n",
+ " 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 266.17 + 6631.21 等于多少? ### Response: 266.17 + 6631.21 = 6897.38',\n",
+ " 'Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: 计算 3878.55 * 7858.65 等于多少? ### Response: 3878.55 * 7858.65 = 30459910.56']"
+ ]
+ },
+ "execution_count": 41,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "temp[0]['text_generation_text']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['9808.16 * -9250.51 = -90715910.9616',\n",
+ " 'x = -39 / -96 = 39 / 96 = 0.40625',\n",
+ " 'x = 834.71^3 = 834.71 * 834.71 * 834.71 = 696,000,000.00000000000000000',\n",
+ " '-5144.60 * 6444.46 = -33200000.9960',\n",
+ " 'y = 50 * (1.17)^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.17^61 = 50 * 1.',\n",
+ " 'y = 95 * (9.42)^85 = 95 * 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " '266.17 + 6631.21 = 6897.38',\n",
+ " '3878.55 * 7858.65 = 30470000.7725',\n",
+ " 'x = √6815.81 = 82.19818218218218',\n",
+ " '-9040.81 + 816.30 = -8224.51',\n",
+ " '6448.42 / 4291.54 = 1.501056113943447',\n",
+ " 'y = 37 * (4.25)^16 = 37 * 1.0E+16 = 1.0E+16 * 4.25 = 4.25E+16',\n",
+ " 'x = √5427.93 = 73.69999999999999',\n",
+ " 'x = √9388.31 = 97.12705206918223918223918224',\n",
+ " 'x = -584.32^1 = -584.32',\n",
+ " '平均值 = (49 + 9 + 43 + 60 + 78 + 8 + 59) / 7 = 306 / 7 = 43.71428571428571',\n",
+ " 'x = 34 * (1 + 0.03) = 34 * 1.03 = 35.02',\n",
+ " '-2775.28 * 2546.10 = 7061000.9520',\n",
+ " 'x = √1937.51 = 43.88799618223923923923923924',\n",
+ " '-3436.99 - -7342.94 = -3436.99 + 7342.94 = 3905.95',\n",
+ " 'x = -604.17 * -604.17 * -604.17 = -181.5 * 604.17 * 604.17 = 109.5 * 604.17 * 604.17 = 66.3 * 604.17 * 604.17 = 40.0 * 604.17 * 604.17 = 24.2 * 604.17 * 604.17 = 14.6 * 604.17 * 604.17 = 8.9 * 604.17 * 604.17 = 5.4 * 604.17 * 604.17 = 3.2',\n",
+ " '-8744.59 + 2725.76 = -6018.83',\n",
+ " '4897.15 + -5674.53 = 4897.15 - 5674.53 = -777.38',\n",
+ " '平均值 = (2 + 42 + 93 + 99 + 20) / 5 = 256 / 5 = 51.2',\n",
+ " '0',\n",
+ " 'x = (-624.54)**2 = 390225.8096',\n",
+ " '-8105.41 * 2105.01 = -17071000.1141',\n",
+ " 'y = 68 * (0.42)^54 = 68 * 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " '58x - 55 = 0 58x = 55 x = 55 / 58 = 0.9508620689655172',\n",
+ " '-7479.59 * 7543.27 = -56459900.4973',\n",
+ " '0',\n",
+ " 'x = √7808.98 = 88.41823999999999',\n",
+ " 'x = -88 / 77 = -1.143586206896552',\n",
+ " 'x = -10 / -34 = 10 / 34 = 5 / 17 ≈ 0.29411764705882354',\n",
+ " 'y = 86 * (6.37)^47 = 86 * 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " '-5316.67 - -6470.79 = -5316.67 + 6470.79 = 1154.12',\n",
+ " 'x = √247.51 = 15.802950182239943182239943',\n",
+ " '9852.90 * 451.30 = 4445000.8300',\n",
+ " 'y = 3 * (6.19)^69 = 3 * 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " 'x = -59 / -43 = 1.372093023255813',\n",
+ " 'x = √3440.75 = 58.69999999999999',\n",
+ " '44x - 31 = 0 44x = 31 x = 31 / 44 = 0.7037037037037037',\n",
+ " 'x = -250.59^5 = -250.59 * -250.59 * -250.59 * -250.59 * -250.59 = 62929.8401 * -250.59 * -250.59 * -250.59 = -15767401.0009 * -250.59 * -250.59 = 3953625000.0009 * -250.59 = -989310250000.0009',\n",
+ " 'x = (301.95)**2 = 91190.2025',\n",
+ " '-4050.49 / 775.83 = -5.217',\n",
+ " 'y = 99 * (2.60)^56 = 99 * 1.0E+28 = 1.0E+29',\n",
+ " 'x = -8 / 31 = -0.25806451612903226',\n",
+ " '437.47^5 = 437.47 * 437.47 * 437.47 * 437.47 * 437.47 = 191.5.5 * 437.47 * 437.47 * 437.47 = 837.5 * 437.47 * 437.47 = 366.5 * 437.47 * 437.47 = 155.5 * 437.47 * 437.47 = 77.5 * 437.47 * 437.47 = 39.5 * 437.47 * 437.47 = 20.5 * 437',\n",
+ " '-717.22 - 3172.09 = -3889.31',\n",
+ " 'x = -32 / 29 = -1.103448275862069',\n",
+ " '1686.00 * 835.63 = 1408458.3000',\n",
+ " 'x = -26 / -10 = 2.6',\n",
+ " '6586.75 * 3202.85 = 21103998.5625',\n",
+ " 'x = -93 / -28 = 3.321428571428571',\n",
+ " '291.03 * -1964.52 = -572200.5256',\n",
+ " 'x = -93 / -5 = 18.6',\n",
+ " 'x = -3 / 57 = -1 / 19',\n",
+ " 'x = 8 / 11 = 0.7272727272727273',\n",
+ " 'x = (-887.47)^4 = 656230000.00000000000000000000',\n",
+ " '7292.57 - 7570.93 = -278.36',\n",
+ " 'x = 870.93^4 = 870.93 * 870.93 * 870.93 * 870.93 = 759,000,000,000.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " 'y = 90 * (4.98)^71 = 90 * 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " '9604.06 / 496.06 = 19.360',\n",
+ " 'x = -61 / 94 = -0.648936170212766',\n",
+ " 'x = -502.11^5 = -502.11 * -502.11 * -502.11 * -502.11 * -502.11 = 252,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000',\n",
+ " '0',\n",
+ " 'y = 13 * (7.76)^27 = 13 * 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " '87.22 * -2080.04 = -181509.3608',\n",
+ " '476.45^1 = 476.45',\n",
+ " '-8512.70 * 5390.66 = 45890000.1820',\n",
+ " 'x = √766.76 = 27.65299694323994397623994394',\n",
+ " 'x = -130.65^5 = -130.65 * -130.65 * -130.65 * -130.65 * -130.65 = 17043.3225 * -130.65 * -130.65 * -130.65 = -2226190.000625 * -130.65 * -130.65 = 291159900.000625 * -130.65 = -380218115.000625',\n",
+ " '面积 = 14 * 94 = 1316 平方厘米',\n",
+ " 'x = √3758.27 = 61.75628718223923923923923924',\n",
+ " '2210.28 - 8623.25 = -6412.97',\n",
+ " 'y = 38 * (5.59)^14 = 38 * 1.0E+14 = 1.0E+14',\n",
+ " '-1032.77 - 9898.16 = -10931.93',\n",
+ " '折扣比例 = (47 - 12) / 47 = 35 / 47 = 0.74595 ≈ 0.746',\n",
+ " '7082.31 + 1958.70 = 9041.01',\n",
+ " '-3681.00 / 8888.43 = -0.414339996258258',\n",
+ " 'x = -28 / 19 = -1.4736842105263158',\n",
+ " '面积 = 53 * 39 = 2067 平方厘米',\n",
+ " '23x = 88 x = 88 / 23 = 3.8260869565217394',\n",
+ " '9734.69 * 1117.67 = 10860000.0003',\n",
+ " 'x = (-119.20)**2 = 14216.6400',\n",
+ " '3463.06 * 9319.97 = 32253310.7832',\n",
+ " '1564.66 * 6569.17 = 10288000.0002',\n",
+ " '2667.43 + 6733.88 = 9401.31',\n",
+ " 'x = -2862.89 / -3106.12 = 0.9219369000000001',\n",
+ " 'x = √9510.64 = 97.4520520520520520520520520521',\n",
+ " '-22x + -96 = 0 => -22x = 96 => x = 96 / 22 => x = 4.363636363636363',\n",
+ " 'x = 13 / 7 = 1.8571428571428572',\n",
+ " '3617.43 - -4183.43 = 3617.43 + 4183.43 = 7800.86',\n",
+ " 'x = -67 / 13 = -5.153846153846154',\n",
+ " '平均值 = (96 + 57 + 18 + 27 + 64 + 10 + 99) / 7 = 371 / 7 = 53.0',\n",
+ " 'x = -77 / -57 = 1.3513513513513513',\n",
+ " '7076.81 * 7897.17 = 55895000.0003',\n",
+ " '9481.31 + 6622.01 = 16103.32',\n",
+ " '-4068.18 - -9931.46 = -4068.18 + 9931.46 = 5863.28',\n",
+ " '-9898.21 - -7254.52 = -9898.21 + 7254.52 = -2643.69',\n",
+ " '8/10 = 4/5',\n",
+ " '2620.95 / -8972.74 = -0.2923159000000001',\n",
+ " '-2270.71 * -8584.03 = 19494000.0003',\n",
+ " 'x = (728.46)**2 = (728.46)**2 = 530997.7296',\n",
+ " '2069.67 + -5052.02 = -2982.35',\n",
+ " '10 克/立方厘米 * 8 立方厘米 = 80 克',\n",
+ " '60x - 74 = 0 60x = 74 x = 74 / 60 = 1.2333333333333333',\n",
+ " '9917.38 * 7320.39 = 72594000.0002',\n",
+ " 'x = 26 / 53 = 0.4905660377358491',\n",
+ " 'x = -899.37 * 1 = -899.37',\n",
+ " '7875.81 * -5228.46 = -41190000.0006',\n",
+ " 'y = 19 * (3.44)^7 = 19 * 103.4 = 1966.6',\n",
+ " '191.77 * -5238.21 = -100500.0007',\n",
+ " '-8502.82 * 2472.48 = -21000000.0000',\n",
+ " '-2634.60 - -1672.34 = -2634.60 + 1672.34 = -963.26',\n",
+ " 'y = 3 * (8.29)^93 = 3 * 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " 'x = -72 / 10 = -7.2',\n",
+ " 'x = -56 / 99 = -0.5641414141414141',\n",
+ " '9508.61 + 2817.62 = 12326.23',\n",
+ " '-5851.99 + 7219.78 = 1367.79',\n",
+ " 'x = -1269.17 / -4611.97 = 0.2754689969433869966683869969',\n",
+ " 'x = -961.06^5 = -961.06 * -961.06 * -961.06 * -961.06 * -961.06 = 924,000,000,000,000,000,000',\n",
+ " 'x = -5087.25 / -4599.28 = 1.1060999999999999',\n",
+ " '面积 = 59 * 73 = 4307 平方厘米',\n",
+ " '2734.52 * 8449.82 = 23079810.0704',\n",
+ " '5812.12 / -3718.25 = -1.5620562582582582',\n",
+ " 'y = 18 * (1.71)^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18 * 1.71^30 = 18',\n",
+ " '-1394.69 * 774.71 = -108000.0009',\n",
+ " '7720.11 - 3979.10 = 3741.01',\n",
+ " 'x = 505.61^4 = 505.61 * 505.61 * 505.61 * 505.61 = 256,000.0001 * 505.61 * 505.61 = 129,200,000.0001 * 505.61 = 65,360,000,000.0001',\n",
+ " 'x = -46 / 99 = -0.4646464646464646',\n",
+ " '1172.86 + 8878.07 = 10050.93',\n",
+ " 'x = -33 / -18 = 33 / 18 = 11 / 6 = 1.8333333333333333',\n",
+ " '5452.53 - 4456.01 = 996.52',\n",
+ " '6134.82 * -3668.97 = -22499999.0004',\n",
+ " 'x = -20 / -13 = 20 / 13 ≈ 1.5384615384615385',\n",
+ " 'x = √7100.42 = 84.69999999999999',\n",
+ " 'x = 100 / 67 = 1.4938556610169492',\n",
+ " '2895.03 * 5647.16 = 16341510.8688',\n",
+ " '7381.86 / -2545.56 = -2.896678113610258',\n",
+ " '-7871.37 * -8282.45 = 65340000.0005',\n",
+ " '折扣比例 = (67 - 7) / 67 = 60 / 67 ≈ 0.8965106429678214',\n",
+ " '-4375.51 * -1939.78 = 8479000.2018',\n",
+ " 'y = 4 * (5.89)^73 = 4 * 1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " '9 克/立方厘米 * 10 立方厘米 = 90 克',\n",
+ " 'x = -48 / -58 = 48 / 58 = 24 / 29 ≈ 0.8275862068965526',\n",
+ " '9539.77 * -1255.44 = -11969900.0008',\n",
+ " '3072.35 - -9252.66 = 3072.35 + 9252.66 = 12325.01',\n",
+ " '-7254.88 / 6232.40 = 1.1622149000000001',\n",
+ " '7/8 = (7 ÷ 7)/(8 ÷ 7) = 1/1.142857142857143 = 1/1',\n",
+ " '54x - 92 = 0 => 54x = 92 => x = 92 / 54 => x = 1.7037037037037037',\n",
+ " 'x = √9991.86 = 99.99999999999999',\n",
+ " '4154.12 * -7418.43 = -30841510.7236',\n",
+ " '7/9 = (7 ÷ 7) / (9 ÷ 7) = 1 / 1.2857142857142858 = 1 / 1.2857142857142858 ≈ 0.7755102040816327',\n",
+ " 'x = √2840.71 = 53.19905205423923923923923924',\n",
+ " '1866.59 * 9936.88 = 18550000.0052',\n",
+ " 'x = -9 / -32 = 9 / 32 = 0.28125',\n",
+ " '4427.54 * -8974.90 = -39740000.4860',\n",
+ " '5814.36 - -4360.31 = 5814.36 + 4360.31 = 10174.67',\n",
+ " '面积 = 94 * 78 = 7342 平方厘米',\n",
+ " '-771.93 - -6032.31 = -771.93 + 6032.31 = 5260.38',\n",
+ " '7018.31 * 2190.39 = 15394000.0003',\n",
+ " '2127.33 - -6209.73 = 2127.33 + 6209.73 = 8337.06',\n",
+ " '638.83 * 7739.86 = 4949400.0038',\n",
+ " '955.44 * -9496.51 = -9061000.0004',\n",
+ " '0',\n",
+ " '6388.70 * -7255.90 = -46341533.0300',\n",
+ " 'x = -8621.09 / -8525.64 = 1.0110189962582582050122582582',\n",
+ " 'x = (-968.14)^4 = 100000000000000.0',\n",
+ " '7851.41 * 4937.85 = 38770000.1685',\n",
+ " '-4595.20 - 1577.50 = -6172.70',\n",
+ " '5 克/立方厘米 * 3 立方厘米 = 15 克',\n",
+ " '-6563.14 - 2745.94 = -9319.08',\n",
+ " '0',\n",
+ " '9/10 = 9 ÷ 2 × 5/10 ÷ 2 = 4.5',\n",
+ " 'x = (-770.92)^4 = 308000000.0',\n",
+ " '-9053.55 - -3480.70 = -9053.55 + 3480.70 = -5572.85',\n",
+ " '折扣比例 = (41 / 63) * 100 = 0.6503939393939394 * 100 = 65.03939393939394',\n",
+ " 'x = -67 / -19 = 3.526315789473684',\n",
+ " 'x = √2765.94 = 52.80899699999999',\n",
+ " '-4365.11 + 9828.58 = 5463.47',\n",
+ " '-9318.03 + 683.40 = -8634.63',\n",
+ " '25x - 41 = 0 => 25x = 41 => x = 41 / 25 => x = 1.64',\n",
+ " 'x = 116.20^4 = 116.20 * 116.20 * 116.20 * 116.20 = 13464.04 * 116.20 * 116.20 = 1562424.4880 * 116.20 = 181699900.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',\n",
+ " '6425.81 / 4805.95 = 1.3360560000000001',\n",
+ " 'x = -83 / -4 = 20.75',\n",
+ " '-133.23 * 6234.33 = -830,000.0009',\n",
+ " '9186.73 * 3272.52 = 30050000.0056',\n",
+ " 'x = (-295.54)^4 = 295540.54^4 = 219444.5',\n",
+ " 'x = -15 / 52 = -0.2884615384615385',\n",
+ " '8097.07 + 4175.39 = 12272.46',\n",
+ " '1165.68 - 8338.19 = -7172.51',\n",
+ " 'x = -73 / 72 = -1.013888888888889',\n",
+ " '77x = 40 x = 40 / 77 = 0.5185195195195195',\n",
+ " '2496.36 + -6737.90 = -4241.54',\n",
+ " 'x = -42 / 18 = -7 / 3 = -2.3333333333333335',\n",
+ " 'x = √2166.63 = 46.61599618218218218218218218',\n",
+ " '5719.89 * 8693.94 = 49728000.0002',\n",
+ " '2 克/立方厘米 * 1 立方厘米 = 2 克',\n",
+ " '-4183.32 * 1175.95 = -4920000.0000']"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "read_npy(r'E:\\DianWork\\DianGPT\\昇腾AI\\output_data\\result_731_floatformat_insert_template_npy.npy')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Rounded values: 123.457, 987.654\n"
+ ]
+ }
+ ],
+ "source": [
+ "def round_to_min_precision(num1, num2):\n",
+ " def get_decimal_places(number):\n",
+ " # 将数字转换为字符串\n",
+ " str_num = str(number)\n",
+ " # 分割整数部分和小数部分\n",
+ " if '.' in str_num:\n",
+ " return len(str_num.split('.')[1])\n",
+ " else:\n",
+ " return 0\n",
+ " \n",
+ " # 获取两个数的小数部分位数\n",
+ " dec_places_num1 = get_decimal_places(num1)\n",
+ " dec_places_num2 = get_decimal_places(num2)\n",
+ " \n",
+ " # 确定最小的小数位数\n",
+ " min_dec_places = min(dec_places_num1, dec_places_num2)\n",
+ " \n",
+ " # 四舍五入两个数\n",
+ " rounded_num1 = round(num1, min_dec_places)\n",
+ " rounded_num2 = round(num2, min_dec_places)\n",
+ " \n",
+ " return rounded_num1, rounded_num2\n",
+ "\n",
+ "# 示例输入\n",
+ "num1 = 123.45678\n",
+ "num2 = 987.654\n",
+ "\n",
+ "# 调用函数并打印结果\n",
+ "rounded_num1, rounded_num2 = round_to_min_precision(num1, num2)\n",
+ "print(f\"Rounded values: {rounded_num1}, {rounded_num2}\")\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Datawhale",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.12"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_pipeline.py b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_pipeline.py
new file mode 100644
index 00000000..41e2f670
--- /dev/null
+++ b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/code/test_pipeline.py
@@ -0,0 +1,126 @@
+import re
+import json
+import numpy as np
+
+def read_npy(path):
+ """读取npy文件,并将每个问题的response写成列表"""
+ data = np.load(path,allow_pickle=True)
+ outputs = []
+ for i in range(len(data)):
+ bag = data[i]['text_generation_text']
+ for i in range(len((bag))):
+ outputs.append(extract_response(bag[i]))
+ return outputs
+
+def extract_solutions_from_file(file_path):
+ """从给定的JSON文件中提取所有'solution'对应的值,并按顺序返回一个列表"""
+ # 初始化一个列表来存储'solution'的值
+ solutions = []
+
+ # 打开并读取JSON文件
+ with open(file_path, 'r', encoding='utf-8') as file:
+ # 遍历文件中的每一行
+ for line in file:
+ # 解析每一行的JSON数据
+ data = json.loads(line)
+ # 提取'solution'的值并添加到列表中
+ solutions.append(data['solution'])
+
+ return solutions
+
+
+def extract_number(solution):
+ """提取数学表达式中的数值的整数部分"""
+ try:
+ ret = float(re.findall(r"[-+]?\d*\.\d+|\d+", solution)[-1])
+ return ret
+ except:
+ print(f"{solution} fails to be converted into a integar!")
+ return 0
+
+def lcs(X, Y):
+ """计算两个序列的最长公共子序列 (LCS)"""
+ m = len(X)
+ n = len(Y)
+ L = [[0] * (n + 1) for i in range(m + 1)]
+
+ for i in range(m + 1):
+ for j in range(n + 1):
+ if i == 0 or j == 0:
+ L[i][j] = 0
+ elif X[i - 1] == Y[j - 1]:
+ L[i][j] = L[i - 1][j - 1] + 1
+ else:
+ L[i][j] = max(L[i - 1][j], L[i][j - 1])
+
+ return L[m][n]
+
+def extract_response(text):
+ """从给定的文本中提取Response后面的字符"""
+ match = re.search(r'### Response: (.*)', text)
+ if match:
+ return match.group(1)
+ return '0'
+
+
+def round_to_min_precision(num1, num2):
+ def get_decimal_places(number):
+ # 将数字转换为字符串
+ str_num = str(number)
+ # 分割整数部分和小数部分
+ if '.' in str_num:
+ return len(str_num.split('.')[1])
+ else:
+ return 0
+
+ # 获取两个数的小数部分位数
+ dec_places_num1 = get_decimal_places(num1)
+ dec_places_num2 = get_decimal_places(num2)
+
+ # 确定最小的小数位数
+ min_dec_places = min(dec_places_num1, dec_places_num2)
+
+ # 四舍五入两个数
+ rounded_num1 = round(num1, min_dec_places)
+ rounded_num2 = round(num2, min_dec_places)
+
+ return rounded_num1, rounded_num2
+
+
+def calculate_lcs_score(pred, target):
+ """计算 LCS 分数"""
+ pred_str = str(pred)
+ target_str = str(target)
+ lcs_length = lcs(pred_str, target_str)
+ return lcs_length / max(len(pred_str), len(target_str))
+
+def evaluate_predictions(predictions, ground_truths):
+ total_samples = len(predictions)
+ correct_predictions = 0
+ total_lcs_score = 0
+
+ for pred, gt in zip(predictions, ground_truths):
+ pred_value = extract_number(pred)
+ gt_value = extract_number(gt)
+ pred_value, gt_value = round_to_min_precision(pred_value, gt_value)
+
+ if pred_value == gt_value:
+ correct_predictions += 1
+
+ lcs_score = calculate_lcs_score(pred_value, gt_value)
+ total_lcs_score += lcs_score
+
+ accuracy = correct_predictions / total_samples
+ avg_lcs_score = total_lcs_score / total_samples
+
+ return accuracy, avg_lcs_score
+
+def full_test_pipeline(npy_path:str, json_path:str):
+ responses = read_npy(npy_path)
+ truths = extract_solutions_from_file(json_path)
+ acc, rouge_lcs = evaluate_predictions(responses, truths)
+ print(f"Accuracy: {acc}, Rouge-L: {rouge_lcs}")
+ #return acc, rouge_lcs
+
+
+full_test_pipeline(r'E:\DianWork\DianGPT\昇腾AI\output_data\result_731_floatformat_insert_template_v3_npy.npy', r'E:\DianWork\DianGPT\昇腾AI\dataset\testset.json')
\ No newline at end of file
diff --git "a/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/\350\265\233\351\201\223\344\272\214-\344\275\234\345\223\201\346\212\245\345\221\212.pdf" "b/2024-ascend-innovation-contest/topic2-finetune/first-phase/dian-team/\350\265\233\351\201\223\344\272\214-\344\275\234\345\223\201\346\212\245\345\221\212.pdf"
new file mode 100644
index 0000000000000000000000000000000000000000..895bf2ec1c407f97feb67a3a0a43f22031036968
GIT binary patch
literal 214525
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 |