写作目的:为积极响应戴鸿君老师对项目实训内容的建设性意见,特写本系列个人纪实,记录团队在项目实训的工作中个人的贡献。
写在前面的话:本阶段我因为特殊原因更换使用的电脑,因此对于一些基本的环境配置有了心得,特此记录
本阶段我的基本工作:
1.收集模型调整训练数据
2.学习基本的数据处理手段,对源数据进行清洗、调整、再存储。完成模型微调的第一步数据集的整理
数据集来源成果:需要提取文章中的案例内容与判决情况,用于模型测试数据集的建立
3.学习vue前端设计思路,制作精美、互动性强的可视化界面
一、数据集梳理
法律文书系统数据集最常见的来源是国家法律法规数据库,这里涵盖各种类型的法条,包括但不限于刑法、民法、治安管理处罚法等数百种法律文件。但是国家法律法规数据库的一大缺陷是,文本需要重新爬取,不适合懒人使用,有两个平台很适合用于模型调试数据集。
1.北大法宝V6官网
获取成果:
二、数据处理
对于判决书,我们需要的只是法律案例分析和裁判结果,因此需要提取判决书中的相应文本,文本提取的基本步骤是使用正则表达式对文本进行匹配,就可以实现文本提取了。
对于问答轮,因为已经是JSON格式的文件,因此不需要额外进行处理,使用JSON即可
判决书文本提取:
import re
# 正则表达式模式,用于匹配裁判要旨和判决依据法条
judgement_purpose_pattern = re.compile(
r"\【裁判要旨\】(.*?)(?:\【|$)",
re.DOTALL
)
law_article_pattern = re.compile(
r'“(《*?》.*?第十一条第一款.*?规定的.*?)”',
re.DOTALL
)
# 读取文件内容
file_path = './data.txt'
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
# 搜索裁判要旨
judgement_purpose_match = judgement_purpose_pattern.search(content)
if judgement_purpose_match:
judgement_purpose = judgement_purpose_match.group(1).strip()
print("裁判要旨:")
print(judgement_purpose)
else:
print("未找到裁判要旨。")
# 搜索判决依据法条
law_article_match = law_article_pattern.search(content)
if law_article_match:
law_article = law_article_match.group(1).strip()
print("\n判决依据法条:")
print(law_article)
else:
print("未找到判决依据法条。")
虽然每一个裁决书的格式类似,但是内容中涉及到该法律的裁决信息是难以设计,这包含着大量的文本内容变化,并不能简单用一个模板实现文本的处理。因此简单的尝试之后,我选择了学会正则表达式匹配法条的基本思路即可。
文本转化的思路:实践中,我们常常会遇到文本格式不对的问题, 但是一般来说,并没有简单而朴素的方式对文件进行格式转化,如.txt转化为.excel文件。因此这部分对文件转化给出简单的使用思路。
pdf表格转化为excel表格:
import PyPDF2
import pytesseract
import pandas as pd
import os
# 设置OCR引擎(如果需要)
# pytesseract.pytesseract.tesseract_cmd = r'/usr/bin/tesseract' # 指定Tesseract OCR引擎的路径
# 将PDF文件转换为文本
def pdf_to_text(pdf_path):
text = ""
with open(pdf_path, 'rb') as file:
reader = PyPDF2.PdfReader(file)
num_pages = len(reader.pages)
for page in range(num_pages):
pdf_page = reader.pages[page]
text += pdf_page.extract_text()
return text
# 使用OCR识别文本
def ocr_text(image_path):
text = pytesseract.image_to_string(image_path)
return text
# 将文本保存为Excel文件
def save_text_as_excel(text, output_path):
lines = text.split('\n')
data = [line.split() for line in lines if line.strip()]
df = pd.DataFrame(data)
df.to_excel(output_path, index=False)
# 主函数
def pdf_to_excel(pdf_folder, output_folder):
pdf_files = [f for f in os.listdir(pdf_folder) if f.endswith('.pdf')]
for pdf_file in pdf_files:
pdf_path = os.path.join(pdf_folder, pdf_file)
text = pdf_to_text(pdf_path)
# 使用OCR识别文本(如果需要)
# image_path = 'image.png' # 将PDF转换为图像文件(可选)
# text = ocr_text(image_path)
excel_file = pdf_file.replace('.pdf', '.xlsx')
output_path = os.path.join(output_folder, excel_file)
save_text_as_excel(text, output_path)
print("转换完成!")
# 调用函数进行转换
pdf_folder = 'D:\Project\python\KeShiHua\Exp2\data'
output_folder = 'D:\Project\python\KeShiHua\Exp2\output'
pdf_to_excel(pdf_folder, output_folder)
三、前端设计的基本思路
-
用户界面(UI)设计:
- 清晰且一致的视觉层次结构。
- 使用合适的颜色、字体和图像以增强可读性和美观性。
- 适应不同屏幕尺寸和分辨率的设计。
-
用户体验(UX)设计:
- 直观的导航和逻辑流程。
- 快速响应用户操作。
- 为用户提供明确的视觉反馈。
-
可访问性(Accessibility):
- 遵循无障碍设计原则,使所有用户都能使用你的应用。
- 提供键盘可访问性、屏幕阅读器兼容性。
- 使用适当的ARIA(Accessible Rich Internet Applications)标签。
-
交互设计(Interaction Design):
- 按钮和链接应具有清晰的点击/触摸反馈。
- 动画和过渡效果应平滑且不干扰用户操作。
- 避免过度的动画或闪烁效果,以防引起用户不适。
-
表单处理:
- 表单输入应具有验证逻辑,确保数据准确性。
- 提供即时的输入反馈。
- 使用占位符和标签清晰地指示所需信息。
-
错误处理:
- 明确且友好的错误消息。
- 指导用户如何纠正错误。
- 避免技术性或模糊的错误描述。