数据挖掘基础:分词入门
谷歌4亿英镑收购人工智能公司DeepMind,百度目前正推进“百度大脑”项目,腾讯、阿里等各大巨头布局深度学习。随着社会化数据大量产生,硬 件速度上升、成本降低,大数据技术的落地实现,让冷冰冰的数据具有智慧逐渐成为新的热点。要从数据中发现有用的信息就要用到数据挖掘技术,不过买来的数据 挖掘书籍一打开全是大量的数学公式,而课本知识早已还给老师了,难以下手、非常头大!
我们可以跳过数学公式,先看看 我们了解数据挖掘的目的:发现数据中价值。这个才是关键,如何发现数据中的价值。那什么是数据呢?比如大家要上网首先需要输入网址,打开网页后会自动判断 哪些是图片、哪些是新闻、哪些是用户名称、游戏图标等。人大脑可以存储大量的信息,包括文字、声音、视频、图片等,每一个都可以转换数据存储在电脑。人的 大脑可以根据输入自动进行判断,电脑可以通过输入判断吗?答案是肯定的! 不过需要我们编写程序来判断每一种信息,就拿文字识别来说吧,怎么从一个人在社交网络的言论判断他今天的心情是高兴还是愤怒!比如:“你假如上午没给我吃 冰淇淋,我绝对会不happy的。” 信息发布时间为下午2点。对于我们人类一看这个句子就知道他是吃过冰淇淋了,心情肯定不会是愤怒。那计算机怎么知道呢?
这 就是今天的主题,要让计算机理解句子的语义,必须要有个程序,上面的句子和发布时间是输入,输出就是 “高兴”。要得到“高兴”就要建立 “高兴”的规则,可以建一个感情色彩词库,比如 高兴(识别词是高兴、happy),愤怒(识别词是愤怒、生气)。这里的识别词就是输入中出现的词语,比如上面的句子中的“happy”就识别出了“高 兴”这个感情色彩词。但是光识别出“happy”肯定是不行的,前面的“假如。。。没。。。,我。。。不。。。”等关键词都需要识别出来,才能完整判断一 个句子的意思。为了达到这个效果,就必须要用分词技术了。
我们先人工对上面的句子来进行一下切词,使用斜线分割:“你/假如/上午/没/给/我/吃/冰淇淋/,/我/绝对/会/不/happy/的/。/”。但是程序如何做到自动切分?这个其实中国的前辈们已经做了很多中文分词的研究,常见的分词算法有:
为了让大家快速的了解分词技术,我们采用第一个方式来做测试:基于词典的分词,这种方式简单暴力可以解决百分之七八十的问题。基于词典的分词大概分为以下几种方式:
说了这么多,我们来实战一下如何基于词典的分词:
输出结果为: 我 爱 这 个 中华人民共和国 大 家 庭
按照这样我们一个基本的分词程序开发完成。
对于文章一开始提到的问题还没解决,如何让程序识别文本中的感情色彩。现在我们先要构建一个感情色彩词库“高兴”,修饰词库“没”、”不”。再完善一下我们的程序:
通过传入“你假如上午没给我吃冰淇淋,我绝对会不happy的。”,结果输出为:“当前心情是:高兴”。当然你也可以改变其中的修饰词,比如改为:“你假如上午没给我吃冰淇淋,我绝对会happy的。”,结果输出为:“当前心情是:不高兴”。
机器再也不是冷冰冰的,看起来他能读懂你的意思了。不过这只是一个开始,抛出几个问题:
1、如何让程序识别句子中的时间?比如“上午”、“下午2点”。
2、如何处理“把手抬起来” 和
“这扇门的把手”中的“把”与“手”的问题?
3、如何构建海量的知识库,让程序从“婴儿”变成“成年人”?
4、如何使用有限的存储空间海量的知识库?
5、如何提高程序在海量知识库中查找定位信息的效率?
6、如何识别新词、人名、新鲜事物等未知领域?
这是《纽约时报》刊登的2张照片,一张是老鼠的脑细胞(左),一张是宇宙(右)。早期宇宙中星系互连关系,和大脑神经元相互连接,几乎无法分辨两张图之间的不同,大脑细胞与整个宇宙拥有一样的结构。
宇宙芸芸众生都是相通的,大脑也许就是一个小宇宙,在这个小宇宙又有很多星球、住着很多生物。而电脑也是宇宙中地球上的一个产物,只要存储计算速度发展到足够强大一定可以构建成一个强大的大脑。http://www.cda.cn/view/17190.html
你看这个单词 “testaword” 认识吗?可能不认识,因为我们五官先获取到的信息,然后根据大脑以往学习的经验做出判断。但是你看这个短语 ” test a word” 认识吗?再看看开始那个单词“testaword”是不是就亲切多了?