釋憲文本全文抽取

司法院大法官解釋 813 件與憲法法庭判決 57 件,合計 870 件之五層結構化標註

編碼手冊 v2.7 · 本站所有數字均自成果檔重算

870
標註件數
釋字 813 + 憲判 57
100%
全庫涵蓋率
無跳過、無抽樣
34,739
逐字證據句
每筆判斷可回溯原文
0
驗證失敗
子字串 0/順序 0

這是什麼

把 870 件釋憲文本從「一則解釋一個結果碼」的粗粒度,推進到五層結構化資料:程序(誰聲請、依據什麼、受理範圍)、實體(客體型態、系爭規定、審查標準、逐條結論)、引用(七類共 9,008 筆,每筆標明出處)、相關文件、人物(大法官 12,460 席次、其他載明人物 2,177 筆)。

每一筆判斷都附原文的逐字證據句,並以程式回比原文驗證。這是整套作業的鐵律,也是這批資料可以被外部審查的基礎。

四個數字

全案主要處分 R 碼(870 件,一件一碼;只反映法規範審查結果)
R4 合憲287
R8 其他263
R1 違憲即時失效111
R2 違憲定期失效64
R3 違憲未失效58
R6 部分違憲55
R5 合憲性解釋30
R7 程序駁回2
裁判憲法審查另有 J 碼。憲訴法第 59 條之裁判憲法審查,處分對象是個案確定終局裁判而非法規範,套進 R1–R8 會使字面上 R1 與 R3 同時成立、並污染法規範統計。v2.7 起改用 J 碼(J1 廢棄發回 17 筆/J3 聲請駁回 8 筆),R 碼只反映法規範審查結果
統計前必須先用「客體型態」分流。R 碼整套是為法規範合憲性宣告設計的。合憲性審查 602 件、統一解釋 117、補充解釋 66、憲法疑義解釋 61、裁判憲法審查 2、其他 22 —— 把它們混在一起算 R 碼分布,數字沒有意義。

三件用資料前該知道的事

  1. 做引用網絡只取「出處=本庭論理」。C 層同時收錄聲請意旨、關係機關主張、關係人陳述與被審查客體內文所引者,全取會把密度灌大約 5%。已據此另建邊表 2,071 條、526 則被引。
  2. 「審查標準=未明示」占 87.5%(807 筆),不是漏標。早期解釋沒有審查密度的語彙;「嚴格審查」「合理關聯」這套用語是後來才發展出來的。
  3. 欄位為空多半是原文本來就沒有。主筆大法官 813 件空(釋字無此體例)、確定終局裁判 456 件空(機關聲請本無)、D 層 290 件空(官網無該區塊)。依鐵律,寧可留空也不推定。
資料截止:編碼手冊 v2.7 · 證據句 34,739 條,子字串與順序驗證均為零失敗。

標註方法

語料、卡片、五層欄位、驗證機制與編碼手冊的七次修訂

流程的圖示見「流程圖」分頁

一、語料與卡片

標註的對象不是官網頁面,而是先為每一件產生一張卡片:把官網原文的全部區塊按固定順序組成純文字檔,標註者只讀這張卡片。

這樣做有兩個理由,第二個是關鍵。其一,官網每件的區塊排列不同,直接讀網頁會使 870 件的閱讀範圍不一致,後面的數字就不能比。其二,證據句需要一個明確的比對對象 —— 「逐字」要對誰逐字,答案就是卡片。

卡片區塊涵蓋(870 張,合計 4,798,409 字;中位 3,489 字,最長 79,629 字=憲判113-09)
區塊件數說明
解釋文813釋字之主文
理由書73479 件釋字無理由書(多為早期統一解釋)
相關文件577聲請書、附件裁判等;293 件官網無此區塊
主文/理由57憲判字
主筆大法官記載57僅憲判字有此體例
署名列(補收)60建庫解析器漏收,事後補回
意見書清單3291,680 篇標題,全文不入卡片
卡片首欄的「相關法條」不是解釋原文。那是官網自行加註的欄位,內容常與原文不一致(有數件官網列了原文通篇未出現的條號)。編碼手冊明文禁止採為系爭規定或引用來源,標註全程未使用。

