机器学习(周志华西瓜书) 参考答案 总目录

  • http://blog.csdn.net/icefire_tyh/article/details/52064910

机器学习(周志华) 参考答案 第十四章 概率图模型

  • http://blog.csdn.net/icefire_tyh/article/details/53509879

    拖了好几个月,现在越来越懒了,于是放弃了自己写个LDA的想法,使用现成的GibbsLDA++0.2

9.从网上下载或者自己实现LDALDA,分析《天龙八部》中每10回的话题演变情况。
由于对《天龙八部》并不怎么熟悉,所以选择了《射雕英雄传》,毕竟小说看了好几遍。
射雕英雄传共40章,按每5章作为一个文档,共8个文档。
全部输入输出文档
VS2015仲GibbsLDA++0.2工程压缩包

步骤一:分词
中文分词一直是个困难的任务,一本射雕好几十万字,如果手动去保留所有名词,那好几天就没了。而现成的中文分词软件并不能很好的划分词语,但也没得办法,分词分的怪怪的也只能用了。
这里选择的是评价较好的BosonNLPBosonNLP分词软件,官网是http://bosonnlp.com/dev/center
只需要注册下就能每天使用500次的关键词提取,同时获得该关键词的频率,具体操作方法请看使用手册。
(理论上用它的分词与词性提取效果更好,分词后仅保留名词即可,但是这样会有2万左右的词汇,一是词汇大量重复,和郭靖相关的就重复了300次[郭靖说,郭靖笑,郭靖冲,次日郭靖…],二是软件跑着就跪了,所以这里用关键词替代)

官网提供的py关键词提取代码,稍微修改下适应这道题需求:

from __future__ import print_function, unicode_literals
import json
import requestsKEYWORDS_URL = 'http://api.bosonnlp.com/keywords/analysis'for i in range(1, 9):filename=(r'C:\Users\icefire\Desktop\txt5\0%02d.txt'%(i))print ('处理%s'%(filename))input_file = open(filename)text = input_file.read( )input_file.close()params = {'top_k': 300}data = json.dumps(text)headers = {'X-Token': '你的密钥,在控制台最下方'}resp = requests.post(KEYWORDS_URL, headers=headers, params=params, data=data.encode('utf-8'))filename=(r'C:\Users\icefire\Desktop\txt5\word_0%02d.txt'%(i))print ('输出%s\n'%(filename))output_file=open(filename,'w')   for weight, word in resp.json():output_file.write('%.0f %s\n'%(weight*weight*10000, word))output_file.close()

这里每个文档生成300个关键词(有点少,毕竟5章那么多字,但是由于分词的效果也一般般,就没设置太大的数目),由于所有关键词的频率的平方和为1,所以对词频做平方和操作,并乘上10000,作为该关键词的频数。

步骤二:生成用于GibbsLDA++0.2GibbsLDA++0.2的文档:
这个步骤比较简单,由于LDA并不关心文档中每个词的顺序,所以仅需对每个关键词重复复制频数次就行。
最终输入的TEXT,第一行是文档的总数n,接下来的n行每行代表一个文档,文档中的每个词用空格隔开

filename1=(r'C:\Users\icefire\Desktop\txt5\text.txt')output_file=open(filename1,'w')
output_file.write('8\n')
for i in range(1, 9):str=''filename=(r'C:\Users\icefire\Desktop\txt5\word_0%02d.txt'%(i))print ('处理%s'%(filename))input_file = open(filename)for line in input_file.readlines():  num,tstr=line.split();num=int(num)for j in range(1, num):str += (tstr+' ')input_file.close()output_file.write(str+'\n')print ('输出%s\n'%(filename1))
output_file.close()

步骤三:运行GibbsLDA++−0.2GibbsLDA++-0.2
我这里用的是VS2015VS2015编译了GibbsLDA++−0.2GibbsLDA++-0.2,输入参数中,α,β\alpha,\beta采用默认值,话题数为15,每个话题关键词为50,没迭代500次保存一次结果,最大迭代次数2000次,得到结果如下。

