login
裁判文书数据清洗方案
2025/06/06·StepFun can make mistakes, check important info.
不对,是用户A和律师A的两人对话录音,从录音中提取关键信息。在通过dify进行筛选案件相似度最高的案件,在分析胜诉的概率,最后展示结果和案例说明
Reason
思考过程

我们调整一下场景:用户A(当事人)和律师A的对话录音 → 提取关键信息 → 检索相似裁判文书 → 计算胜诉概率 → 展示结果和案例。

实现步骤需要调整如下:

  1. 语音转文字:首先需要将录音转换为文字。
  2. 关键信息提取:从对话文本中提取案件的关键要素(如案由、争议焦点、证据情况等)。
  3. 相似案例检索:根据提取的关键要素,在裁判文书库中查找相似案例。
  4. 胜诉概率分析:基于相似案例的判决结果,计算胜诉概率。
  5. 结果展示:展示胜诉概率和相似案例的说明。

下面我们详细说明每一步的实现方法:


1. 语音转文字

  • 工具选择:可以使用阿里云、讯飞或OpenAI的Whisper等语音识别API。
  • 在Dify中的实现
    • 在Dify中创建一个“语音转文字”的HTTP请求节点,调用语音识别API。
    • 输入:用户上传的录音文件(MP3/WAV等格式)。
    • 输出:对话文本(JSON格式的文本结果)。

2. 关键信息提取

  • 使用LLM(如DeepSeek R1)提取结构化信息
    • 设计Prompt,让LLM从对话文本中提取关键信息:
      markdown
      请从以下律师与当事人的对话中提取案件信息:
      <对话内容>
      
      提取要求:
      1. 案件类型(如:劳动纠纷、离婚、合同违约等)
      2. 核心争议点(不超过3个)
      3. 关键证据(如:合同、转账记录、证人证言等)
      4. 当事人诉求
      5. 对方当事人情况(如有)
      
      按JSON格式输出:
      {
        "case_type": "...",
        "dispute_points": ["...", "..."],
        "evidences": ["...", "..."],
        "demand": "...",
        "opponent_info": "..."
      }
  • 在Dify中的实现
    • 添加一个“文本生成”节点,使用上述Prompt处理上一步的对话文本。
    • 输出:结构化的案件信息(JSON)。

3. 相似案例检索

  • 前提:已有一个裁判文书向量数据库(如Milvus、Elasticsearch),其中每个文书都有对应的向量(通过Embedding模型生成)。
  • 步骤
    a. 生成查询向量:将上一步提取的关键信息(如将JSON中的核心争议点、案件类型等拼接成文本)通过Embedding模型转换为向量。
    b. 向量检索:在向量数据库中查找与查询向量最相似的裁判文书(通常使用余弦相似度)。
  • 在Dify中的实现
    • 添加“HTTP请求”节点,调用自建的检索API(该API连接向量数据库)。
    • 输入:关键信息的文本(或直接传入Embedding向量)。
    • 输出:相似裁判文书的ID列表(及相似度分数)。

4. 胜诉概率分析

  • 计算逻辑
    • 从检索到的相似案例中,统计原告(或与当事人相同立场方)的胜诉率。
    • 公式:胜诉概率 = (胜诉案例数 / 总案例数) * 100%
    • 注意:可根据相似度分数对案例进行加权(例如,相似度高的案例权重更高)。
  • 在Dify中的实现
    • 添加“代码执行”节点(Python)或“HTTP请求”节点(调用后端计算服务)进行胜诉概率计算。
    • 输入:检索到的相似案例的判决结果(需预先在数据库中存储每个案例的胜负标签)。
    • 输出:胜诉概率(百分比)。

5. 结果展示

  • 生成报告
    • 使用LLM生成自然语言的报告,包括胜诉概率和相似案例说明。
    • 示例Prompt:
      markdown
      根据以下分析结果生成报告:
      - 胜诉概率:{{probability}}%
      - 最相似案例(案号:{{case_id}}):
         案由:{{case_type}}
         判决结果:{{result}}
         相似点:{{similarity_reason}}
      
      报告要求:
      1. 用通俗语言解释胜诉概率
      2. 简要说明参考案例的判决理由
      3. 给出法律建议(如证据补充建议)
  • 在Dify中的实现
    • 添加“文本生成”节点,使用上述Prompt,将前面步骤的结果作为变量输入(如probabilitycase_id等)。
    • 输出:最终报告(Markdown格式)。

