红楼梦的数据分析已经有许多人做过,结论也各不相同。
我在知乎上看到两篇帖子:
- 通过数据挖掘能分析《红楼梦》各回的真伪吗?
- 用机器学习判定红楼梦后40回是否曹雪芹所写
觉得很有意思,于是用自己的方法重做了一次
配置:
我主要使用的编程环境是Jupyter Notebook 4.2.1,因为可以调整每一个代码块,方便
纠错什么的。
然后我们得用到一个中文分词工具 - Jieba, 是由百度工程师Sun Junyi开发的
之后我们还得用到一些做机器学习/数据挖掘的标准包:numpy, matplotlib 和 sklearn
数据准备:
用爬虫思想,我去这个网站扒下来红楼梦全集,然后剪掉中间所有的换行符,使得每一回只
占文档中的一行。这样的话,方便接下来读取。
直接上代码:
一、导入各种需要的包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 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')) chapter = bsObj.table.font.contents[0] book.append(chapter)
|
直接上代码:
一、导入各种需要的包
1 2 3 4
| import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import operator
|