-刑法(英語:criminal law、德語:Strafrecht)是與犯罪有關聯的法律,其目的在於保護生命、身體、財產、等相關法益,並懲罰違反規範且破壞或威脅這些法的行為。不同於重視私人間損害賠償的民法 ,刑法是判斷何為犯罪,懲罰犯罪行為的法律。
NOTE: 法益是甚麼
國家在何種情況下可以對人民發動刑罰,以及決定刑罰的程度,端賴行為人侵害社會認可利益的大小而定,刑事法律所保護的利益稱之為法益
在各類部門法當中,刑法的歷史可以說是最為悠久。一般來說,古代文明最早頒布的成文法都以刑事法為主,例如中國古代各個朝代的成文法的主體就是刑法。近代大陸法系的刑法遵循罪刑法定原則。刑法的淵源主要為刑法典,單行刑法,附屬刑法。國際條約並不能直接成為國內法院定罪量刑的依據,因為依據罪刑法定原則,各國必須將其簽署加入的國際條約中的犯罪行為規定到本國刑法當中,才能對國際罪行進行管轄。
NOTE: 罪刑法定原則是甚麼
只有在行為時法律明文規定為犯罪行為的,才能依照法律定罪處罰,否則,不得定罪處罰,也就是無法律即無犯罪,本原則讓國家不能擅斷而恣意的對人民實施處罰,並讓人民可以預見法律規範,保障人權。
刑法的目的在於界定國家對於公民的刑罰權,亦即,在如何狀況下國家可以對於公民實施刑罰。刑罰的目的通常被認為有四種:
1.預防,即通過刑法明文公布對犯罪行為的懲處,從而達到預防犯罪的目的(又可分為一般預防與特殊預防) 2.應報,即對侵害法益的行為加以處罰,以公正應報行為者的罪行 3.嚇阻,藉由處罰嚇阻犯罪人及社會大眾 4.教育,執行刑罰以教化犯罪人,使其社會化
去除不要的字
-將文字存成UTF=8讀取存儲的.txt檔
```{r } library(jiebaR) library(wordcloud2)
path = ‘C:/Program Files/R/wordcloud2/wordcloud2/data’
name = ‘刑法總則’
if (name == ‘刑法總則’) { file = paste0(path, “/law2.txt”) }
### 第一種讀 .txt 的方法
data = readLines(file, encoding="UTF-8", warn=FALSE)
# warn=FALSE 可避免:
# Warning message:
# In readLines("file, encoding="UTF-8") : incomplete final line found on ...
law = data.table::fread(file, header=FALSE, fill=TRUE, encoding="UTF-8")
data = unlist(law)
law = readtext::readtext(file, dvsep="\n", encoding="UTF-8")
data = law$text
# readtext 可讀 txt, json, csv, tab, tsv, html, xml, pdf, doc, docx
# https://www.rdocumentation.org/packages/readtext/versions/0.71/topics/readtext
{r, message=FALSE} law = readr::read_delim(file=file, delim="\n") data = unlist(law)
jiebaR_worker = jiebaR::worker(type="mix")
使用內建方法分詞。 在 worker() 內可以設定各種不同的切分法模型與引用外部詞庫, jiebaR 提供了 7 種分詞引擎。
一般情況下,使用默認引擎 (混合模型) 就足夠了。
worker 一些參數可參考 https://hk.saowen.com/a/4e17feb2164cf9a99971e7825903b4c317ad75346a764f9d945589c580ba8035
```{r , results=‘hide’} jiebaR_worker = jiebaR::worker(stop_word=“C:/Program Files/R/wordcloud2/wordcloud2/data/stopwords.txt”, user=“stopwords.txt”) # stopwords.txt 為停用詞典檔,mydict.txt 為自建詞典檔。 #將出現頻率高但不是詞彙的詞編寫入
jiebaR::new_user_word(jiebaR_worker, ‘台電’, ‘n’) # ‘n’ 是 ‘台電’ 的詞性 # 在默認自建詞典的基礎上,添加新的自建詞 new_user_word,但僅作用於當前分詞引擎。
title_segment = jiebaR_worker[data] title_segment = jiebaR::segment(data, jiebaR_worker) # 以上擇一做分詞。
filter = c(‘台電’) title_segment = jiebaR::filter_segment(title_segment, filter)
title_table = table(title_segment) title_table = data.frame(title_table) # 轉換為 dataframe 格式,方便之後依頻率做排序。 title_table
title_order_table = title_table[order(title_table$Freq, decreasing=TRUE),] # 參考 order.r 範例。 head(title_order_table)
## 文字雲
- 製作文字雲可以使用 wordcloud2 套件
參考:http://blog.pulipuli.info/2016/11/r-draw-word-cloud-in-r.html
```{r}
library(wordcloud2)
title_nchar = nchar(as.character(title_order_table$title_segment))
# 計算詞的字數,之後要刪除字數為 1 的詞。
title_order_table = title_order_table[title_nchar > 1 ,]
# 刪除字數為 1 的詞。
title_order_table = title_order_table[title_order_table$Freq >= 15,]
# 只保留出現頻率 >= 15 的詞。
cloud1 = wordcloud2::wordcloud2(title_order_table)
cloud1
cloud2 = wordcloud2::wordcloud2(title_order_table, shape="circle")
# 改變文字雲為 cicle 形狀。
cloud2
library(htmlwidgets)
html_file = paste0("C:/Program Files/R/wordcloud2/wordcloud2", name, "1.html")
htmlwidgets::saveWidget(cloud1, html_file, selfcontained=F)
html_file = paste0("C:/Program Files/R/wordcloud2/wordcloud2", name, "2.html")
htmlwidgets::saveWidget(cloud2, html_file, selfcontained=F)
# selfcontained: Whether to save the HTML as a single self-contained file
# (with external resources base64 encoded)
# or a file with external resources placed in an adjacent directory.
# 需要存成 .html 才可由瀏覽器看到 shape 的結果 (plot 視窗看不到)。
# RMarkdown 亦看不到文字雲結果。
輸出成type=circle的樣子(此為螢幕截圖)
figPath = paste0(path, "/fig/Rabbit.jpg")
cloud3 = wordcloud2(title_order_table, figPath=figPath, size=0.5, color="black")
# 改變文字雲為其他圖片形狀。
cloud3
html_file = paste0("C:/Program Files/R/wordcloud2/wordcloud2", name, "3.html")
htmlwidgets::saveWidget(cloud3, html_file, selfcontained=F)
# (a) 需要配合 Web Server for Chrome 才可看到 .html 結果。
# (b) 若圖形還是出不來,請用小畫家打開圖形檔 (e.g., Mickey.jpg),
# 重新儲存新的 jpg 檔後,再重做 (a),圖形應可出來。
# 若開始安裝 wordcloud2 是通過 packages 中的 CRAN 安裝的,
# 通過這樣的方法安裝 wordcloud2 就出現了自訂圖片不顯示的問題,
# letterCloud 和自訂形狀的圖仍是黑白圖。
# 解決方法:通過 github 官方安裝:
# devtools::install_github("lchiffon/wordcloud2") 就可以了
# (需要先安裝 devtools package)。
兔子
cloud4 = wordcloud2::letterCloud(title_order_table, word='H')
cloud4
wordcloud2::letterCloud(title_order_table, word='H', color="random-light", size=0.5)
# 改變文字雲為 R 片形狀。
html_file = paste0("C:/Program Files/R/wordcloud2/wordcloud2", name, "4.html")
htmlwidgets::saveWidget(cloud4, html_file, selfcontained=F)
# 需要配合 Web Server for Chrome 才可看到 .html 結果。
word=“H”