0.1 民法介紹

-民法是調整平等主體之間人身關係(包括人格權和身份權)財產關 係(包括物權、債權等)私法規範的總和。

-民法調整的主體是平等的主體,包括自然人法人非法人組織

NOTE: 私法
有時候作為民法的同義詞,有時候又作為民法的上位概念而使用,一般認為,民法是私法的核心部分。

0.2 民法的語源

「民法」一詞源於羅馬法中的市民法(juscivile)。羅馬法中完備的平權主體法律規範,經過羅馬法復興運動復甦。在歐洲法典化運動中,先後產生了《法國民法典》(又名拿破崙法典)《德國民法典》兩部具有劃時代意義法典。

在對《法國民法典》的引進中,日本學者津田真道錯誤地將「市民法」一詞翻譯為「民法」。清末變法圖強時,即有編成「大清民律草案」,雖由中國學者直接抄自日本,譯作今稱,於清光緒33年時設立修訂法律館,草擬之大清民律,宣統3年8月時完成,但未及施行,清朝即由民國所取代。

但也有學者認為,民法一詞並非來自日本,而是中國自己創造的,在中國古代典籍《尚書》中就已有「民法」一詞。《尚書·孔氏傳》:「咎單,臣名,主土地之官,做明居民法一篇亡」中的「民法」一詞被有些學者認為是中國民法的起源(實際上,中國真正開始出現成文的民法法典,是在1929年五月,由當時的國民政府設立法制局,參照前清及民國成立初期編訂的民律草案完成民法法典的制定,陸續予以頒布施行)。近代以後大陸法系國家立法中使用的民法一詞,如法語中的droit civil,德語中的Bürgerliches Recht等都由市民法轉譯而來。

民法依法源不同,分為直接與間接法源《中華民國民法》第一條便規定:「民事、法律所未規定者,依習慣;無習慣者,依法理」即是對民法的法源規範。當中的法律、習慣、法理即為直接法源,此外尚有所謂的間接法源,指學說與判例而言。

NOTE: 此習慣非比習慣!
在法律中,習慣或習慣法是指在特定社會環境之下,可以被客觀辨認出來的已經被建立的行為模式。一般來說,習慣法存在的環境有以下特徵:
民法第一條規定:「民事,法律所未規定者,依習慣,無習慣者,依法理。」而執行習慣法之要件有:
1. 在社會上有反覆實施之事實
2. 一般人確信其有法律效果
3. 須為現行法律未規定之事項(沒有或未有明文條例)
4. 須與現行法律規定不牴觸
5. 須不背於公共秩序及善良風俗

現今大陸法系民法在內容分為物權法、債法、親屬法、繼承法等等。英美法系民法在內容上包括契約法、財產法、家庭法、侵權行為法、信託法等等。普遍認為,智慧財產權法、商法也屬於民法範疇

NOTE: 大陸法系&海洋法系
大陸法系是採成文法,例如我國的民法,刑法等等,而法官在適用法律時是以適用條文為原則,適用其他輔助(如判例,習慣法或法理)為例外,嚴格禁止法官造法,大陸法系國家的法官通常是真正斷案者,就結果而言,大陸法系之判斷較有法學素養,而適用國家大部分是領土固定(指一直以來的發展),例如德法等國,日本則是因為照抄德國法律。 海洋法系通常稱英美法系,英美法系通常採不成文法,其無明確的法律條文為原則,大部分的法案都是概括性或有其獨特性的,其判決時通常參考曾經發生過的類似案例為訴訟方法或指揮進行的認定,不禁止法官造法,法官通常只指揮訴訟進行,訴訟結果之判斷多由陪審團為之,英美法系之判決較符人性期待,就適用國家而言,大部分是領土變動較大的國家,由於人民大多不住在本土或聯繫困難,而發展出的制度,例如英國及大英國協的國家,美國是因為完全承襲英國制度所以採海洋法系。

0.3 民法總則內容

民法總則編,包含了法例、權利主體、權利客體、法律行為、行為能力、意思表示、條件與期限、代理、無效及撤銷、期日與期間、消滅時效及權利之行使等一般規範。

NOTE: 法例是什麼?
法律全部適用的通則。民法第一條至第五條之規定,即屬法例。

民法總則編原則上皆適用於民法各編。但學說一般認為,民法總則編之規定多屬財產法之規定,未必適用於身分法。因此,關於民法親屬編和繼承編的事項,即有可能因為財產行為和身分行為的差異,而不適用民法總則編規定:例如,身分行為不可代理,身分行為不得有附款。

0.4 文字資料來源與處理

-資料來源全國法規資料庫
-利用iwork的Pages軟體的尋找、替代功能,將資料重複無用詞彙與標點符號空白去除
好用的尋找替帶功能

-利用Pages的轉檔功能輸出成以UTF=8讀取存儲的.txt檔
輸出成純文字檔

0.5 文字雲程式部分

library(jiebaR)
## Loading required package: jiebaRD
library(wordcloud2)

path = '/Users/wuyusheng/Desktop/應用統計/wordcloud2/data/'
name = '民法總則'

if (name == '民法總則') { file = paste0(path, "/law1.txt") }

0.5.1 第一種讀 .txt 的方法

