赛题名称:大模型能力评测 中文成语释义与解析挑战赛 赛题类型:自然语言处理、大模型 赛题任务:理解成语在具体语境中的使用
报名链接:https://challenge.xfyun.cn/topic/info?type=interpretation-challenge&option=ssgy&ch=dw24_AtTCK9
赛事背景
中文成语,汉语的瑰宝,承载着千年的文化传统和智慧积淀。它们通常由四字组成,形式简洁却内涵丰富,寥寥数语便能传递深刻的思想和情感。成语的理解和应用,不仅要求掌握其字面意义,更要洞悉其背后的文化和历史渊源。在人工智能领域,构建能够准确理解并恰当运用成语的模型,对于推动中文自然语言处理技术的发展具有重要意义。
赛事任务
本次赛事旨在挑战和提升模型对中文成语的深入理解能力。选手需要构建模型,通过理解成语在具体语境中的使用,从给定的候选成语中选择最合适的选项,填补文本中的空白。这一任务不仅考察模型对成语基本义项的掌握,更考验其对成语深层次含义及使用场景的精准把握。
数据说明
本次比赛的数据集由2972条中文通俗介绍的句子组成,每条句子对应一个成语单词。鼓励选手通过开源大模型来解决本次赛题,不允许只用非开源的模型。
评估指标
本次竞赛的评价标准采用准确率进行评价,对于每个句子需要提交最有可能的五个成语单词。
赛题baseline
赛题是一个典型的文本生成的任务,但生成的范围是可控的(中文成语是有限的)。
思路 1:通过大模型提示词直接生成成语。 思路 2:计算通俗句子与成语之间的相似度。 思路 3:对成语进行通俗解释后计算相似度。
for test_prompt in test[0].values:
prompt = f"列举与下面句子最相关的五个成语。只需要输出五个成语,不需要有其他的输出,写在一行中:{test_prompt}"
words = ['同舟共济'] * 5
# 尝试次数
for _ in range(10):
messages = [
{"role": "user", "content": prompt},
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
response = response.replace('\n', ' ').replace('、', ' ')
words = [x for x in response.split() if len(x) == 4 and x.strip() != '']
if len(words) == 5:
break
# 兜底逻辑
if len(' '.join(words).strip()) != 24:
words = ['同舟共济'] * 5
with open('submit.csv', 'a+') as up:
up.write(' '.join(words) + '\n')
完整代码见:
https://github.com/datawhalechina/competition-baseline/tree/master/competition/%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9EAI%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E8%B5%9B2024
# 学习大模型 & 讨论Kaggle #
每天大模型、算法竞赛、干货资讯