首页

来自智得网
跳转至: 导航、​ 搜索

精选文章

NLP查看全文
自然语言处理(英语:Natural Language Processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言处理包括多方面和步骤,基本有认知、理解、生成等部分。

NLP是涉及到计算机科学,语言学和机器学习的交叉学科,可以用于计算机和人类之间通过自然语言进行交流,该领域的应用根据目标不同可以分为下列几个分支: 语音识别,将人类语言转译为文本,语音识别(ASR)应用了一部分NLP的能力,例如语言模型,但是ASR技术中还包括声学模型处理等技术,所以ASR只是应用了NLP的一种技术,而不是NLP的一个子集。 自然语言生成,将信息生成人类语言的音频。 自然语言理解,计算机可以理解人类的自然语言。 NLP从大的流程上主要分为几个部分,词法分析、特征工程、模型训练等。 词法分析 词法分析主要的环节有分词,实体识别,词性标注。 分词 人类语言一般是以句子为基础的表意单元,但是人类语言的句子有各种丰富的词汇以及语法的组合,属于非结构化的信息,直接分析成本较高。而词语在任何语言都是可穷举的,具有一定的结构化特性,所以NLP的语义分析都是以词为基础单元。 分词就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析工作。 分词算法一般有三种实现: 基于词典的实现,例如ik 基于统计模型,例如ansj, hanlp 基于深度学习 词性标注 词性标注是为分词标注词性,词性是指名词、动词等。 因为中文词语没有印加语系中词态的概念,所以词性标注比较困难。 词性标注算法一般基于HMM。 特征工程

在 NLP 特征提取常用的技术有…
Subword查看全文
Subword-base和词表字符表对比.png
在自然语言处理(NLP)中词表是其中的基本要素,词表是分词的基础,而分词是自然语言处理最基础的组件之一。词表的精度影响自然语言的处理的准确性。

构造词表的传统方法是基于统计学的,先对训练集中的句子进行分词,然后再统计并选出频数最高的前N个词组成词表。 出于计算效率等因素的考量,通常情况词表不能涵盖训练集中所有的词汇。 基于词表的训练(word-level)存在以下的问题: 在英语等表音文字中,同一个单词有多种形态,例如"look"衍生出来的词汇"looks","looking","looked"具有相近的意思,但是在词表中这些词会被当作不同的词处理,既增加了训练冗余,这些单词的语义也不能正确关联。即使在中文中,也存在这种词汇变形的问题。 低频词/稀疏词在模型训练过程中无法得到充分训练,还有部分词汇在词表中缺失而引发OOV(Out Of Vocabulary)问题。 解决OOV问题的一种思路是用字符来表达词表(character-level),但单词被拆分成字符后,既丢失了词的语义信息,又使得模型输入变长,模型训练更加复杂难以收敛。 word-level模型会导致OOV,而character-level模型粒度又太细,就产生了subword-level的处理方式。 subword将单词分割为更小单元,这些单元通常可以在其他词汇中复用,未知词汇能以subword组合的形式表示出来,也能提升词典的表达能力。 Subword的实现通常用BPE,WordPiece,Unigram Language Model等三种。 Byte Pair Encoding

Byte Pair Encoding简称BPE,属于压缩算法中一种…
垃圾回收查看全文
JVM的CMS垃圾回收算法.png
垃圾回收是一种内存管理的机制,因为内存空间是有限的,所以程序运行过程中不能无限的申请内存而不释放。

内存管理一般有两种机制,一种是手动管理,程序开发者自行分配以及释放内存。C语言中的malloc和free,C++中的new,delete分别是分配以及释放的API。 内存一般分为堆内存和栈内存,对于任何语言来说,栈内存基本都是运行时自动回收的,因为栈内存是和线程相关的,所以栈内存和线程的生命周期一致。 对于堆内存而言,其生命周期相对不确定,甚至比分配内存的线程生存的更久,回收机制会更加复杂。因为和内存绑定的变量一旦创建,其访问的路径很难追踪,不知道其被多少线程引用,再加上复杂的并发场景,很难确定哪个线程会在最后访问这个变量,一旦提前释放,还会引发系统运行的异常。所以手动释放内存的难度很高,经常会出现内存泄漏的问题。 为了更加简洁方便的管理内存,提出了垃圾回收机制。 垃圾回收算法需要关注几个部分: 从堆内存标记把垃圾也就是没有再被引用的内存标记出来 对内存标记出来的垃圾进行清理,从而释放内存 垃圾回收的策略,包括执行的时机,清理的比例等。 标记算法 垃圾标记的常用算法有计数法和可达性分析法,计数法通过统计每个内存变量被引用的次数来判定该内存是否是垃圾。计数法存在的问题是如果两块内存之间存在循环依赖的话,那么其引用计数永远也可能变为0,这样内存就永远无法回收。 可达性分析法的原理是从一组GC Root出发,标记所有的对象,最终没有被标记的也就是垃圾。 回收算法 常用的回收算法有复制法,清除法,整理法。 复制法是指把未被标记的内存复制到一块全新的区域,然后就可以把之前的区域整体回收了。

清除法是指把标记为垃圾的内存空间直接清除…

热门分类

算法题库

精选内容