酒駕判決書文字資料清理與結構化

這次專題基於「民眾對於酒駕者的判刑度不理解,社會輿論缺乏針對酒駕修法的背景脈絡」出發,搜集了大量的酒駕判決書,但判決書以文字寫成,刑度、罰金或其他背景分析,都需要經過資料清理與轉化,才能進一步統計。

這次使用的判決書總數量達49萬份,若以人力編碼曠日廢時,且恐面臨編碼員信度考驗。這次我們以正規表達式(regular expression)鎖定文字特徵萃取,以程式掃描文字、輔以人工抽查,以確保分析數據能維持一定的正確性。

本專題以python進行資料整理與分析,這篇notebook會按步驟說明「不能安全駕駛」文字清理使用的regex模式說明,並附上酒駕致人於死、酒駕致人受傷的程式碼。

引入文字清理使用的模組

  • 引入regular expresssion的re模組、數據使用的pandas模組
  • 試著讀入我們open data
In [14]:
import re
import pandas as pd

df1 = pd.read_csv('/Volumes/Untitled/opendata/一般酒駕/drunkDrive_2013.csv',sep='\t')
df2 = pd.read_csv('/Volumes/Untitled/opendata/fatal_export.csv',sep='\t')
df3 = pd.read_csv('/Volumes/Untitled/opendata/hurt_export.csv',sep='\t')

df3.head(5)
Out[14]:
Unnamed: 0 主文 地院 不能安全駕駛有期徒刑_字串 不能安全駕駛有期徒刑_可計算 不能安全駕駛有期徒刑_文字分組 過失傷害有期徒刑_字串 過失傷害有期徒刑_可計算 過失傷害有期徒刑_文字分組 是否公訴不受理 酒精濃度 是否累犯 車種 2013年前後 2011年前後 判決內容
0 0 主文乙○○駕駛動力交通工具肇事,致人受傷而逃逸,處有期徒刑陸月,如易科罰金,以新臺幣參仟元折... 台北 2007.0 NaN NaN *不受理 NaN 公訴不受理 1 1.24 0 小客車 before before 臺灣臺北地方法院刑事判決公 訴 人 臺灣臺北地方法院檢察署檢察官被告 乙○○上列被告因公共危...
1 1 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金銀元貳萬肆仟元即新臺幣柒萬貳仟元,... 台北 2005.0 NaN NaN 50 50.0 大於1月,2月以下 0 0.76 0 機車 before before 臺灣臺北地方法院刑事判決 95年度交易緝字第6號公 訴 人 臺灣臺北地方法院檢察署檢察官被告...
2 2 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣陸萬元,如易服勞役,以新臺幣... 台北 2007.0 NaN NaN 59 59.0 大於1月,2月以下 0 NaN 0 小貨車 before before 臺灣臺北地方法院刑事判決  96年度交訴字第8號公 訴 人 臺灣臺北地方法院檢察署檢察官被告...
3 3 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金銀元壹萬元即新臺幣參萬元,如易服勞... 台北 2005.0 NaN NaN 20 20.0 1月以下 0 0.47 0 機車 before before 臺灣臺北地方法院刑事判決 95年度交易字第537號公 訴 人 臺灣臺北地方法院檢察署檢察官被...
4 4 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,科罰金新臺幣壹萬伍仟元,如易服勞役,以新... 台北 2007.0 NaN NaN *不符 NaN 其他 0 0.59 0 小客車 before before 臺灣臺北地方法院刑事判決 95年度交易字第769號公 訴 人 臺灣臺北地方法院檢察署檢察官被...

不能安全駕駛切刑期、切罰金

  • 判決書全文是非結構化資料,雖然述說同一件事,但是會因不同法官、不同時期,有各種不同的寫法,甚至有錯漏字,因此捕捉特徵的寫法有些複雜,以下會逐步說明。
  • 判刑、判罰金都會出現在「判決書主文」中,我們讀入主文的資料進行萃取。至於酒精濃度、車種、教育程度則是從「判決書全文」萃取。
  • 萃取時會取出比較大段的部分,再刪去不需要的部分。例如萃取「不能安全駕駛罪」判刑,會先從主文找到「而駕駛動力交通工具,處有期徒刑貳月」,而不直接找「處有期徒刑貳月」的片段,避免取到非不能安全駕駛罪的資料;接著再從中把「而駕駛動力交通工具」、「處有期徒刑」等字刪除。
  • 寫regex pattern時,我習慣在 regular expression101 網站操作,好處是模式結果可視化,若100筆案例、500筆案例大都可以抓到結果,再回到python批次大量操作。
使用於萃取不能安全駕駛刑期的過程畫面
當大部分的案例都有色塊時,代表模式可以抓取我們指定的特徵

不能安全駕駛判決的特徵