Dify工作流总览

mermaid

技术栈推荐

功能推荐工具/API
语音识别OpenAI Whisper, 阿里云智能语音交互
Embedding模型text-embedding-ada-002, BGE-M3
向量数据库Milvus, Pinecone, Elasticsearch(带向量插件)
裁判文书数据库自建(需预先处理:清洗、向量化、存储判决结果标签)
后端服务(可选)FastAPI(用于封装检索和计算逻辑,供Dify的HTTP节点调用)

注意事项

  1. 录音处理
    • 确保录音清晰,多人对话需区分说话人(可用ASR的说话人分离功能)。
  2. 数据安全
    • 用户对话录音涉及隐私,转文字后立即删除原始录音,文本数据加密存储。
  3. 结果可靠性
    • 需在界面上注明:“本分析基于历史公开案例,仅供参考,实际诉讼结果受多种因素影响”。
  4. 性能优化
    • 相似案例检索可能较慢,建议设置超时限制,并采用异步处理(Dify支持异步工作流)。

通过以上步骤,您可以在Dify中构建端到端的解决方案。如果已有裁判文书数据库,开发重点将放在Dify工作流编排和Prompt优化上;若尚未建立数据库,需先完成数据爬取、清洗和向量化(此部分工作可能在Dify外部进行)。

您的需求更清晰了:基于律师与当事人的对话录音提取关键信息 → 在裁判文书库中匹配相似案例 → 计算胜诉概率 → 输出结果和案例说明。以下是完整的实现方案:


系统架构(升级版)

mermaid

具体实现步骤

1. 语音转文本处理

  • 工具选择
    • 国内推荐:阿里云智能语音交互 / 科大讯飞语音转写
    • 开源方案:Whisper(支持说话人分离)
  • Dify集成
    python

2. 关键信息提取(核心环节)

  • 使用LLM提取结构化数据
    prompt

3. 裁判文书库构建

  • 数据库结构示例

    字段类型说明
    case_idPK案号
    case_vectorvector(768)文本向量
    judgment_resultint1=原告胜/0=被告胜
    key_factorsjson争议点/证据等
  • 向量化处理

    python

4. 相似度匹配算法

python

5. 胜诉概率计算模型

python

6. Dify工作流完整配置

mermaid

7. 输出结果示例

markdown
## 案件胜诉分析报告

**基本案情**
案件类型:劳动合同纠纷
核心争议:未签合同双倍工资+加班费主张
关键证据:工资流水、考勤记录、工作沟通记录

**胜诉概率评估**
🟢 综合胜诉概率:78.3%
📊 评估依据:匹配到32个相似案例,其中25例支持劳动者诉求

**参考案例示范**
🔹 **(2023)京0105民初12345号**
- 相似度:92%
- 争议焦点:未签劳动合同+加班费计算
- 判决结果:支持双倍工资差额86,500元
- 关键胜诉点:完整的微信工作记录证明劳动关系

🔹 **风险提示**
❗ 证据薄弱环节:缺少直接证明加班时长的证据
💡 建议补充:同事证人证言/加班审批记录

部署所需资源

组件推荐方案成本估算
语音转写阿里云智能语音交互(按小时计费)¥0.3/分钟
向量数据库Milvus社区版(Docker部署)免费
Embedding模型BGE-M3(开源)免费
裁判文书库爬取公开文书(需合规处理)初期1000元/万篇
服务器4核8G GPU服务器(阿里云)¥800/月

关键注意事项

  1. 录音合规性:需获得当事人授权同意录音
  2. 数据脱敏:文书库中需删除身份证号、联系方式等敏感信息
  3. 结果免责声明

    "本分析基于历史案例匹配,仅供参考。实际诉讼结果受法官裁量、新证据出现等影响,不作为法律意见"

  4. 性能优化
    • 建立案件类型索引库(劳动/婚姻/商事等)
    • 实现缓存机制(相同特征案件直接返回结果)
    • 设置超时限制(整个流程≤20秒)

按照此方案,可在7天内完成MVP版本部署。建议先以劳动纠纷为试点,待准确率>85%后再扩展其他案由。

可以分为多个阶段来实现。案例可以先不做语音转文本,直接提供一个案情用来做测试。优先使用dify来实现
Reason
思考过程

