数据分析
文章平均质量分 65
长行
这个作者很懒,什么都没留下…
展开
-
学习NLP的第6天——首字散列其余二分的字典树
主要通过《自然语言处理入门》(何晗)的第2章来学习散列函数。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。在当前字典树的查询过程中,需要不断在字典树中查询字符对应的节点。然而,节点在结构中在相对位置是随机的,因此,在结构中查找节点时需进行一系列的比较,而查询的效率则依赖于查询过程中所进行的比较的次数,当字典树分支较多时,查询速度会受到影响。理想的情...原创 2020-03-06 16:44:11 · 882 阅读 · 1 评论 -
学习NLP的第13天——语言模型
在了解了词典分词之后,我们发现一些类似于“商品和服务”的句子并不能被准确地识别。由此,我们设想如何能够提高准确率?一个简单有效的方法就是通过人工置顶分词结果的优先级列表,并使用到分词器中。但是这样的方法显然需要大量的人工成本,并不现实。所以我们考虑是否可以通过制作一个完成分词的语料库,通过统计所有切分方式的次数来实现优先级列表的计算。每个句子出现频率越高的切分方式,就拥有越高的权重。语...原创 2020-05-01 10:51:25 · 642 阅读 · 1 评论 -
学习NLP的第8天——基于HanLP实现的中文文本清洗
这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。在拿到自然语言语料之后,并不能直接用来分析,需要先进行数据清洗的工作。英文语料数据清洗通常而言,英文语料的清洗包括如下步骤:文本规范化(Normalization),将文本中所有的字母统一转换为大写或小写,如不需要标点符号也可以过滤掉文本中的标点符号。 英文语料分词(Tokenization),将...原创 2020-03-06 16:48:57 · 2105 阅读 · 0 评论 -
学习NLP的第22天——英文词形还原(各处理库准确率评测)
“词形还原”(lemmatization)是指去掉单词的词形词缀,返回单词原型。例如对于动词来说,就是去掉动词的过去式、过去完成时等形式,返回动词原型;对于名词来说,则是去掉名词的复数形式,返回名词原型;对于形容词来说,则是去掉比较级、最高级等形式,返回形容词原型。“词性还原”与“词干提取”(stemming)的区别在于:词干提取的结果可能不是完整的词,而词性还原的结果则是具有一定意义的、完整的词语。下面我们对NLTK、spaCy和LemmInflect的准确率进行评测。我们使用Automatical原创 2020-05-10 15:08:44 · 1200 阅读 · 2 评论 -
学习NLP的第11天——文章关键词提取:TF-IDF
关键词提取是词语颗粒度的信息抽取的一种重要的需求,即提取文章中重要的词语。关键词提取的常用方法包括词频统计、TF-IDF和TextRank等。其中,词频和TextRank属于单文档算法,即只需一篇文章即可提取出其中的关键词;而TF-IDF则属于多文档宣发,需要其他文档的辅助TF-IDF原理因为如果一个词在越多的文档里出现,则越说明这个词不能体现出文档的特色。相较于词频统计的方法...原创 2020-04-25 18:46:18 · 859 阅读 · 0 评论 -
学习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 · 587 阅读 · 0 评论 -
学习NLP的第20天——基于信息熵和互信息的新词提取实现
在对一个新鲜领域的文本进行分词之前,我们往往需要先对文本中包含的新词进行提取,并将新词制作为用户词典,提供给分词器,以提高分词器的准确率。因为一个在新鲜领域中往往会包含很多我们意想不到的词语,比如神超直播间弹幕中频繁出现的英雄联盟领域游戏术语,又比如网络小说中的各种名字、境界等。我们使用神超直播间的弹幕的8个小时的时间切片和一部玄幻类网络小说《最强修真打工仔》作为样例进行新词提取。新词首先,我们需要确定一下新词的概念。因为每个词对不同的人来说含义各不相同,所以我们将新词定性为词典不包含的词。对于新原创 2020-05-10 15:07:28 · 2459 阅读 · 0 评论 -
学习NLP的第9天——基于HanLP实现的拼音转换
这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。拼音转换是指将汉字转化为拼音的过程。因为拼音转换涉及多音字的问题,所以仍然不能仅通过字转换,还需要按词转换。下面我们使用HanLP的方法实现拼音转换。from pyhanlp import *if __name__ == "__main__": Pinyin = JClass("c...原创 2020-03-06 16:52:56 · 1487 阅读 · 0 评论 -
学习NLP的第12天——文章关键词提取:TextRank
TextRank是PageRank算法在文本处理中的应用,通过将PageRank中的节点从网站替换为单词。每个单词的“外链”均来自于单词前后固定大小的窗口内的所有单词。给 你 形容 美好 今后 你 常常 眼睛 会 红例如,当窗口大小而2时,上面的句子中的“美好”一词,它的窗口内就包含“你”、“形容”、“今后”、“你”这个四个词;以此类推。在计算TextRank的过程中,窗口内的每...原创 2020-04-25 18:50:18 · 517 阅读 · 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 · 908 阅读 · 1 评论 -
学习NLP的第10天——文章关键词提取:词频统计
关键词提取是词语颗粒度的信息抽取的一种重要的需求,即提取文章中重要的词语。关键词提取的常用方法包括词频统计、TF-IDF和TextRank等。其中,词频和TextRank属于单文档算法,即只需一篇文章即可提取出其中的关键词;而TF-IDF则属于多文档宣发,需要其他文档的辅助来提取当前文章的关键词。词频统计的Python实现词频统计的逻辑是:在一篇文章中,越重要的关键词往往会在文章中...原创 2020-03-06 16:54:53 · 5646 阅读 · 0 评论 -
学习NLP的第7天——基于HanLP实现的停用词过滤
这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。停用词,是指文本中没有多少实际意义的词语,包括助词、连词、副词、语气词等词性,句子中去掉了停用词并不影响语句的理解。停用词视具体情况在英雄联盟的游戏内聊天框中,敏感词和低俗词也都被视作了停用词。停用词过滤是语言文本预处理的一个重要步骤,有两种常用的情景:将分词结果中的停用词剔除 直接将文本中的...原创 2020-03-06 16:47:06 · 4782 阅读 · 4 评论 -
学习NLP的第19天——NLP领域的分类问题
分类是指解决预测样本所属类别的一类问题,即对于给定样本x,输出x所属的类别。当供选择的类别只有2个时,称为二分类,反之称为多分类。而多分类的问题也可以通过二分类来解决。具体来说包含one-vs-one和one-vs-rest两种方案。one-vs-one:进行多轮的二分类,每次比较两个不同的分类,枚举所有的所有的两个分类的组合;理想情况下应该有且仅有一个类别在每一次比较中都被选中,成为预测结果。one-vs-rest:进行多轮的二分类,每次比较某个类别和非该类别,枚举所有的类别;理想情况下应该有一个原创 2020-05-10 15:00:25 · 644 阅读 · 0 评论 -
学习NLP的第4天——HanLP词典分词的Python实现
通过《自然语言处理入门》(何晗)的第2章来学习HanLP词典分词的Python实现。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。首先,我们导入HanLPfrom pyhanlp import HanLP下面,实现最基本的中文分词(依据HanLP默认词典,显示词语和词性、处理数字和英文的识别)sentence = "deadline并不...原创 2020-03-06 16:36:19 · 1150 阅读 · 1 评论 -
学习NLP的第3天——字典树
通过《自然语言处理入门》(何晗)的第2章来学习一下分词的常用算法,因此以下的实现方法都是通过HanLP实现的。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。字符串集合常用字典树(Trie树)存储,这是一种字符串上的树形数据结构。字典树中每条边都对应一个字,从根节点往下的路径构成一个个字符串。字典树并不直接在节点上存储字符串,而是将词典视作根节点到某...原创 2020-03-06 16:06:42 · 595 阅读 · 0 评论 -
学习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 · 1683 阅读 · 0 评论 -
学习NLP的第16天——隐马尔可夫模型
Day16 : 隐马尔可夫模型作者:长行时间:2020.05.08隐马尔可夫模型(Hidden Markov Model,HMM)是描述两个时许序列联合分布p(x,y)的概率模型,是一种著名的有向图模型,也是解决自然语言处理中标注问题的统计机器学模型。其中x为外界观测可见的观测序列,也称为显状态;y是外界不可见的状态序列,也称为隐状态。下面,我们借用骰子的例子来描述:假设有3个不同...原创 2020-05-08 10:48:11 · 549 阅读 · 0 评论 -
学习NLP的第14天——语言模型的训练与预测
Day14 : 语言模型的训练与预测作者:长行时间:2020.05.08简单来说,语言模型就是通过统计已经分词的语料库中一元语法和二元语法出现的频次,实现对句子的分词。下面我们使用HanLP的相关模块实现语言模型的训练和预测。训练训练是指根据给定样本集估计模型参数的过程,简单来说,在语言模型中就是统计二元语法出现的频次和一元语法出现的频次。首先,我们使用HanLP的CorpusL...原创 2020-05-08 10:41:46 · 2604 阅读 · 1 评论 -
学习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 · 3490 阅读 · 0 评论 -
学习NLP的第1天——学习大纲及入门资源整理
我以前虽然在研究中用过一些NLP相关方法,但是都仅限于最基础的应用,最近开始系统性地自学NLP。将学习过程进度以及遇到问题的解决方案记录于此,不求踩出一条路,只求为其他自学的朋友踩掉一些坑。NLP基本大纲首先,我依据以前的了解和收集的各处教程、网课,整理了NLP主要的学习大纲。因为一些方法我并没有用过也不了解,所以可能逻辑上会存在问题,以后理解深刻会逐渐更正。算法模型概率图模型...原创 2020-03-06 12:54:28 · 952 阅读 · 0 评论 -
学习NLP的第17天——隐马尔可夫模型
准确率可以用来衡量中文分词的准确程度,包含一系列的评测指标。下面我们用一个例子来解释这些评测指标:已知某天某小学共100名小学生中有99名小学生都佩戴了红领巾,只有1名小学生忘记了。学校为检查小学生是否佩戴红领巾,安装了自动拍照检查报警仪。1严格来说,当预测数量与答案数量相等时,准确率的计算公式为:准确率 = 判断正确的次数 / 总测试次数使用刚才的例子,若自动检查报警仪是个假冒伪劣产品,无论是否佩戴红领巾,都不会报警。此时仪器的准确率为99/100=99%,这样的结果我们显然是不能接受的。2原创 2020-05-10 14:58:34 · 351 阅读 · 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 · 524 阅读 · 0 评论 -
学习NLP的第2天——中文词典分词的切分算法
我以前用过Jieba、Pkuseg、HanLP等开源工具的分词功能,现在主要通过《自然语言处理入门》(何晗)的第2章来学习一下分词的常用算法,因此以下的实现方法都是通过HanLP实现的。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。中文分词指的是将一段文本拆分为一系列单词的过程,将这些单词顺序拼接后等于原文本。中文分词算法大致分为基于词典规则和基于...原创 2020-03-06 13:00:26 · 2610 阅读 · 4 评论 -
学习NLP的第5天——AC自动机
主要通过《自然语言处理入门》(何晗)的第2章来学习AC自动机。这里主要记录我在学习过程中整理的知识、调试的代码和心得理解,以供其他学习的朋友参考。AC自动机是用来解决如下问题:仅通过对文本的一次扫描,就查询出文本内包含的所有出现在词典中的词。其目的是简化全切分扫描过程的复杂度。下面我尽可能用通俗的语言来表达。在全切分(查询出文本内包含的所有出现在词典中的词)长度为n的...原创 2020-03-06 16:39:30 · 759 阅读 · 0 评论 -
统计学的Python实现-001:总计
作者:长行时间:2019.03.08(这一节主要用于不了解Python的初学者探索函数的调用)实现代码def descriptive_sum(data): return sum(data)print(descriptive_sum([1,3.5,5]))运行结果9.5代码解释def descriptive_sum(data): 定义函数description_mean,并设置函数的参数listreturn sum(list)返回函数的结果...原创 2020-05-20 12:02:43 · 400 阅读 · 0 评论 -
统计学的Python实现-008:标准误差
作者:长行时间:2019.03.09标准误差:标准误差是用以衡量统计量的可靠性的统计量;统计量(通常是参数的估计)的标准误差(stand error,SE)是其抽样分布的标准差或该标准差的估计值;如果它衡量的统计量为均值,则该标准误差称为均值的标准误差(standard error of the mean,SEM)。统计学解释总体均值的标准误差的计算公式:KaTeX parse error: Got function '\overline' with no arguments as subsc.原创 2020-05-20 12:09:14 · 6108 阅读 · 0 评论 -
统计学的Python实现-003:中位数
中位数:一组数据按顺序排列后位于中间位置的数值。当该组数据中数值个数为奇数时,中位数为中间位置的数值;当该组数据中数值个数为偶数时,中位数为中间位置两个数值的均值。该组数据中最多有一半的数值小于中位数,也最多有一半的数值大于中位数;因为该组数据中可能有若干数值等于中位数。实现代码方法一:通过判断解决数据个数为奇数、偶数的问题def descriptive_median_1(lis...原创 2019-03-08 10:59:54 · 1416 阅读 · 0 评论 -
统计学的Python实现-020:已知样本比例的抽样分布
作者:长行时间:2019.03.24统计学解释已知样本比例的抽样分布计算是一种理想的抽样分布算法,通常用来学习抽样理论。其已知的信息为总体的分布特征,并求在抽取一定容量的样本后,样本的分布特征。例如:已知1980年美国总统选举中,有3490万选民支持民主党,有4320万选民支持共和党。求事先随机抽取150位选民能够成功预测共和党胜出的概率。这实际上是二项随机变量的概率计算的一种实际应用。抽取的样本服从二项分布,X~b(n,p),其中n为样本量,p为要研究的事件发生的概率。因此可以使用二项分布的.原创 2020-05-20 12:27:50 · 1136 阅读 · 0 评论 -
统计学的Python实现-006:方差
作者:长行时间:2019.03.08方差:方差是衡量一组数据离散程度的统计量。统计学中的方差(样本方差)是每个样本值与全体样本值的均值之差的平方的均值。概率论中的方差(总体方差)是随机变量及其数学期望之间的偏离程度。统计学解释总体方差的计算公式如下:σ2=∑(X−μ)2N\sigma^2 = \frac{\sum(X-\mu)^2}{N}σ2=N∑(X−μ)2其中σ2\sigma^2σ2为总体方差,XXX为变量值,μ\muμ为总体均值,NNN为总量样本方差的计算公式如下:S2=∑(.原创 2020-05-20 12:06:28 · 556 阅读 · 1 评论 -
统计学的Python实现-009:四分位数
作者:长行时间:2019.03.10四分位数:四分位数(Quartile),也称四分位点,是指把一组数据中的所有数值由小到大排列并分成四等份时,处于三个分割点位置的数值。多应用于箱线图的绘制。四分位数有三个,第一个四分位数称为下四分位数,第二个四分位数就是中位数,第三个四分位数称为上四分位数,分别用Q1、Q2、Q3表示。统计学解释四分位数位置的确定方法有两种。其一是Excel函数QUARTILE.EXC的方法,也就是SPSS中使用的方法,其确定方法如下:位置Q1=(n+1)×0.25位置_.原创 2020-05-20 12:10:25 · 12902 阅读 · 0 评论 -
统计学的Python实现-012:峰度
作者:长行时间:2019.03.11统计学解释峰度:峰度是衡量一组数据分布曲线的陡峭程度。其定义式如下:kurtosis=E[(X−μσ)4]=μ4σ4=E[(X−μ)4](E[(X−μ)2])2kurtosis=E[(\frac{X-\mu}{\sigma})^4]=\frac{\mu_4}{\sigma^4}=\frac{E[(X-\mu)^4]}{(E[(X-\mu)^2])^2}kurtosis=E[(σX−μ)4]=σ4μ4=(E[(X−μ)2])2E[(X−μ)4]其中.原创 2020-05-20 12:14:35 · 1172 阅读 · 2 评论 -
统计学的Python实现-011:偏度
作者:长行时间:2019.03.10偏度:偏度(skewness),也称偏态,是衡量统计数据分布偏斜方向和程度的统计量。例如,正态分布的偏度=0,即分布关于均值左右对称。若偏度<0,则说明分布呈左偏态,此时均值左边的数据比右边少;若偏度>0,则说明分布呈右偏态,此时均值右边的数据比左边少;若偏度接近于0,则说明分布是接近对称的。统计学解释偏度的定义式:Skeness=E[(X−μσ)3]=μ3σ3=E[(X−μ)3](E[(X−μ)2])32=k3k232Skeness=E[(.原创 2020-05-20 12:13:20 · 2323 阅读 · 0 评论 -
统计学的Python实现-013:频度分布表
统计学解释频数分布表:频数分布表,简称频数表,主要用来直接查看数据分布情况。对于离散型随机变量,直接计算每个值出现的频数并列表;对于连续型随机变量,则需要先将数据按等间隔分组,然后统计落在每一个组内的频数。数组 [1,1,1,1,1,2,2,2,2,3,3,3,4,4,5] 在SPSS中的频数分布表如下:(图片参见同名word文件)其中:Frequency在这里指频数,Percent在这里指频率,Valid Percent指有效频率(即剔除了缺失值的频率.原创 2020-05-20 12:15:55 · 2816 阅读 · 0 评论 -
统计学的Python实现-014:几何平均数
作者:长行时间:2019.03.13统计学解释几何平均数:几何平均数(geometric mean)是衡量样本集中趋势的统计量,其值为该组数据所有n个变量值的乘积的n次方根。其计算公式如下:G=X1×X2×...×Xnn=∏i=1nXinG=\sqrt[n]{{X_1}\times{X_2}\times...\times{X_n}}=\sqrt[n]{\prod_{i=1}^n{X_i}}G=nX1×X2×...×Xn=ni=1∏nXi在一些情况下,我们还会使用加权几何平均数.原创 2020-05-20 12:20:12 · 7922 阅读 · 1 评论 -
统计学的Python实现-004:众数
众数:一组数据中出现次数最多的数值,一组数据可以不存在、存在一个或多个众数,众数用M表示。当所有数据出现次数都相同时,众数不存在。实现思路因为无法直接获知一个数组当中出现频率最高的数值,所以我们需要先统计数组中每一个数值的出现次数,而后再找出所有出现次数最高的数值。其中:记录每个数值的出现次数,可以使用哈希表存储,变量值的值作为key,变量值出现的频数作为value。 若发现变量值列...原创 2019-03-07 14:37:02 · 4520 阅读 · 0 评论 -
统计学的Python实现-005:最大值、最小值、极差
作者:长行时间:2019.03.08最大值:一组数据当中最大的值。最小值:一组数据当中最小的值。极差:也称“全距”,是一组数据中最大值与最小值之间的距离。实现代码data=[1,3,2,6,7,9,3,2,4] # 先定义一个数组data_max=max(data) # 计算这个数组的最大值print('最大值 =',data_max)data_min=min(data) # 计算这个数组的最小值print('最小值 =',data_min)range=max(data)-m.原创 2020-05-20 12:04:48 · 2864 阅读 · 0 评论 -
统计学的Python实现-018:二项随机变量的概率计算
作者:长行时间:2019.03.21统计学解释二项随机变量是指每次试验只会有两种可能结果的试验,我们定义为事件A和事件A的对立事件。此时,在n次重复试验中,事件A发生的次数X服从二项分布(链接),次数X等于k的概率如下:P{X=k}=Cnk(1−p)n−k,k=0,1,2,...,nP\{X=k\}=C^{k}_{n}(1-p)^{n-k},\qquad k=0,1,2,...,nP{X=k}=Cnk(1−p)n−k,k=0,1,2,...,n实现代码下面我们来用Python实现两种功.原创 2020-05-20 12:25:33 · 1201 阅读 · 0 评论 -
统计学的Python实现-017:标准正态分布
作者:长行时间:2019.03.15统计学解释正态分布:正态分布(normal distribution),又称高斯分布;其概率密度(正态分布曲线)呈钟型,两头低,中间高,左右对称。分布如图:(图片参见同名word文件)其概率密度公式为:ϕ(x)=12πσe−(X−μ)22σ2\phi(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(X-\mu)^2}{2\sigma^2}}ϕ(x)=2πσ1e−2σ2(X−μ)2其中σ\sigmaσ为标准差,μ.原创 2020-05-20 12:24:04 · 1520 阅读 · 1 评论 -
统计学的Python实现-007:标准差
作者:长行时间:2019.03.09标准差:标准差(standard deviation,SD),又称均方差,是衡量一组数据离散程度的统计量,其值为方差的算术平方根。统计学解释总体的标准差计算公式如下:σ=∑(X−μ)2N\sigma = \sqrt\frac{\sum(X-\mu)^2}{N}σ=N∑(X−μ)2其中σ\sigmaσ为总体标准差,XXX为变量值,μ\muμ为总体均值,NNN为总量样本的标准差计算公式如下:S=∑(X−x‾)2nS = \sqrt\frac{\s.原创 2020-05-20 12:07:21 · 2216 阅读 · 0 评论 -
统计学的Python实现-016:变异系数
作者:长行时间:2019.03.15统计学解释变异系数:变异系数(coefficient of variation),又称离散系数,是一个衡量数据离散程度的、没有量纲的统计量。其值为标准差与平均值之比。变异系数的计算公式为:CV=σμCV=\frac{\sigma}{\mu}CV=μσ其中σ\sigmaσ为标准差,μ\muμ为均值。代码实现import numpydef coefficient_of_variation(data): mean=numpy.mean(dat.原创 2020-05-20 12:22:59 · 8454 阅读 · 0 评论