要能歸納出模式,必須要花費時間找出判決書寫法的「樣態」,再針對這些樣態進行模式描寫(regular expression pattern)。

例如,酒後駕車在刑法中歸類於不能安全駕駛動力交通工具,查看判決書會發現,有的判決書會提出酒精濃度超過標準、有的只寫不能安全駕駛。經過大量比對後,我們以a1、a2作為法官描述「不能安全駕駛罪」的特徵。

a1是法官提出酒精濃度超過標準,其中包含了幾個寫作用詞的變形,如酒精濃度有吐氣或血液兩種檢測、酒駕標準因年代不同而有零點二五、零點五五等不同標準、標點符號的使用習慣不同、行文的輔助詞(而、之)不同,針對這些詞出現與否進行正規表達式的描寫。

a2則是可以承續酒精濃度的句子,也可以針對比較簡寫的狀況進行抓取。其中融合三種可能描述:

  • 甲○○吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具
  • 甲○○服用酒類不能安全駕駛動力交通工具而駕駛
  • 甲○○犯不能安全駕駛動力交通工具罪

利用a1+a2即可標記出大部分的「不能安全駕駛罪」用詞。

不能安全駕駛罪這20年來有罰金、拘役、有期徒刑等處刑方式,因此以b1鎖定自由刑的用詞、b2鎖定罰金的用詞。以自由刑的b1為例,可以萃取這些語句:

  • 甲○○吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑貳月
  • 甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期刑貳月
  • 甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾玖日
  • 甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑陸月

接著我們再分流,以c1鎖定處刑數量、c2鎖定罰金數量。這部分主要是在處理數字組合與單位(年月日、元)。以罰金的c2為例,可以萃取這些語句:

  • 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣玖萬元
  • 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,科罰金新臺幣柒萬伍仟元

綜上所述,我們以a1+a2+b1+c1來萃取不能安全駕駛遭處有期徒刑的語句、以a1+a2+b2+c2來萃取不能安全駕駛遭科罰金的語句。

In [46]:
#鎖定「不能安全駕駛罪」用詞
a1 = "(交通工具(而)*[,,,]*有*(吐氣|血液中)(所含)*酒精濃度達(每公升|百分之)*零點(貳伍|二五|伍伍|五五)(毫克)*以上(之情形)*|"
a2 = "(不能安全駕駛)*(而駕駛)*動力交通工具罪*(而駕駛)*者*)"


#鎖定累犯註記、判刑(拘役、有期徒刑)用詞
b1 = "[,,,](累犯)*(共*罪)*[,,,]*[各均有]*處*[,,]*(有期徒*刑徒*|拘役)"
b2 = "[,,,](累犯)*(共*罪)*[,,,]*[各均有]*[處科]*[,,]*罰金(新[台臺]幣)*"


#鎖定處刑用詞
c1 = "[一二三四五六七八九十壹貳參肆伍陸柒捌玖拾廿卅1234567890]*(年|個*月|日)"
c2 = "[一二三四五六七八九十壹貳參肆伍陸柒捌玖拾廿卅百佰千仟萬1234567890]*元*"


#找出剝奪自由刑之模式組合
findimprison = a1+a2+b1+c1


#找出罰金之模式組合
findpenalty = a1+a2+b2+c2

不能安全駕駛無罪部分與取出數字方式

透過findimprison與findpenalty兩種模式可以找出大部分的處刑,但會發現判決書中也有無罪的狀況,因此再增加一種判斷無罪的模式。

當我們有能力從文字中定位單一罪行的片段時,再從中取出我們需要的數字,可以提升精準度。這個過程如下:

  1. 【判決主文】乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又因過失致人於死,處有期徒刑壹年;又駕駛動力交通工具肇事,致人死傷而逃逸,處有期徒刑捌月;應執行有期徒刑壹年陸月。
  2. 【鎖定不能安全駕駛】不能安全駕駛動力交通工具而駕駛,處有期徒刑參月
  3. 【取出數字】參月

當判斷出處有期徒刑、罰金、無罪,分別切出結果,再把非刑期與罰金的文字都刪除(如罰金、有期徒刑、累犯、標點符號等),就可以得到量刑。以這種方式逐步建立可操作的判決書結構化資料。

In [91]:
#無罪的模式組合
d = "[,,,、,]*部*[分份]*[,,,、,]*均*無罪"
findun = a2+d


#把非刑期、罰金的描述都刪掉(很暴力)
rep = "情形|罰金|科|處|新[台臺]幣|銀|元|不能安全|駕駛|動力|交通工具|而|吐氣|所含|酒精濃度|達|每公升.*毫克|以上|而|者|,|,|、.*|;.*|。.*|累犯|共.罪|有期徒*刑徒*|罪|拘役|過失|如易科.*|被訴.*|應執行.*|緩刑.*|各|均|部[份分].*|共|有|之"

