main
黄海 5 months ago
parent 1da0e54c57
commit 6b9daa2a91

@ -55,18 +55,19 @@ class EnglishEssayAnalyzer:
current_category = None current_category = None
buffer = "" buffer = ""
for chunk in self.analyze_stream(essay): # 现在可以正确调用 category_pattern = re.compile(r'(\d+\.\s.*?)()') # 改进正则表达式
for chunk in self.analyze_stream(essay):
print(chunk, end='', flush=True) print(chunk, end='', flush=True)
buffer += chunk buffer += chunk
# 分类检测逻辑 # 改进的分类检测逻辑
if re.match(r'^\d+\.\s', buffer): match = category_pattern.search(buffer)
if '' in buffer: if match:
parts = buffer.split('', 1) current_category = match.group(1).strip()
current_category = parts[0].strip() buffer = buffer[match.end():] # 移除已匹配的部分
buffer = parts[1]
# 初始化当前分类 # 根据分类初始化条目
if '语法' in current_category: if '语法' in current_category:
analysis['grammar_errors'].append('') analysis['grammar_errors'].append('')
elif '用词' in current_category: elif '用词' in current_category:
@ -76,20 +77,29 @@ class EnglishEssayAnalyzer:
elif '改进' in current_category: elif '改进' in current_category:
analysis['suggestions'].append('') analysis['suggestions'].append('')
# 内容填充 # 内容填充逻辑(改进版)
if current_category: if current_category:
target_list = None
if '语法' in current_category: if '语法' in current_category:
analysis['grammar_errors'][-1] += chunk target_list = analysis['grammar_errors']
elif '用词' in current_category: elif '用词' in current_category:
analysis['vocabulary_issues'][-1] += chunk target_list = analysis['vocabulary_issues']
elif '逻辑' in current_category: elif '逻辑' in current_category:
analysis['structure_problems'][-1] += chunk target_list = analysis['structure_problems']
elif '改进' in current_category: elif '改进' in current_category:
analysis['suggestions'][-1] += chunk target_list = analysis['suggestions']
if target_list and target_list:
target_list[-1] += chunk
# 后处理 # 后处理(增强版)
for key in analysis: for key in analysis:
analysis[key] = [text.strip() for text in analysis[key] if text.strip()] # 分割条目并清理空白
cleaned = []
for text in analysis[key]:
items = [t.strip() for t in re.split(r'\n(?=\d+\.)', text) if t.strip()]
cleaned.extend(items)
analysis[key] = cleaned
return analysis return analysis

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Loading…
Cancel
Save