diff --git a/dsRag/Tools/T4_DocxProcessor.py b/dsRag/Tools/T4_DocxProcessor.py index 20344b79..f0854197 100644 --- a/dsRag/Tools/T4_DocxProcessor.py +++ b/dsRag/Tools/T4_DocxProcessor.py @@ -1,33 +1,31 @@ from openai import OpenAI from Config import Config -class DocxProcessor: - def __init__(self): - # 独立初始化DeepSeek客户端 - self.client = OpenAI( - api_key=Config.DEEPSEEK_API_KEY, - base_url=Config.DEEPSEEK_URL +# 初始化DeepSeek客户端 +client = OpenAI( + api_key=Config.DEEPSEEK_API_KEY, + base_url=Config.DEEPSEEK_URL +) + +def call_deepseek(prompt): + """调用DeepSeek API""" + try: + response = client.chat.completions.create( + model="deepseek-chat", + messages=[ + {"role": "system", "content": "你是一个专业的文档分析助手"}, + {"role": "user", "content": prompt} + ], + temperature=0.3 ) - - def call_deepseek(self, prompt): - """独立调用DeepSeek API""" - try: - response = self.client.chat.completions.create( - model="deepseek-chat", - messages=[ - {"role": "system", "content": "你是一个专业的文档分析助手"}, - {"role": "user", "content": prompt} - ], - temperature=0.3 - ) - return response.choices[0].message.content - except Exception as e: - print(f"调用DeepSeek API出错: {str(e)}") - return "" + return response.choices[0].message.content + except Exception as e: + print(f"调用DeepSeek API出错: {str(e)}") + return "" - def ask_llm(self, text_chunk): - """向大模型提问并获取响应""" - prompt = f"""请分析以下文本段落并返回有价值的内容: +def ask_llm(text_chunk): + """向大模型提问并获取响应""" + prompt = f"""请分析以下文本段落并返回有价值的内容: 要求: 1. 保持原文关键信息 2. 用清晰的格式返回 @@ -35,13 +33,8 @@ class DocxProcessor: 文本段落内容: {text_chunk}""" - return self.call_deepseek(prompt) + return call_deepseek(prompt) -# 初始化DeepSeek客户端 -client = OpenAI( - api_key=Config.DEEPSEEK_API_KEY, - base_url=Config.DEEPSEEK_URL -) def split_text(text, chunk_size=6000): """按段落分割文本,确保每个块接近6000字""" @@ -49,7 +42,7 @@ def split_text(text, chunk_size=6000): chunks = [] current_chunk = [] current_length = 0 - + for para in paragraphs: para_length = len(para) if current_length + para_length > chunk_size and current_chunk: @@ -58,34 +51,27 @@ def split_text(text, chunk_size=6000): current_length = 0 current_chunk.append(para) current_length += para_length - + if current_chunk: chunks.append('\n'.join(current_chunk)) return chunks -def ask_llm(text_chunk, is_final=False): - prompt = """请将以下文本按内容相关性划分为段落,要求: - 1. 意思一致或强相关的内容放在同一段落 - 2. 每个段落有明确的主题 - 3. 输出格式为:## 段落主题\n段落内容\n\n""" - return call_deepseek_api(prompt) def process_document(input_file, output_file): """处理文档主流程""" text = read_docx(input_file) chunks = split_text(text) - + for i, chunk in enumerate(chunks, 1): print(f"正在处理第{i}个段落...") try: - processor = DocxProcessor() - response = processor.ask_llm(chunk) - paragraphs = processor.process_llm_response(response) + response = ask_llm(chunk) + paragraphs = process_llm_response(response) for para in paragraphs: - processor.save_to_txt(para, output_file) + save_to_txt(para, output_file) except Exception as e: save_to_txt(f"段落{i}处理失败: {str(e)}", output_file) - + print(f"处理完成,结果已保存到 {output_file}") @@ -99,6 +85,7 @@ def read_docx(file_path): print(f"读取docx文件出错: {str(e)}") return "" + def save_to_txt(content, file_path, mode='a'): """将内容保存到txt文件""" try: @@ -107,6 +94,7 @@ def save_to_txt(content, file_path, mode='a'): except Exception as e: print(f"保存到txt文件出错: {str(e)}") + # 在process_document方法中调用时,请确保output_file参数是完整的文件路径 @@ -122,7 +110,7 @@ def call_deepseek_api(prompt, stream_callback=None): temperature=0.3, stream=True ) - + full_response = "" for chunk in response: if chunk.choices[0].delta.content: @@ -130,7 +118,7 @@ def call_deepseek_api(prompt, stream_callback=None): full_response += content if stream_callback: stream_callback(content) - + return full_response except Exception as e: print(f"调用DeepSeek API出错: {str(e)}") @@ -154,5 +142,5 @@ def process_llm_response(response): if __name__ == "__main__": input_file = '../Txt/小学数学(史校长).docx' - output_file ='../Txt/小学数学(史校长).txt' - process_document(input_file, output_file) \ No newline at end of file + output_file = '../Txt/小学数学(史校长).txt' + process_document(input_file, output_file) diff --git a/dsRag/Txt/小学数学(史校长).txt b/dsRag/Txt/小学数学(史校长).txt deleted file mode 100644 index 3c1c5500..00000000 --- a/dsRag/Txt/小学数学(史校长).txt +++ /dev/null @@ -1,206 +0,0 @@ -段落1响应: -### 小学数学教学中的若干问题 - 关键信息分析 - -#### **作者信息** -- **作者**: 史宁中 -- **机构**: 东北师范大学数学与统计学院 - ---- - -### **核心内容总结** -本书围绕小学数学教学的核心问题,探讨数学本质、教学方法和课程目标(“四基”:基础知识、基本技能、基本思想、基本活动经验),强调通过抽象、推理、模型培养学生的数学素养和创新思维。 - ---- - -### **目录结构及关键问题** - -#### **第一部分:数的认识** -1. **数量与数量关系** - - 数量:对事物量的抽象。 - - 本质关系:多与少。 -2. **自然数** - - 抽象方法:对应法或定义法。 - - 表示关键:十个符号和数位(十倍递进)。 -3. **负数** - - 定义:与自然数数量相等、意义相反的数。 -4. **分数** - - 本质是数(非运算),表示整体等分或比例关系。 -5. **小数** - - 十进制扩展,表示有理数/无理数。 -6. **数感** - - 抽象与现实背景的联系。 - -#### **第二部分:数的运算** -- 加法:对应或定义方法。 -- 减法:加法的逆运算。 -- 乘法:自然数中为加法简便运算,整数中则否。 -- 除法:乘法的逆运算(推广到有理数)。 -- **符号意识**:字母表示数,代数的基础。 -- **方程本质**:描述现实世界的等量关系。 - -#### **第三部分:图形与几何** -- 几何核心:构建空间度量方法(欧几里得几何)。 -- 图形抽象:点、线、面、体、角。 -- 度量:长度(一维)、面积(二维)、体积(三维)。 -- **几何直观**:经验层面的直接判断能力。 - -#### **第四部分:统计与概率** -- **数据分析观念**:通过样本推断总体。 -- **统计图**:条形(数量)、扇形(比例)、折线(变化)。 -- **随机性**:减少人为误差,估计概率。 -- **平均数**:无偏估计,误差抵消。 - ---- - -### **附录与教学设计** -- **附录1**:拓展话题(如古代数字符号、素数、无理数证明等)。 -- **附录2**:针对核心问题的教学片段设计(如自然数、负数、分数等)。 - ---- - -### **前言要点** -1. **课程目标演变**:从“双基”到“四基”,强调隐性素养(思想与经验)。 -2. **教学改革**: - - 反对机械记忆和重复练习,提倡感悟数学思想。 - - 教师需设计符合认知规律的教学过程。 -3. **本书目的**: - - 揭示小学数学内容的实质,提供适合“四基”目标的教学方法。 - ---- - -### **简要总结** -本书系统分析了小学数学的核心概念(数、运算、几何、统计)及其教学实质,倡导通过“四基”培养数学素养。内容兼顾理论(数学本质)与实践(教学设计),适合教师及教育研究者参考。 - -段落2响应: -### 文本分析结果 - -#### 1. **数量的概念与历史发展** -- **定义**:数量是对现实生活中事物量的抽象。 -- **历史背景**: - - 远古时代:人们用语言表达量的多少(如狩猎收获、祭祀牺牲)。 - - 商代甲骨文:早期数量表达的记录。 -- **现代汉语中的数量表达**: - - 数字 + 后缀名词(如“一粒米”“两条鱼”)。 - - 这些表达具有具体背景,数字不具备符号功能,无法直接运算。 - -#### 2. **数量与数学抽象** -- **局限性**:数量是具体事物的抽象,但不足以作为数学研究对象。 -- **本质**:数量关系的本质是“多与少”。 - - 动物也能分辨多与少,说明这是基本属性。 -- **比较方法**: - - 同类事物:通过递增多与传递性比较(如3个苹果 < 4个苹果)。 - - 不同事物:通过“对应法”比较(如集合配对法)。 - -#### 3. **自然数的抽象与表示** -- **定义**:自然数是对数量及数量关系的抽象(数的本质是“大与小”)。 -- **两种抽象方法**: - 1. **基于对应**: - - 图形 → 命名 → 符号化(如“□□”对应“2”)。 - - 适用于小学数学教学(直观、现实背景)。 - 2. **基于定义**: - - 通过“后继”概念定义(如2 = 1 + 1,3 = 2 + 1)。 - - 完全脱离现实背景,适合数学严谨性研究。 -- **表示自然数的关键**: - - **十进制**:基于十个符号(0-9)和数位(个、十、百等)。 - - **数位法则**:每高位是低位的十倍(如十个“千”是“万”)。 - - **跨文化差异**: - - 东亚系统:数位以四为基础(个、万、亿、兆)。 - - 欧洲系统:数位以三为基础(个、千、百万、十亿)。 - -#### 4. **自然数的性质与分类** -- **分类标准**: - - 奇数与偶数: - - 定义:不能被2整除的为奇数,能被2整除的为偶数。 - - 应用:运算规律(如奇数 + 偶数 = 奇数)。 - - 素数与合数: - - 素数:只能被1和自身整除(如2, 3, 5)。 - - 合数:可分解为素数乘积(如60 = 2×2×3×5)。 - - 高斯代数基本定理:多项式可分解为线性因式乘积。 - -#### 5. **负数的引入与意义** -- **现实背景**:表示相反意义的量(如盈余30元 vs. 亏损15元)。 -- **定义**:在自然数前加“-”表示负数(如-2)。 -- **性质**: - - 绝对值越大,正数越大,负数越小。 - - 0是正负数的分界点。 - ---- - -### 总结 -文本系统性地阐述了从数量到自然数、再到负数的数学抽象过程,包括: -1. 数量的历史起源与现代表达。 -2. 自然数的两种抽象方法(对应法 vs. 定义法)及其教学意义。 -3. 自然数的表示(十进制与数位)和跨文化差异。 -4. 自然数的分类(奇偶性、素数与合数)及其数学应用。 -5. 负数的现实意义与数学定义。 - -核心观点:数学抽象通过剥离具体背景,研究一般规律,再应用于实际问题。 - -段落3响应: -### 文本分析结果 - -#### 1. 负数的发展历史 -- **中国《九章算术》** - - 最早提到负数并给出正负数加减运算法则。 - - 在“方程”篇中讨论“正负术”,用不同颜色的算筹解释运算法则。 -- **印度数学家婆罗摩芨多(Brahmagupta)** - - 约公元628年给出负数的四则运算规则。 -- **关键关系** - - 负数与减法运算密切相关,减法运算又依赖于加法运算。 - -#### 2. 分数的认识 -- **定义与背景** - - 分数是数而非运算,形如a/b(a为分子,b为分母,通常为正整数)。 - - 古希腊学者最初认为所有数可表示为分数,后因√2的发现引入“有理数”与“无理数”概念。 -- **真分数的本质** - - 表达两种关系: - 1. **整体与等分**:如1/5表示五等分之一,2/5 = 1/5 + 1/5。 - 2. **整比例关系**:如4只鹅对应鸭子数量的1/3,即比例4:x=1:3。 - - **运算规则**:同分母分数相加直接合并单位;异分母需通分(如1/5 + 1/10 = 3/10)。 -- **无量纲性** - - 分数与具体数量无关(如1/5的月饼或蛋糕;百分数用于比较增长率等)。 - -#### 3. 小数的认识 -- **历史背景** - - 18世纪才建立稳定的十进位小数表示,晚于微积分。 - - 用途:现实数量表达(如6.75元)及数学需求(如无理数运算)。 -- **十进制与幂表示** - - 整数和小数均可表示为10的幂次组合(如238=2×10²+3×10¹+8×10⁰;6.75=6×10⁰+7×10⁻¹+5×10⁻²)。 - - 小数乘法解释:0.1×0.1=10⁻¹×10⁻¹=0.01。 -- **实数分类** - - 有理数:有限小数或无限循环小数;无理数:无限不循环小数。 - -#### 4. 数感(核心概念) -- **定义** - - 对数量、关系及运算结果的直觉感悟(如100粒黄豆 vs. 100匹马;100元买菜 vs. 买房)。 -- **培养目标** - - 抽象与现实的联系(如估算数量、步长、场地大小)。 - - 量纲选择(如促销让利单位依产品价格调整)。 - -#### 5. 数的运算 -- **四则运算关系** - - 加法为基础,减法为其逆运算;乘法扩展加法,除法为其逆运算。 - - 数集扩张保证运算封闭性(如整数集满足减法,有理数集满足除法)。 -- **模型与应用** - - 小学数学基于加法与乘法模型派生问题。 - - 符号化推动算术到代数(如方程表示数量关系的等式)。 - -#### 6. 自然数加法教学 -- **两种解释方法** - 1. **定义法**:利用等式对称性(如3+1=4因4=3+1)。 - 2. **对应法**:通过实物比较(如方块图)强调“量相等”本质。 -- **教学建议** - - 低学段优先采用对应法,结合现实背景培养数学思想。 - -#### 7. 减法与逆运算 -- **源于加法**:四则运算均以加法为源头。 -- **教学示例**:用对应法(如方块图)直观解释减法关系。 - ---- - -### 简要总结 -文本系统梳理了负数、分数、小数的历史发展与数学本质,强调数感培养及运算的抽象-现实联系。教学上建议通过对应法(如实物比较)直观解释加减法,避免过早依赖抽象定义。核心观点包括: -- 数学概念需结合现实背景理解(如分数无量纲性、数感)。 -- 运算的逆关系与数集扩张逻辑(如减法→整数,除法→有理数)。 -- 十进制幂表示是小数运算的基础,分数单位等分是关键过渡。 -