步骤四:结果分析
先放题目要求的结果,每个文档所对应的话题演变(保存在.theta文件仲)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0.001 0.186 0.803\color{red}{0.803} 0.0004 0.0004 0.0007 0.0007 0.0004 0.0006 0.0006 0.0008 0.0007 0.0005 0.001 0.0008
0.001 0.160 0.002 0.0007 0.001 0.0003 0.001 0.0009 0.003 0.001 0.003 0.004 0.001 0.814\color{red}{0.814} 0.001
0.0009 0.124 0.002 0.0007 0.007 0.001 0.002 0.001 0.003 0.828\color{red}{0.828} 0.002 0.001 0.006 0.014 0.001
0.004 0.088 0.0007 0.005 0.001 0.877\color{red}{0.877} 0.003 0.003 0.0008 0.006 0.001 0.002 0.002 0.0005 0.001
0.002 0.156 0.0004 0.769\color{red}{0.769} 0.002 0.020 0.003 0.003 0.001 0.013 0.008 0.0007 0.002 0.01 0.002
0.001 0.128 0.0006 0.005 0.002 0.0009 0.002 0.002 0.001 0.001 0.844\color{red}{0.844} 0.001 0.002 0.0006 0.003
0.002 0.149 0.0009 0.007 0.780\color{red}{0.780 } 0.006 0.001 0.001 0.002 0.003 0.035 0.002 0.003 0.001 0.0009
0.813\color{red}{0.813} 0.108 0.0009 0.006 0.024 0.021 0.002 0.001 0.001 0.001 0.013 0.0009 0.001 0.002 0.0005

横坐标表示15个话题,纵坐标表示8个文档

文档一:剧情从开头到郭靖降伏小红马为止,可以从表中看出该段最主要的话题是话题2。
话题2主要词:

概率 概率 概率 概率 概率
柯镇 0.130330 郭靖 0.104801 丘处机 0.081499 杨铁心 0.053299 韩小莹 0.035488
朱聪 0.033262 蒙古 0.028660 铁木真 0.028364 段天德 0.026286 江南 0.023169
贫道 0.021833 完颜洪烈 0.018271 道士 0.015599 喝道 0.014115 张阿生 0.013818
郭啸天 0.012482 韩宝 0.010701 0.010553 铜缸 0.010404 李萍 0.009662
金发 0.008920 0.008475 兄弟 0.008178 武官 0.007584 丘处机道 0.006694
只见 0.006694 焦木 0.006100 陈玄风 0.006100 颜烈 0.006100 梅超风 0.006100
完颜洪熙 0.005210 敌人 0.004913 官兵 0.004913 华筝 0.004764 王罕 0.004764
马背 0.004616 军士 0.004468 临安 0.004319 拖雷 0.004171 孩子 0.004171
0.003874 桑昆 0.003874 0.003429 韩宝驹 0.003280 0.003280
地下 0.003132 大哥 0.003132 0.003132 0.003132 铁木真道 0.002983

柯镇恶在这里的概率是超过郭靖的,因为在前5章一大部分是在江南发生的事,后来七怪去了蒙古才找到郭靖,这里的词汇主要是江南和蒙古出现人物的人名。

文档二:剧情从七怪发现郭靖内功突增到王府梅超风被黄蓉胁迫帮助郭靖。该段最主要的话题是话题13。
话题2主要词:

概率 概率 概率 概率 概率
郭靖 0.411307 师父 0.203639 黄蓉 0.043272 梅超风 0.024810 师哥 0.024136
公子 0.021306 王处一 0.014972 彭连虎 0.010390 柯镇 0.009986 完颜康 0.009851
喝道 0.009312 功夫 0.009043 0.009043 内功 0.007021 穆易 0.006482
通天 0.005673 众人 0.005269 0.005000 少年 0.004730 侯通海 0.004730
梁子 0.004595 桃花岛 0.004595 铁木真 0.004461 小子 0.004461 王妃 0.004191
小王 0.004191 朱聪 0.004056 说道 0.003922 贫道 0.003922 完颜洪烈 0.003787
武功 0.003652 马钰 0.003652 比武 0.003652 弟子 0.003517 只见 0.003383
蒙古 0.003383 杨铁心 0.003248 0.002843 桑昆 0.002843 江南 0.002439
左手 0.002170 少女 0.002170 师弟 0.002035 黄蓉道 0.002035 管家 0.001900
手腕 0.001765 札木合 0.001765 女子 0.001765 华筝 0.001496 王爷 0.001361

