把手写笔记搬上来 , 以后就用博客进行学习记录了 , 加油!
喜欢做NLP的项目 , 让机器读懂文字的感觉很奇妙 。
做过文本分类、摘要生成、机器翻译和NER , 写代码的过程中细想来其实所谓人工智能 , 真的就是让计算机模仿人类的思考逻辑来完成运算 。
我们从小学习语言文字 , 都是从识字 , 组词到造句
计算机学习文字 , 也要从字或词开始 , 到造句
一、我们识字 , 无论中英文 , 对字义的理解 , 本质上都是用一些字去解释另一些字 , 那么这些字之间就存在紧密联系 , 比如解释“吃”的意思 , 自然离不开“口”、“嘴”、“食物”这些字词 , 那么其实我们识字的思考逻辑其实就是找出各种字词之间的联系——同义、近义、反义等距离关系 , 以及主谓、动宾、定状补等位置关系;而我们识字的学习方式主要是一本新华字典 , 字典中不仅说明了每个字如何表示 , 还给出该字如何用其他字来释义 。
【NLP项目流程及思考逻辑】那么 , 计算机认识文字 , 则同样是要思考如何识别出字与字之间的不同以及距离和位置关系 , 由于计算机只能处理数学字符 , 那就要用各种不同的数字组合去表示不同的文字以及距离和位置关系;而计算机识字的学习方式同样是构建字典:
![NLP项目流程及思考逻辑](http://img.gansulong.com/230624/031I53030-0.gif)
文章插图
构建字典/词典:将字或词用数字表示为计算机理解的形式
构建的字典其实也有两种 , 一种是仅根据项目所涉及的语料来构建字典 , 一种是构建类似于新华字典那样的几乎包含所有字的字典 , 这两种字典也代表了NLP发展的不同阶段:
最初 , 最简单的字典为, 以及 , 这样的字典只能起到让计算机识别不同字的功能
之后 , 利用tfidf算法构建的字典 , 能够起到识别出项目所涉及语料中不同字词的重要性的功能
再之后 , 利用层级以及 的CBOW或算法构建的字典,能够识别出不同文字之间的距离关系(相似性) , 而这种距离关系可以脱离语料而存在 , 如果用维基百科作为语料进行学习 , 就相当于建立了“新华字典”
最新的进展 , 则是利用以及机制构建的Bert预训练模型 , 能够识别出不同文字之间的距离关系和位置关系 , 相当于建立了一个基础字典 , 之后可以在基础字典之上利用个性化的项目语料训练更为适合的个性字典
(至于构建字典还是词典更好 , 自认为词典比字典无论在词语数量还是释义多样性方面都是更强的 , 毕竟3个字只能表示三个字义 , 但却能最多组成6个词表达6种词义)
二、
![NLP项目流程及思考逻辑](http://img.gansulong.com/230624/031I5MJ-1.jpg)
文章插图
我们学习语句 , 学得主要逻辑是根据词性词义思考不同词语都可以放在句子中的哪些位置以及由此带来语句的不同含义 , 我们学习位置的方式主要是通过“主谓宾定状补”以及“主语从句、定语从句、状语从句”等语序的规则进行学习 , 其次老师们也会出题 , 给出上一句 , 补充下一句的方式进行造句供学生练习
计算机学习语句也同样 , 需要学习到整个语句中 , 每个词的表示以及其位置对整个语句表示的影响 , 对“位置”的学习也有两种方式:
- [G星计划]--项目开发总结
- 滴滴开源3周年,都发布过哪些项目?
- vue项目结构目录介绍
- 【Vue前端开发学习】第2章,Vue项目目录结构
- 【浏览器】Ajax 是什么? Ajax的基本流程?
- python CGI编程、smtp邮件发送、pygame项目创建
- 专案组查案期限是多久,刑事案件的办案流程是什么样的
- 二、Vue2.0项目结构内容及配置解析
- 解决项目版本冲突——maven-shade插件使用
- maven项目如何打包运行指定java程序(maven-shade