前言:获得了知乎答案后,接下来就是分析了。何明科老师没有详细说明他的分析过程,我想大概对他这样的专家而言,这个过程太简单了,没有必要说。不过他提到了NLP的专业名词。于是我查询了NLP的意义。原来是大名鼎鼎的自然语言处理。网络上相关的博文不少,其中很多博文提到了NLTK这个工具。但是每个博文对NLTK的介绍却都有所出入。所以,我选择了阅读了官方的NLTK书籍(不过这书籍有点旧了,入门可以,建议有基础的同学们还是直接读英文的NLTK博客或其他网站)。
看了书之后,我决定不再专门介绍NLP和NLTK。毕竟书上讲的都很详细了,我建议大家直接看一下书。博文这里主要讲我的NLP分析过程。
一、安装NLTK
我是利用canopy的Package Manager来安装nltk(其他方法 我没有尝试过,建议直接登录nltk的官方网站阅读install过程http://www.nltk.org/install.html,非常详细,而且包是最新的)
打开available标签后,在搜索框中输入nltk,然后点击install即可,我这里已经安装好了,安装好的会显示重装或者卸载的选项。
二、安装NLTK数据包
在Canopy的IPython对话框中,输入
import nltk
再输入
nltk.download()
即可显示如下图的下载框
按照nltk的建议,将下载目录设置为C:\nltk_data
然后选择all-corpora和book下载,双击即可,最后选择all进行下载,我还逐个打开了其他的几个页面,按照status排序后,把所有没有安装的包都双击安装了。比如models页面
三、test
1)引入nltk自带的书籍资料,实际上就会把book模块中的一些书籍引入到编程环境中
from nltk.book import *
输入text1 将得到其对应的书籍 白鲸记
输入
text1.concordance("monstrous")
将会得到白鲸记中所有monstrous 对应的句子
输入
text1.similar("monstrous")
将会得到与monstrous具有类似上下文的其他单词
输入
text2.common_contexts(["monstrous","very"])
将会得到 "monstrous","very"两个词同样具有的上下文结构
text4.dispersion_plot(["citizens","duties", "freedom", "democracy", "America"])
len(text3)获得文本中包含的所有标识符数量
set(text3)获得文本中含有的所有词
sorted(set(text3) ) 将所有词按照数量排序
len(set(text3)) 所有不同词的数目
from future import division
len(text3) /len(set(text3)) 每个标识符平均使用次数
text3.count("smote") smote出现的次数
100 *text4.count('a') / len(text4) a出现的百分比
sent1 text1的第一句话 用列表表示
获得一个本文中标识符的频率分布
fdist1= FreqDist(text1) 获得文本1中每个词及其对应的出现次数 返回一个字典 key为词 value为词频
vocabulary1 = sorted(fdist1.items(),key = lambda x:x[1],reverse = True)
按照词频排序
输出前50个词
for
i, word_num
in
enumerate
(
vocabulary1):
if i<50:
print
i, word_num[0]
fdist1.plot(50,cumulative=True)
对前50个词的频率进行统计
fdist1.hapaxes() 输出低频词
低频词意义也不明显
长词 15个字母以上
V = set(text1)
long_words = [w for w in V if len(w) > 15]
sorted(long_words)
长词可以忽略一些断刺高频(the)
fdist5 = FreqDist(text5)
sorted([w for w in set(text5) if len(w) > 7 and fdist5[w] > 7])
多于7个字母的词 词频超过7个
====
马云的说法 没资源的人就要判断十年后的事情 提前布局 等人入局接盘 大数据 移动互联网 人工智能 新能源(不玩信用卡 直接互联网支付 换一条路 而不是弯道超车)
数据分析师以后就没有这个职业了 机器比人聪明 技术让世界普惠、公平、快乐 机器人工智能做我们做不了的东西 才牛逼 现在还是模仿人
互联网不是高科技 是基础设施
马化腾(阿法狗不公开论文 我们也做不出来 谷歌为什么分享?我现在学到的大多都是别人分享) 最牛逼的是 围棋可以疯狂的对弈(对战)自行发现规律
给人工智能一个现实模拟器 让他充分的去尝试 让他自己得出经验和规律
自学习的能力远超我们数据分析发现规律的能力
微软 沈向阳(7000工程师人工智能事业部 ) 20年找不到工作 现在遇上一个人就像疯狂给我钱 中间经历无数冬天
技术突破(深度神经网络 自学习能力突破) 硬件突破(more定律还有用 大数据 )
人类感知(计算机视觉、语音的发展)尚且不足的 人工智能认知(自然语言,知识获取,一般问题的思考方法,情感)
科研人员要冷静 保持平常心
朱明的演讲 中美人工智能的机会
短期的商机 哪些行业有了大量的数据 哪些人员不happy
目前来看 市场销售 人事部门 客户支持 所有的行业都会被颠覆
5年内最大的商机 每一个商业应用都会被颠覆掉
郭为( 智慧城市,6,7年时间 头破血流) 人工智能:计算能力 大数据出现 算法(三大突破)
计算能力 算法再学习美国 数据积累 是目前大量传统公司唯一有的
深网挖掘
大学是做算法 bat是计算能力 数据积累是很多公司和政府部门
2012年 和陆奇聊天 了解到深度学习即将实用化 回来研究 发现 深度学习潜力巨大 是未来技术爆发点
计算资源强大便宜 当年读书的时候教授告诉李彦宏 说学了人工智能没用 但现在条件变了 第一个建立深度学习研究院
除了算法 还要修改 芯片的结构 适应算法
互联网仅仅是人工智能的开胃菜 人工智能不是互联网的第三阶段 互联网仅仅是一个开端
人工智能是第三次工业革命的实质核心
人工智能 阿法狗 消耗2吨煤 人消耗2碗饭
功能替代 成本
搭配词 获取双连词 bigrams()
bigrams(['more', 'is', 'said', 'than', 'done'])
text4.collocations() 最常出现的连词
[len(w) for w in text1]
fdist = FreqDist([len(w) for w in text1]) 词的长度
fdist.keys()
fdist.items()
fdist.max()
fdist[3]
fdist.freq(3)
fdist.items() 获得 出现的次数 长度为1的词 次数
len(set([word.lower() for word in text1])) 可以把仅仅是大小写不同的词去掉
len(set([word.lower() for word in text1 if word.isalpha()]))
https://app.gumble.pw/jiebademo/ 结巴分词演示
https://github.com/fxsjy/jieba 官方github
主要功能:
1.分词
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)print("Default Mode: " + "/ ".join(seg_list)) # 精确模式
2.添加自定义词典
载入自定义词典
3.关键词提取
基于 TF-IDF 算法的关键词抽取
https://github.com/fxsjy/jieba/blob/master/test/extract_tags.py
关键词权重
https://github.com/fxsjy/jieba/blob/master/test/extract_tags_with_weight.py
基于 TextRank 算法的关键词抽取
test/demo.py
4.词性标注
实例
import jieba.posseg as pseg>>> words = pseg.cut("我爱北京天安门")>>> for word, flag in words:... print('%s %s' % (word, flag))...我 r爱 v北京 ns天安门 ns
5 并行分词 提高效率
https://github.com/fxsjy/jieba/blob/master/test/parallel/test_file.py
6.Tokenize:返回词语在原文的起止位置
注意,输入参数只接受 unicode
默认模式
result = jieba.tokenize(u'永和服装饰品有限公司')for tk in result: print("word %s\t\t start: %d \t\t end:%d" % (tk[0],tk[1],tk[2]))
- ChineseAnalyzer for Whoosh 搜索引擎