實際運作方法

接下來以迴圈方式進行一連串的判斷:

  • 是否判有期徒刑,取出量刑
  • 是否判罰金,取出量刑
  • 是否無罪
In [92]:
result_imprison_text = []
result_penalty_text = []

for i in df1['主文']:
    
    if bool(re.search(findimprison, i)):
        r  = re.sub(rep,"",re.search(findimprison, i).group())
        result_imprison_text.append(r)
        result_penalty_text.append('')
        
    elif bool(re.search(findf,i)):
        r  = re.sub(rep,"",re.search(findf,i).group())
        result_imprison_text.append("")
        result_penalty_text.append(r)
        
    else:
        if bool(re.search(findn,i)):
            result_imprison_text.append("無罪")
            result_penalty_text.append("")
            
        else:
            result_imprison_text.append("")
            result_penalty_text.append("")
            

國字數字轉成數字function

抓出刑期與罰金的資訊之後,需將國字換為數字。另外寫成了兩個函式:todays(x) 將刑期國字換為數字、tomoney(x) 將罰金國字換為數字。

步驟大致是:

  • 刑期需確定年月日單位,並依一年365日、一月30日進行換算
  • 罰金需確定位數
  • 將國字取代為數字
In [49]:
def repl(g):
    u = ['壹','貳','參','肆','伍','陸','柒','捌','玖','拾','廿','卅','一','二','三','四','五','六','七','八','九','十',0,'1','2','3','4','5','6','7','8','9','0','佰','仟','萬','百','千']
    p = u.index(g)
    n = [1,2,3,4,5,6,7,8,9,10,20,30,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,0,100,1000,10000,100,1000]
    return n[p]

def nds(y):
    if bool(re.search('[壹貳參肆伍陸柒捌玖拾廿卅佰百仟千萬一二三四五六七八九十1234567890]', y)):
        if len(y) == 1:
            return repl(y)

        elif len(y) == 2:
            if y[1]=='拾':
                return repl(y[0])*repl(y[1])

            elif y[0] =='拾' or y[0] =='廿' or y[0]=='卅':
                return repl(y[0])+repl(y[1])

            else:
                return repl(y[0])*10 + repl(y[1])

        elif len(y) == 3:
            return repl(y[0])*repl(y[1])+repl(y[2])

        else:
            return repl(y)
    else:
        return 0

def todays(x):
    if '年' in x or '月' in x or '日' in x:
        try:
            y = x.index("年")
        except:
            y = 0
        try:
            m = x.index("月")
        except:
            m = 0
        try:
            d = x.index("日")
        except:
            d = 0

        if y>0:
            year = x[0:y]

            if m>0:
                month = x[0+y+1:m]

                if d>0:
                    day = x[0+m+1:d]
                else:
                    day = ""
            else:
                month = ""

                if d>0:
                    day = x[0+y+1:d]
                else:
                    day = ""
        else:
            year = ""

            if m>0:
                month = x[0:m]

                if d>0:
                    day = x[0+m+1:d]

                else:
                    day =""
            else:
                month = ""
                day = x[0:d]

        res = nds(year)*365+nds(month)*30+nds(day)
        return res

    else:
        return '*'+x

def tomoney(x):
    x = x.replace('千','仟').replace('百','佰')
    if '萬' in x or '仟' in x or '佰' in x:
        try:
            w = x.index("萬")
        except:
            w = 0
        try:
            t = x.index("仟")
        except:
            t = 0
        try:
            h = x.index("佰")
        except:
            h = 0

        if w>0:
            wan = x[0:w]

            if t>0:
                tho = x[0+w+1:t]

                if h>0:
                    hun = x[0+t+1:h]
                else:
                    hun = ""
            else:
                tho = ""

                if h>0:
                    hun = x[0+w+1:t]
                else:
                    hun = ""
        else:
            wan = ""

            if t>0:
                tho = x[0:t]

                if h>0:
                    hun = x[0+t+1:h]

                else:
                    hun =""
            else:
                tho = ""
                hun = x[0:h]

        res = nds(wan)*10000+nds(tho)*1000+nds(hun)*100
        return res
    else:
        return '*'+x
In [94]:
result_imprison_num = []
for j in result_imprison_text:
    try:
        result_imprison_num.append(todays(j))
    except:
        result_imprison_num.append('*'+j)

result_penalty_num = []
for j in result_penalty_text:
    try:
        result_penalty_num.append(tomoney(j))
    except:
        result_penalty_num.append('*'+j)

製作成一表格檢查正確與否,是否需要人工修正

In [95]:
dfnew = pd.DataFrame()

dfnew['主文'] = df1['主文']
dfnew['不-刑國字'] = result_imprison_text
dfnew['不-刑'] = result_imprison_num
dfnew['不-罰國字'] = result_penalty_text
dfnew['不-罰'] = result_penalty_num

