• No results found

Overall - accuracy:0.94, precision:0.89, recall:1.00

Over het hoofd zien - accuracy:0.98, precision:0.80, recall:1.00 Macht over stuur verliezen - accuracy:1.00, precision:1.00, recall:1.00

Out[28]:

u'Op de kruising Van der Mondeweg met de Waaldijk, richting de dijk, heeft een ongeval plaatsgevonden tussen twee personenauto\u2019s. Vermoedelijk w ilde de voorste auto afslaan toen het misging.\n\nHet ongeval gebeurde ron d 13:20 uur. Een auto wilde afslaan in de richting van de dijk, waarna een achteropkomende auto dit over het hoofd zag. Deze klapte hier vervolgens h ard achterop, waardoor er veel schade ontstond. Er lekte ook de nodige oli e. Tenminste \xe9\xe9n auto moet worden afgesleept door een berger.\n\nErg geschrokken\nDe ambulance is ter plaatse ter controle van de inzittenden. Alle inzittenden waren erg geschrokken, maar het is niet bekend of iemand dusdanig gewond is geraakt, dat deze naar het ziekenhuis vervoerd moest wo rden.\n\n\xc9\xe9n rijstrook is enige tijd volledig afgesloten geweest, wa t voor de nodige verkeershinder zorgde. De schadeformulieren worden ingevu ld voor de verzekeraar, die de schade verder afhandelt.'

In [29]: slachtoffer_pers_regex = r"(?<!zonder)(?=[a-z]*(fiets((s)?t)?er|(?<!door)rijd(st)?er|re nner|medewerker|bestuur(der|(s)?ster)|dief|chauffeur|scooteraar|postbode|bezorger|dader |veroorz(ak|aakst)er|meisje|jonge(n|tje)|vader|moeder)(s)?|baby('s)?|(automobilist(e)?| vrouw|agent|toerist(e)?)(en)?|[0-9]*-jarige|voetgang(st)?er(s)?|pers(o)?on(en)?|man(ne n)?|echtpa(a)?r(en)?|(gewonde|dode|bejaarde|jongere|inzittende)(n)?|kind(eren)?|"+inhab itants_string+")[^\n\.$,:]*((((zwaar|licht)?(gewond|komt om|letsel|overleden)( (bij va l)| (na |bij |door )(aanrijding|ongeval|.*botsing|(auto-)?ongeluk))?)|omgekomen|ongesch onden|(te )?water|aangereden|geschept|naar ziekenhuis|bekneld|schrik|(na |bij )(frontal e )?botsing|ongedeerd|meegesleurd|over het hoofd|(van de weg )?gedrukt|(ten |na )val|(g e)?val(len|t)))"

slachtoffer_pers_regex2 = r"(rijdt|reed|knalt|ziet|zag| schept| botst|aanrijding)(tegen |met)?[^\n\.$,:]*([a-z]*(fiets((s)?t)?er|rijd(st)?er|renner|bestuur(der|(s)?ster)|dief| chauffeur|scooteraar|postbode|medewerker|dader|veroorz(ak|aakst)er|meisje|jonge(n|tje)| vader|moeder)(s)?|baby('s)?|(automobilist(e)?|vrouw|agent|toerist(e)?)(en)?|[0-9]*-jari ge|voetgang(st)?er(s)?|pers(o)?on(en)?|man(nen)?|(gewonde|dode|bejaarde|jongere|inzitte nde)(n)?|kind(eren)?|"+inhabitants_string+")($|\s|,|\.)" slachtoffer_v_regex = r"(?<!op)(?=[a-z]*(auto|scooter|ambulance|wagen|motor|bus|voertui g|tractor|tram|trein|brommer|brommobiel|taxi|truck)((t)?je)?(\'|\’)?(s)?(en)?(\s))[^\n \.$,:]*((((zwaar|licht)?(gewond|beschadigd|komt om|letsel|overleden|slaat om)( (bij va l)| (na |bij |door )(aanrijding|gladheid|ongeval|.*botsing|(auto-)?ongeluk))?)|omgekome n|water|(?<!ramt )vangrail|op elkaar|geraakt|rijdt van|sloot|kop|komt onder|aangereden| kant|vliegt|geschept|botsen| botst|naar ziekenhuis|bekneld|schrik|(na |bij )(frontale

)?botsing|over het hoofd|ongedeerd|meegesleurd|van de weg gedrukt|(ten |na )val|(ge)?v al(len|t)))"

