“一台机器能够完全模仿人类,没有明显的差异,那么机器可以被认为是能够思考的”——图灵
NLP的核心任务是通过计算机程序来模拟人类对语言的认知和使用过程。
NLP
这个过程就像小学我们刚开始学习语文的过程。
我们学习语文分为两个阶段:老师讲解和学生理解并回答。
文本表示
文本表示就是让人类的语言让计算机能够理解和操作的形式。 就是老师讲解阶段。老师把文章通过通俗易懂的语言让我们理解和记忆。
- 词向量。把文本转换成高维空间中的词向量来实现文本的数学化表示,通过计算向量中的每个元素的权重来确定重要程度。但是当特征数量庞大的时候向量维度会很高,同时多数元素值为0,这种知识统计了重要程度,去忽略了上下文信息
- 语言模型。n-gram模型提出,一个词出现的概率仅依赖于前面的n-1个词。通过计算每个n-gram出现的条件概率,将概率相乘得到整个句子出现的概率。实现起来比较简单和容易理解,但是当前面的参数突然增大的时候,相同的N-gram序列出现的概率变得很低。忽略了词之间的依赖关系
- Word2Veec是一种流行的词嵌入技术。通过学习词和词之间的上下文关系来生成词的密集向量表示。有两种架构:CBOW通过目标此上下文中的词对应的向量词,计算目标词的向量表示;Skip-Gram模型九域志相反。前者适用于小数据集,后者在大型语料种表现更好。但是无法捕捉长距离上下文关系。
- ELMo,实现了一词多义,静态词向量到动态词向量的跨越式转变。会先预训练语言模型得到词向量模型,然后根据任务进行微调,生成更准确的词向量表示。
NLP任务
分为9个任务:中文分词,子词切分,词性标注,文本分类,实体识别,关系抽取,文本摘要,机器翻译,自动问答。 就是学生理解阶段。学生把文章从拆分成词,然后理解词性,把事情分类,把文章的名词和实际联系起来,然后把不同的实体用关系联系起来,最后总结出作者表达的意思,通过语言回答出来的过程。
第一步:中文分词。把中文的一句话切分成有意义的词、词汇)
第二步: 子词切分。类似我们学英语的时候,遇到不懂的复杂单词,把他切分成更小的切片去理解词根词缀;还有我们小时候遇到不懂的词语的时候,有边读边,根据偏旁部首去理解词义。
第三步:词性标注。把一句话的单词贴上动词,名词,形容词这种标签,能够更好的理解整句话的结构
第四步:文本分类。给一段文本分类,例如我们常说的,在大学四年,学习上,我成绩优异,名列前茅,参加了很多竞赛并拿奖;生活上,规律作息,经常锻炼。这样子把几件事情分别分到学习上和生活上这两大类别。让其他人能够快速捕捉到重点,条理清晰。
第五步:实体识别。就是把名词和实体联系起来。
第六步:关系抽取。就是把两个实体联系起来。连连看,小青蛙找妈妈。
第七步:文本摘要。就是总结一段话说的是什么,总结也分为:抽取式摘要和生成式摘要。前者类似提取关键字,关键词、做思维导图。后者是在前者的基础上,添加有些自己的理解,用自己的话说出来
第八步:机器翻译,就是充分理解原来的意思之后,使用另一种语言准确的表达。
第九步:自问自答。回答,通过上面8种方式理解自然语言之后,能够根据问题给出答案。有三种找到答案的方式:检索是回答、知识库回答、社区问答。类似读一篇课文,要回答老师的问题的时候,可以从原文筛选找出答案;或者通过一些“作者借用……表达了作者……感情"、柳树代表离别、老树代表迟暮之年这样子的结构化知识库去回答问题;最后还可以根据前面回答问题同学的答案 和老师的引导去组织答案。
这是我用自己的联想类比去理解NLP,路过的大佬如果觉得哪里不对,麻烦多多指教。