dfnew
Out[95]:
主文 不-刑國字 不-刑 不-罰國字 不-罰
0 主文黃士桓吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑貳月,併科罰... 貳月 60
1 主文郭庭宏吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑貳月,併科罰... 貳月 60
2 主文陳弘岳吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑參月,如易科... 參月 90
3 主文張名揚服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾玖日,如易科罰金,以新臺幣壹仟... 伍拾玖日 59
4 主文黃有利服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣陸萬元,如易服勞役,以新臺幣... 陸萬 60000
5 主文曾昱詮(原名曾敏揚)服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣參萬元,如易服... 參萬 30000
6 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑陸月,併科罰金新臺幣拾貳... 陸月 180
7 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣陸萬元,如易服勞役,以新臺幣... 陸萬 60000
8 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣陸萬元,如易服勞役,以新臺幣... 陸萬 60000
9 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑陸月,如易科罰金,以新臺幣壹仟... 陸月 180
10 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處拘役伍拾日,如易科罰金,以新臺幣... 伍拾日 50
11 主文賴清旺服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣捌萬元,如易服勞役,以新臺幣... 捌萬 80000
12 主文胡志安服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑陸月,如易科罰金,以新臺... 陸月 180
13 主文仁欽諾布服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣玖萬元,如易服勞役,以新臺... 玖萬 90000
14 主文劉俊能服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾玖日,如易科罰金,以新臺幣壹仟... 伍拾玖日 59
15 主文鄧文君服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾日,併科罰金新臺幣壹拾伍萬元,... 伍拾日 50
16 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣伍萬元,如易服勞役,以新臺幣... 伍萬 50000
17 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣捌萬元,如易服勞役,以新臺幣... 捌萬 80000
18 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣陸萬元,如易服勞役,以新臺幣... 陸萬 60000
19 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役參拾日,如易科罰金,以新臺幣壹仟元... 參拾日 30
20 主文胡添財服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月,如易科罰金以新臺幣壹仟元... 參月 90
21 主文洪浚瑋服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,併科罰金新臺幣柒萬伍仟元... 貳月 60
22 主文甲○○犯不能安全駕駛動力交通工具罪,累犯,處拘役參拾日,併科罰金新臺幣陸萬元,拘役如易科... 參拾日 30
23 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,科罰金新臺幣柒萬伍仟元,如易服勞役,以新... 柒萬伍仟 75000
24 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣肆萬元,如易服勞役,以新臺幣... 肆萬 40000
25 主文周恆緯犯不能安全駕駛動力交通工具罪,處罰金新臺幣陸萬元,如易服勞役,以新臺幣壹仟元折算壹日。 陸萬 60000
26 主文邱文生服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月,併科罰金新臺幣伍萬元,有... 參月 90
27 主文甲○○犯不能安全駕駛動力交通工具罪,處罰金新臺幣陸萬元,罰金如易服勞役,以新臺幣壹仟元折... 陸萬 60000
28 主文盧明旺服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑肆月,如易科罰金,以新臺... 肆月 120
29 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣玖萬元,如易服勞役,以新臺幣... 玖萬 90000
... ... ... ... ... ...
42336 主文吳褔生駕駛動力交通工具而吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑貳月,如易科... 貳月 60
42337 主文張憲忠駕駛動力交通工具而吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑參月,如易科... 參月 90
42338 主文邱武漢駕駛動力交通工具而吐氣所含酒精濃度達每公升零點二五毫克以上,累犯,處有期徒刑參月,... 參月 90
42339 主文李文通吐氣所含酒精濃度達每公升零點貳伍毫克以上而駕駛動力交通工具,處有期徒刑貳月,如易科... 貳月 60
42340 主文丁德真犯不能安全駕駛動力交通工具罪,處有期徒刑貳月,如易科罰金,以新臺幣壹仟元折算壹日。 貳月 60
42341 主文田光義吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,累犯,處有期徒刑參月,... 參月 90
42342 主文李吉雄吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑貳月,如易科... 貳月 60
42343 主文胡忠駕駛動力交通工具,吐氣所含酒精濃度達每公升零點二五毫克以上,累犯,處有期徒刑陸月,如... 陸月 180
42344 主文游智雄吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,累犯,處有期徒刑貳月,... 貳月 60
42345 主文陳萬生吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,累犯,處有期徒刑參月,... 參月 90
42346 主文古錦盛吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑參月,如易科... 參月 90
42347 主文林金龍吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑壹月,如易科... 壹月 30
42348 主文林志明吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑參月,如易科... 參月 90
42349 主文楊欣晨吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑參月,如易科... 參月 90
42350 主文劉蒲吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,累犯,處有期徒刑參月,如... 參月 90
42351 主文劉春清吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑貳月,如易科... 貳月 60
42352 主文黃辰姍吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑貳月,如易科... 貳月 60
42353 主文潘義谷吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑陸月,如易科... 陸月 180
42354 主文連總戎駕駛動力交通工具而吐氣所含酒精濃度達每公升零點二五毫克以上,累犯,處有期徒刑肆月,... 肆月 120
42355 主文高志偉駕駛動力交通工具而有吐氣所含酒精濃度達每公升零點二五毫克以上情形,處有期徒刑參月,...
42356 主文林志宏犯不能安全駕駛動力交通工具罪,處有期徒刑參月,如易科罰金,以新臺幣壹仟元折算壹日。 參月 90
42357 主文林俊良駕駛動力交通工具吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑參月,如易科罰... 參月 90
42358 主文榮信富犯不能安全駕駛動力交通工具罪,累犯,處有期徒刑參月,如易科罰金,以新臺幣壹仟元折算壹日。 參月 90
42359 主文林國光犯不能安全駕駛動力交通工具罪,處有期徒刑貳月,如易科罰金,以新臺幣壹仟元折算壹日。... 貳月 60
42360 主文潘復昌駕駛動力交通工具而有吐氣所含酒精濃度達每公升零點二五毫克以上之情形,處有期徒刑貳月... 貳月 60
42361 主文簡正剛駕駛動力交通工具吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑陸月,如易科罰... 陸月 180
42362 主文謝光亮駕駛動力交通工具,吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑參月,如易科... 參月 90
42363 主文李雅君駕駛動力交通工具吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑肆月,如易科罰... 肆月 120
42364 主文吳美珍駕駛動力交通工具而吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑貳月,如易科... 貳月 60
42365 主文陳庚華駕駛動力交通工具吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑參月,如易科罰... 參月 90

