学习NLP的第N天
文章平均质量分 63
学习NLP的第N天
长行
这个作者很懒,什么都没留下…
展开
-
学习NLP的第22天——spaCy实现的英文词形还原
“词形还原”(lemmatization)是指去掉单词的词形词缀,返回单词原型。spaCy是在Github上16000星标的自然语言处理库,使用lemma_属性支持词形还原。spaCy是基于Python和Cython中自然语言处理库。spaCy包含预训练的统计模型、词向量等,支持50多种语言。Github地址:https://github.com/explosion/spaCySpaCy的安装方法spaCy需要在pip安装之后,再下载对应的语言模型才可以正常运行。以英文核心语料库为例,spaC原创 2020-05-10 15:09:10 · 3416 阅读 · 0 评论 -
学习NLP的第22天——英文词形还原(各处理库准确率评测)
“词形还原”(lemmatization)是指去掉单词的词形词缀,返回单词原型。例如对于动词来说,就是去掉动词的过去式、过去完成时等形式,返回动词原型;对于名词来说,则是去掉名词的复数形式,返回名词原型;对于形容词来说,则是去掉比较级、最高级等形式,返回形容词原型。“词性还原”与“词干提取”(stemming)的区别在于:词干提取的结果可能不是完整的词,而词性还原的结果则是具有一定意义的、完整的词语。下面我们对NLTK、spaCy和LemmInflect的准确率进行评测。我们使用Automatical原创 2020-05-10 15:08:44 · 1137 阅读 · 2 评论 -
学习NLP的第21天——短语提取
将基于信息熵和互信息的新词提取方法(第20天)中的字符替换为单词,即可将其转换为短语识别的方法。下面我们仍然使用神超直播间的弹幕的8个小时的时间切片作为例子,使用HanLP中的extractPhrase方法实现。from pyhanlp import *from utils import filedef extract(corpus): text = file.as_string(corpus) # 工具类:将文件读取为str phrase_info_list = HanLP.e原创 2020-05-10 15:08:00 · 1670 阅读 · 0 评论 -
学习NLP的第20天——基于信息熵和互信息的新词提取实现
在对一个新鲜领域的文本进行分词之前,我们往往需要先对文本中包含的新词进行提取,并将新词制作为用户词典,提供给分词器,以提高分词器的准确率。因为一个在新鲜领域中往往会包含很多我们意想不到的词语,比如神超直播间弹幕中频繁出现的英雄联盟领域游戏术语,又比如网络小说中的各种名字、境界等。我们使用神超直播间的弹幕的8个小时的时间切片和一部玄幻类网络小说《最强修真打工仔》作为样例进行新词提取。新词首先,我们需要确定一下新词的概念。因为每个词对不同的人来说含义各不相同,所以我们将新词定性为词典不包含的词。对于新原创 2020-05-10 15:07:28 · 2153 阅读 · 0 评论 -
学习NLP的第19天——NLP领域的分类问题
分类是指解决预测样本所属类别的一类问题,即对于给定样本x,输出x所属的类别。当供选择的类别只有2个时,称为二分类,反之称为多分类。而多分类的问题也可以通过二分类来解决。具体来说包含one-vs-one和one-vs-rest两种方案。one-vs-one:进行多轮的二分类,每次比较两个不同的分类,枚举所有的所有的两个分类的组合;理想情况下应该有且仅有一个类别在每一次比较中都被选中,成为预测结果。one-vs-rest:进行多轮的二分类,每次比较某个类别和非该类别,枚举所有的类别;理想情况下应该有一个原创 2020-05-10 15:00:25 · 633 阅读 · 0 评论 -
学习NLP的第18天——基于HanLP的隐马尔可夫模型实现
隐马尔科夫模型的介绍已在第16天的学习过程中记录。HanLP实现了基于隐马尔可夫模型的中文分词器HMMSegmenter,其中包含训练接口和分词接口。其实现代码如下:from pyhanlp import *from HanLP_Book.tests.test_utility import ensure_dataFirstOrderHiddenMarkovModel = JClass('com.hankcs.hanlp.model.hmm.FirstOrderHiddenMarkovModel'原创 2020-05-10 14:59:01 · 874 阅读 · 1 评论 -
学习NLP的第17天——隐马尔可夫模型
准确率可以用来衡量中文分词的准确程度,包含一系列的评测指标。下面我们用一个例子来解释这些评测指标:已知某天某小学共100名小学生中有99名小学生都佩戴了红领巾,只有1名小学生忘记了。学校为检查小学生是否佩戴红领巾,安装了自动拍照检查报警仪。1严格来说,当预测数量与答案数量相等时,准确率的计算公式为:准确率 = 判断正确的次数 / 总测试次数使用刚才的例子,若自动检查报警仪是个假冒伪劣产品,无论是否佩戴红领巾,都不会报警。此时仪器的准确率为99/100=99%,这样的结果我们显然是不能接受的。2原创 2020-05-10 14:58:34 · 345 阅读 · 0 评论 -
学习NLP的第16天——隐马尔可夫模型
Day16 : 隐马尔可夫模型作者:长行时间:2020.05.08隐马尔可夫模型(Hidden Markov Model,HMM)是描述两个时许序列联合分布p(x,y)的概率模型,是一种著名的有向图模型,也是解决自然语言处理中标注问题的统计机器学模型。其中x为外界观测可见的观测序列,也称为显状态;y是外界不可见的状态序列,也称为隐状态。下面,我们借用骰子的例子来描述:假设有3个不同...原创 2020-05-08 10:48:11 · 538 阅读 · 0 评论 -
学习NLP的第15天——序列标注
Day15 : 序列标注作者:长行时间:2020.05.08序列标注指的是给定一个序列,找出序列中每个元素对应标签的问题。其中,标签的所有可能的取值集合称为标注集。举一个最简单的例子:输入自然数序列,输出它们是否是质数,若是质数则标注为1,若不是则标注为0,并按顺序排列为另一个序列。原始: 1 2 3 4 5 6 7 8标注: 0 1 1 0 1 0 1 ...原创 2020-05-08 10:44:58 · 521 阅读 · 0 评论 -
学习NLP的第14天——语言模型的训练与预测
Day14 : 语言模型的训练与预测作者:长行时间:2020.05.08简单来说,语言模型就是通过统计已经分词的语料库中一元语法和二元语法出现的频次,实现对句子的分词。下面我们使用HanLP的相关模块实现语言模型的训练和预测。训练训练是指根据给定样本集估计模型参数的过程,简单来说,在语言模型中就是统计二元语法出现的频次和一元语法出现的频次。首先,我们使用HanLP的CorpusL...原创 2020-05-08 10:41:46 · 2513 阅读 · 1 评论 -
学习NLP的第13天——HanLP的CoreBiGramTableDictionary读取自己训练的模型所有值为0
问题详情Python调用HanLP的CoreBiGramTableDictionary载入自己训练的模型数据时,使用getBiFrequency查看,发现读取的所有二元语法数据均为0。排除的可能原因1.若没有设置HanLP.Config.BiGramDictionaryPath,则显示的结果应为默认模型的结果,而不是0。2.若设置的HanLP.Config.BiGramDictio...原创 2020-05-01 10:52:19 · 570 阅读 · 0 评论 -
学习NLP的第13天——语言模型
在了解了词典分词之后,我们发现一些类似于“商品和服务”的句子并不能被准确地识别。由此,我们设想如何能够提高准确率?一个简单有效的方法就是通过人工置顶分词结果的优先级列表,并使用到分词器中。但是这样的方法显然需要大量的人工成本,并不现实。所以我们考虑是否可以通过制作一个完成分词的语料库,通过统计所有切分方式的次数来实现优先级列表的计算。每个句子出现频率越高的切分方式,就拥有越高的权重。语...原创 2020-05-01 10:51:25 · 634 阅读 · 1 评论 -
学习NLP的第12天——文章关键词提取:TextRank
TextRank是PageRank算法在文本处理中的应用,通过将PageRank中的节点从网站替换为单词。每个单词的“外链”均来自于单词前后固定大小的窗口内的所有单词。给 你 形容 美好 今后 你 常常 眼睛 会 红例如,当窗口大小而2时,上面的句子中的“美好”一词,它的窗口内就包含“你”、“形容”、“今后”、“你”这个四个词;以此类推。在计算TextRank的过程中,窗口内的每...原创 2020-04-25 18:50:18 · 510 阅读 · 0 评论 -
学习NLP的第11天——文章关键词提取:TF-IDF
关键词提取是词语颗粒度的信息抽取的一种重要的需求,即提取文章中重要的词语。关键词提取的常用方法包括词频统计、TF-IDF和TextRank等。其中,词频和TextRank属于单文档算法,即只需一篇文章即可提取出其中的关键词;而TF-IDF则属于多文档宣发,需要其他文档的辅助TF-IDF原理因为如果一个词在越多的文档里出现,则越说明这个词不能体现出文档的特色。相较于词频统计的方法...原创 2020-04-25 18:46:18 · 851 阅读 · 0 评论 -
学习NLP的第10天——文章关键词提取:词频统计
关键词提取是词语颗粒度的信息抽取的一种重要的需求,即提取文章中重要的词语。关键词提取的常用方法包括词频统计、TF-IDF和TextRank等。其中,词频和TextRank属于单文档算法,即只需一篇文章即可提取出其中的关键词;而TF-IDF则属于多文档宣发,需要其他文档的辅助来提取当前文章的关键词。词频统计的Python实现词频统计的逻辑是:在一篇文章中,越重要的关键词往往会在文章中...原创 2020-03-06 16:54:53 · 5478 阅读 · 0 评论 -
学习NLP的第9天——基于HanLP实现的拼音转换
这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。拼音转换是指将汉字转化为拼音的过程。因为拼音转换涉及多音字的问题,所以仍然不能仅通过字转换,还需要按词转换。下面我们使用HanLP的方法实现拼音转换。from pyhanlp import *if __name__ == "__main__": Pinyin = JClass("c...原创 2020-03-06 16:52:56 · 1420 阅读 · 0 评论 -
学习NLP的第8天——基于HanLP实现的中文文本清洗
这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。在拿到自然语言语料之后,并不能直接用来分析,需要先进行数据清洗的工作。英文语料数据清洗通常而言,英文语料的清洗包括如下步骤:文本规范化(Normalization),将文本中所有的字母统一转换为大写或小写,如不需要标点符号也可以过滤掉文本中的标点符号。 英文语料分词(Tokenization),将...原创 2020-03-06 16:48:57 · 2028 阅读 · 0 评论 -
学习NLP的第7天——基于HanLP实现的停用词过滤
这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。停用词,是指文本中没有多少实际意义的词语,包括助词、连词、副词、语气词等词性,句子中去掉了停用词并不影响语句的理解。停用词视具体情况在英雄联盟的游戏内聊天框中,敏感词和低俗词也都被视作了停用词。停用词过滤是语言文本预处理的一个重要步骤,有两种常用的情景:将分词结果中的停用词剔除 直接将文本中的...原创 2020-03-06 16:47:06 · 4671 阅读 · 4 评论 -
学习NLP的第6天——首字散列其余二分的字典树
主要通过《自然语言处理入门》(何晗)的第2章来学习散列函数。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。在当前字典树的查询过程中,需要不断在字典树中查询字符对应的节点。然而,节点在结构中在相对位置是随机的,因此,在结构中查找节点时需进行一系列的比较,而查询的效率则依赖于查询过程中所进行的比较的次数,当字典树分支较多时,查询速度会受到影响。理想的情...原创 2020-03-06 16:44:11 · 873 阅读 · 1 评论 -
学习NLP的第5天——AC自动机
主要通过《自然语言处理入门》(何晗)的第2章来学习AC自动机。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。AC自动机是用来解决如下问题:仅通过对文本的一次扫描,就查询出文本内包含的所有出现在词典中的词。其目的是简化全切分扫描过程的复杂度。下面我尽可能用通俗的语言来表达。在全切分(查询出文本内包含的所有出现在词典中的词)长度为n的...原创 2020-03-06 16:39:30 · 741 阅读 · 0 评论 -
学习NLP的第4天——HanLP词典分词的Python实现
通过《自然语言处理入门》(何晗)的第2章来学习HanLP词典分词的Python实现。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。首先,我们导入HanLPfrom pyhanlp import HanLP下面,实现最基本的中文分词(依据HanLP默认词典,显示词语和词性、处理数字和英文的识别)sentence = "deadline并不...原创 2020-03-06 16:36:19 · 1100 阅读 · 1 评论 -
学习NLP的第3天——字典树
通过《自然语言处理入门》(何晗)的第2章来学习一下分词的常用算法,因此以下的实现方法都是通过HanLP实现的。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。字符串集合常用字典树(Trie树)存储,这是一种字符串上的树形数据结构。字典树中每条边都对应一个字,从根节点往下的路径构成一个个字符串。字典树并不直接在节点上存储字符串,而是将词典视作根节点到某...原创 2020-03-06 16:06:42 · 577 阅读 · 0 评论 -
学习NLP的第2天——中文词典分词的切分算法
我以前用过Jieba、Pkuseg、HanLP等开源工具的分词功能,现在主要通过《自然语言处理入门》(何晗)的第2章来学习一下分词的常用算法,因此以下的实现方法都是通过HanLP实现的。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。中文分词指的是将一段文本拆分为一系列单词的过程,将这些单词顺序拼接后等于原文本。中文分词算法大致分为基于词典规则和基于...原创 2020-03-06 13:00:26 · 2543 阅读 · 4 评论 -
学习NLP的第1天——学习大纲及入门资源整理
我以前虽然在研究中用过一些NLP相关方法,但是都仅限于最基础的应用,最近开始系统性地自学NLP。将学习过程进度以及遇到问题的解决方案记录于此,不求踩出一条路,只求为其他自学的朋友踩掉一些坑。NLP基本大纲首先,我依据以前的了解和收集的各处教程、网课,整理了NLP主要的学习大纲。因为一些方法我并没有用过也不了解,所以可能逻辑上会存在问题,以后理解深刻会逐渐更正。算法模型概率图模型...原创 2020-03-06 12:54:28 · 942 阅读 · 0 评论