重做红楼梦的数据分析-判断前80回后40回是否一个人写的

重做红楼梦的数据分析-判断前80回后40回是否一个人写的

红楼梦的数据分析已经有许多人做过,结论也各不相同。
我在知乎上看到两篇帖子:
1. 通过数据挖掘能分析《红楼梦》各回的真伪吗?
2. 用机器学习判定红楼梦后40回是否曹雪芹所写
觉得很有意思,于是用自己的方法重做了一次

环境配置:

我主要使用的编程环境是Jupyter Notebook 4.2.1,因为可以调整每一个代码块,方便
纠错什么的。
然后我们得用到一个中文分词工具 - Jieba, 是由百度工程师Sun Junyi开发的
之后我们还得用到一些做机器学习/数据挖掘的标准包:numpy, matplotlib 和 sklearn

数据准备:

用爬虫思想,我去这个网站扒下来红楼梦全集,然后剪掉中间所有的换行符,使得每一回只
占文档中的一行。这样的话,方便接下来读取。

直接上代码:
一、导入各种需要的包

# -*-coding:utf-8 -*-

import urllib
import urllib2
import re
from bs4 import BeautifulSoup as bs

book = []
for i in range(120):
    print("处理第{}回...".format(i+1))
    if i+1<10:
        url = "http://www.purepen.com/hlm/00{}.htm".format(i+1)
    elif i+1 < 100:
        url = "http://www.purepen.com/hlm/0{}.htm".format(i+1)
    else:
        url = "http://www.purepen.com/hlm/{}.htm".format(i+1)
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    bsObj = bs(response.read().decode('gb18030')) #注意原网页的codec是哪一种
    chapter = bsObj.table.font.contents[0]
    book.append(chapter)

下面是结果:
这里写图片描述

这里写图片描述

之后把全文存进一个txt文件:

with open('红楼梦.txt', 'w') as f:  
    f.write(codecs.BOM_UTF8)  
    for chap in book:
        s = chap.encode('utf-8').strip()
        f.write("".join(s.split()))
        f.write('\n')

数据ready,可以开始进行处理了

处理:

直接上代码:
一、导入各种需要的包

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值