42366 rows × 5 columns

過失致死的模式與切刑期

In [96]:
findimprison = "致人於死[者罪]*[,,](累犯)*(共*罪)*[,,]*[各均]*處*[,,]*(有期徒*刑*徒*|拘役)[一二三四五六七八九十壹貳參肆伍陸柒捌玖拾廿卅1234567890]*(年|個*月|日)*"
findun = "(過失致人於死|過失傷害)[、,]*部*[份分]*[、,]*(均)*無罪"
rep = "致人於死|者|,|,|、.*|;.*|。.*|累犯|處|有期徒*刑徒*|罪|拘役|過失|如易科.*|被訴.*|應執行.*|緩刑.*|各|均|部份.*|共"

result_imprison_text = []
for i in df2['主文']:
    try:
        r  = re.sub(rep, "", re.search(findimprison, i).group())
        result_imprison_text.append(r)
        
    except:
        if bool(re.search(findn, i)):
            result_imprison_text.append("無罪")
        else:
            result_imprison_text.append("")

result_imprison_num = [todays(j) for j in result_imprison_text]

dfnew = pd.DataFrame()
dfnew['主文'] = df2['主文']
dfnew['死-刑國字'] = result_imprison_text
dfnew['死-刑'] = result_imprison_num
dfnew
Out[96]:
主文 死-刑國字 死-刑
0 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛者,處有期徒刑參月,如易科罰金,以銀元參佰... 伍月 150
1 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又因過失致人於死,處有期... 壹年 365
2 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣參萬元,如易服勞役,以新臺幣... 肆月 120
3 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑肆月;又因過失致人於死,處有期... 捌月 240
4 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,如易科罰金,以新臺幣壹仟... 陸月 180
5 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月,如易科罰金,以銀元參佰元... 伍月 150
6 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑陸月,減為有期徒刑參月;又因過... 捌月 240
7 主文乙○○因過失致人於死,處有期徒刑肆月,如易科罰金,以新臺幣壹仟元折算壹日;又服用酒類,不... 肆月 120
8 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾日,如易科罰金,以新臺幣壹仟元... 陸月 180
9 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役參拾日,如易科罰金,以新臺幣壹仟元... 陸月 180
10 主文甲○○犯不能安全駕駛動力交通工具罪,處有期徒刑貳月;又犯過失致人於死罪,處有期徒刑捌月。... 捌月 240
11 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑陸月;又因過失致人於死,處有期... 壹年 365
12 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑肆月;又因過失致人於死,處有期... 拾月 300
13 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又從事業務之人,因業務上... 拾月 300
14 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月;又從事業務之人,因業務上... 拾月 300
15 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,科罰金新臺幣捌萬元,如易服勞役,以新臺幣... 壹年 365
16 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑肆月,如易科罰金,以新臺幣壹仟... 陸月 180
17 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣捌萬元,如易服勞役,以新臺幣... 拾月 300
18 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣拾萬元,如易服勞役,以新臺幣... 捌月 240
19 主文甲○○犯不能安全駕駛動力交通工具罪,處有期徒刑參月。又犯過失致人於死罪,處有期徒刑拾月。... 拾月 300
20 主文陳怡昇服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣捌萬元,如易服勞役,以新臺幣... 陸月 180
21 主文高長震服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又從事業務之人,因業務上... 壹年 365
22 主文羅斌瑋服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又因過失致人於死,處有期... 壹年 365
23 主文黃志文服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑伍月;又因過失致人於死,處有期... 捌月 240
24 主文謝承晉服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑伍月;又因過失致人於死,... 壹年 365
25 主文彭紹先犯不能安全駕駛動力交通工具罪,處有期徒刑肆月,如易科罰金,以新臺幣壹仟元折算壹日;... 伍月 150
26 主文李黎盈犯不能安全駕駛動力交通工具致人於死罪,處有期徒刑壹年陸月。緩刑參年,緩刑期間付保護... 壹年 365
27 主文陸宇駕駛動力交通工具,吐氣所含酒精濃度達每公升零點二五毫克以上,因而致人於死,處有期徒刑... 壹年 365
28 主文黃種奇駕駛動力交通工具,吐氣所含酒精濃度達每公升零點二五毫克以上,因而致人於死,處有期徒... 參年 1095
29 主文丁○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又駕駛動力交通工具肇事,... 拾月 300
... ... ... ...
2777 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾日,如易科罰金以參佰元折算壹日... 肆月 120
2778 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾日,如易科罰金,以參佰元折算壹... 陸月 180
2779 主文胡賢昌犯不能安全駕駛動力交通工具致人於死罪,處有期徒刑貳年。 貳年 730
2780 主文甲○○犯不能安全駕駛動力交通工具罪,處有期徒刑貳月;又犯過失致人於死罪,處有期徒刑柒月;... 柒月 210
2781 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月;又因過失致人於死,處有期... 柒月 210
2782 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月;又駕駛動力交通工具肇事,... 陸月 180
2783 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又因過失致人於死,處有期... 柒月 210
2784 主文呂治平犯不能安全駕駛動力交通工具致人於死罪,累犯,處有期徒刑參年肆月。 參年 1095
2785 主文乙○○因過失致人於死,累犯,處有期徒刑陸月,如易科罰金,以參佰元折算壹日。甲○○服用酒類... 陸月 180
2786 主文林心晨吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,累犯,處有期徒刑肆月,... 伍月 150
2787 主文蕭瑞益犯過失致人於死罪,處有期徒刑捌月。又犯不能安全駕駛動力交通工具罪,處有期徒刑參月。... 捌月 240
2788 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處拘役伍拾日,如易科罰金,以新臺幣... 陸月 180
2789 主文甲○○犯不能安全駕駛動力交通工具罪,處有期徒刑參月。又犯過失致人於死罪,處有期徒刑玖月。... 玖月 270
2790 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑陸月。又因過失致人於死,處有期... 壹年 365
2791 主文潘昌林犯不能安全駕駛動力交通工具罪,處有期徒刑貳月;又犯過失致人於死罪,處有期徒刑捌月。... 捌月 240
2792 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役參拾日,如易科罰金,以參佰元折算壹... 陸月 180
2793 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾伍日,如易科罰金,以參佰元折算... 陸月 180
2794 主文方誠賢駕駛動力交通工具而血液中酒精濃度達百分之零點零五以上,因而致人於死,處有期徒刑貳年... 貳年 730
2795 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又因過失致人於死,處有期... 陸月 180
2796 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,如易科罰金,以新臺幣壹仟... 伍月 150
2797 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,如易科罰金,以新臺幣壹仟... 伍月 150
2798 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑伍月;又因過失致人於死,處有期... 壹年 365
2799 主文陳中立服用酒類,不能安全駕駛動力交通工具而駕駛,因而致人於死,處有期徒刑壹年陸月。緩刑參... 壹年 365
2800 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾日,如易科罰金,以參佰元折算壹... 陸月 180
2801 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月;又因過失致人於死,處有期... 柒月 210
2802 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾日,如易科罰金以參佰元折算壹日... 伍月 150
2803 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾日,如易科罰金,以參佰元折算壹... 陸月 180
2804 主文謝裕源服用酒類,不能安全駕駛動力交通工具而駕駛,因而致人於死,處有期徒刑壹年陸月。緩刑參... 壹年 365
2805 主文乙○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月;又因過失致人於死,處有期徒... 柒月 210
2806 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾日,如易科罰金,以參佰元折算壹... 陸月 180