slachtoffer_v_regex2 = r"(rijdt|reed|knalt|zag|ramt| botst|^(harde)?botsing|geschaarde| te water geraakte|ongeluk met)(tegen|tussen)?[^\n\.$,:]*(?<!op)([a-z]*(auto|scooter|wag en|motor|ambulance|bus|voertuig|tractor|tram|trein|brommer|brommobiel|taxi|truck)((t)?j e)?(\'|\’)?(s)?(en)?(\s|$|\.|,))" dader_pers_regex = r"(?<!zonder)(?=[a-z]*(fiets((s)?t)?er|rijd(st)?er|renner|medewerker |bestuur(der|(s)?ster)|dief|chauffeur|scooteraar|postbode|bezorger|dader|veroorz(ak|aak st)er|meisje|jonge(n|tje)|vader|moeder)(s)?|baby('s)?|(automobilist(e)?|vrouw|agent|toe rist(e)?)(en)?|[0-9]*-jarige|voetgang(st)?er(s)?|pers(o)?on(en)?|man(nen)?|(gewonde|dod e|bejaarde|jongere|inzittende)(n)?|kind(eren)?|"+inhabitants_string+")[^\n\.$,:]*((knal t|reed|rijdt|zag|fietst(?!er|ocht)|loopt|botst)(tegen|met)?|ramt|strandt|zorgt voor opo nthoud|over (de )?kop|(uit )?moet (uit)?wijken|tegen boom|veroorzaakt|ervandoor|richt r avage|in botsing|(?<!ge)schept|(/s|aange)richt(?!ing)|(?<!ge)raakt (?!gewond|onwel)|ove r het hoofd (?!werd)|macht over|beland|(?<!ver)mist)"

dader_pers_regex2 = r"(door|(bij |na |door )(aanrijding|botsing|ongeluk)|vluchtende)[^ \n\.$,:]*([a-z]*(fiets((s)?t)?er|rijd(st)?er|renner|bestuur(der|(s)?ster)|die(f|ven)|ch auffeur|scooteraar|postbode|medewerker|dader|veroorz(ak|aakst)er|meisje|jonge(n|tje)|va der|moeder)(s)?|baby('s)?|(automobilist(e)?|vrouw|agent|toerist(e)?)(en)?|[0-9]*-jarige |voetgang(st)?er(s)?|pers(o)?on(en)?|man(nen)?|(gewonde|dode|bejaarde|jongere|inzittend e)(n)?|kind(eren)?|"+inhabitants_string+")($|\s|,|\.)" dader_v_regex = r"(?<!op)(?=[a-z]*(auto|scooter|wagen|ambulance|motor|bus|voertuig|trac tor|tram|trein|brommer|brommobiel|taxi|truck)((t)?je)?(\'|\’)?(s)?(en)?(\s))[^\n\.$,:]* ((knalt|reed|rijdt|zag|fietst(?!er|ocht)|loopt) (tegen)?|ramt|(tegen )?[a-z]* gereden|v erkeerde weghelft|veroorzaakt|betrokken bij|(?<!ge)schept|(/s|aange)richt(?!ing)|(?<!g e)raakt (?!gewond|onwel)|over het hoofd|bots(t)?en|gebotst|in botsing|macht over|crasht |beland|(?<!ver)mist)"

