自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别。自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统。因而它是计算机科学的一部分。
弱人工智能:限定领域解决特定问题
强人工智能:通用领域胜任人类所有工作
超人工智能:远超人类智慧
人工智能的三驾马车:算法、算力、数据
集语言学、数学、计算机科学为一体
自然语言处理的目标:人机交互、数据分析/挖掘
(1)落地型
主要负责业务场景的算法落地,动手能力强
需要熟悉业务场景常见问题,极端情况的处理
难点:小坑不断,需求总改,数据常缺,效果老降
(2)研究型
主要负责发表论文及算法比赛等,理论知识扎实
研究内容可以脱离实际业务,在公开数据集上工作
难点:想好的思路已发表,比赛的分数被人超
业务人员/甲方:一般是非程序员,根据业务场景需要,提出需求
产品经理:与业务对接,梳理需求,整理成开发的计划;或根据用户反馈等,提出自己的需求
开发人员:细分种类很多,人工智能方向一般大致分成算法开发和工程开发,合作处理整个项目
测试人员:专门进行测试,也可以进一步细分,一般也需要编程能力
运维人员:机器维护人员,服务器和数据库的重启、扩容、缩容等操作由他们进行,同时负责监控服务运行的状况
Optional:部署人员、数据标注人员、项目管理人员、平台维护人员等
①确认需求——业务发起需求评审
了解业务背景,以算法人员视角给出是否可行的意见
②确认技术方案——开发进行技术评审(算法方案+工程方案)
对问题的建模过程,需求转化成哪(几)种机器学习问题(或规则处理),需要哪些前置条件
③获取标注数据——算法或业务提出数据需求
建立标注规范,校验数据格式,抽样评估效果,训练集验证集划分;搜索开源数据;购买数据
④代码开发——模型训练、功能开发等
训练/预测代码开发,算法实验,对比效果
⑤测试——测试用例评审
功能测试,效果测试,性能测试,开发可以自测,配合测试组发现的问题做修改
⑥部署上线/投入使用——开发上线,测试验证,运维监控
每个公司使用框架有差异,根据实际情况处理
⑦后续迭代——业务提出优化需求
数据埋点,分析日志等
①口吃系列:划分语义边界
eg.过几天天天天气不好
②分词系列:划分语义边界
eg.南京市长江大桥
③套娃系列:语言的递归性
eg.转发《自治区教育厅办公室关于转发<教育部关于xxxx的通知>的通知》的通知
④同文歧义系列:常识认知/社会认知
eg.单身的原因有两个,一是谁都看不上,二是谁都看不上
⑤反话正说系列:语序和语义的关联
eg.屡败屡战 屡战屡败
⑥崩溃系列
⑦英语系列
困难总结:NLP对于机器来说很困难,本质上是因为对人来说它也很困难。换句话说,这个任务本身的复杂度就非常高,远远高于下围棋等看似复杂,但实际有明确规则的任务。语言本身具有创造力,在不同领域和时代不断发生着变化。
图灵测试:让计算机来冒充人,与人展开对话。如果不足70%的人判对,也就是超过30%的人误以为在和自己说话的是人而非计算机,那就可以认为这台机器拥有人类智能。
1950年提出,是图灵的个人看法,并非当前业界的追求
①深度学习大幅改变了NLP研究,极大的推进了NLP技术的发展。
②NLP技术已经深入生活的各个角落,输入法、语音助手、搜索引擎、智能客服等大量依赖NLP技术的应用已经被推广和使用。
③大语言模型的强大理解能力,让人们看到了强人工智能的曙光。
推荐Pycharm、VSCode以及Linux中的vim
Tensorflow 大名鼎鼎,工程配套完善
Pytorch 学术界宠儿,调试方便,目前的主流
Keras 高级封装,简单好用,现已和Tensorflow合体
Gensim 训练词向量常用
Sklearn 大量机器学习算法,如逻辑回归,决策树,支持向量机,随机森林,KMeans等等,同时具有数据集划分和各种评价指标的实现
Numpy 各种向量矩阵操作