2807 rows × 3 columns

過失傷害的模式與切刑期

In [97]:
findimprison = "(過失)*傷害而*(人(之身體)*|罪)*者*[,,]*(致人*[重受]傷罪*)*[,,](累犯)*(共貳罪)*[,,]*處*[,,]*(拘役|有期徒*刑徒*)([一二三四五六七八九十壹貳參肆伍陸柒捌玖拾廿卅1234567890]*(年|個*月|日))*"
findun = "(過失)*傷害人*(致人*[重受]傷)*罪*嫌*[、,]*(及.*罪)*(部分|部份)*[、,]*(均)*(無罪|公訴不受理|不受理|不理)"
rep = "(過失)*傷害(人(之身體)*|罪)|者|,|,|、.*|;.*|。.*|累犯|處|有期刑|有期徒刑|罪|拘役|過失|如易科.*|被訴.*|應執行.*|緩刑.*|各|均|部份.*|共|致|人|重|受|傷|而|害"

result_imprison_text = []

for i in df3['主文']:
    try:
        r  = re.sub(rep, "", re.search(findimprison, i).group())
        result_imprison_text.append(r)
    except:
        if bool(re.search(findun, i)):
            if "無罪" in re.search(findun, i).group():
                result_imprison_text.append('無罪')
            elif "不受理" in i:
                result_imprison_text.append("不受理")
        else:
            result_imprison_text.append("*不符")