dader_v_regex2 = r"( botst (met|tegen)| door| onder| botsten| (aanrijding|ongeval|ongel uk|botsing) [a-z]*( tussen)?| (bij|na|door) (aanrijding|botsing|ongeluk))[^\n\.$,:]*(? <!op)([a-z]*(auto|scooter|wagen|motor|bus|ambulance|voertuig|tractor|tram|trein|brommer |brommobiel|taxi|truck)((t)?je)?(\'|\’)?(s)?(en)?)($|\s|,|\.)"

verkeer_regex = r"tunnel|file|boete|(weg|weer) (vrij|open)|vertraging(en)?|hinder|dicht |afgesloten|lost op|oponthoud|overlast"

In [30]: def Q4(df):

titel_benoemt_df = pd.DataFrame.from_dict({"VIC_PERSON":len(df[df['Titles'].str.enc ode('utf-8', errors='ignore').str.lower().str.contains(slachtoffer_pers_regex+"|"+slach toffer_pers_regex2, regex=True)])/float(len(df))*100,

"VIC_VEHICLE":len(df[df['Titles'].str.encode('utf -8', errors='ignore').str.lower().str.contains(slachtoffer_v_regex+"|"+slachtoffer_v_re gex2, regex=True)])/float(len(df))*100,

"OPPO_PERSON":len(df[df['Titles'].str.encode('utf -8', errors='ignore').str.lower().str.contains(dader_pers_regex+"|"+dader_pers_regex2, regex=True)])/float(len(df))*100,

"OPPO_VEHICLE":len(df[df['Titles'].str.encode('ut f-8', errors='ignore').str.lower().str.contains(dader_v_regex+"|"+dader_v_regex2, regex =True)])/float(len(df))*100,

"TRAFFIC":len(df[df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(verkeer_regex, regex=True)])/float(len(df))*1 00}, orient="index") return titel_benoemt_df In [31]: df1_q4 = Q4(hetongeluk_df) df2_q4 = Q4(flitsservice_df)

ax = pd.concat([df1_q4, df2_q4], axis=1).plot.bar(figsize=(18,8), title='De titel benoe mt', rot=0, legend=False, fontsize=16)

ax.legend(["Het Ongeluk", "Flitsservice"], fontsize=16) ax.title.set_fontsize(16)

plt.savefig("TitelBenoemt.png") plt.show()

Evaluation

In [32]:

#True Positives

Q4_TP_vic_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_PERSON'] == 1)&(hetongeluk _df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtoffer _pers_regex+'|'+slachtoffer_pers_regex2, regex=True))])

Q4_TP_vic_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_VEHICLE'] == 1)&(hetongel uk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtoff er_v_regex+'|'+slachtoffer_v_regex2, regex=True))])

Q4_TP_oppo_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_PERSON'] == 1)&(hetongel uk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_per s_regex+'|'+dader_pers_regex2, regex=True))])

Q4_TP_oppo_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_VEHIC'] == 1)&(hetongel uk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_v_r egex+'|'+dader_v_regex2, regex=True))])

