背景

今天在知乎刷到「婚姻的本质是什么?」。

绝大多数回答都是跟私有产权、生产关系相关,直到有一个回答整个婚姻法里也没有关于爱情的只言片语,从头到尾就一个字,钱,所以婚姻本质上就是契约

一下子想到用词频统计试一下, 看看民法典婚姻家庭部分和非婚姻家庭部分两部分内容的侧重点分别是什么。


数据准备

民法典章节目录如下, 把「第五编 婚姻家庭」单独拿出来做「婚姻家庭内容」, 剩下的内容做「非婚姻家庭内容」。

- 第一编 总则
  - 第一章 基本规定
  - 第二章 自然人
  - 第三章 法人
  - 第四章 非法人组织
  - 第五章 民事权利
  - 第六章 民事法律行为
  - 第七章 代理
  - 第八章 民事责任
  - 第九章 诉讼时效
  - 第十章 期间计算
  
- 第二编 物权
  - 第一分编 通则
     - 第一章 一般规定
     - 第二章 物权的设立、变更、转让和消灭
     - 第三章 物权的保护
  - 第二分编 所有权
  - 第三分编 用益物权
  - 第四分编 担保物权
  - 第五分编 占有

- 第三编 合同
  - 第一分编 通则 
  - 第二分编 典型合同
  - 第三分编 准合同

- 第四编 人格权
    - 第一章 一般规定
    - 第二章 生命权、身体权和健康权
    - 第三章 姓名权和名称权
    - 第四章 肖像权
    - 第五章 名誉权和荣誉权
    - 第六章 隐私权和个人信息保护

- 第五编 婚姻家庭
   - 第一章 一般规定
   - 第二章 结婚
   - 第三章 家庭关系
       - 第一节 夫妻关系
       - 第二节 父母子女关系和其他近亲属关系
   - 第四章 离婚
   - 第五章 收养
      - 第一节 收养关系的成立
      - 第二节 收养的效力
      - 第三节 收养关系的解除
      
- 第六编 继承
   - 第一章 一般规定
   - 第二章 法定继承
   - 第三章 遗嘱继承和遗赠
   - 第四章 遗产的处理

- 第七编 侵权责任
   - 第一章 一般规定
   - 第二章 损害赔偿
   - 第三章 责任主体的特殊规定
   - 第四章 产品责任
   - 第五章 机动车交通事故责任
   - 第六章 医疗损害责任
   - 第七章 环境污染和生态破坏责任
   - 第八章 高度危险责任
   - 第九章 饲养动物损害责任
   - 第十章 建筑物和物件损害责任
- 附则

读取数据

#第五编 婚姻家庭
marital_relationship_text = open('marital-relationship.txt', encoding='utf-8').read()
#不含【第五编 婚姻家庭】其余部分
non_marital_relationship_text = open('non-marital-relationship.txt', encoding='utf-8').read()

marital_relationship_text[:500]
'第五编\u3000婚姻家庭\n第一章\u3000一般规定\n第一千零四十条\u3000本编调整因婚姻家庭产生的民事关系。\n第一千零四十一条\u3000婚姻家庭受国家保护。\n实行婚姻自由、一夫一妻、男女平等的婚姻制度。\n保护妇女、未成年人、老年人、残疾人的合法权益。\n第一千零四十二条\u3000禁止包办、买卖婚姻和其他干涉婚姻自由的行为。禁止借婚姻索取财物。\n禁止重婚。禁止有配偶者与他人同居。\n禁止家庭暴力。禁止家庭成员间的虐待和遗弃。\n第一千零四十三条\u3000家庭应当树立优良家风,弘扬家庭美德,重视家庭文明建设。\n夫妻应当互相忠实,互相尊重,互相关爱;家庭成员应当敬老爱幼,互相帮助,维护平等、和睦、文明的婚姻家庭关系。\n第一千零四十四条\u3000收养应当遵循最有利于被收养人的原则,保障被收养人和收养人的合法权益。\n禁止借收养名义买卖未成年人。\n第一千零四十五条\u3000亲属包括配偶、血亲和姻亲。\n配偶、父母、子女、兄弟姐妹、祖父母、外祖父母、孙子女、外孙子女为近亲属。\n配偶、父母、子女和其他共同生活的近亲属为家庭成员。\n第二章\u3000结婚\n第一千零四十六条\u3000结婚应当男女双方完全自愿,禁止任何一方对另一方加以强迫,禁止任何组织或者个人加以干涉。\n第一千零四十七条\u3000结婚'
import cntext as ct

print(ct.__version__)

#词频统计
civil_code_word_count = ct.term_freq(civil_code_text)
marital_relationship_word_count = ct.term_freq(marital_relationship_text)
non_marital_relationship_word_count = ct.term_freq(non_marital_relationship_text)

词云图

import pyecharts.options as opts
from pyecharts.charts import WordCloud
import random


def plot_wordcloud(wordcounts, title):
    wordcounts = [(w, str(f)) for w,f in wordcounts.items()]
    wc = WordCloud()
    wc.add(series_name="", data_pair=wordcounts, word_size_range=[2, 1000])
    wc.set_global_opts(
        title_opts=opts.TitleOpts(title=title, title_textstyle_opts=opts.TextStyleOpts(font_size=23)
                                 ),
        tooltip_opts=opts.TooltipOpts(is_show=True))
    return wc.render_notebook()


plot_wordcloud(wordcounts=marital_relationship_word_count, 
               title='民法典-婚姻家庭部分')


plot_wordcloud(wordcounts=non_marital_relationship_word_count, 
               title='民法典-非婚姻部分的')


不可当真的实验

这里仅仅仅是一个实验,结果不可当真。毕竟使用性质的不同数据做分析,得出的结论可能会完全相反。


广而告之