result_imprison_num = [todays(j) for j in result_imprison_text]

dfnew = pd.DataFrame()
dfnew['主文'] = df3['主文']
dfnew['傷-刑國字'] = result_imprison_text
dfnew['傷-刑'] = result_imprison_num
dfnew
Out[97]:
主文 傷-刑國字 傷-刑
0 主文乙○○駕駛動力交通工具肇事,致人受傷而逃逸,處有期徒刑陸月,如易科罰金,以新臺幣參仟元折... 不受理 *不受理
1 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金銀元貳萬肆仟元即新臺幣柒萬貳仟元,... 伍拾日 50
2 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣陸萬元,如易服勞役,以新臺幣... 伍拾玖日 59
3 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金銀元壹萬元即新臺幣參萬元,如易服勞... 貳拾日 20
4 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,科罰金新臺幣壹萬伍仟元,如易服勞役,以新... *不符 **不符
5 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,如易科罰金,以新臺幣壹仟... 不受理 *不受理
6 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾日,如易科罰金,以銀元參佰元即... 參月 90
7 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑拾月;又因過失傷害人,處... 伍月 150
8 主文甲○○攜帶兇器竊盜,累犯,處有期徒刑捌月,減為有期徒刑肆月;扣案六角板手壹支沒收;又服用... 肆月 120
9 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣伍萬元,如易服勞役,以新臺幣... 伍拾日 50
10 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑陸月,如易科罰金,以新臺... 參月 90
11 主文丁○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾玖日,如易科罰金,以新台幣貳仟... 柒月 210
12 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,減為有期徒刑壹月;又因過... 肆月 120
13 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑肆月,如易科罰金以新台幣壹仟元... 肆月 120
14 主文乙○○駕駛動力交通工具肇事,致人受傷而逃逸,處有期徒刑陸月;又服用酒類,不能安全駕駛動力... 不受理 *不受理
15 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,科罰金新臺幣參萬元,如易服勞役,以新臺幣... 不受理 *不受理
16 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月,如易科罰金,以新臺幣壹仟... 肆月 120
17 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾日,如易科罰金,以新臺幣壹仟元... 參月 90
18 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,科罰金新臺幣貳萬元,如易服勞役,以新臺幣... 不受理 *不受理
19 主文乙○○犯不能安全駕駛動力交通工具罪,處拘役參拾日,如易科罰金,以新臺幣壹仟元折算壹日;又... 參月 90
20 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣玖萬元,如易服勞役,以新臺幣... 不受理 *不受理
21 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾伍日,如易科罰金,以新臺幣壹仟... 不受理 *不受理
22 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾伍日,如易科罰金,以新臺幣壹仟... 肆月 120
23 主文乙○○犯不能安全駕駛動力交通工具罪,科罰金新台幣貳萬伍仟元,如易服勞役以新臺幣壹仟元折算... 不受理 *不受理
24 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑伍月,如易科罰金,以新臺幣壹仟... 不受理 *不受理
25 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑肆月;又因過失傷害人,處... 肆月 120
26 主文丙○○犯服用酒類不能安全駕駛動力交通工具罪,累犯,處有期徒刑肆月,如易科罰金,以新臺幣壹... 不受理 *不受理
27 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣壹拾貳萬元,如易服勞役,以新... 參月 90
28 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新台幣柒萬伍仟元,如易服勞役,以新... 伍拾日 50
29 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金新臺幣陸萬元,如易服勞役,以新臺幣... 拾日 10
... ... ... ...
5172 主文陳伯源服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑參月,如易科罰金,以新臺... 參月 90
5173 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,如易科罰金,以新臺幣壹仟... 參月 90
5174 主文甲○○犯不能安全駕駛動力交通工具罪,處有期徒刑肆月,如易科罰金,以新臺幣壹仟元折算壹日;... 陸月 180
5175 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑參月;又因過失傷害人,處有期徒... 伍月 150
5176 主文乙○○犯不能安全駕駛動力交通工具罪,累犯,處有期徒刑參月;又犯肇事致人傷害逃逸罪,累犯,... 不受理 *不受理
5177 主文乙○○犯不能安全駕駛動力交通工具罪,處有期徒刑參月,如易科罰金,以新臺幣壹仟元折算壹日;... 伍拾伍日 55
5178 主文乙○○犯不能安全駕駛動力交通工具罪,處有期徒刑貳月,如易科罰金,以新臺幣壹仟元折算壹日;... 參月 90
5179 主文周子威犯不能安全駕駛動力交通工具罪,處有期徒刑肆月,如易科罰金,以新臺幣壹仟元折算壹日;... 伍拾日 50
5180 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾玖日,如易科罰金,以新臺幣壹仟... 參拾日 30
5181 主文鍾曉虎吐氣所含酒精濃度達每公升零點二五毫克以上而駕駛動力交通工具,處有期徒刑伍月,如易科... 拾伍日 15
5182 主文林慶生服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾伍日,如易科罰金,以新臺幣壹仟... 貳月 60
5183 主文邱久意犯不能安全駕駛動力交通工具罪,處拘役肆拾日,如易科罰金,以新臺幣壹仟元折算壹日;又... 肆拾日 40
5184 主文甲○○犯不能安全駕駛動力交通工具罪,處有期徒刑參月,如易科罰金,以新臺幣壹仟元折算壹日。... 不受理 *不受理
5185 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾伍日,如易科罰金,以參佰元折算... 伍拾日 50
5186 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處有期徒刑貳月,如易科罰金,以參佰... 參月 90
5187 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役貳拾日,如易科罰金,以參佰元折算壹... 貳月 60
5188 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾日,如易科罰金,以參佰元折算壹... 伍拾日 50
5189 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月;又駕駛動力交通工具肇事,... 貳月 60
5190 主文乙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾伍日,如易科罰金,以新臺幣壹仟... 不受理 *不受理
5191 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役伍拾伍日,如易科罰金,以新臺幣壹仟... 貳拾日 20
5192 主文范中興犯刑法第一百八十五條之三第一項第二款之不能安全駕駛動力交通工具罪,處有期徒刑貳月,... 肆月 120
5193 主文高金妹服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾伍日,如易科罰金,以新臺幣壹仟... 不受理 *不受理
5194 主文戊○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金壹萬伍仟元,如易服勞役,以參佰元折... 不受理 *不受理
5195 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處有期徒刑貳月,如易科罰金,以參佰元折算... 貳月 60
5196 主文丁○○被訴服用酒類,不能安全駕駛動力交通工具而駕駛部分,無罪。丁○○、甲○○被訴過失傷害... 不受理 *不受理
5197 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金壹萬元,如易服勞役以參佰元折算壹日... 不受理 *不受理
5198 主文丙○○服用酒類,不能安全駕駛動力交通工具而駕駛,處罰金壹萬伍仟元,如易服勞役,以參佰元折... 參拾日 30
5199 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,處拘役肆拾日,如易科罰金,以參佰元折算壹... 伍拾日 50
5200 主文甲○○服用酒類,不能安全駕駛動力交通工具而駕駛,累犯,處拘役貳拾日,如易科罰金,以參佰元... 肆月 120
5201 主文吳凱圓駕駛動力交通工具而吐氣所含酒精濃度達每公升零點二五毫克以上,處有期徒刑貳月,如易科... 貳月 60

5202 rows × 3 columns

補充說明與資料

  1. 我們非資訊專業出身,程式能力是透過坊間課程、自學、不斷嘗試錯誤摸索而來,程式撰寫的風格、效率、與精確度等層面都有許多有待改進之處,歡迎方家指教。

  2. 這次使用的regular expression由於是處理中文資料,仍在很直觀的層次,大致說明使用到的語法:

    • * (比對零到多個前一個字),用意多是因行文風格不同在省略部分字詞,如:「...致人於死,累犯,處有期徒刑...」、「...致人於死,處有期徒刑...」這兩種句子,以「致人於死,(累犯)*,處有期徒刑」一種模式就可以比對。
    • [] (比對括號中的其中一個字),用意是在處理行文中相同意思,但不同用字的情況,如:部分、部份;標點符號的全半形等情況。
    • | (或 or),用意是在組合各種可能情況,如:五年、5個月、參拾日,三種單位以「年|個*月|日」一種模式比對。