门户
图库
科技
数据
VR
区块链
学院
论坛
百科
导航
登录
注册
帮助
公社首页
中国人工智能社区
公社版块
公社群组
Group
升级会员
用户名
Email
自动登录
找回密码
密码
登录
立即注册
登录后你可以:
登录
首次使用?
点我去注册
搜索
搜索
本版
帖子
公社群组
用户
道具
勋章
任务
设置
我的收藏
退出
首页
›
智能技术
›
自然语言
›
深度学习自然言语全流程平台搭建
返回列表
深度学习自然言语全流程平台搭建
[复制链接]
我是sam
2019-9-29 14:59:33
显示全部楼层
|
阅读模式
开篇:为什么要构建自然言语的Pipeline
自然言语的关键在于
拆解文本,提取文本特征,获取不同深度层次的语义,以及语义关系
。
很显然处理一个文本很难经过一个算法或者一套算法来搞定。例如处理分词的算法一定和做情感分析的算法是不分歧的。因此我们希望对系统停止解耦,经过pipeline对各个解耦后的模块停止内聚。
我们可以把自然言语处理平台当做一个造车工厂,文本就是一堆原材料,如钢铁,橡胶,塑料凳。工厂有不同的车间会把原材料停止拆解加工,然后还会有对半成品停止拆卸的车间。最后的成品就是一辆车,那对于自然言语pipeline来说,输入就是文本,语音等信息,输入就是一个文本feature的集合,这就是我们想要的车了。至于这辆“车”是“劳斯莱斯”还是“比亚迪”,就取决于我们各个车间的算法设计,以及全体的执行效率。
关于构建pipeline的框架:
A方案: UIMA (Unstructured Information Management applications)框架:
UIMA官方解释是用来分析非结构化信息,并发掘知识点。我以为这个解释不够敌对,也没有表达出系统的弱小之处。我以为UIMA是一个构件残缺,流程解耦,模块化管理都比较迷信的信息流处理框架,它可以用来处理基本上我们可以接触到的一切信息,无论是语音,文本或者是图像。
UIMA提供减少反复开发的可重用分析组件,我们需求做的是基于框架开发我们本人的算法模块,经过UIMA对模块之间停止串行或者并行的管理,框架还提供了对应各种feature的 笼统,以及feature之间关系的笼统。我们也可以根据不同业务的需求去针对性的承继UIMA提供的数据结构做个性化开发。此外UIMA-RUTA 组件还提供了逻辑推理功能,可以方便的经过简单代码停止关系推论等。
UIMA框架抽取文本实体的一种流程
言语支持
UIMA系统支持java言语和c++言语开发。拿java言语举例,我们的每一个“工厂”算法,例如分词器作为一个工厂,我们需求提供一个接口Annotator去完成JCasAnnotator_ImplBase 这个类即可。资源,例如词典之类的数据可以交给框架来加载管理。把处理分词的接口写入到process方法中,框架会自动停止调用。并在处理过程中,把获取的一切信息或者特征,停止格式化写入到一个名叫JCas的对象中,JCas就是整个框架的存储容器,相似于spring中的context全局对象。JCas类中的每一个属性都是支持个性化触及的,灵敏性非常高。
UIMA的管理策略是经过执行xml文件来停止规划的(当然也可以运用代码的方式),xml里可以制定当前算法的输入输入格式,显示或者隐藏哪些特征,经过反射的方式指定算法入口和类型婚配文件等。除此之外还可以设置算法的超时工夫,指定执行方式是串行还是并行等。
经过xml配置文件决议输入输入与流程
UIMA对中国初学者并不敌对
当然UIMA我并不引荐初学者运用,假如你有两三个人的小队很需求搭建一个弱小可用的nlp流程服务,那么你可以大胆尝试UIMA。该框架是Apache下开源项目,但是其中文文档并不多,多数教程都是英文版的。学习门槛偏高。但是该系统的优越性还是不容置疑的。
B方案: 自研Pipeline框架;
为什么要自研?
小智正在录制平台构建的视频教程,之后自然言语处理平台的相关教程,都会采用本人搭建的方式,并在日常的开发过程中不断优化其功能。
本人开发的优点有很多,熟习算法与工程的结合,深化了解Nlp各个环节的互相搭配。同时,最重要的就是加深对各个算法以及对编程言语,思想的了解。例如,搭建过程中会了解什么是反射,单例等设计形式,执行效率,异常处理等,以及怎样去合理的加载资源调用模型等。
除此之外,我们在自研的过程中,也会运用到很多工业界触及的工具包,更好的接轨工业界。
下面我们来说一下如何构建本人的Nlp pipeline吧。
关于开发工具:
代码管理工具git,项目自动化构建工具gradle,开发ide: intellij, 言语java,python,微服务框架采用springboot。
我们的框架详细要放哪些算法呢?
a. 分段与分句 “工厂”
b. 分词“工厂”
c. 词性标注“工厂”
d. 实体辨认“工厂”
e. 词权重关键词“工厂”
f. 文本降噪
e. 其他... 例如文本倾向性分析,文本摘要生成,词向量等。
初期框架需求:
1.50qps单机级别(单条50字),级别异常处理
2.资源一致加载,流程串行
3.支持微服务并发调用
4.模块解耦,一切模块可独立打包
5. ......
模块化搭建:
第一步:搭建服务平台
a. 需求下载springboot包(经过build.gradle文件配置sprintboot相关地址):
b. 配置springboot启动类:SpringBootServletInitializer
c. 配置controller:用于相应http央求
第二步: 构建算法子模块
本处以建立分词子模块为例。
a. 在父模块目录下,新建gradle子项目 np_segmentor。
b. 父项目中的settings.gradle与build.gradle项目中配置子项目名--np_segmentor。
c. 在子项目中加载需求的依赖包。并构建
第三步: 反复第二步构建其他算法模块。
总结:
之后便是持续开发我们的全体框架模块了,需求开发总控模块,用来调用资源加载模块,一切算法接口的调度完成也要写在框架层面而不是算法层面。有了这些全体框架就初步成型了,之后就是一些系统的控制成绩,例如超时相应成绩,不同类型的异常处理成绩等等。
最后你的项目会很充实,如下图样式。
详细完成因需求而异
留意,根据不同需求我们一定会用到一些微服务提供的模型,例如运用tensorflow构建的其他深度学习模型,都可以运用微服务方式停止接口调用,也可以采用JNI方式外部直接调用python或c++接口。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
回复
使用道具
举报
大神点评
3
默0默
2019-9-29 15:04:46
显示全部楼层
分享了
回复
使用道具
举报
幸远星
2019-9-30 18:13:36
显示全部楼层
有空一起交流一下
回复
使用道具
举报
玥瑩
2019-10-1 19:42:25
显示全部楼层
LZ是天才,坚定完毕
回复
使用道具
举报
发表新帖
回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
本版积分规则
发表回复
回帖后跳转到最后一页
我是sam
金牌会员
0
关注
0
粉丝
104
帖子
Ta的主页
发布
加好友
最近发表
定档8月16日 | 2024亚洲智能穿戴大会
华为智能眼镜 2评测:可能是上班族最好用的智能穿戴
2023年全球智能可穿戴腕带出货量及竞争格局分析
智能穿戴概念8日主力净流出24.84亿元,光启技术、立讯精密居前
智能穿戴概念11日主力净流入5.62亿元,三六零、兆易创新居前
智能穿戴概念10日主力净流出23.94亿元,立讯精密、中兴通讯居前
公社版块
版块推荐
更多版块
智能穿戴
智能家居
机器人
无人驾驶
无人机
反馈吐槽
闲聊灌水
大话智能
大数据
图像识别
自然语言
数据挖掘
大话智能
数据挖掘
北大讲座
清华讲座
网贷观察
股市评论
区块链
闲聊灌水
反馈吐槽
站务通知
关注我们