二、五層欄位

每件產生一個 JSON,五層同時產出(不是分階段串接)。以下為全庫實際填出的筆數。

A 程序層

聲請人(S 碼)/聲請日期/確定終局裁判(D 碼)/原因案件/聲請依據/受理範圍(含「重要關聯性一併審查」與「聲請而未回應者」)/言詞辯論/鑑定人/併案/暫時處分。聲請人姓名 1,696 筆。

B 實體層

客體型態(870 件,一件一碼)
型態件數說明
合憲性審查602審查法規範是否牴觸憲法
統一解釋117機關間法令見解歧異之統一
補充解釋66就前解釋所生疑義補充或變更
憲法疑義解釋61客體為憲法條文本身
裁判憲法審查2憲訴法新制,客體為個案確定終局裁判
其他22原文未明示程序類型者

另有逐系爭規定的結論 1,841 筆,每筆標明客體種類與 R 碼 —— 這是舊有「一則解釋一個碼」做不到的層級。

逐系爭規定結論之客體種類(1,841 筆)
客體種類筆數客體種類筆數
法規範1,267其他72
函釋138個案裁判26
判例決議121立法不作為15
前解釋104憲法上行為13
行政規則73行政計畫或公告12
審查標準(922 筆,一案可有多筆,逐爭點記錄)
未明示807
寬鬆或合理58
嚴格32
中度25
只有修飾「本庭審查行為」的層級用語才採計。形容受審查法規本身嚴苛程度的「處分要件甚為嚴格」、命行政機關「應嚴守法定要件」,一律歸未明示,原句另存 原文用語 備查。「合理關聯」歸寬鬆或合理;「重要公共利益+實質關聯」為中度之二階公式;「加強審查」「提高審查密度」歸嚴格。

B 層另含審查基準、解釋客體憲法條文、比例原則(逐系爭規定成陣列,另有整體結論)、其他審查原則、附隨命令。

C 引用層

七個引用欄位,合計 9,008 筆;每筆標出處(本庭論理/聲請意旨/關係機關主張/關係人/被審查客體內文)
欄位筆數欄位筆數
引用法規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,460129 位相異大法官;含是否主席、職銜
其他載明人物2,177原文載明但非上列身分者
聲請人姓名1,696遮罩姓名照原文保留
訴訟代理人96標記是否律師
迴避大法官60
鑑定人或專家40
關係人39憲訴法新制,含法人團體
未參與評議大法官18人次,集中於 114–115 年 6 件
法庭之友11憲訴法新制
「未參與評議」是六件判決逼出來的欄位。憲判114-01 與 115-01 至 115-05,判決正文都逐字寫著「現任大法官 8 人中,有 3 位大法官……持續拒絕參與評議,致本庭實際上得進行評議的大法官為 5 人」。這既非迴避也非參與,原本六個人物欄位一個都放不進去。

三、驗證機制

鐵律:每一筆判斷都必須附上原文的逐字證據句,中段可用「……」節略,但每一段都必須是該案卡片原文的連續子字串。原文沒寫的一律填 null,不臆測、不補外部法學知識。

三道程式驗證,全庫 34,739 條證據句:

  1. 子字串驗證 —— 證據句去空白後為卡片原文之連續子字串。失敗 0
  2. 片段順序驗證 —— 以「……」節略者,各片段在原文中的出現順序須遞增。失敗 0
  3. 欄位齊備與碼域合法 —— 全庫 870 件一律 v2.6.1,無缺漏。
第二道檢查是後來才補的,而且補得有必要。最初的驗證器只檢查「每個片段都是原文子字串」,沒有檢查片段的先後順序,因而放行了 129 條順序與原文相反或跳接的證據句,分布在 77 件。片段本身都是真原文,但拼接順序不對,引述出來的意思可能與原文不符。已全數依原文順序重排(片段內容一字未動)並在疑義記明,驗證器亦已納入順序檢查。

作業中另發現兩項字元層級的問題:卡片含 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 件沒有大法官名單。這是資料源的缺漏,不是標註問題。

