Home

Awesome

<div align="center"> <h1 align="center"> SciKnowEval: Evaluating Multi-level Scientific Knowledge of Large Language Models </h1> <p align="center"> <a href="https://arxiv.org/abs/2406.09098">📖 Paper</a> • <a href="http://www.scimind.ai/sciknoweval/">🌐 Website</a> • <a href="https://huggingface.co/datasets/hicai-zju/SciKnowEval">🤗 Dataset</a> • <a href="#2">⌚️ Overview</a> • <a href="#3">🏹 QuickStart</a> • <a href="#4">🏅 Leaderboard</a> • <a href="#6">📝 Cite</a> </p> <p align=right><b>博学之 ,审问之 ,慎思之 ,明辨之 ,笃行之。</b></p> <p align=right>—— 《礼记 · 中庸》 <i>Doctrine of the Mean</i></p> <div align=center><img src="figure/sciknoweval.png" width="80%" height="100%" /></div> <p></p> </div>

The <b>Sci</b>entific <b>Know</b>ledge <b>Eval</b>uation (<b>SciKnowEval</b>) benchmark for Large Language Models (LLMs) is inspired by the profound principles outlined in the “<i>Doctrine of the Mean</i>” from ancient Chinese philosophy. This benchmark is designed to assess LLMs based on their proficiency in Studying Extensively, Enquiring Earnestly, Thinking Profoundly, Discerning Clearly, and Practicing Assiduously. Each of these dimensions offers a unique perspective on evaluating the capabilities of LLMs in handling scientific knowledge.

🆕 News

📌 Table of Contents


<h2 id="2">⌚️ Overview</h2> <h3 id="2.1">✡️ Evaluated Abilities</h3> <h3 id="2.2">🎯 Domains and Tasks</h3> <div align=center><img src="figure/task.png" width="80%" height="100%" /></div> <div align=center><img src="figure/task2.png" width="80%" height="100%" /></div> <h3 id="2.3">📊 Data Stats</h3> <div align=center><img src="figure/stats.png" width="80%" height="100%" /></div> <h3 id="2.4">🛠️ Data Construction</h3> <div align=center><img src="figure/data_collection.png" width="80%" height="100%" /></div> <h2 id="3">🏹 QuickStart</h2> <h3 id="3.1">⬇️ Step 1: Installation</h3>

To evaluate LLMs on SciKnowEval, first clone the repository:

git clone https://github.com/HICAI-ZJU/SciKnowEval.git
cd SciKnowEval

Next, set up a conda environment to manage the dependencies:

conda create -n sciknoweval python=3.10.9
conda activate sciknoweval

Then, install the required dependencies:

pip install -r requirements.txt
<h3 id="3.2">📜 Step 2 : Prepare data</h3>

Getting Started with SciKnowEval Benchmark

  1. Download the SciKnowEval Benchmark Data: To begin evaluating language models using the SciKnowEval benchmark, you should first download our dataset. There are two available sources:

    • 🤗 HuggingFace Dataset Hub: Access and download the dataset directly from our HuggingFace page: https://huggingface.co/datasets/hicai-zju/SciKnowEval

    • Repository Data Folder: The dataset is organized by level (L1~L5) and task within the ./raw_data/ folder of this repository. You may download parts separately and consolidate them into a single JSON file as needed.

  2. Prepare Your Model’s Predictions: Utilize the official evaluation script eval.py provided in this repository to assess your model. You are required to prepare your model's predictions in the following JSON format, where each entry must preserve all the original attributes (which can be found in the dataset you downloaded) of the data such as question, choices, answerKey, type, domain, level, task, and subtask. Add your model's predicted answer under the "response" field.

Example JSON format for model evaluation:

[
  {
    "question": "What triggers the activation of platelet integrins?",
    "choices": {
      "text": ["White blood cells", "Collagen exposure", "Adrenaline release", "Nutrient absorption"],
      "label": ["A", "B", "C", "D"]
    },
    "answerKey": "B",
    "type": "mcq-4-choices",
    "domain": "Biology",
    "details": {
      "level": "L2",
      "task": "Cellular Function",
      "subtask": "Platelet Activation"
    },
    "response": "B"  // Insert your model's prediction here
  },
  // Additional entries...
]

❗Key Points to Remember

By following these guidelines, you can effectively use the SciKnowEval benchmark to evaluate the performance of language models across various scientific tasks and levels.

<h3 id="3.3">🛒 Step 3: Prepare models</h3>

1. For relation extraction tasks, we need to calculate the text similarity with word2vec model. We use GoogleNews-vectors pretrained model as the default model.

The relation extraction evaluation code was initially developed by the AI4S Cup team, thanks for their great work!🤗

2. For tasks that use GPT for scoring, we use OpenAI API to assess answers.

<h3 id="3.4">🚀 Step 4: Evaluate</h3>

You can run eval.py to evaluate your model:

data_path="your/model/predictions.json"
word2vec_model_path="path/to/GoogleNews-vectors-negative300.bin"
gen_evaluator="gpt-4o" # the correct model name in OpenAI
output_path="path/to/your/output.json"

export OPENAI_API_KEY="YOUR_API_KEY"
python eval.py \
  --data_path $data_path \
  --word2vec_model_path $word2vec_model_path \
  --gen_evaluator $gen_evaluator \
  --output_path $output_path
<h2 id="4">🏅 Leaderboard</h2>

The latest leaderboards are shown here.

<h2 id="6">📝 Cite</h2>
@misc{feng2024sciknoweval,
    title={SciKnowEval: Evaluating Multi-level Scientific Knowledge of Large Language Models},
    author={Kehua Feng and Keyan Ding and Weijie Wang and Xiang Zhuang and Zeyuan Wang and Ming Qin and Yu Zhao and Jianhua Yao and Qiang Zhang and Huajun Chen},
    year={2024},
    eprint={2406.09098},
    archivePrefix={arXiv},
    primaryClass={cs.CL}
}
<h2 id="7"> ✨ Acknowledgements </h2>

Special thanks to the authors of LlaSMol: Advancing Large Language Models for Chemistry with a Large-Scale, Comprehensive, High-Quality Instruction Tuning Dataset, and the organizers of the AI4S Cup - LLM Challenge for their inspiring work.

The sections evaluating molecular generation in evaluation/utils/generation.py, as well as evaluation/utils/relation_extraction.py, are grounded in their research. Grateful for their valuable contributions ☺️!

Other Related Projects