如项目阶段,数据集怎么得到,模型的训练,怎么部署、项目人员周期、以及开发中会出现哪些棘手的问题
如文本分类就fasttext、词典,序列标注就最大逆向匹配和CRF之类的,如果是改造、升级,那就做出针对性的策略,天花板明显就是模型的时候,再考虑改进模型
方案有了就开始执行
- 其实80%的时间都在数据上,初版项目是没数据,新版本要处理现在的数据,新增特征工程之类的,要是上新模型,更复杂了。
- 开始弄模型,训练也好,规则也好,都得评价一下效果,分析现在能不能上线,不能上线哪里还有提升点。
数据来源:
- 用户日志。公司级别最为常见,但是标注一般比较难拿,这个就需要更加八仙过海的操作了,人工、半监督弱监督。
- 爬虫,不解释。
- 很多论文里会提到数据集。
- 百度、github。
上线吧,这其实是一个有成熟方法但是文章很少说的部分,方法比较统一。
- python一套,在线环境一套,没有包就重写,LR之类的其实很简单。
- 传统方法,打包模型,包裹在项目里面。例如crf++,sklearn之类的能这么做,甚至是tensorflow。
- 直接做个模型服务,这样能单独维护模型,tensorflow serving。
周期大概就这样,后面结合这一版本的业务背景现状,来确定做不做优化和做哪些优化。
最后说说可能称为风险的点。我的理解,算法里面的风险大都在资源上,说白了就是没数据。
- 数据质量不足,模型训练效果不好。
- 数据量不足,模型过拟合。
- 一上来就想跑大模型,结果内存、耗时都爆炸。
- 模型效果本身就不好,要多考虑规则能不能解,特征工程是否不足,其实说白了还是资源问题。
作者:机智的叉烧
链接:请问,公司里做NLP任务的开发流程是怎样的? - 知乎
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2.
首先希望明确的一点是,在整个NLP项目任务里,模型的设计和训练其实是最简单的一环,这里说的简单并不一定是指问题简单,而是说,它在整个的工作开销的占比很小,需要花费的心力也相对较少。原因主要有两点:第一,实际业务端的需求能够走到模型设计这一步的时候,必然是经典任务可以描述的业务,反之,非常复杂的业务不会放心交给机器自动去做的;第二,在这个前提下,模型的选取和训练对于科班出身的人来说都是比较简单的。
那么真正的挑战在什么地方呢?恰恰就在大家最喜欢的模型的前和后两个阶段,对需求的理解。
之后 就是获取数据。
在模型之后的过程里,上线部署是一个关键的问题。大家可以放心,很多情况下Deep Learning这种高大上(?)的模型都不太能直接满足线上部署的要求,所以这里再次证明了模型选取的时候一定要在满足需要的情况下尽可能简单,做项目和做研究完全不同,拿做研究的心态做项目会吃亏,反之也是如此。
作者:王宝勋
链接:请问,公司里做NLP任务的开发流程是怎样的? - 知乎
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
3.
NLP算法工程师的核心竞争力
信息检索 信息检索、文本匹配
对话系统
问答系统
问答系统