深入理解NLP笔记

目前数据结构有哪些?

  • 结构化数据,如:关系型数据
  • 半结构化数据,如:XML数据
  • 非结构化数据,如:Word、PDF、文本、日志

能胜任这样挑战的技术除了大数据,就是NLP,NLP的应用场景:

词法分析:分词、词性标注、实体识别
词向量表示:语义挖掘、词义相似度
文本相似度:计算两个短文本之间的语义相似度,实现推荐和排序
依存句法分析:自动分析文本中的依存句法结构信息
`DNN`语言模型:判断一句话是否符合语言表达习惯
文本纠错:识别文本中的错别字,给出提示及正确的建议
情感倾向分析:对包含主观信息的文本进行情感倾向性判断
评论观点抽取:分析评论关注点和观点,输出标签及观点极性
对话情绪识别:识别会话者所表现出的情绪类别及置信度
文本标签:输出能够反映文章关键信息的多维度标签
文章分类:输出文章的主题分类及对应的置信度
新闻摘要:抽取关键信息并生成指定长度的新闻摘要
文本审核:对敏感内容进行识别和过滤
文本翻译:通用翻译、语音翻译、拍照翻译

只要对NLP稍有了解就不难发现,分词是NLP基础中的基础,很多的NLP任务都是依赖着分词的结果,因此也就影响着最终结果的质量,可见分词的重要性。

  • 首先,海量的文本内容全部向量化输入给计算机进行处理,那么耗时将是一个天文数字,倒是可以期待一下量子计算机
  • 其次,如果是监督学习需要大量的训练数据,那么获取大量的高质量训练数据的成本也是巨大的,甚至是几乎无法实现的
  • 最后,如果是无监督学习,那么前期就需要很多的人工处理,比如:关键词、主题词挖掘就依赖中文分词的准确性等

虽然现在已经有了很多优秀的开源中文分词工具,例如:jieba、ik等,可以一定程度上解决部分问题,但是一旦涉及到高质量、特殊化,那么这些中文分词工具就会立刻捉襟见肘,漏洞百出。
原因很简单,因为这些开源的中文分词工具都是基于通用语料标注得到的词典,那么必然在领域、时效方面存在缺陷。

开源的中文分词工具,大多使用的也都是开源的语料库,如:人民日报,这样综合性的语料库,好处自然是比较全面,但缺点也比较突出,就是缺少大量的专有词汇。
这些专有词汇的种类非常丰富,例如:小说人物名、品牌、机构、地点、特殊的道具、专业词汇等等。像灬点点(博客名)、公鸡贷(品牌)这样的词汇就不能切出来。

致力于从事NLP相关工作的开发者,就必须熟悉中文分词的原理及实现,才能够根据自己的实际业务需要,灵活运用,开发出更有针对性的系统,满足个性化的需求。

中文分词不仅对NLP来说非常重要,其背后的原理涉及到的知识面也非常广,而且这些知识的实用性非常高,可以为很多问题提供解决思路。

  • 统计学,主要涉及最大概率、凝固度等
  • 信息论,主要涉及信息熵、交叉熵等
  • 图模型,主要涉及有向无环图的计算、HMM模型、CRF模型等
  • 数据结构,主要涉及到Trie树、图结构等
  • 线性代数,主要涉及到余弦相似度等
  • 深度学习,主要涉及到神经网络、词向量训练及使用
  • 开发技巧,主要涉及到一些业务案例的开发技巧及思路

如果看应试者是否开发过NLP,直接问他关于中文分词歧义的问题

羽毛球拍卖完了
羽毛球 / 拍卖 / 完了
羽毛球拍 / 卖 / 完了

这两种切分形式,无论从语法上,还是语义上都是正确的,但却是两个完全不同的意思,这也就是导致中文分词精度不高的原因之一。
概括起来中文分词歧义主要有两种类型,分别是交集型歧义和组合型歧义,下面分别讲解一下。

交集歧义:用一个直观的形式表示交集型歧义就是:ABC,即可以切分成AB/C,也可以切分成A/BC
组合歧义:同样用一个直观的形式表示组合型歧义就是:AB,即可以组合成AB,也可以切分成A/B

通过大量的评测结果表明,未登录词对精度的影响是歧义问题的5倍以上,所以孰轻孰重,立分高下。
未登录词其实不难理解,就是没有被收录到分词词典里的词。这样的词类型有很多:人名、机构名、缩写词、新增词等等。

当然已经有了很多的方法,可以自动识别未登录词,比如:HMMCRF等。

HMM:隐马尔可夫模型,是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。

CRF:条件随机场,是给定一组输入序列条件下另一组输出序列的条件概率分布模型。

N-Gram是一种基于统计语言模型的算法,其基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口切分,形成了长度为N的字节片段序列。

统计语言模型,是将每句话都看作是由单词组成的序列,然后对每句话评定一个概率,若该概率越高,则说明该句话越符合语法,越像人话。

当一段文本根据词典切分存在多种可能的结果时,那么如何选择出最优的切分路径,就可以使用N-Gram模型利用统计信息找出一条概率最大的路径,得到最终的分词结果。

但在一些特殊的业务场景里,这样的结果是非常有价值的,如:新词发现、文本挖掘等,下面我结合实际的工作场景,简单为大家说明一下。

假设有这样一个需求

从小说里挖掘出主角的人名。简单的使用分词词典是不可能完成任务的,原因之前的章节介绍过了,这些人名大多都是未登录词。

此时的一种解决方法就是可以利用N-Gram,将二元、三元、四元词都切出来(因为中文名基本都在这样范围内),此时主角的姓名必然会在这些词里面。

接下来,就要看我们如何把它找出来了,这里利用了一个取巧的方法,因为中文人名的姓氏基本都在百家姓里,而百家姓的数据又极其容易从网上获得,这样我们就可以极大的缩小挖掘的范围了。

然后我们再利用TF-IDF的思想,在这个有限的范围里挖掘关键词,而此时得到的TOP1关键词就大概率是主角的人名了。当然实际效果和使用的语料库规模有关,需要人工适当添加一些黑名单过滤噪声词和添加一些不常见的姓氏词补充召回。

参考:https://juejin.cn/book/6844733812102922247

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值