Skip to content
Guides5 min read

법률 문서 주석 모범 사례

스팬 라벨링, 개체 추출, 프라이버시를 우선하는 자체 호스팅 배포로 Potato에서 계약서, 법원 제출 서류, 규제 텍스트 등 법률 문서에 주석을 답니다.

Potato Team

법률 텍스트는 그 자체로 별개의 주석 문제입니다. 구조가 복잡하고, 어휘가 전문적이며, 라벨 하나가 잘못되면 실제 법적 결과로 이어질 수 있습니다. 이 가이드는 그런 텍스트에 주석을 잘 다는 방법을 다룹니다.

법률 주석이 어려운 이유

전문 용어만으로도 무작위로 뽑은 크라우드 작업자가 아니라 훈련된 안노테이터가 필요합니다. 문서는 길어서 계약서가 때로는 수백 페이지에 이르고, 각 조항은 끊임없이 다른 조항을 가리킵니다. 엉성한 스팬 하나가 조항의 의미를 바꿀 수 있으므로 정확성이 평소보다 더 중요합니다. 그리고 그 의미의 상당 부분이 문서 유형과 관할권에 좌우되므로, 맥락은 결코 선택 사항이 아닙니다.

기반이 되는 스팬 및 텍스트 주석 메커니즘은 원본 문서를 참고하십시오.

문서 분할

긴 문서 나누기

json
{
  "id": "contract_001_section_3.2",
  "text": "The Licensor grants to the Licensee a non-exclusive, non-transferable license...",
  "section_number": "3.2",
  "section_title": "License Grant",
  "document_id": "contract_001"
}

섹션 단위 주석

yaml
instance_display:
  fields:
    - key: section_title
      type: text
    - key: text
      type: text

법률 개체 인식

계약 특화 개체

yaml
annotation_schemes:
  - annotation_type: span
    name: legal_entities
    description: "Mark the parties, defined terms, dates, amounts and obligations."
    labels:
      - name: PARTY
        color: "#FECACA"
        tooltip: "Contracting parties, including Licensor, Licensee and named companies"
      - name: DEFINED_TERM
        color: "#FDE68A"
        tooltip: "A term given a specific meaning by the definitions section"
      - name: DATE
        color: "#BBF7D0"
        tooltip: "Dates and time periods, including notice and cure periods"
      - name: MONETARY
        color: "#C4B5FD"
        tooltip: "Amounts, fees, penalties and caps"
      - name: OBLIGATION
        color: "#BFDBFE"
        tooltip: "Language creating a duty, such as shall, must or agrees to"
      - name: CONDITION
        color: "#FED7AA"
        tooltip: "Language making a duty conditional, such as if, unless or provided that"
      - name: REFERENCE
        color: "#E0E7FF"
        tooltip: "A cross-reference to another section or document"

의무 탐지

yaml
  - annotation_type: radio
    name: clause_type
    description: "What type of clause is this?"
    labels:
      - Definitions
      - Grant of rights
      - Consideration and payment
      - Term and termination
      - Representations and warranties
      - Indemnification
      - Limitation of liability
      - Confidentiality
      - Intellectual property
      - Dispute resolution
      - Boilerplate

조항 분류

계약 조항 유형

yaml
  - annotation_type: multiselect
    name: obligation_type
    description: "Which kinds of obligation does this clause create?"
    labels:
      - Performance
      - Payment
      - Restriction
      - Conditional obligation
      - Warranty
 
  - annotation_type: likert
    name: risk
    description: "How much risk does this clause carry for the receiving party?"
    size: 5
    min_label: "Low risk"
    max_label: "High risk"
 
  - annotation_type: text
    name: risk_notes
    description: "Explain the risk factors you identified."
    rows: 4
    min_chars: 20

위험 평가

yaml
annotation_schemes:
  - annotation_type: span
    name: case_entities
    description: "Mark case metadata and the parties to the proceeding."
    labels:
      - name: CASE_NUMBER
        tooltip: "The docket or case identifier"
      - name: COURT
        tooltip: "Court name and jurisdiction"
      - name: JUDGE
      - name: PLAINTIFF
      - name: DEFENDANT
      - name: ATTORNEY
      - name: LEGAL_CITATION
        tooltip: "Citations to cases, statutes and regulations"
      - name: RULING
 
  - annotation_type: span
    name: argument_structure
    description: "Mark the claim, its support, and the court's conclusion."
    labels:
      - name: CLAIM
        color: "#FECACA"
      - name: PREMISE
        color: "#BBF7D0"
      - name: EVIDENCE
        color: "#BFDBFE"
      - name: REBUTTAL
        color: "#FED7AA"
      - name: CONCLUSION
        color: "#E0E7FF"