60 件補收署名列的來源(憲判 57、釋字 3)
來源件數說明
WebFetch 抓官網45憲判 42、釋字 3
官網封存 HTML2本地已存的原始頁面
Claude in Chrome 開頁擷取13長判決,WebFetch 有固定長度上限抓不到文末

那 13 件不是抓不到,是工具限制:WebFetch 轉 markdown 時有長度上限,以「照抄你看到內容的最後 N 字」探測,四種問法下截斷點完全相同;已排除 print 參數、判決清單頁、舊站、archive、Ajax 端點等替代路徑,最後改用瀏覽器直接讀頁面文字。補收後 57 件憲判署名列全部到位,並補得兩筆先前漏掉的迴避記載。

方法說明對應編碼手冊 v2.7,手冊全文見「檔案與重現」分頁。

標註流程

前處理 → 五層標註 → 驗證與併檔,以及編碼手冊的回饋迴圈

實線=主資料流 · 虛線=回饋迴圈 · 橘色=已知缺口

前處理層 PREPROCESSING 憲法法庭官網 docdata.aspx 870 個頁面.已含 OCR 文字,不需自行辨識 建置資料庫.py 解析頁面區塊 → 資料庫.json(870 筆) 解釋文/理由書/相關文件/主文/理由 意見書 1,680 篇(含全文 1,661 篇) ▲ 僅收意見書;其餘附件文字同在頁面內卻被丟棄 署名列補收 建庫解析器只收「有段落編號」者,憲判署名列 落在末段編號之後被丟掉,事後補回 60 件 WebFetch 45/封存 HTML 2/Chrome 13 全文抽取_建卡片.py 區塊固定順序組成純文字檔 → 卡片 870 張 合計 4,798,409 字.中位 3,489.最長 79,629 +署名列(補收) +意見書清單(僅標題) 卡片是標註者唯一的閱讀範圍,也是證據句的比對基準 未收進卡片(官網頁面內其實都有文字) · 主文立場表 57 件 ← 投票模式的原始來源 · 言詞辯論筆錄 含出庭人員與問答全文 · 判決摘要/鑑定意見/法庭之友一覽表 · 意見書全文 1,941 萬字(=本文的 4.47 倍) 標註層 ANNOTATION(碼表 v2.7) 卡片 一案一張,五層同時產出 鐵律:每筆判斷附逐字證據句;原文沒寫填 null,不臆測 A 程序層 聲請人(S碼)/聲請日期/確定終局裁判(D碼)/原因案件 聲請依據/受理範圍/言詞辯論/併案/暫時處分 聲請人姓名 1,696 B 實體層 客體型態 870 合憲性審查602/統一解釋117/補充66/憲法疑義61/裁判審查2 系爭規定・審查基準・解釋客體憲法條文・比例原則・附隨命令 審查標準 922 筆(逐爭點) 未明示807/寬鬆58/嚴格32/中度25 逐系爭規定結論 1,841 筆 每筆含客體種類與 R 碼 C 引用層 9,008 筆 引用法規5,900/引用釋憲2,171/判例決議325/函釋289 行政規則129/外國法125/公約69 每筆標出處:本庭論理/聲請意旨/關係機關主張/關係人/被審查客體內文 D 相關文件層 文件類型/聲請機關或聲請人/聲請人所引 580 件有(290 件官網無此區塊) E 人物層 參與大法官 12,460 筆/129 位 · 其他載明人物 2,177 訴訟代理人96/迴避60/鑑定人40/關係人39/法庭之友11 未參與評議大法官 18 人次(集中於 114–115 年 6 件) 驗證與產出 VERIFY & MERGE 三道程式驗證 ① 證據句為卡片原文之連續子字串 ② 節略片段順序須與原文一致 ③ 欄位齊備與碼域合法 34,739 條證據句 失敗 0 併檔 6 個長表 案件層 870 · 逐系爭規定結論 1,841 參與大法官 12,460 · 迴避 60 引用釋憲 2,171 · 其他載明人物 2,177 字號正規化 99.8%(5 筆為承前指稱) 「上開解釋」「前揭本院解釋先例」無法還原 引用網絡 2,071 條邊 526 則被引解釋 僅取「出處=本庭論理」 全取會把密度灌大約 5% 成果 870 個 JSON(17.1 MB)+ 6 個 CSV 全庫一律 v2.6.1,無欄位缺漏 標註指示與升級指示均可重跑 編碼手冊回饋迴圈 v1 → v2.6.1(七次修訂,每次全量回填) 標註者遇到「原文有、碼表沒欄位」時回報 → 若多批獨立回報同一缺口則修訂碼表 → 已標案件全部升級到新版 v2.1 結論切分單位 · v2.2 其他載明人物(8 批中 6 批獨立回報) · v2.3 參與大法官+客體型態(10 批中 8 批) v2.4 裁判憲法審查+客體種類 · v2.5 引用函釋(4 批) · v2.6 引用行政規則+未參與評議(各 4 批以上) · v2.6.1 暫時處分口徑 回填:已標案件全部升級到新版後重新標註 主資料流 回饋迴圈 已知缺口 © 釋憲及憲法法庭資料庫