我们优先实现核心功能:通过案情描述文本在裁判文书库中匹配相似案例,计算胜诉概率,并展示结果和案例说明。
由于暂时不需要语音转文本,我们可以直接输入案情描述文本进行测试。

在Dify中实现这个功能,我们可以分为以下几个步骤:

  1. 准备数据:将裁判文书数据导入到Dify的知识库中,并确保开启了向量化(Embedding)功能。
  2. 构建工作流:创建一个Dify工作流,包括以下节点:
    • 用户输入:案情描述
    • 文本处理:将案情描述转换成向量(Dify自动处理)
    • 知识库检索:在裁判文书库中检索相似案例
    • 计算胜诉概率:根据检索到的案例结果计算胜诉概率
    • 生成报告:整合检索结果和胜诉概率,生成分析报告
  3. 配置提示词:用于提取信息、生成报告等步骤。

具体实现:

步骤1:准备裁判文书知识库

  • 在Dify中创建一个知识库,例如“裁判文书库”。
  • 上传裁判文书数据(可以是文本文件、PDF等),每份文书作为一个文档。
  • 在文档中,需要确保包含以下关键信息(可以通过预处理提取):
    • 案号
    • 案由
    • 判决结果(明确谁胜诉)
    • 案情摘要
    • 其他关键信息(如争议焦点、证据等)
  • 注意:由于我们后续需要计算胜诉概率,所以文书库中的每个案例都需要明确标注“胜诉方”(例如,原告胜诉或被告胜诉)。

步骤2:创建Dify工作流

工作流设计如下:

text

具体节点配置:

  1. 用户输入节点

    • 接收用户输入的案情描述文本。
  2. 知识库检索节点

    • 选择“裁判文书库”作为检索知识库。
    • 输入查询内容:用户输入的案情描述。
    • 设置检索参数:Top K(例如5),表示返回最相似的5个案例。
    • 输出:返回相似案例的列表,包括每个案例的内容和相似度得分。
  3. 计算胜诉概率节点(使用代码工具或LLM):

    • 输入:检索到的相似案例列表(每个案例包含内容,其中应包含判决结果)。
    • 处理逻辑:
      • 统计这些相似案例中原告胜诉的比例(假设当前案件也是以原告为视角)。
      • 计算胜诉概率:胜诉概率 = (原告胜诉案例数 / 总案例数) * 100%
      • 注意:这里简单以比例计算,实际中可能需要加权(如相似度得分作为权重)或更复杂的模型。
    • 输出:胜诉概率数值和相似案例列表(用于下一步展示)。
  4. 生成报告节点(使用提示词模板):

    • 输入:胜诉概率、相似案例列表(包括每个案例的案号、案由、判决结果、案情摘要等)。
    • 提示词设计:
      markdown
      你是一名法律助手,根据用户提供的案情描述和检索到的相似案例,生成一份胜诉分析报告。
      
      用户案情描述:
      {{用户输入}}
      
      胜诉概率:{{胜诉概率}}%
      
      参考案例:
      {% for case in cases %}
      - 案号:{{case.case_id}}
        案由:{{case.case_type}}
        相似度:{{case.similarity_score}}
        判决结果:{{case.judgment_result}}
        案情摘要:{{case.summary}}
      {% endfor %}
      
      请总结分析,并重点解释胜诉概率的构成,以及最相似的案例的情况。
    • 输出:生成的分析报告。

步骤3:测试与优化

测试时,直接输入一段案情描述,观察工作流输出。

示例输入:

text

预期输出:

  1. 检索到类似劳动纠纷案例(如未签劳动合同的案例)。
  2. 计算胜诉概率(例如80%)。
  3. 生成报告,包括胜诉概率和参考案例说明。

注意事项:

  1. 裁判文书库的质量:案例库需要足够大且覆盖相关案由,否则检索效果不佳。
  2. 判决结果的提取:在知识库文档中,需要明确标注胜诉方(原告或被告)。如果原始文书没有,需要预处理提取。
  3. 相似度计算:Dify的检索节点默认使用向量相似度(如余弦相似度),这依赖于Embedding模型的质量。
  4. 胜诉概率计算:这里使用了简单统计,实际中可能要考虑更多因素(如案例时间、地域、法院层级等),后续可优化。

改进方向:

  • 加权胜诉概率:相似度得分越高的案例,其权重越大。
  • 多维度分析:除了胜诉概率,还可以分析赔偿金额范围等。

