前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每周一坑】三国演义中谁的存在感最强 +【解答】暴力计算圆周率

【每周一坑】三国演义中谁的存在感最强 +【解答】暴力计算圆周率

作者头像
Crossin先生
发布2018-12-10 15:39:48
3860
发布2018-12-10 15:39:48
举报

自然语言处理(NLP)是人工智能的一个重要领域。在对中文做自然语言处理的时候,一个很基础的操作就是分词:因为中文不像英语有现成的单词划分,需要将汉字序列切分成一个个单独的词,以便于后续的处理和分析。

今天我们的题目就是:

统计出《三国演义》书中被提及最多的角色

当然,精确统计是比较复杂的,比如同样是刘备,可以是 刘备、玄德、刘豫州、刘皇叔、使君、先主、备,而同样的 主公、丞相、将军 这些称谓在不同语境下指的又是不同的人。这里我们就只粗略算个大概即可,统计哪些个名字出现次数最多。你可以尽量让结果更接近实际值。

这是我的结果,数值仅供参考。

为了方便大家,我已经准备好了《三国演义》的 txt 文件,UTF8 和 GBK 的版本都有,公众号里回复关键字 三国

其实我们之前做过一些类似的案例,比如: 数据分析:当赵雷唱民谣时他唱些什么?

在知乎上逛一逛,你会发现现在很多人写的有关 Python 的文章都在用这个套路:

  1. 采集相关的文本
  2. 中文分词
  3. 统计词频
  4. 生成词云

当然也有些更厉害的,比如:用机器学习判定红楼梦后40回是否曹雪芹所写

所以,今天的附加题是开放式的,你可以在统计分词的基础上,发挥更多的想象力:图表可视化、生成词云、分析人物的关联性、人物出场分布等等。

详细解答和参考代码将在下次栏目中给出,也可以其他同学在留言中的代码。

期待各位同学提交解答。

提交代码可以使用 paste.ubuntu.com

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】暴力计算圆周率

上次的题目,提示了两种方法:均匀点阵、蒙特卡洛方法。

这里有个细节要注意,如果过你用点阵的话,圆心位置的选取,会直接影响到结果的准确度。因为如果把圆心设在点上,距离 R 的范围内,直径上是有 2R + 1 个点;而设在点的间隔之间,直径则是 2R 个点。那么这时候,分母选择 R² 还是 (R+1)²,结果就不一样了。

一个简单的实现:

R = 10000
R2 = R * R
count = 0
for x in range(-R, R+1):
    for y in range(-R, R+1):
        if x * x + y * y <= R2:
            count += 1
print(count / R2)

蒙特卡洛法 + 绘图:

import matplotlib.pyplot as pltimport random
R = 60
R2 = R * R
x_in = []
y_in = []
x_out = []
y_out = []
for i in range(100000):
    x = random.random() * 2 * R - R
    y = random.random() * 2 * R - R
    if x * x + y * y > R2:
        x_out.append(x)
        y_out.append(y)
    else:
        x_in.append(x)
        y_in.append(y)
plt.figure(figsize=(16, 16))
plt.scatter(x_out, y_out, color='blue', marker='.', linewidths=0.1, alpha=0.3)
plt.scatter(x_in, y_in, color='red', marker='.', linewidths=0.1, alpha=0.3)
plt.scatter(0, 0, color='black')
plt.show()
print(len(x_in) / (len(x_in) + len(x_out)) * 4)

上次提交答案的同学有: hoshea、a87g5o、张钒、谢谢谢伟、Cool、王文亚、Famisi、星星 大部分同学都提供了2种不同解法,Cool王文亚 还实现了无穷级数法。

感谢各位同学的参与。

期待在下一期中看到你的代码!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档