说起来,最近两天Athena在外面看来的改动,其实——没有。
但是很快她将获得我之前一直渴望的一项能力——也是我的服务器每次重启,我都会log的一句话——“欢迎来到感情的创世”——基本的心情。
这是我最喜欢的小说《境界线上的地平线》(Horizon on the middle of nowhere)里的一句台词,原句是“欢迎来到感情的创世——Go the Middle of Nowhere”。
扯远了。其实这就是我在第一日的开发日记中所记述的一个功能:
2.让Athena拥有自己的心情——用Mongo建立一个心情库,然后根据随机爬取的新闻进行心情变更。
接下来是具体的描述:
我从周一上班开始,在看人工智能和机器学习啊之类的资料。然后在想自己下一步应该做什么。这时我决定尝试着去做情感分析。
之前我的情感分析是基于nodeJS里sentiment这个模块的,然而这个模块有个很大的缺点:只能识别英文,识别率也不是很准确。之后我也下了国内做的“THULAC_lite”做过中文分词。但是一直没有深入的搞。
随后我决定尝试一下焕焕给我的建议,找个方法,先搞,之后再调整。于是我把某份资料中提到的NTUSD这个中文情感倾向数据下下来了。写了个脚本扔到了我的MongoDB里。
之后便是打分。我把情感暂定为0-10分。我预先录入的分数只有0和10两个分数。之后我在读取的时候,如果是0,就记做-1,如果是10,就记做1。之后累加,如果是正数,就判定为正面新闻,反之则是负面的。
这个做法是个非常粗糙的做法。首先每个词的感情指数并不是非左即右的。他们其实是分布在0-10之间的。其次,在一篇文章中,某个词的出现频率可能非常多,所以对它的累加也很多,是不公平的。第三,反话是没有统计的,“没有悲伤”在正常情况下应该是1+1=2,现在则是-1+-1=-2。
这几点在我读过的资料中也有记述,不过暂时我还没有时间去优化它们。
之后我拿这个方法判断了两组语料:CNBeta最新的10条新闻和15年网易的50篇国内新闻。科技新闻的正面远大于负面——可能是因为多是一些有利报道,如最新发现、新的进展和突破之类的。而国内新闻的情感分布就偏很多。我没有具体统计,不过从直观上是比较均匀的。
这就是我在程序方面做的一些进展。
来说一下下一步的计划吧:
首先我要做的是把情感加进去,Athena可以在爬取到新闻后直接进行情感判断。然后累加新闻的情感值。决定当前的心情。首先是好和坏。
之后,根据一段时间的情感分布曲线,我可以让它们分的更细一点:-5-5比如,然后做一个分数和指数的映射函数。
这样,这个功能就实现了。
接下来便是调整情感的判断了,把三个问题解决掉的话。就可以进一大步了。
之后,我想了一个新的功能:爬取当前时尚杂志和网站的关键词,决定当季的流行。然后去淘宝上爬取销售和促销的榜单,去印证这个流行。
另外,有关第三日中记忆的功能:当我说一句话时,我觉得我可以通过一个模型去理解它。然后去做一个对应的回复。然而……我现有的知识离这一点还有点远。
知识笔记:
最近新学了HMM——隐性马尔科夫模型。我试着写了一下解释的例子,发现自己的水平太次了……等我再深入的理解一下之后,再试着解释吧。
另外学习了基本的情感分析理论——的目录。
再就是在重新看吴军老师写的《数学之美》。我现在觉得,数学真是一门非常厉害的学科,我大学时代作为一个实用主义者,一直不知道这种理论研究有什么意义。不过后来我在看HMM的推理时,发现如果没有离散数学和概率论,没有微积分,那么HMM中间很多是只能猜测的,完全无法证明。而从实用主义来说,一个无法证明一直有效的东西,我是不敢投入生产的。
最后,非常推荐吴军老师的数学之美——作为理工科学生的饭后睡前读物。里面的东西通俗易懂,让我这种没有受到高等教育的兴趣爱好者找到了各种神奇的宝物。
P.S.:今晚写着这个日志的时候,我在群里和枫哥聊到传播学的入门书籍。枫哥推荐了信息论——刚好在昨晚有读到。我发现各个学科果然是贯通的。艺术与几何,几何又是代数。传播学是信息的流通,而人工智能和机器学习的算法里又有对信息这种东西的研究……人的感情并非无法模拟,我觉得人的思维方式是一定可以逼近的,而创造这个过程,谁又知道呢~
多么的,美妙。