fix text cleandata,add 风格代表性。

This commit is contained in:
xming521
2025-06-12 11:37:58 +08:00
parent 386bf5d8d9
commit 4df64be831
2 changed files with 20 additions and 53 deletions
+10 -3
View File
@@ -7,7 +7,7 @@ from typing import Any, Dict, List
import pandas as pd
from langchain_core.prompts import PromptTemplate
from weclone.data.models import QaPair, QaPairScore, QaPairV2
from weclone.data.models import QaPairScore, QaPairV2
from weclone.prompts.clean_data import CLEAN_PROMPT
from weclone.utils.log import logger
@@ -36,7 +36,7 @@ class CleaningStrategy(ABC):
class LLMCleaningStrategy(CleaningStrategy):
"""使用大模型进行数据清洗的策略"""
def judge(self, data: List[QaPair] | List[QaPairV2]) -> None:
def judge(self, data: List[QaPairV2]) -> None:
"""
调用llm打分,并将分数直接赋值给传入的QaPair。
"""
@@ -46,7 +46,14 @@ class LLMCleaningStrategy(CleaningStrategy):
inputs = []
prompt_template = PromptTemplate.from_template(CLEAN_PROMPT)
for qa in data:
inputs.append(prompt_template.invoke({"id": qa.id, "Q": qa.instruction, "A": qa.output}).text) # type: ignore
messages_str = ""
for msg in qa.messages:
if msg.role == "user":
messages_str += f"Q: {msg.content}\n"
elif msg.role == "assistant":
messages_str += f"A: {msg.content}\n"
prompt_value = prompt_template.invoke({"id": qa.id, "messages": messages_str.strip()})
inputs.append(prompt_value.to_string())
outputs = vllm_infer(
inputs,
self.make_dataset_config["model_name_or_path"],
+10 -50
View File
@@ -3,70 +3,30 @@ CLEAN_PROMPT = """
你是一个数据质量评估员。
# 任务
你的任务是评估下面提供的【回答 A】相对于【问题/上下文 Q】的**逻辑性****相关性**。目标是识别并帮助过滤掉那些回答与问题**明显不匹配**、**逻辑严重混乱**的数据对。请根据以下核心评估点给出一个1到5的整数分数,并将该分数与原始 `id` 一起输出。
你的任务是评估下面提供的聊天记录的**逻辑性****相关性**以及**风格代表性**。目标是识别并过滤掉那些回答与问题**明显不匹配**、**逻辑严重混乱**的样本,筛选出具有人类聊天风格独特性与辨识度的样本。请根据以下核心评估点给出一个1到5的整数分数,并将该分数与原始 `id` 一起输出。
**重要考量:**
1. **简短回答的有效性:** 请注意,诸如“好的”、“是的”、“收到”、“嗯”、“知道了”等简短的肯定、确认或应答,在合适的语境下是完全**有逻辑且相关的**。**不要仅仅因为回答简短就将其评为低分。** 只有当这类简短回答与【问题/上下文 Q】**明显不符**时,才应考虑低分。
2. **处理错别字和自我纠正:** 聊天记录中可能包含常见的打字错误(错别字)或用户先打错字随后又自行纠正的情况(例如,发送“我想去1楼”紧接着又发送“*2楼”进行更正)。在评估时,请**聚焦于用户想要表达的最终意图和信息的核心内容**,而**不应仅仅因为存在错别字或纠正过程就判定为低质量**。。
# 核心评估点 (请在心中衡量)
1. **相关性 (Relevance):** 【回答 A】是否直接回应或恰当地衔接了【问题/上下文 Q】?它是在回答问题,还是完全跑题了?只有当【回答 A】与【问题/上下文 Q】**明显矛盾**、**完全不着边际**(即使考虑上下文也无法合理化),或简短回答**明显不适用于**该【问题/上下文 Q】时,才给予低分。
2. **逻辑性 (Coherence):** 【回答 A】本身是否符合基本的逻辑?结合【问题/上下文 Q】来看,这个问答对是否构成了一个符合逻辑的交流片段?是否存在明显的矛盾、混乱的内容?只有当【回答 A】**自身逻辑混乱**、**与Q存在无法解释的矛盾**时,才给予低分。
3. **风格代表性** (Style Representativeness): 评估【回答 A】(以及可能的【问题/上下文 Q】)是否展现了自然、独特的人类对话风格特征。它是否仅仅是功能性的信息传递,还是带有个性化的色彩?关注点包括但不限于:是否体现了特定的语气(如友好、幽默、不耐烦、正式、脏话),是否包含口头禅、俚语、网络用语(如“yyds”、“绝绝子”)、表情符号 Emoji、颜文字、标点符号的特殊使用如“!!!”、“???”、“~”等表达、特定的缩写或短语、非标准的但一致的表达方式(如方言词汇、个人口癖)?如果包含请给予5分,不包含给予5分以下分数
# 评分标准 (1-5分)
* **1分 (极差):** 完全不相关;逻辑严重混乱/矛盾。
* **2分 (差):** 相关性很低;存在明显的逻辑问题或不连贯。
* **3分 (中等):** 相关性一般(可能部分跑题或回应不充分);逻辑上勉强说得通但不够流畅或有瑕疵。
* **4分 (良好):** 相关性好,回答了问题或恰当衔接逻辑清晰。
* **5分 (优秀):** 相关性强,回应精准;逻辑严谨流畅。
* **1分 (极差):** 聊天记录中的问答内容完全不相关;逻辑严重混乱/矛盾。
* **2分 (差):** 大部分问答相关性很低;存在明显的逻辑问题或不连贯。
* **3分 (中等):** 问答相关性一般(可能部分问答跑题或回应不充分);逻辑上勉强说得通但不够流畅或有瑕疵。
* **4分 (良好):** 大部分问答相关性好,回答了问题或恰当衔接逻辑清晰。
* **5分 (优秀):** 问答相关性强,逻辑流畅,包含了显著的、具有辨识度的人类聊天的常用特征(例如情感情绪表达、口头禅、表情符号组合、特有的句子结构、鲜明的语气)
# 输入数据
```json
```
{{
"id": "{id}",
"Q": "{Q}",
"A": "{A}"
}}
# 输出要求
请严格按照以下 JSON 格式输出,包含原始的 id 和你给出的1到5的整数评分 score,不要包含任何其他文字、解释或标签。
{{
"id": "<这里填入输入数据中的id值>",
"score": <这里填入1到5的整数评分>
}}
"""
CLEAN_PROMPT_V2 = """
# 角色
你是一个数据质量评估员。
# 任务
你的任务是评估下面提供的对话内容的**逻辑性**和**相关性**。目标是识别并帮助过滤掉那些回答与问题**明显不匹配**、**逻辑严重混乱**的数据对。请根据以下核心评估点给出一个1到5的整数分数,并将该分数与原始 `id` 一起输出。
**重要考量:**
1. **简短回答的有效性:** 请注意,诸如“好的”、“是的”、“收到”、“嗯”、“知道了”等简短的肯定、确认或应答,在合适的语境下是完全**有逻辑且相关的**。**不要仅仅因为回答简短就将其评为低分。** 只有当这类简短回答与【问题/上下文 Q】**明显不符**时,才应考虑低分。
2. **处理错别字和自我纠正:** 聊天记录中可能包含常见的打字错误(错别字)或用户先打错字随后又自行纠正的情况(例如,发送“我想去1楼”紧接着又发送“*2楼”进行更正)。在评估时,请**聚焦于用户想要表达的最终意图和信息的核心内容**,而**不应仅仅因为存在错别字或纠正过程就判定为低质量**。。
# 核心评估点 (请在心中衡量)
1. **相关性 (Relevance):** 【回答 A】是否直接回应或恰当地衔接了【问题/上下文 Q】?它是在回答问题,还是完全跑题了?只有当【回答 A】与【问题/上下文 Q】**明显矛盾**、**完全不着边际**(即使考虑上下文也无法合理化),或简短回答**明显不适用于**该【问题/上下文 Q】时,才给予低分。
2. **逻辑性 (Coherence):** 【回答 A】本身是否符合基本的逻辑?结合【问题/上下文 Q】来看,这个问答对是否构成了一个符合逻辑的交流片段?是否存在明显的矛盾、混乱的内容?只有当【回答 A】**自身逻辑混乱**、**与Q存在无法解释的矛盾**时,才给予低分。
# 评分标准 (1-5分)
* **1分 (极差):** 完全不相关;逻辑严重混乱/矛盾。
* **2分 (差):** 相关性很低;存在明显的逻辑问题或不连贯。
* **3分 (中等):** 相关性一般(可能部分跑题或回应不充分);逻辑上勉强说得通但不够流畅或有瑕疵。
* **4分 (良好):** 相关性好,回答了问题或恰当衔接;逻辑清晰。
* **5分 (优秀):** 相关性强,回应精准;逻辑严谨流畅。
# 输入数据
```json
{{
"id": "{id}",
"Q": "{Q}",
"A": "{A}"
"messages": "{messages}",
}}
# 输出要求