Q4_TP_verkeer = len(hetongeluk_df[(hetongeluk_df['TITLE_TRAFFIC'] == 1)&(hetongeluk_df[

'Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(verkeer_regex, regex=True))])

Q4_TP = Q4_TP_vic_pers + Q4_TP_vic_vehic + Q4_TP_oppo_pers + Q4_TP_oppo_vehic + Q4_TP_v erkeer

#True Negatives

Q4_TN_vic_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_PERSON'] == 0)&~(hetongelu k_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtoffe r_pers_regex+'|'+slachtoffer_pers_regex2, regex=True))])

Q4_TN_vic_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_VEHICLE'] == 0)&~(hetonge luk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtof fer_v_regex+'|'+slachtoffer_v_regex2, regex=True))])

Q4_TN_oppo_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_PERSON'] == 0)&~(hetonge luk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_pe rs_regex+'|'+dader_pers_regex2, regex=True))])

Q4_TN_oppo_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_VEHIC'] == 0)&~(hetonge luk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_v_ regex+'|'+dader_v_regex2, regex=True))])

Q4_TN_verkeer = len(hetongeluk_df[(hetongeluk_df['TITLE_TRAFFIC'] == 0)&~(hetongeluk_df ['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(verkeer_regex, regex=True))])

Q4_TN = Q4_TN_vic_pers + Q4_TN_vic_vehic + Q4_TN_oppo_pers + Q4_TN_oppo_vehic + Q4_TN_v erkeer

#False Positives

Q4_FP_vic_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_PERSON'] == 0)&(hetongeluk _df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtoffer _pers_regex+'|'+slachtoffer_pers_regex2, regex=True))])

Q4_FP_vic_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_VEHICLE'] == 0)&(hetongel uk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtoff er_v_regex+'|'+slachtoffer_v_regex2, regex=True))])

Q4_FP_oppo_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_PERSON'] == 0)&(hetongel uk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_per s_regex+'|'+dader_pers_regex2, regex=True))])

Q4_FP_oppo_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_VEHIC'] == 0)&(hetongel uk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_v_r egex+'|'+dader_v_regex2, regex=True))])

Q4_FP_verkeer = len(hetongeluk_df[(hetongeluk_df['TITLE_TRAFFIC'] == 0)&(hetongeluk_df[

'Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(verkeer_regex, regex=True))])

Q4_FP = Q4_FP_vic_pers + Q4_FP_vic_vehic + Q4_FP_oppo_pers + Q4_FP_oppo_vehic + Q4_FP_v erkeer

#False Negatives

Q4_FN_vic_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_PERSON'] == 1)&~(hetongelu 780

k_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtoffe r_pers_regex+'|'+slachtoffer_pers_regex2, regex=True))])

Q4_FN_vic_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_VIC_VEHICLE'] == 1)&~(hetonge luk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(slachtof fer_v_regex+'|'+slachtoffer_v_regex2, regex=True))])

Q4_FN_oppo_pers = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_PERSON'] == 1)&~(hetonge luk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_pe rs_regex+'|'+dader_pers_regex2, regex=True))])

Q4_FN_oppo_vehic = len(hetongeluk_df[(hetongeluk_df['TITLE_OPPO_VEHIC'] == 1)&~(hetonge luk_df['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(dader_v_ regex+'|'+dader_v_regex2, regex=True))])

Q4_FN_verkeer = len(hetongeluk_df[(hetongeluk_df['TITLE_TRAFFIC'] == 1)&~(hetongeluk_df ['Titles'].str.encode('utf-8', errors='ignore').str.lower().str.contains(verkeer_regex, regex=True))])

Q4_FN = Q4_FN_vic_pers + Q4_FN_vic_vehic + Q4_FN_oppo_pers + Q4_FN_oppo_vehic + Q4_FN_v erkeer

In [33]: #overall Q4_acc = float(Q4_TP + Q4_TN) / (Q4_TP + Q4_TN + Q4_FP + Q4_FN) Q4_prec = float(Q4_TP) / (Q4_TP + Q4_FP) Q4_rec = float(Q4_TP) / (Q4_TP + Q4_FN) #vic_pers

Q4_acc_vic_pers = float(Q4_TP_vic_pers + Q4_TN_vic_pers) / (Q4_TP_vic_pers + Q4_TN_vic_ pers + Q4_FP_vic_pers + Q4_FN_vic_pers)

Q4_prec_vic_pers = float(Q4_TP_vic_pers) / (Q4_TP_vic_pers + Q4_FP_vic_pers) Q4_rec_vic_pers = float(Q4_TP_vic_pers) / (Q4_TP_vic_pers + Q4_FN_vic_pers)

#vic_vehic

Q4_acc_vic_vehic = float(Q4_TP_vic_vehic + Q4_TN_vic_vehic) / (Q4_TP_vic_vehic + Q4_TN_ vic_vehic + Q4_FP_vic_vehic + Q4_FN_vic_vehic)

Q4_prec_vic_vehic = float(Q4_TP_vic_vehic) / (Q4_TP_vic_vehic + Q4_FP_vic_vehic) Q4_rec_vic_vehic = float(Q4_TP_vic_vehic) / (Q4_TP_vic_vehic + Q4_FN_vic_vehic)

#oppo_pers

Q4_acc_oppo_pers = float(Q4_TP_oppo_pers + Q4_TN_oppo_pers) / (Q4_TP_oppo_pers + Q4_TN_ oppo_pers + Q4_FP_oppo_pers + Q4_FN_oppo_pers)

Q4_prec_oppo_pers = float(Q4_TP_oppo_pers) / (Q4_TP_oppo_pers + Q4_FP_oppo_pers) Q4_rec_oppo_pers = float(Q4_TP_oppo_pers) / (Q4_TP_oppo_pers + Q4_FN_oppo_pers)

#oppo_vehic

Q4_acc_oppo_vehic = float(Q4_TP_oppo_vehic + Q4_TN_oppo_vehic) / (Q4_TP_oppo_vehic + Q4 _TN_oppo_vehic + Q4_FP_oppo_vehic + Q4_FN_oppo_vehic)

Q4_prec_oppo_vehic = float(Q4_TP_oppo_vehic) / (Q4_TP_oppo_vehic + Q4_FP_oppo_vehic) Q4_rec_oppo_vehic = float(Q4_TP_oppo_vehic) / (Q4_TP_oppo_vehic + Q4_FN_oppo_vehic)

#verkeer

Q4_acc_verkeer = float(Q4_TP_verkeer + Q4_TN_verkeer) / (Q4_TP_verkeer + Q4_TN_verkeer + Q4_FP_verkeer + Q4_FN_verkeer)

Q4_prec_verkeer = float(Q4_TP_verkeer) / (Q4_TP_verkeer + Q4_FP_verkeer) Q4_rec_verkeer = float(Q4_TP_verkeer) / (Q4_TP_verkeer + Q4_FN_verkeer)

print("Overall - accuracy:{0:.2f}, precision:{1:.2f}, recall:{2:.2f}".format(Q4_acc, Q4 _prec, Q4_rec))

print("Victim as a person - accuracy:{0:.2f}, precision:{1:.2f}, recall:{2:.2f}".format (Q4_acc_vic_pers, Q4_prec_vic_pers, Q4_rec_vic_pers))

print("Victim as a vehicle - accuracy:{0:.2f}, precision:{1:.2f}, recall:{2:.2f}".forma t(Q4_acc_vic_vehic, Q4_prec_vic_vehic, Q4_rec_vic_vehic))

print("Opposite as a person - accuracy:{0:.2f}, precision:{1:.2f}, recall:{2:.2f}".form at(Q4_acc_oppo_pers, Q4_prec_oppo_pers, Q4_rec_oppo_pers))

print("Opposite as a vehicle - accuracy:{0:.2f}, precision:{1:.2f}, recall:{2:.2f}".for mat(Q4_acc_oppo_vehic, Q4_prec_oppo_vehic, Q4_rec_oppo_vehic))

print("Traffic - accuracy:{0:.2f}, precision:{1:.2f}, recall:{2:.2f}".format(Q4_acc_ver keer, Q4_prec_verkeer, Q4_rec_verkeer))

Overall - accuracy:0.94, precision:0.85, recall:0.91

Victim as a person - accuracy:0.95, precision:0.97, recall:0.94 Victim as a vehicle - accuracy:0.90, precision:0.71, recall:0.88 Opposite as a person - accuracy:0.95, precision:0.71, recall:1.00 Opposite as a vehicle - accuracy:0.90, precision:0.80, recall:0.81 Traffic - accuracy:0.99, precision:0.94, recall:1.00

In [34]:

hetongeluk_df[(hetongeluk_df['TITLE_OPPO_PERSON'] == 1)& (hetongeluk_df['Titles'].str.l ower().str.contains(dader_pers_regex+'|'+dader_pers_regex2, regex=True))].reset_index(d rop=True)['Titles'][0]

Q38 - Het artikel benoemt

GERELATEERDE DOCUMENTEN