법원 문서 주석

사건 정보 추출

text
keyword,label,schema,color
shall,OBLIGATION,legal_entities,#FEE2E2
must,OBLIGATION,legal_entities,#FEE2E2
agrees to,OBLIGATION,legal_entities,#FEE2E2
may,permission,legal_entities,#D1FAE5
unless,CONDITION,legal_entities,#DBEAFE
provided that,CONDITION,legal_entities,#DBEAFE
notwithstand*,CONDITION,legal_entities,#DBEAFE

논증 구조

yaml
keyword_highlights_file: data/legal_terms.csv

법률 용어 강조

yaml
keyword_highlight_settings:
  keyword_probability: 0.8       # show 80% of matched keywords
  random_word_probability: 0.05  # highlight ~5% of other words as distractors

법률 분야 품질 관리

yaml
num_annotators_per_item: 3
 
gold_standards:
  enabled: true
  items_file: data/gold_clauses.json
  mode: mixed
  frequency: 20
  accuracy:
    min_threshold: 0.85
    evaluation_count: 10
  feedback:
    show_correct_answer: true
    show_explanation: true

완전한 법률 주석 설정

yaml
annotation_task_name: "Contract Clause Analysis"
task_description: "Classify contract clauses and mark the entities they refer to."
 
data_files:
  - data/contract_sections.json
 
item_properties:
  id_key: id
  text_key: text
 
instance_display:
  fields:
    - key: section_title
      type: text
    - key: text
      type: text
 
annotation_schemes:
  - annotation_type: radio
    name: clause_type
    description: "What type of clause is this?"
    labels:
      - Grant of rights
      - Consideration and payment
      - Term and termination
      - Indemnification
      - Limitation of liability
      - Confidentiality
      - Other
 
  - annotation_type: span
    name: legal_entities
    description: "Mark the parties, defined terms, dates, amounts and obligations."
    labels:
      - name: PARTY
        color: "#FECACA"
      - name: DEFINED_TERM
        color: "#FDE68A"
      - name: MONETARY
        color: "#C4B5FD"
      - name: DATE
        color: "#BBF7D0"
      - name: OBLIGATION
        color: "#BFDBFE"
 
  - annotation_type: likert
    name: risk
    description: "How much risk does this clause carry for the receiving party?"
    size: 5
    min_label: "Low risk"
    max_label: "High risk"
 
  - annotation_type: text
    name: issues
    description: "Note any unusual or problematic language."
    rows: 4
    min_chars: 20
 
num_annotators_per_item: 3
 
gold_standards:
  enabled: true
  items_file: data/gold_clauses.json
  mode: mixed
  frequency: 20
  accuracy:
    min_threshold: 0.85
    evaluation_count: 10
 
agreement_metrics:
  enabled: true
  min_overlap: 2
 
output_annotation_dir: annotation_output

안노테이터 지침 작성

법률 작업을 위한 좋은 지침은 범위(어떤 문서, 어떤 관할권)를 명확히 하고, 안노테이터가 용어를 여러분과 똑같이 읽도록 용어집을 포함합니다. 모호한 표현에 대해, 그리고 상호 참조를 언제 주석으로 달고 언제 무시해야 하는지에 대해 분명히 밝히십시오. 그리고 올바른 스팬 경계로 무엇이 인정되는지 말하십시오. 이 분야에서는 "대충 비슷한 정도"로는 거의 충분하지 않기 때문입니다.

모범 사례

해당 분야를 실제로 아는 안노테이터를 쓰십시오. 법률 라벨링은 그것 없이는 작동하지 않기 때문입니다. 긴 문서는 사람이 머릿속에 담아둘 수 있는 섹션으로 나누십시오. 비중 있는 법률 표현은 강조하여 그냥 훑고 지나치지 않도록 하십시오. 오류의 비용이 크므로 중복성을 높게 유지하십시오. 변호사가 경계 사례를 처리하는 전문가 검토 계층을 추가하십시오. 각 라벨을 정확하게 정의하십시오. 그리고 안노테이터에게 주변 구조와 관련 섹션을 제공하십시오. 따로 떼어놓은 조항은 오해를 부를 수 있기 때문입니다.


전체 문서는 어노테이션 스키마에 있습니다.