釋憲文本全文抽取
司法院大法官解釋 813 件與憲法法庭判決 57 件,合計 870 件之五層結構化標註
這是什麼
把 870 件釋憲文本從「一則解釋一個結果碼」的粗粒度,推進到五層結構化資料:程序(誰聲請、依據什麼、受理範圍)、實體(客體型態、系爭規定、審查標準、逐條結論)、引用(七類共 9,008 筆,每筆標明出處)、相關文件、人物(大法官 12,460 席次、其他載明人物 2,177 筆)。
每一筆判斷都附原文的逐字證據句,並以程式回比原文驗證。這是整套作業的鐵律,也是這批資料可以被外部審查的基礎。
四個數字
三件用資料前該知道的事
- 做引用網絡只取「出處=本庭論理」。C 層同時收錄聲請意旨、關係機關主張、關係人陳述與被審查客體內文所引者,全取會把密度灌大約 5%。已據此另建邊表 2,071 條、526 則被引。
- 「審查標準=未明示」占 87.5%(807 筆),不是漏標。早期解釋沒有審查密度的語彙;「嚴格審查」「合理關聯」這套用語是後來才發展出來的。
- 欄位為空多半是原文本來就沒有。主筆大法官 813 件空(釋字無此體例)、確定終局裁判 456 件空(機關聲請本無)、D 層 290 件空(官網無該區塊)。依鐵律,寧可留空也不推定。
標註方法
語料、卡片、五層欄位、驗證機制與編碼手冊的七次修訂
一、語料與卡片
標註的對象不是官網頁面,而是先為每一件產生一張卡片:把官網原文的全部區塊按固定順序組成純文字檔,標註者只讀這張卡片。
這樣做有兩個理由,第二個是關鍵。其一,官網每件的區塊排列不同,直接讀網頁會使 870 件的閱讀範圍不一致,後面的數字就不能比。其二,證據句需要一個明確的比對對象 —— 「逐字」要對誰逐字,答案就是卡片。
| 區塊 | 件數 | 說明 |
|---|---|---|
| 解釋文 | 813 | 釋字之主文 |
| 理由書 | 734 | 79 件釋字無理由書(多為早期統一解釋) |
| 相關文件 | 577 | 聲請書、附件裁判等;293 件官網無此區塊 |
| 主文/理由 | 57 | 憲判字 |
| 主筆大法官記載 | 57 | 僅憲判字有此體例 |
| 署名列(補收) | 60 | 建庫解析器漏收,事後補回 |
| 意見書清單 | 329 | 1,680 篇標題,全文不入卡片 |
二、五層欄位
每件產生一個 JSON,五層同時產出(不是分階段串接)。以下為全庫實際填出的筆數。
A 程序層
聲請人(S 碼)/聲請日期/確定終局裁判(D 碼)/原因案件/聲請依據/受理範圍(含「重要關聯性一併審查」與「聲請而未回應者」)/言詞辯論/鑑定人/併案/暫時處分。聲請人姓名 1,696 筆。
B 實體層
| 型態 | 件數 | 說明 |
|---|---|---|
| 合憲性審查 | 602 | 審查法規範是否牴觸憲法 |
| 統一解釋 | 117 | 機關間法令見解歧異之統一 |
| 補充解釋 | 66 | 就前解釋所生疑義補充或變更 |
| 憲法疑義解釋 | 61 | 客體為憲法條文本身 |
| 裁判憲法審查 | 2 | 憲訴法新制,客體為個案確定終局裁判 |
| 其他 | 22 | 原文未明示程序類型者 |
另有逐系爭規定的結論 1,841 筆,每筆標明客體種類與 R 碼 —— 這是舊有「一則解釋一個碼」做不到的層級。
| 客體種類 | 筆數 | 客體種類 | 筆數 |
|---|---|---|---|
| 法規範 | 1,267 | 其他 | 72 |
| 函釋 | 138 | 個案裁判 | 26 |
| 判例決議 | 121 | 立法不作為 | 15 |
| 前解釋 | 104 | 憲法上行為 | 13 |
| 行政規則 | 73 | 行政計畫或公告 | 12 |
原文用語 備查。「合理關聯」歸寬鬆或合理;「重要公共利益+實質關聯」為中度之二階公式;「加強審查」「提高審查密度」歸嚴格。B 層另含審查基準、解釋客體憲法條文、比例原則(逐系爭規定成陣列,另有整體結論)、其他審查原則、附隨命令。
C 引用層
| 欄位 | 筆數 | 欄位 | 筆數 |
|---|---|---|---|
| 引用法規 | 5,900 | 引用行政規則 | 129 |
| 引用釋憲 | 2,171 | 引用外國法 | 125 |
| 引用判例決議 | 325 | 引用公約 | 69 |
| 引用函釋 | 289 |
字號正規化 99.8%(2,166/2,171),5 筆因原文為「上開解釋」「前揭本院解釋先例」等承前指稱而無法還原。據此建立引用網絡邊表 2,071 條、526 則被引解釋。
D 相關文件層
聲請書之文件類型/聲請機關或聲請人/聲請人所引(類型碼域與 C 層對齊)。580 件有,290 件為 null(官網原文無此區塊)。
E 人物層
| 欄位 | 筆數 | 說明 |
|---|---|---|
| 參與大法官 | 12,460 | 129 位相異大法官;含是否主席、職銜 |
| 其他載明人物 | 2,177 | 原文載明但非上列身分者 |
| 聲請人姓名 | 1,696 | 遮罩姓名照原文保留 |
| 訴訟代理人 | 96 | 標記是否律師 |
| 迴避大法官 | 60 | |
| 鑑定人或專家 | 40 | |
| 關係人 | 39 | 憲訴法新制,含法人團體 |
| 未參與評議大法官 | 18 | 人次,集中於 114–115 年 6 件 |
| 法庭之友 | 11 | 憲訴法新制 |
三、驗證機制
鐵律:每一筆判斷都必須附上原文的逐字證據句,中段可用「……」節略,但每一段都必須是該案卡片原文的連續子字串。原文沒寫的一律填 null,不臆測、不補外部法學知識。
三道程式驗證,全庫 34,739 條證據句:
- 子字串驗證 —— 證據句去空白後為卡片原文之連續子字串。失敗 0。
- 片段順序驗證 —— 以「……」節略者,各片段在原文中的出現順序須遞增。失敗 0。
- 欄位齊備與碼域合法 —— 全庫 870 件一律 v2.6.1,無缺漏。
作業中另發現兩項字元層級的問題:卡片含 CJK 相容表意文字(如「劉」U+F9C7)與私用區字元,手打證據句必然對不上,作業規則因此改為證據句一律以程式自卡片切片產生;另有同一法規名稱在同一件內出現兩種 Unicode 編碼(釋字0783),需在併檔階段加一道 NFKC,不在標註階段擅自擇一。
四、編碼手冊的七次修訂
手冊從 v1 改到 v2.6.1。每一次都是文本逼出來的,不是預先設計的。修訂理由本身就是研究發現。
| 版本 | 主要變更 | 為什麼 |
|---|---|---|
| v2.1 | 訂死 結論[] 的切分單位為「法規名稱+條+項」 | 原本沒定義。同一項內常同時有失效與合憲宣告,不寫死則不同批次切法不同,R 碼件數不能跨案比較 |
| v2.2 | 新增 其他載明人物[];分出 引用判例決議;R1/R3 分界裁決 | 八批標註中有六批獨立回報同一缺口 —— 原文逐字寫了姓名的承辦推事、提案委員、機關首長、陳訴人民,六個人物欄位一個都放不進去 |
| v2.3 | 新增 參與大法官[]、迴避大法官[]、客體型態 | 十批中八批回報署名列無處可放。此欄後來成為全庫最完整的欄位之一(12,460 筆) |
| v2.4 | 新增 裁判憲法審查 型態、客體種類、暫時處分、一併審查 | 憲訴法新制逼出來的。裁判憲法審查的客體是個案裁判而非法規範,R1–R8 套上去會污染法規範統計 |
| v2.5 | 分出 引用函釋;審查標準 改陣列;新增 關係人 | 行政函釋被迫塞進引用法規,四批獨立回報。函釋與法律命令在效力位階上完全不同 |
| v2.6 | 分出 引用行政規則;新增 未參與評議大法官;比例原則 改陣列 | 三項各經四批以上獨立回報 |
| v2.6.1 | 統一 暫時處分.結果 的 null 與「未論」 | 448 件口徑不一:null 指沒人聲請,「未論」指有聲請而本庭未答 |
每次修訂後,先前已標的案件都回填到新版,未採「只補新案、舊案不動」的做法。
五、署名列的補收
建庫時的 HTML 解析器只收「有段落編號」的內容。釋字的署名列落在理由書最後一段之內而被收到;憲判字的署名列落在最末段編號之後,整段被丟掉 —— 57 件憲判有 53 件沒有大法官名單。這是資料源的缺漏,不是標註問題。
| 來源 | 件數 | 說明 |
|---|---|---|
| WebFetch 抓官網 | 45 | 憲判 42、釋字 3 |
| 官網封存 HTML | 2 | 本地已存的原始頁面 |
| Claude in Chrome 開頁擷取 | 13 | 長判決,WebFetch 有固定長度上限抓不到文末 |
那 13 件不是抓不到,是工具限制:WebFetch 轉 markdown 時有長度上限,以「照抄你看到內容的最後 N 字」探測,四種問法下截斷點完全相同;已排除 print 參數、判決清單頁、舊站、archive、Ajax 端點等替代路徑,最後改用瀏覽器直接讀頁面文字。補收後 57 件憲判署名列全部到位,並補得兩筆先前漏掉的迴避記載。
標註流程
前處理 → 五層標註 → 驗證與併檔,以及編碼手冊的回饋迴圈
與言詞辯論筆錄標註流程的差別
本流程的標註對象是法庭自己寫的判決與解釋本文,產出的是實體法判斷(客體型態、系爭規定、審查標準、R 碼)與引用網絡。言詞辯論筆錄標註的對象是庭上各方說了什麼,產出的是發言功能(陳述/提問/回應)、問答對應關係與出席方的階層歸屬。兩者的語料、單位與變項都不同,不能互相取代。
本流程沒有 OCR 與錯字校正階段,因為憲法法庭官網頁面已內嵌 OCR 後的文字。但也因此暴露一個缺口:頁面內同樣內嵌了立場表、言詞辯論筆錄、鑑定意見等附件的文字,建庫時只收了意見書。詳見「缺口與爭點」分頁。
缺口與爭點
哪些沒有做、為什麼,以及尚未解決的判斷分歧
一、有全文但未標註:大法官意見書
全文早已存在於資料庫,但沒有進入卡片、也沒有標註。理由是量體 —— 1,941 萬字是本文 434 萬字的 4.47 倍,塞進卡片會使標註對象失焦。折衷做法是把 1,680 篇標題收進卡片:標題本身載明「某大法官提出、某大法官加入」,253 篇含「加入」,光靠標題就能建出意見結盟網絡。
二、官網頁面裡有文字,但建庫時被丟棄
| 被丟棄的附件 | 為什麼重要 |
|---|---|
| 主文立場表 | 逐項記載每位大法官對主文各款的立場。投票模式分析唯一的原始來源 —— 目前只知道誰參與了合議庭,不知道每個人在每一款上怎麼投 |
| 言詞辯論筆錄 | 含出庭人員名單、審判長諭知、各方陳述全文。可支撐發言功能與問答結構的標註 |
| 判決摘要 | 書記廳依主文及理由摘錄 |
| 鑑定意見書、法庭之友意見書、專家學者一覽表 | 憲訴法新制的外部參與,目前只有姓名與件數 |
| 聲請書、迴避裁定、更正裁定 | 程序歷程 |
要確知全庫實際有多少件有立場表、多少件有筆錄,需要重跑一次建庫(把附件過濾拿掉)。這是一行程式的修改。
三、欄位為空,但原文本來就沒有
| 欄位 | 為空件數 | 原因 |
|---|---|---|
| 主筆大法官 | 813 | 「主筆大法官記載」是憲判字才有的體例 |
| 確定終局裁判 | 456 | 機關聲請、法官聲請、憲法疑義解釋本來就沒有 |
| D 層(相關文件) | 290 | 官網原文無此區塊 |
| 聲請人 | 104 | 早期解釋常不載聲請人,僅記「據某機關函」 |
| 系爭規定 | 65 | 憲法疑義解釋之客體為憲法條文本身 |
一律填 null 或空陣列並在疑義記明。依鐵律,寧可留空也不推定。
四、其他階段的涵蓋率
| 檔案 | 列數 | 涵蓋件數 | 性質 |
|---|---|---|---|
| 確定終局裁判.csv | 1,075 | 870 | 全庫皆有列,但僅 306 列解析出實際案號 |
| 案件歷程.csv | 392 | 101 | 能力上限 |
| 法官參與.csv | 686 | 70 | 同上 |
| 辯護型態變化.csv | 86 | 43 | 同上 |
| 釋憲結果.csv(舊) | 232 | 232 | 已被本次標註取代 |
案件歷程的 101 件是能力上限。它要拿釋憲案的確定終局裁判,回到司法院裁判書資料裡把整條審級鏈找出來。這只有在裁判書資料裡找得到那筆案號才做得成 —— 確定終局裁判有 1,075 列橫跨 870 件,但能解析出實際案號的只有 306 列、對應 101 件。其餘不是沒標,是資料裡根本沒有對應的裁判書。硬要湊到 870 只能靠猜。
釋憲結果的 232 件是工作未完成。它的分母是解釋文本身,而 870 件的解釋文全部都在。本次 870 件全部有 R 碼、每筆附證據句,還多了逐系爭規定 1,841 筆的層級。
五、判斷爭點與 v2.7 的三項裁決
本次 R 碼與既有「釋憲結果.csv」有 232 件重疊,原先不一致 9 件。曾請一位標註者在不知道任何一方編碼的情況下重新判斷這 9 件,結果為 4:5 —— 兩邊各對一半。
裁決一:裁判憲法審查改用 J 碼,R 碼只講法規範
憲訴法第 59 條之裁判憲法審查,處分對象是個案確定終局裁判,主文典型措辭為「牴觸憲法,應予廢棄,發回○○法院」。套進 R1–R8 有兩個後果:字面上 R1 與 R3 同時成立(R1 要求「自公布日起失其效力」,主文並無此語;R3 定義為「未明示失效時點」,字面反而符合),編碼必然搖擺;且法規範的 R 碼統計被個案裁判污染。
新增 J 碼:J1 裁判違憲並廢棄發回/J2 裁判違憲但不廢棄/J3 裁判合憲或聲請無理由駁回/J4 程序不受理。全庫共填 J1 17 筆、J3 8 筆。純裁判憲法審查案件之 R 碼填 R8,並以客體型態區辨。
裁決二:C1 的操作門檻
合憲宣告構成主要處分(→R6)須同時具備:(i) 出現在解釋文/主文(僅見於理由書者不算);(ii) 客體為與違憲部分不同之系爭規定。
採「不同系爭規定」而非「段落數」或「理由長度」,是因為前者可由 結論[] 直接判讀、可程式化複核,後者依賴標註者對篇幅的主觀感受。本判準使釋字0709 與 0739 一致歸 R6,消除原先的分歧來源 —— 兩案結構幾乎平行,先前卻因合憲部分的份量不同而被標成不同碼。
反面情形:同一系爭規定之範圍限定(「於此範圍內合憲」)不構成獨立合憲宣告,依範圍外部分之處分歸 R1/R2/R3/R5;合憲宣告僅見於理由書者為附帶說明。
裁決三:R5 與 R6 的界線
由前兩項共同決定,不另立規則。裁判違憲既不入 R 碼,即不構成 R6 之違憲項;故「主文一合憲性限縮解釋+主文二至六裁判違憲廢棄」歸 R5,另填 J1。
複核結果
107 件複核後,28 件 R 碼變更。與舊表的一致率從 96.1% 變為 94.4% —— 一致率下降不代表變差,而是新規則同時修正了舊表與先前標註的兩邊錯誤。原先分歧的 9 件現況:
| 案號 | 舊表 | 盲測 | v2.7 | J 碼 |
|---|---|---|---|---|
| 憲判111-08 | R3 | R1 | R8 | J1 |
| 憲判113-04 | R3 | R1 | R5 | J1 |
| 憲判112-07 | R6 | R2 | R2 | J1 |
| 釋字0739 | R6 | R2 | R6 | — |
| 憲判111-18 | R4 | R4 | R5 | J3 |
| 憲判113-03 | R5 | R5 | R5 | J1 |
| 憲判115-01 | R5 | R5 | R5 | J1 |
| 釋字0709 | R6 | R6 | R6 | — |
| 釋字0778 | R6 | R6 | R6 | — |
檔案與重現
產出清單、資料字典要點,以及如何自行驗證
產出清單
| 路徑 | 規模 | 內容 |
|---|---|---|
成果/<案號>.json | 870 檔 / 17.1 MB | 五層完整標註,含所有證據句與疑義 |
卡片/<案號>.txt | 870 檔 / 13.0 MB | 標註時實際閱讀的全文,證據句的比對基準 |
併檔/案件層.csv | 870 列 | 一案一列,可直接分析 |
併檔/逐系爭規定結論.csv | 1,841 列 | 含客體種類與 R 碼 |
併檔/參與大法官.csv | 12,460 列 | 案號 × 姓名 × 是否主席 × 職銜 |
併檔/引用釋憲.csv | 2,171 列 | 含被引正規化與出處 |
併檔/引用網絡_邊表.csv | 2,071 列 | 僅取本庭論理,可直接做網絡 |
併檔/其他載明人物.csv | 2,177 列 | |
併檔/迴避大法官.csv | 60 列 | |
碼表_全文抽取.md | v2.6.1 | 編碼手冊,含七次修訂的完整理由 |
標註指示.md、up26_指示.md | — | 標註與升級的作業指示,可重跑 |
自行驗證證據句
這批資料的核心宣稱是「每一筆判斷都可回溯原文」。要自行查核,只需要 成果/ 與 卡片/ 兩個資料夾:
import json, glob, os, re
nz = lambda s: re.sub(r'\s+', '', s or '')
n = f = 0
for p in sorted(glob.glob('成果/*.json')):
k = os.path.basename(p)[:-5]
d = json.load(open(p, encoding='utf-8'))
card = nz(open(f'卡片/{k}.txt', encoding='utf-8').read())
def walk(o):
global n, f
if isinstance(o, dict):
for key, v in o.items():
if key.endswith('證據句') and isinstance(v, str) and v.strip():
pos = []
for seg in v.split('……'): # 節略以「……」分段
seg = nz(seg)
if not seg: continue
n += 1
i = card.find(seg)
if i < 0: f += 1 # ① 子字串
else: pos.append(i)
if pos != sorted(pos): f += 1 # ② 片段順序
else: walk(v)
elif isinstance(o, list):
for x in o: walk(x)
walk(d)
print(f'證據句 {n} 條,失敗 {f} 條') # 應為 34739 條,失敗 0
資料字典要點
- S 碼(聲請人身分):S1 自然人/S2 法人團體/S3 法院法官/S4 機關/S0 原文載明但身分不明。
- D 碼(確定終局裁判):依原文載明程度分級,D1 為同一連續文字兼具稱謂與案號者。
- R 碼(合憲性結論):R1 違憲即時失效/R2 違憲定期失效/R3 違憲未宣告失效/R4 合憲/R5 合憲性解釋/R6 部分違憲部分合憲/R7 程序駁回/R8 其他。衝突規則 C1–C5 見編碼手冊。
- 客體型態:合憲性審查/統一解釋/憲法疑義解釋/補充解釋/裁判憲法審查/其他。任何統計都應先用此欄分流。
- 出處(C 層各引用欄):本庭論理/聲請意旨/關係機關主張/關係人/被審查客體內文。引用網絡只取第一種。
已知限制
- 引用釋憲 5 筆(0.2%)無法正規化為案號,因原文為承前指稱(「上開解釋」「前揭本院解釋先例」)。
- 署名列補收之 60 件經 markdown 或瀏覽器文字擷取,空白排版與官網 HTML 未必逐字相同;姓名與順序為逐字照錄。
- 卡片含 CJK 相容表意文字與私用區字元,逐字比對時不可正規化。
- 釋字0783 同一法規名稱出現兩種 Unicode 編碼,併檔以名稱為鍵時需加 NFKC。