與言詞辯論筆錄標註流程的差別

本流程的標註對象是法庭自己寫的判決與解釋本文,產出的是實體法判斷(客體型態、系爭規定、審查標準、R 碼)與引用網絡。言詞辯論筆錄標註的對象是庭上各方說了什麼,產出的是發言功能(陳述/提問/回應)、問答對應關係與出席方的階層歸屬。兩者的語料、單位與變項都不同,不能互相取代。

本流程沒有 OCR 與錯字校正階段,因為憲法法庭官網頁面已內嵌 OCR 後的文字。但也因此暴露一個缺口:頁面內同樣內嵌了立場表、言詞辯論筆錄、鑑定意見等附件的文字,建庫時只收了意見書。詳見「缺口與爭點」分頁。

全部 870 件依編碼手冊 v2.7 標註,五層同時產出;每筆判斷附逐字證據句,已回比卡片原文驗證(子字串與片段順序皆零失敗)。搜尋涵蓋 A/B/E 三層全文。
從左側選一件

缺口與爭點

哪些沒有做、為什麼,以及尚未解決的判斷分歧

870 件全部標註完成,沒有任何一件被跳過或抽樣

一、有全文但未標註:大法官意見書

1,680
意見書篇數
分布於 329 件
1,661
已有全文者
19 篇僅有標題
1,941萬
全文字數
本文的 4.47 倍
253
標題含「加入」
可讀出意見結盟

全文早已存在於資料庫,但沒有進入卡片、也沒有標註。理由是量體 —— 1,941 萬字是本文 434 萬字的 4.47 倍,塞進卡片會使標註對象失焦。折衷做法是把 1,680 篇標題收進卡片:標題本身載明「某大法官提出、某大法官加入」,253 篇含「加入」,光靠標題就能建出意見結盟網絡。

二、官網頁面裡有文字,但建庫時被丟棄

這是目前最大的一個缺口。建庫腳本只收標題含「意見書」的附件,其餘一律略過 —— 但那些附件的 OCR 文字同樣內嵌在官網頁面裡,不需要另外下載 PDF,也不需要自行 OCR。以四件封存的憲判為樣本,375 個附件中只收了 38 個意見書,約一成
被丟棄的附件為什麼重要
主文立場表逐項記載每位大法官對主文各款的立場。投票模式分析唯一的原始來源 —— 目前只知道誰參與了合議庭,不知道每個人在每一款上怎麼投
言詞辯論筆錄含出庭人員名單、審判長諭知、各方陳述全文。可支撐發言功能與問答結構的標註
判決摘要書記廳依主文及理由摘錄
鑑定意見書、法庭之友意見書、專家學者一覽表憲訴法新制的外部參與,目前只有姓名與件數
聲請書、迴避裁定、更正裁定程序歷程

要確知全庫實際有多少件有立場表、多少件有筆錄,需要重跑一次建庫(把附件過濾拿掉)。這是一行程式的修改。

三、欄位為空,但原文本來就沒有