通过Dify的可视化工作流,我们可以快速搭建这个功能,并进行迭代优化。

完全理解您的需求!我们将聚焦于直接在Dify中实现案件相似度匹配的核心功能,暂不处理语音转文本环节。以下是分阶段实现的详细方案,优先使用Dify原生功能完成测试版:


分阶段实现计划(Dify优先)

阶段1:基础案件匹配引擎(当前重点)

目标:通过Dify实现案情文本→相似案例检索→胜率计算
所需组件

mermaid

实现步骤

  1. 创建裁判文书知识库

    • 在Dify控制台创建新知识库(如中国裁判文书库
    • 上传预处理后的裁判文书数据(CSV/TXT格式):
      csv
    • 开启向量化选项:选择bge-large-zh中文Embedding模型
  2. 配置相似度检索工作流

    mermaid
  3. 胜率计算提示词设计

    markdown
    【角色】你是最高法院数据分析师
    【任务】
    1. 分析检索到的{{top_cases}}个相似案例
    2. 计算胜诉概率公式:
      胜率 = (原告胜诉案例数/总案例数)*100% 
      证据修正值 = {{evidence_score}}(根据证据强度)
      最终胜率 = min(95, max(5, 胜率 + 证据修正值))
    3. 生成包含如下内容的报告:
      - 胜率百分比
      - 最相似案例的案号/案由
      - 关键相似点对比
      - 法律建议
    
    【输入数据】
    {{knowledge_search_results}}
  4. 证据强度评估函数

    python

阶段2:扩展功能(后续迭代)

功能实现方式Dify支持度
多人对话处理添加LLM信息提取节点✅ 通过提示词工程
地域因素修正添加法院地域权重表✅ 代码节点
金额预测建立回归模型API对接⚠️ 需外部集成
可视化报告输出HTML表格✅ Markdown渲染

阶段3:语音集成(最终阶段)

mermaid

Dify操作全流程(测试版)

  1. 创建知识库

    • 入口:知识库→新建→上传裁判文书样例(至少10份)
    • 配置:分割方式选按段落,开启向量化
  2. 创建工作流

    mermaid
    • 关键节点配置:
      • 知识库检索:Top K=5, 相似度阈值=0.75
      • LLM节点:选择DeepSeek R1,输入提示词模板
  3. 测试案例输入

    text
  4. 预期输出

    markdown
    ## 案件胜诉分析报告
    🔍 **匹配结果**
    - 相似案例数:4件(劳动纠纷类)
    - 最高相似度:92% [(2023)京0105民初12345]
    
    📈 **胜率评估**
    综合胜诉概率:85%
    ✅ 有利因素:存在书面工资记录
    ⚠️ 风险提示:缺少直接雇佣关系证明
    
    🧾 **参考案例摘要**
    | 案号 | 案由 | 关键证据 | 判决结果 |
    |---|---|---|---|
    |(2023)京0105民初12345| 劳动合同纠纷 | 银行流水+微信记录 | 原告获赔86,500元 |

避坑指南(Dify专项)

  1. 知识库优化

    • 问题:长文书检索不准
    • 方案:在知识库设置中启用HyDE优化(Hypothetical Document Embeddings)
  2. 相似度漂移处理

    python
  3. 性能调优

    • 启用检索缓存减少重复计算
    • 设置超时限制:单次分析≤15秒
    • 使用异步调用处理批量请求

当前方案完全在Dify平台实现,无需外部编码。测试阶段建议使用50-100份裁判文书样本,后续再扩展完整数据库。

xlsx
2011年01月裁判文书数据_副本.xlsx
我提供给你一份目前我所拿到的中国裁判文书网的数据,你来帮我参考下要怎么先清洗一下数据。下面的数据:
Reason
附件解析
思考过程

我们拿到了一份裁判文书数据的样例(2011年01月),从数据结构看包含14个字段。为了后续在Dify中有效使用这些数据进行相似案例匹配,我们需要先进行数据清洗。以下是关键清洗步骤:


数据清洗目标

  1. 提取结构化特征:便于向量化检索
  2. 去除无效内容:提高文本质量
  3. 统一关键字段:确保检索准确性
  4. 构建标签体系:支持胜率计算

清洗步骤分解

1. 字段精简(保留核心字段)

原始字段处理方式理由
原始链接保留用于溯源
案号保留唯一标识
案件名称保留包含关键信息
法院清洗(统一为省+法院名)地域因素影响判决
所属地区清洗(统一为"省/市"格式)支持地域权重计算
案件类型标准化(如:民事→民间借贷)避免同案不同名
审理程序标准化(一审/二审/再审)程序影响参考价值
裁判日期转换为时间戳支持时效性计算
当事人拆分为:原告、被告、第三人明确诉讼主体
案由标准化(最高法案由规定)核心检索维度
法律依据提取法条编号(如"民诉法第131条")便于法律分析
全文关键内容提取(见步骤3)去除无关内容

2. 文本内容清洗(针对"全文"字段)

python

3. 当事人解析(示例)

python

4. 判决结果编码

从"全文"中提取:

python

5. 建立标准化案由

参考《民事案件案由规定》:

python

清洗后数据结构(建议CSV格式)

字段类型示例
case_idstring(2011)未民二初字第232号
case_typestring运输合同纠纷
courtstring陕西省西安市未央区法院
provincestring陕西省
procedurestring一审
judgment_datetimestamp2011-01-14
plaintifflist["罗晓"]
defendantlist["陕西省西安中通快递公司"]
key_factsstring"原告以运输货物损坏为由起诉...提交了货损照片"
claimsstring"索赔货物损失5000元"
judgmentjson{"winner":"原告","amount":5000}
lawslist["民诉法第131条"]
source_urlstringhttps://wenshu.court.gov.cn/...

特殊问题处理

  1. 数据缺失

    • 关键字段缺失率>30%时丢弃该记录
    • 非关键字段用"未知"填充
  2. 长文本优化

    • 使用文本摘要模型(如BART-CN)压缩"全文"字段
    python
  3. 地域清洗规则

    python

下一步建议

  1. 清洗后导入Dify知识库时:
    • 选择key_facts+claims作为向量化字段
    • 添加元数据:case_type, province, judgment.winner
  2. 在检索条件中可加入过滤:
    python

完成清洗后,该数据集即可用于构建Dify法律助手。建议先清洗1000份文书测试检索效果,重点检查相似案例匹配准确率。

基于您提供的裁判文书网数据样本,我将为您设计一套针对性的数据清洗方案,确保这些数据能在Dify中有效用于案件相似度匹配。以下是分步骤的清洗建议:

核心清洗目标

  1. 结构化关键信息:提取裁判文书中的核心要素
  2. 去除冗余内容:清理无关文本和重复信息
  3. 统一数据格式:确保字段标准化
  4. 构建分析维度:为相似度匹配准备特征

清洗步骤详解

第一步:基础字段清洗

python

第二步:关键信息提取(核心)

python

第三步:全文内容优化

python

第四步:构建分析维度

python

清洗后数据结构建议

字段类型示例值说明
基础信息
案号string(2011)未民二初字第232号唯一标识
案由string运输合同纠纷标准化分类
法院string未央区清洗后名称
省份string陕西从所属地区提取
审理程序string一审
裁判日期date2011-01-14
法律要素
诉讼主体list["罗晓","陕西省西安中通快递公司"]
争议焦点list["未签合同双倍工资"]
证据清单list["工资流水","微信记录"]
法律依据list["民事诉讼法第131条"]
诉讼请求string主张双倍工资差额
判决结果string准许撤诉摘要
分析维度
胜诉方string原告
证据数量int2
诉讼标的额float86500.0单位元
审理时长int60单位天
原始信息
全文string清洗后文本保留完整内容
原始链接stringhttps://...数据溯源

Dify集成建议

  1. 知识库构建

    mermaid
  2. 关键字段配置

    • 向量化字段争议焦点 + 证据清单 + 诉讼请求
    • 过滤字段案由省份审理程序
    • 元数据字段胜诉方证据数量诉讼标的额
  3. 相似度计算优化

    python

清洗注意事项

  1. 数据脱敏:去除当事人身份证号、联系方式等敏感信息
  2. 案由标准化:建议使用最高人民法院《民事案件案由规定》
  3. 异常处理
    • 缺失率>30%的字段标记为"未知"
    • 矛盾信息(如原告胜但判决支持被告)需要人工复核
  4. 批量处理:使用PySpark或Dask处理大规模数据

清洗后数据示例:

json

建议先对100份文书进行清洗测试,验证关键信息提取准确率(特别是争议焦点和判决结果),再扩展到全量数据。清洗后数据可直接导入Dify知识库用于相似案例检索。