一、开发细节与风险控制
开发细节当中及伴随着各种各样的风险,并要及时反馈和处理风险,如果工作量评估、即使难度评估、人员变更、需求变更等等,故我们将两者放在一起,不可拆分
1.开发细节
共九个开发模块
1.1.确定源数据文件集合
步骤拆分
来源渠道
自从写网络爬虫采集:研发成本高、不是本职工作
公开数据集:五研发成本,公开数据质量高,数据量可大可小,按需获取即可
第三方数据买卖公司:无研发成本,需要付费才能获取
渠道选择
搜狗搜验室-http://www.sougou.com/labs/
多领域公开数据http://blog.csdn.net/marleylee/article/details/76587354
国外的公开数据集-https://site.douban.com/146782/widget/notes/15524697/note/519440833/
自行积累的公共数据集-https://mp.weixin.qq.com/s/8whZsvERs6zlUeYT677YyA
确定数据集
确定数据文件格式
确定数据结构及Demo数据查看
将数据传输到hadoop客户端机器中,为数据传输到hive仓库做准备
洞察数据本身
总大小
掌握计算方法
准确及算法:看到全部数据后,通过命令求实际大小
评估及算法:通过对部分数据做精细化计算,然后推到到全局数据。
总文件个数或者说平均文件大小
掌握计算方法
总记录条数
可预见的最大/最小文件记录数
1.2 将源数据装载到hive仓库
步骤拆分
zip原始数据批量解压
在hive中创建weibo_origin和weibo_product两张同构表
将解压完成的明文每天数据文件,按天load到weibo_origin载入原始数据层
数据检验与校正
清洗原始数据表weibo_origin,按天分区插入到weibo_product表中
zip原始数据批量解压
zip原始位置
将zip包解压批量解压到指定目录/data1/weibo_text下
ls weibo/*.zip | xargs -n1 unzip -o -d weibo_text/
在hive中创建weibo_orgin 和 weibo_product两张同构表
建表脚本
数据按天分区载入weibo——origin表
shell脚本load_to_weibo_origin.sh
shell脚本执行
常规测试执行
sh load to weibo_origin.sh
生产环境执行
相关命令
nohup
英文全称:NO HANG UP
不挂断的运行,可以使命令永久的执行下去,和用户终端没有关系
例如我们断开SSH连接都不会影响它的运行
关闭标准输入,终端不再能够接受任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件。
没有后台运行的意思,但有一些后台执行的形式在里边
”&“
在后台运行,但当用户会话退出(挂起)的时候,命令自动也跟着退出
命令连用:nohup [Command] &
命令永久的在后台执行,直到结束
最终脚本命令
nohup ./load to weibo_origin.sh &
数据检验与校正
校验导入数据的正确与否
样例数据查询是否正常(limil m,查看数据样例有无明显异常)
数据量级是否相同(主要是指数据当量,十成级、百万级)
数据完整性是否一致(主要是指别丢数据)
数据格式与字段是否对齐
校正方法
将数据的导入方式与数据表的解析方式保持一致
修改webo_origin 表创建脚本
将数据表weibo_origin经过清洗规则处理,按天分区载入weibo_product表
清洗逻辑
将每个表中的第一行字段名称去掉,属于多余的
清洗代码
from weibo_origin
insert overwrite table weibo_product partition(dat_seq)select * where mid1=‘mid’;
清洗完成效果
1.3 分词UDF编写
分词概述
此处主要指中文分词
中文分词(Chinese Word Segmentation,简称cws)
指的是将一个汉字序列(一段话)切成一个一个单独的的词的过程
分词的作用
中文分词是文本挖掘的基础,对于输入的一段文中,成功的进行中问分词,可以达到电脑自动识别语句含义的效果。
中文分词技术属于自然处理(nlp)技术范畴,对于一句话,人可以通过自己的只是来明白哪些是词过哪些不是,但如何让计算机也能理解?其处理过程为分词处理算法。
自然语言处理技术(NLP,Nature Language Process)
什么是自然语言
自然语言即人类的文字顿好口语,或其它用于沟通交流的形式
其为是人类智慧的结晶,自然语言处理是人工智能中最为困难的问题之一,而对自然语言处理的研究也是充满魅力和挑战
主要范畴
文本朗读(Text to speech)/语音(speech synthesis)
语音识别(Speech recognition)
中文自动分词(Chinese word segmentation)
词性标注(Part-of-speech tagging)
句法分析(Parsing)
自然语言生成(Natural language generation)
文本分类(Text categorization)
信息检索(Infromation retrieval)
信息抽取(Infromationem exrtaction)
文本校对(Text-proofing)
问答系统(Question answering)
机器翻译(Machine translation)
自动摘要(Automatic summarization)
文字蕴涵(Textual entailment)
处理难点
单词的边界界定
中文中的最小分隔单位是句子,词之间是没有分隔的。不像英文有显著的分隔
词义的消歧
中文博大精深
他说的确实在理/这的确是真的
长春市长春节讲话
旅游和服务是最好的
邓颖超生前最喜欢的一个东西
北京大学生前来应聘
小明骑着车子要倒了,小明一把把把把住了!
分词器选择
c/c++
ICTCLAS
java分词器
ansj分词(比较简单易用,本项目选择该分词器)
hanLP分词
mmseg
IK分词
jieba分词
PaoDing分词
天亮分词器
python
jieba分词
ansj分词器应用集成