前言
本文是我学习大模型之后梳理的一点感悟,从毫无概念到触摸到一点门槛,在此记录分享出来。
这部分围绕的是nlp基础部分梳理。我将以我的理解从流程,原理,实践去整理,如果有错误欢迎探讨。
背景
NLP 的全称是Natural Language Processing,即自然语言处理。NLP 解决的核心问题是让计算机能够更好的理解人类的自然语言。总所周知我们平常编写程序,需求转换到业务模块的第一步就是结构化业务场景,将需求中出现的数据、状态、结构化设计转换成数据库的表。仍然记得最早学习开发时候,老师说的一句话就是世界上的应用程序都是运行在oracle之上的。随着业务的发展场景的多样化,数据库又从关系型数据库分化出了非关系型数据库。即一些场景通过结构化描述并无法完全满足需求,用更模糊的数据类型去存储更可以满足现实场景。当然这只是个题外话。
nlp发展则是在计算机结构化之上能够满足更模糊的需求,即我们自然语言中表达的情感,意识。并能够提取映射到真正的逻辑上。
如何理解
从一开始,我就不断想理解nlp到底是个什么东西,但是作为没有经验的程序员来说只能以自身接触的东西作为参考。从java开发的角度,我的理解是NLP 就像 “Java Web 开发” 这个领域,NLP 的通用流程(数据准备→预处理等)就像 MVC 架构,TF-IDF/W2V 等算法就像 MVC 里的 Controller/Service(各环节的具体组件),RNN/CNN 就像 Struts / 传统 Spring(早期主流框架),Transformer 就像 SpringBoot(现代主流、轻量化升级的框架)
nlp从早期发展到如今热门的gpt等大模型功能,其实可以按照上面的描述去理解。而学习的过程就是需要先理解“mvc”是个什么概念,也就是nlp的训练流程,然后再按照这个骨架填充框架学习各种“java框架”,最后再以一个实践项目落地检验自己的学习成功。这边补充下,可能java那些框架,就像算法和模型结构对于nlp一样,前辈造了轮子,我们以此去使用。这也是我目前另外在学习的部分,说实话。对于一个原来只会for,ifelse来说的我有种打开了新世界大门的感觉。
结语
本文以java视角总结了一下nlp大概是个什么东西,后续会再从流程和原理去扩展这部分内容。