After Width: | Height: | Size: 71 KiB |
@ -0,0 +1 @@
|
||||
https://dozerdb.org/
|
After Width: | Height: | Size: 3.0 MiB |
After Width: | Height: | Size: 2.7 MiB |
After Width: | Height: | Size: 2.8 MiB |
After Width: | Height: | Size: 3.2 MiB |
After Width: | Height: | Size: 2.8 MiB |
@ -0,0 +1,113 @@
|
||||
以下是本节课的结构梳理,按时间顺序分为六个主要部分:
|
||||
|
||||
---
|
||||
### **1. 课程引入与单元概述**
|
||||
**开始时间**: 8940毫秒
|
||||
内容概要:
|
||||
- 介绍第三单元四篇核心文章:《从百草园到三味书屋》《往事依依》《再塑生命的人》《论语十二章》
|
||||
- 明确单元学习目标:通过复习积累成语、掌握默读技巧、挖掘学习之道
|
||||
|
||||
---
|
||||
|
||||
### **2. 任务一:温故知新,总结学习之道**
|
||||
**开始时间**: 106720毫秒
|
||||
内容概要:
|
||||
- 分析四篇文章中的学习之道(好奇心、观察力、实践精神、珍惜时间等)
|
||||
- 通过表格梳理各篇核心学习理念
|
||||
- 示例:《从百草园到三味书屋》强调观察与发问,《论语十二章》强调复习与学思结合
|
||||
|
||||
---
|
||||
|
||||
### **3. 任务二:积累成语,体会要义**
|
||||
**开始时间**: 421840毫秒
|
||||
内容概要:
|
||||
- **活动一**:整理课文及《论语》中的成语(如温故知新、不耻下问)
|
||||
- **活动二**:成语应用练习(填空、写作片段)
|
||||
- 注意事项:避免望文生义、注意感情色彩与适用范围
|
||||
|
||||
---
|
||||
|
||||
### **4. 任务三:阅读课文,对比朗读与默读**
|
||||
**开始时间**: 936420毫秒
|
||||
内容概要:
|
||||
- **活动一**:回顾默读技巧(关注关键句、圈画重点、三到原则)
|
||||
- **活动二**:对比朗读与默读的差异(速度、适用场景、作用)
|
||||
- 实践训练:通过《读书声最美》一文练习两种阅读方法
|
||||
|
||||
---
|
||||
|
||||
### **5. 课堂小结**
|
||||
**开始时间**: 1620340毫秒
|
||||
内容概要:
|
||||
- 总结单元三大任务成果
|
||||
- 强调学习之道对日常学习的指导意义
|
||||
- 巩固成语积累与默读技巧的重要性
|
||||
|
||||
---
|
||||
|
||||
### **6. 作业布置**
|
||||
**开始时间**: 1658580毫秒
|
||||
内容要求:
|
||||
- 限时阅读《悬崖边的树》并总结学习之道
|
||||
- 结合课文内容完成复习与写作任务
|
||||
|
||||
---
|
||||
|
||||
### 总结
|
||||
本节课以任务驱动,从知识回顾到方法实践,逐步引导学生深化对学习之道的理解,并通过成语积累与阅读技巧训练提升语文综合能力。以下是本节课的结构梳理,按时间顺序分为六个主要部分:
|
||||
|
||||
---
|
||||
### **1. 课程引入与单元概述**
|
||||
**开始时间**: 8940毫秒
|
||||
内容概要:
|
||||
- 介绍第三单元四篇核心文章:《从百草园到三味书屋》《往事依依》《再塑生命的人》《论语十二章》
|
||||
- 明确单元学习目标:通过复习积累成语、掌握默读技巧、挖掘学习之道
|
||||
|
||||
---
|
||||
|
||||
### **2. 任务一:温故知新,总结学习之道**
|
||||
**开始时间**: 106720毫秒
|
||||
内容概要:
|
||||
- 分析四篇文章中的学习之道(好奇心、观察力、实践精神、珍惜时间等)
|
||||
- 通过表格梳理各篇核心学习理念
|
||||
- 示例:《从百草园到三味书屋》强调观察与发问,《论语十二章》强调复习与学思结合
|
||||
|
||||
---
|
||||
|
||||
### **3. 任务二:积累成语,体会要义**
|
||||
**开始时间**: 421840毫秒
|
||||
内容概要:
|
||||
- **活动一**:整理课文及《论语》中的成语(如温故知新、不耻下问)
|
||||
- **活动二**:成语应用练习(填空、写作片段)
|
||||
- 注意事项:避免望文生义、注意感情色彩与适用范围
|
||||
|
||||
---
|
||||
|
||||
### **4. 任务三:阅读课文,对比朗读与默读**
|
||||
**开始时间**: 936420毫秒
|
||||
内容概要:
|
||||
- **活动一**:回顾默读技巧(关注关键句、圈画重点、三到原则)
|
||||
- **活动二**:对比朗读与默读的差异(速度、适用场景、作用)
|
||||
- 实践训练:通过《读书声最美》一文练习两种阅读方法
|
||||
|
||||
---
|
||||
|
||||
### **5. 课堂小结**
|
||||
**开始时间**: 1620340毫秒
|
||||
内容概要:
|
||||
- 总结单元三大任务成果
|
||||
- 强调学习之道对日常学习的指导意义
|
||||
- 巩固成语积累与默读技巧的重要性
|
||||
|
||||
---
|
||||
|
||||
### **6. 作业布置**
|
||||
**开始时间**: 1658580毫秒
|
||||
内容要求:
|
||||
- 限时阅读《悬崖边的树》并总结学习之道
|
||||
- 结合课文内容完成复习与写作任务
|
||||
|
||||
---
|
||||
|
||||
### 总结
|
||||
本节课以任务驱动,从知识回顾到方法实践,逐步引导学生深化对学习之道的理解,并通过成语积累与阅读技巧训练提升语文综合能力。
|
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 858 KiB |
After Width: | Height: | Size: 148 KiB |
@ -0,0 +1,33 @@
|
||||
from openai import OpenAI
|
||||
from Util.LightRagUtil import format_exam_content
|
||||
from Config.Config import *
|
||||
|
||||
# 一、调用OCR整理出试题
|
||||
client = OpenAI(
|
||||
api_key=LLM_API_KEY,
|
||||
base_url=LLM_BASE_URL,
|
||||
)
|
||||
|
||||
prompt = "请提取图片中的试题"
|
||||
completion = client.chat.completions.create(
|
||||
model="qwen-vl-ocr-latest",
|
||||
messages=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{
|
||||
"type": "image_url",
|
||||
"image_url": "https://ylt.oss-cn-hangzhou.aliyuncs.com/HuangHai/Test/Source.jpg",
|
||||
"min_pixels": 28 * 28 * 4,
|
||||
"max_pixels": 28 * 28 * 8192
|
||||
},
|
||||
{"type": "text", "text": prompt},
|
||||
]
|
||||
}
|
||||
])
|
||||
|
||||
ocr_text = completion.choices[0].message.content
|
||||
|
||||
# 二、调用格式化函数处理内容
|
||||
format_exam_content(raw_text=ocr_text, output_path="../output/数学OCR整理后的结果.md")
|
||||
print("保存成功!")
|
@ -0,0 +1,14 @@
|
||||
import asyncio
|
||||
|
||||
from Util.DocxUtil import get_docx_content_by_pandoc
|
||||
|
||||
|
||||
async def main():
|
||||
# 要处理的文件路径
|
||||
file_path = "Docx/《动能定理》巩固练习.docx"
|
||||
# 转换docx为md
|
||||
get_docx_content_by_pandoc(file_path, './Word转试题.md', parent_dir=True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
@ -0,0 +1,29 @@
|
||||
"""
|
||||
pip install aiomysql
|
||||
"""
|
||||
import logging
|
||||
|
||||
from aiomysql import create_pool
|
||||
|
||||
from Config.Config import *
|
||||
|
||||
# 配置日志
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# MySQL 配置
|
||||
MYSQL_CONFIG = {
|
||||
"host": MYSQL_HOST,
|
||||
"port": MYSQL_PORT,
|
||||
"user": MYSQL_USER,
|
||||
"password": MYSQL_PASSWORD,
|
||||
"db": MYSQL_DB_NAME,
|
||||
"minsize": 1,
|
||||
"maxsize": 20,
|
||||
"charset": "utf8mb4"
|
||||
}
|
||||
|
||||
|
||||
# 初始化 MySQL 连接池
|
||||
async def init_mysql_pool():
|
||||
return await create_pool(**MYSQL_CONFIG)
|
@ -0,0 +1,109 @@
|
||||
import re
|
||||
from typing import List, Tuple
|
||||
|
||||
from py2neo import Graph, Node, Relationship, Subgraph
|
||||
from Config import Config
|
||||
|
||||
def clear(db):
|
||||
# 清空数据
|
||||
db.run("MATCH (n) DETACH DELETE n")
|
||||
|
||||
# 分步删除约束和索引
|
||||
try:
|
||||
# 删除约束
|
||||
constraints = db.run("SHOW CONSTRAINTS YIELD name").data()
|
||||
for constr in constraints:
|
||||
db.run(f"DROP CONSTRAINT `{constr['name']}`")
|
||||
|
||||
# 删除索引
|
||||
indexes = db.run("SHOW INDEXES YIELD name, type WHERE type <> 'LOOKUP'").data()
|
||||
for idx in indexes:
|
||||
db.run(f"DROP INDEX `{idx['name']}`")
|
||||
except Exception as e:
|
||||
print(f"删除操作失败: {e}")
|
||||
|
||||
def create_subgraph(db: Graph, nodes: List[Node], relations: List[Tuple[Node, str, Node]]) -> None:
|
||||
"""统一创建子图"""
|
||||
subgraph = Subgraph(
|
||||
nodes=nodes,
|
||||
relationships=[Relationship(start, rel_type, end) for start, rel_type, end in relations]
|
||||
)
|
||||
db.create(subgraph)
|
||||
|
||||
def tx_create(db: Graph, nodes: List[Node], relations: List[Tuple[Node, str, Node]]) -> None:
|
||||
"""事务方式创建数据"""
|
||||
try:
|
||||
tx = db.begin()
|
||||
subgraph = Subgraph(
|
||||
nodes=nodes,
|
||||
relationships=[Relationship(start, rel_type, end) for start, rel_type, end in relations]
|
||||
)
|
||||
tx.create(subgraph)
|
||||
db.commit(tx)
|
||||
except Exception as e:
|
||||
db.rollback(tx)
|
||||
print(f"事务操作失败: {str(e)}")
|
||||
raise
|
||||
|
||||
class Neo4jExecutor:
|
||||
# 添加类变量存储连接配置
|
||||
NEO4J_URI = Config.NEO4J_URI
|
||||
NEO4J_AUTH = Config.NEO4J_AUTH
|
||||
|
||||
def __init__(self, uri=None, auth=None):
|
||||
# 使用默认配置或传入参数
|
||||
self.graph = Graph(uri or self.NEO4J_URI,
|
||||
auth=auth or self.NEO4J_AUTH)
|
||||
|
||||
@classmethod
|
||||
def create_default(cls):
|
||||
"""使用默认配置创建执行器"""
|
||||
return cls(cls.NEO4J_URI, cls.NEO4J_AUTH)
|
||||
|
||||
# 新增文本执行方法
|
||||
def execute_cypher_text(self, cypher_text: str) -> dict:
|
||||
"""直接执行Cypher文本"""
|
||||
stats = {'total': 0, 'success': 0, 'failed': 0}
|
||||
try:
|
||||
statements = re.split(r';\s*\n', cypher_text)
|
||||
statements = [s.strip() for s in statements if s.strip()]
|
||||
|
||||
stats['total'] = len(statements)
|
||||
|
||||
for stmt in statements:
|
||||
try:
|
||||
self.graph.run(stmt)
|
||||
stats['success'] += 1
|
||||
except Exception as e:
|
||||
stats['failed'] += 1
|
||||
print(f"执行失败: {stmt[:50]}... \n错误: {str(e)[:100]}")
|
||||
|
||||
return stats
|
||||
except Exception as e:
|
||||
print(f"执行失败: {stmt[:100]}... \n完整错误: {str(e)}") # 原为str(e)[:100]
|
||||
return stats
|
||||
|
||||
def execute_cypher_file(self, file_path: str) -> dict: # 确保方法名称正确
|
||||
"""执行Cypher文件"""
|
||||
stats = {'total': 0, 'success': 0, 'failed': 0}
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
cypher_script = f.read()
|
||||
statements = re.split(r';\s*\n', cypher_script)
|
||||
statements = [s.strip() for s in statements if s.strip()]
|
||||
|
||||
stats['total'] = len(statements)
|
||||
|
||||
for stmt in statements:
|
||||
try:
|
||||
self.graph.run(stmt)
|
||||
stats['success'] += 1
|
||||
except Exception as e:
|
||||
stats['failed'] += 1
|
||||
print(f"执行失败: {stmt[:50]}... \n错误: {str(e)[:100]}")
|
||||
|
||||
return stats
|
||||
|
||||
except Exception as e:
|
||||
print(f"文件错误: {str(e)}")
|
||||
return stats
|
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 207 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 195 KiB |