law = read.table(file, 
                    encoding="UTF-8", 
                    header=FALSE,
                    sep="\n", 
                    stringsAsFactors=FALSE)
# \n:換行字元。
# \t:Tab 字元。
data = unlist(law)
# unlist 轉換為 vector.

0.5.2 第二種讀 .txt 的方法

data = readLines(file, encoding="UTF-8", warn=FALSE)
# warn=FALSE 可避免:
# Warning message:
# In readLines("file, encoding="UTF-8") : incomplete final line found on ...

0.5.3 第三種讀 .txt 的方法 (需要安裝 data.table 套件)

law =  data.table::fread(file, header=FALSE, fill=TRUE, encoding="UTF-8")
data = unlist(law)

0.5.4 第四種讀 .txt 的方法 (需要安裝 readtext 套件)

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

0.5.5 第五種讀 .txt 的方法 (需要安裝 readr 套件)

law = readr::read_delim(file=file, delim="\n")
data = unlist(law)

0.6 中文 “分詞” 或 “斷詞” (結巴中文分詞)

jiebaR_worker = jiebaR::worker(type="mix")
  • 使用內建方法分詞。 在 worker() 內可以設定各種不同的切分法模型與引用外部詞庫, jiebaR 提供了 7 種分詞引擎。
    1. 混合模型 (MixSegment) - type=“mix”: 是分詞引擎裏面分詞效果較好的類,結它合使用最大概率法和隱式馬爾科夫模型。 2. 最大概率法 (MPSegment) - type=“mp”: 負責根據Trie樹構建有向無環圖和進行動態規劃算法,是分詞算法的核心。 3. 隱式馬爾科夫模型 - (HMMSegment) type=“hmm”: 是根據基於人民日報等語料庫構建的 HMM 模型來進行分詞, 主要算法思路是根據 (B,E,M,S) 四個狀態來代表每個字的隱藏狀態。 HMM 模型由 dict/hmm_model.utf8 提供。分詞算法即 viterbi 算法。 4. 索引模型 (QuerySegment) - type=“query”: 先使用混合模型進行切詞,再對於切出來的較長的詞, 枚舉句子中所有可能成詞的情況,找出詞庫裏存在。 5. 標記模型 (tag) - type=“tag”。 6. Simhash模型 (simhash) - type=“keywords”: 對中文文檔計算出對應的 simhash 值。 simhash 是谷歌用來進行文本去重的算法,現在廣泛應用在文本處理中。 Simhash 引擎先進行分詞和關鍵詞提取,後計算 Simhash 值和海明距離。
    2. 關鍵詞模型 (keywods) - type=“simhash”: 關鍵詞提取所使用逆向文檔頻率 (IDF) 文本語料庫可以切換成自定義語料庫的路徑, 使用方法與分詞類似。
  • 一般情況下,使用默認引擎 (混合模型) 就足夠了。

  • worker 一些參數可參考 https://hk.saowen.com/a/4e17feb2164cf9a99971e7825903b4c317ad75346a764f9d945589c580ba8035

jiebaR_worker = jiebaR::worker(stop_word="/Users/wuyusheng/Desktop/應用統計/wordcloud2/data/stopwords.txt", user="mydict.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_segment(分詞後的向量, 過濾詞向量)
filter = c('台電')
title_segment = jiebaR::filter_segment(title_segment, filter)

# 接下來用 table() 做次數分配表,
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)
從排序好的詞彙中刪去不要的

從排序好的詞彙中刪去不要的

0.7 文字雲

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 >= 30,]
# 只保留出現頻率 >= 3 的詞。

cloud1 = wordcloud2::wordcloud2(title_order_table)
cloud1
cloud2 = wordcloud2::wordcloud2(title_order_table, shape="circle")
# 改變文字雲為 cicle 形狀。
cloud2
library(htmlwidgets)
html_file = paste0("/Users/wuyusheng/Desktop/應用統計/wordcloud2", name, "1.html")
htmlwidgets::saveWidget(cloud1, html_file, selfcontained=F)

html_file = paste0("/Users/wuyusheng/Desktop/應用統計/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 亦看不到文字雲結果。
figPath = paste0(path, "fig/ironman.jpg")
cloud3 = wordcloud2(title_order_table, figPath=figPath, size=0.3, color="black")
# 改變文字雲為其他圖片形狀
# 鋼鐵人和美國隊長
cloud3


html_file = paste0("/Users/wuyusheng/Desktop/應用統計/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='LAW')
cloud4
wordcloud2::letterCloud(title_order_table, word='LAW', color="random-light", size=0.3)
# 改變文字雲為 R 片形狀。
html_file = paste0("/Users/wuyusheng/Desktop/應用統計/wordcloud2", name, "4.html")
htmlwidgets::saveWidget(cloud4, html_file, selfcontained=F)
# 需要配合 Web Server for Chrome 才可看到 .html 結果。
word=“LAW”

word=“LAW”

  • Note:
    1. 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.
    2. 需要存成 .html 才可由瀏覽器看到 shape 的結果 (plot 視窗看不到)。
    3. RMarkdown 亦看不到文字雲結果。

0.8 上傳至RPubs

步驟一 註冊一個RPubs會員
step1

步驟二 填寫文件標題、內容敘述、網址
step2

大功告成!! step3