该话题依然包含了部分蒙古的词汇,但是大部分都排在了后面。武功,功力等词排在最常出现的几个人名之后。

文档三:剧情从王府梅超风帮助郭靖到宝应郭靖黄蓉救出程瑶迦。该段最主要的话题是话题9。
话题9主要词:

概率 概率 概率 概率 概率
郭靖 0.231838 黄蓉 0.229868 洪七公 0.060563 梅超风 0.057411 穆念慈 0.043095
师父 0.032981 爹爹 0.029960 武功 0.022473 陆庄 0.018927 陆冠英 0.016957
说道 0.012491 完颜康 0.011703 丘处机 0.010652 喝道 0.010521 彭连虎 0.010258
药师 0.009207 裘千仞 0.008551 黄蓉道 0.008157 0.007763 欧阳克 0.007237
朱聪 0.005661 江南 0.005398 0.005267 0.004610 功夫 0.003954
0.003691 梁子 0.003691 弟子 0.003297 柯镇 0.003165 0.003034
郭靖道 0.003034 桃花岛 0.002903 蓉儿 0.002903 晚辈 0.002771 右手 0.002640
0.002640 拳法 0.002509 老人家 0.002509 陆乘风 0.002377 0.002377
小子 0.002377 左手 0.002246 归云庄 0.002246 老前辈 0.001983 亢龙有悔 0.001852
杨铁心 0.001721 通天 0.001721 登时 0.001721 问道 0.001458 立时 0.001458

该段主要剧情在于洪七公教郭靖掌法以及归云庄,到这里大概能归纳出该LDA算法将每个段落主要名词来划分话题。

最后再贴一段:
文档6:剧情从牛家村黄药师大战全真七子开始到瑛姑找一灯大师报仇结束。该段最主要的话题是话题10。
话题10主要词:

概率 概率 概率 概率 概率
黄蓉 0.384576 郭靖 0.276421 裘千仞 0.058391 药师 0.028034 杨康 0.027174
丐帮 0.019800 师父 0.018325 书生 0.016358 黄蓉笑道 0.009107 黄蓉道 0.008370
蓉儿 0.007264 爹爹 0.006526 瑛姑 0.006157 农夫 0.005912 弟子 0.005789
0.005543 老帮 0.005420 0.004683 桃花岛 0.003699 洪七公 0.003576
帮主 0.003576 郭靖道 0.003208 铁掌帮 0.002716 哥哥 0.002716 简长老 0.002593
段皇爷 0.002470 群丐 0.002347 功夫 0.002225 洪帮主 0.002102 0.001856
0.001733 彭长老 0.001733 娃娃 0.001610 大师 0.001610 欧阳锋 0.001610
真经 0.001487 0.001364 立时 0.001364 梅超风 0.001364 点头 0.001364
兄弟 0.001241 姑娘 0.001118 裘千丈 0.001118 靖蓉二人 0.000996 渔樵耕读 0.000996
双手 0.000996 软猬甲 0.000996 啊哟 0.000873 竹杖 0.000873 竹棒 0.000873

该话题中的主要词都是在丐帮,铁掌峰和湘西一行的人物名词。

到这里还是有些疑问的,感觉这样为每段归纳话题的意义并不大,因为仅仅是将每段关键词又重新拿了出来作为话题。如果分词后先将这些词归进行话题分类,再对文档进行话题归纳,这样做是不是更好呢?

