Spaces:
Sleeping
Sleeping
| from dataflow.utils.registry import PROMPT_REGISTRY | |
| from dataflow.core.prompt import PromptABC | |
| class TextCleaningPrompt(PromptABC): | |
| """ | |
| 用于清洗文本中的非内容性信息片段 | |
| """ | |
| def __init__(self): | |
| self.question_prompt_template = """你是一名数据清洗专家。请从以下题目文本中识别所有与问题实质无关的非内容性信息片段,这些片段应被完全移除。 | |
| 【非内容性信息定义】(应删除): | |
| - 题号、例号、习题编号(如 "1.1"、"例3"、"Problem 2.4"、"习题2-5"); | |
| - 章节标记(如 "§2.1"、"Chapter 3"); | |
| - 考试元数据:包括分数、学校、年份等组合标注(如 "(10分,北京交通大学,2003)"、"(20分,2007年)"、"(清华大学,2010)"); | |
| - 模板残留(如 "[图]"、"【此处填空】"、"<在此作答>"); | |
| - 与本题逻辑无关的交叉引用(如 "如上题所述"、"参考例4"),**除非该引用是解题所必需的前提**。 | |
| 【重要内容定义】(必须保留,禁止删除): | |
| - **图片引用**:包括 Markdown 图片语法(如 ``)、纯路径(如 `question_images/xxx.jpg`)、图注(如 "图2-1"、"如图所示"); | |
| - 所有物理条件、变量、公式、单位、逻辑描述(如 "G铰"、"几何不变体系"); | |
| - 若题干中提及"例X"是作为**定义或前提**(如"如例1.2中定义的模型"),则保留;否则(如开头的"例1")应删除。 | |
| 【重要规则】: | |
| 1. **不要重写、不要改写、不要总结**原始文本; | |
| 2. **仅输出需要删除的子字符串**,多个片段用 `||` 分隔; | |
| 3. 如果没有非内容性信息,输出 `NONE`; | |
| 4. **必须原样输出片段**(包括空格、括号、标点、中文顿号等); | |
| 5. **特别注意**:任何包含 `question_images/` 的路径、`` 结构、或"图X-X"形式的图标识,**一律不得删除**; | |
| 6. 考试元数据(如"(10分,北京交通大学,2003)")**必须整段删除**,包括括号。 | |
| 7. **务必保留必要的前提信息。** | |
| 8. **删除后的问题,一定还能构成一个完整的问题**。输出前请三思。 | |
| 例如对于"In Exercises 3-6, calculate the size of the set.\n4. {{x|x is a prime number less than 10}}", | |
| 这个必要的前缀不应该被删除,你要删除的内容应该是 " In Exercises 3-6, || 4."。 | |
| 如果你对这一点感到困惑、为难,请**务必保留更多内容,而不是删除**。 | |
| 9. 应**最小化**删除与题目无关的文本,不要过分删除。如果你有任何疑问,请优先选择保留,甚至直接输出 `NONE`。 | |
| 题目文本:{text} | |
| 请输出待删除的片段(用 `||` 分隔)或 `NONE`:""" | |
| self.answer_prompt_template = """你是一名数据清洗专家。请从以下答案文本中识别所有与答案实质无关的非内容性信息片段,这些片段应被完全移除。 | |
| 【非内容性信息定义】: | |
| - 答案引导词(如 "答:"、"答案:"、"Solution:"、"解:"); | |
| - 习题引用(如 "(见习题2.3)"、"同例4"、"参考教材P30"); | |
| - 模板残留(如 "[计算过程略]"、"{{result}}"); | |
| - 与答案结论无关的附加说明(如 "详见附录"); | |
| - 其他非答案核心内容的元信息。 | |
| 【重要规则】: | |
| 1. 不要重写、不要改写、不要总结原始文本; | |
| 2. 仅输出需要删除的子字符串,多个片段用 `||` 分隔; | |
| 3. 如果没有非内容性信息,输出 `NONE`; | |
| 4. 必须原样输出片段(包括冒号、空格、括号等)。 | |
| 答案文本:{text} | |
| 请输出待删除的片段(用 `||` 分隔)或 `NONE`:""" | |
| def build_question_prompt(self, text): | |
| """构建问题文本清洗的提示""" | |
| return self.question_prompt_template.format(text=text) | |
| def build_answer_prompt(self, text): | |
| """构建答案文本清洗的提示""" | |
| return self.answer_prompt_template.format(text=text) |