欄位為空件數原因
主筆大法官813「主筆大法官記載」是憲判字才有的體例
確定終局裁判456機關聲請、法官聲請、憲法疑義解釋本來就沒有
D 層(相關文件)290官網原文無此區塊
聲請人104早期解釋常不載聲請人,僅記「據某機關函」
系爭規定65憲法疑義解釋之客體為憲法條文本身

一律填 null 或空陣列並在疑義記明。依鐵律,寧可留空也不推定。

四、其他階段的涵蓋率

檔案列數涵蓋件數性質
確定終局裁判.csv1,075870全庫皆有列,但僅 306 列解析出實際案號
案件歷程.csv392101能力上限
法官參與.csv68670同上
辯護型態變化.csv8643同上
釋憲結果.csv(舊)232232已被本次標註取代
101 件與 232 件是兩種完全不同的「不足」。

案件歷程的 101 件是能力上限。它要拿釋憲案的確定終局裁判,回到司法院裁判書資料裡把整條審級鏈找出來。這只有在裁判書資料裡找得到那筆案號才做得成 —— 確定終局裁判有 1,075 列橫跨 870 件,但能解析出實際案號的只有 306 列、對應 101 件。其餘不是沒標,是資料裡根本沒有對應的裁判書。硬要湊到 870 只能靠猜。

釋憲結果的 232 件是工作未完成。它的分母是解釋文本身,而 870 件的解釋文全部都在。本次 870 件全部有 R 碼、每筆附證據句,還多了逐系爭規定 1,841 筆的層級。

五、判斷爭點與 v2.7 的三項裁決

本次 R 碼與既有「釋憲結果.csv」有 232 件重疊,原先不一致 9 件。曾請一位標註者在不知道任何一方編碼的情況下重新判斷這 9 件,結果為 4:5 —— 兩邊各對一半。

4:5 說明這 9 件不是誰標錯,而是編碼手冊有三個洞。再重標幾次也收斂不了,必須先裁決規則。三項裁決已寫入 v2.7,並依此複核 107 件(全部 R6 案 65 件、含個案裁判結論者 19 件、違憲與合憲並存於不同系爭規定者 28 件、邊界案例 10 件)。

裁決一:裁判憲法審查改用 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.7J 碼
憲判111-08R3R1R8J1
憲判113-04R3R1R5J1
憲判112-07R6R2R2J1
釋字0739R6R2R6
憲判111-18R4R4R5J3
憲判113-03R5R5R5J1
憲判115-01R5R5R5J1
釋字0709R6R6R6
釋字0778R6R6R6
複核過程中標註者反過來指出裁決本身的兩處瑕疵,都已採納。其一,我原本寫「C2 優先:違憲+定期失效一律 R2」,與裁決二明示釋字0709 應歸 R6 相衝突;三批標註者各自獨立指出 C2 原文為「不得歸 R1」,射程僅及 R1/R2 之分界,不排除 R6。其二,裁決二的反面情形原僅列 R5 與 R1/R2,漏列 R3(釋字0806 即為此型:同一規定之範圍限定、主文無失效宣告)。兩處均已補正入手冊。
本頁所列缺口均為主動揭露,非事後被指出。

檔案與重現

產出清單、資料字典要點,以及如何自行驗證

全部檔案均為純文字(JSON/CSV/MD),無專有格式

產出清單

路徑規模內容
成果/<案號>.json870 檔 / 17.1 MB五層完整標註,含所有證據句與疑義
卡片/<案號>.txt870 檔 / 13.0 MB標註時實際閱讀的全文,證據句的比對基準
併檔/案件層.csv870 列一案一列,可直接分析
併檔/逐系爭規定結論.csv1,841 列含客體種類與 R 碼
併檔/參與大法官.csv12,460 列案號 × 姓名 × 是否主席 × 職銜
併檔/引用釋憲.csv2,171 列含被引正規化與出處
併檔/引用網絡_邊表.csv2,071 列僅取本庭論理,可直接做網絡
併檔/其他載明人物.csv2,177 列
併檔/迴避大法官.csv60 列
碼表_全文抽取.mdv2.6.1編碼手冊,含七次修訂的完整理由
標註指示.mdup26_指示.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。