机器学习(周志华) 参考答案 第十四章 概率图模型 14.9相关推荐

  1. 《机器学习》 周志华学习笔记第十四章 概率图模型(课后习题)python实现

    一.基本内容 1.隐马尔可夫模型 1.1. 假定所有关心的变量集合为Y,可观测变量集合为O,其他变量集合为R, 生成式模型考虑联合分布P(Y,R,O),判别式模型考虑条件分布P(Y,R|O),给定一组 ...

  2. 机器学习(周志华) 第十四章概率图模型

    关于周志华老师的<机器学习>这本书的学习笔记 记录学习过程 本博客记录Chapter14 文章目录 1 隐马尔可夫模型 2 马尔可夫随机场 3 条件随机场 4 学习与推断 5 近似推断 6 ...

  3. 【机器学习-周志华】学习笔记-第七章

    记录第一遍没看懂的 记录觉得有用的 其他章节:         第一章         第三章         第五章         第六章         第七章         第八章      ...

  4. 机器学习(周志华西瓜书) 参考答案 总目录

    转自:http://blog.csdn.net/icefire_tyh/article/details/52064910 从刚开始学习机器学习到现在也有几个月了,期间看过PDF,上过MOOC,总感觉知 ...

  5. 机器学习 周志华 第一章课后习题

    机器学习 周志华 第一章课后习题 1.1 1.2 1.3 1.4 1.5 1.1 在下面这张图片中若只包含编号为1和4的两个样例,试给出相应的版本空间. 书上实例: 1.表 1.1 对应的假设空间如下 ...

  6. 小吴的《机器学习 周志华》学习笔记 第二章 模型评估与选择

    小吴的<机器学习 周志华>学习笔记 第二章 模型评估与选择 上一周我们介绍了第一章的基础概念,这一次将带来第二章的前三节.后面的2.4 比较检验与2.5 偏差与方差,涉及概率论与数理统计概 ...

  7. 小吴的《机器学习 周志华》学习笔记 第一章 绪论

    小吴的<机器学习 周志华>学习笔记 第一章 绪论 近一年时间接触到不少机器学习的知识,虽然断断续续学了一些,总感觉还没有入门(只学会了疯狂调包).因此,最近开始系统学习Machine Le ...

  8. 小吴的《机器学习 周志华》学习笔记 第二章 2.4 比较检验、2.5 偏差与方差

    小吴的<机器学习 周志华>学习笔记 第二章 2.4 比较检验. 2.5 偏差与方差 2.4 比较检验 上一周提到了实验的评价方法和性能量度,步骤简单可以看成:先使用某种实验评估方法测得学习 ...

  9. 机器学习 周志华 课后习题3.5 线性判别分析LDA

    机器学习 周志华 课后习题3.5 线性判别分析LDA 照着书上敲了敲啥都不会,雀食折磨 python代码 # coding=UTF-8 from numpy import * # 我安装numpy的时 ...

最新文章

  1. 云计算正在告别DIY时代 阿里云专有云挑起企业级市场大梁
  2. 世界一流大学观察报告:斯坦福大学何以后来居上?
  3. 工作流引擎--swamp
  4. Oracle 10g RAC修改IP/VIP地址示例
  5. 寒假作业3:抓老鼠啊
  6. 让apache解析html里的php代码,让Apache解析html文件中的php语句
  7. eclipse 启动 tomcat : Multiple Contexts have a path of /SOAProject
  8. 算法笔记_面试题_12.二叉搜索树的最近公共祖先
  9. 于仕琪 老师新版本人脸识别 - DLL接口及Python语言案例
  10. 虚拟化试题1-网络和存储
  11. GJB9001-2017质量管理体系
  12. 发改委交通运输部印发《推进“互联网+”便捷交通 促进智能交通发展的实施方案》(全文)...
  13. 利用ADB命令强制卸载oppo自带浏览器
  14. 大学计算机基础排版和打印毕业论文,大学计算机基础-电子教案第5章
  15. 苹果终究拗不过拼多多,iPhone12大跌千元
  16. 转载:摄影相关照片(相纸)尺寸大…
  17. java 下载速度_java下载速度慢啊!!
  18. 0x80070002错误代码怎么解决(0x80070002错误代码怎么解决方法)
  19. 基于 Keil MDK 移植 RT-Thread Nano RTOS到华大半导体HC32F030J8TA
  20. linux java pdf2swf_linux PDF转换为SWF

热门文章

  1. python微信群管理_利用python实现在微信群刷屏的方法
  2. 微信小程序 - 暗黑模式(深色模式)
  3. 关于千牛移动端纯H5插件和QAP应用中H5页面的概念
  4. MSP4302553呼吸灯(附代码)
  5. 僵尸网络检测和抑制方法
  6. @Enumerated的使用
  7. if函数 中关于“条件”的一些使用技巧
  8. OpenCV+Python简单实践之硬币检测以及条形码检测
  9. 解决:jar解压缩之后,图标变白的问题
  10. K2P padavan固件下宽带与IPTV融合