隐马尔可夫

HMM、MEMM、CRF模型比较和标注偏置问题(Label Bias Problem)

北战南征 提交于 2020-08-04 16:24:33
本文转自:http://www.cnblogs.com/syx-1987/p/4077325.html 路径1-1-1-1的概率: 0.4*0.45*0.5=0.09 路径2-2-2-2的概率 : 0.018 路径 1-2-1-2:0.06 路径 1-1-2-2:0.066 由此可得最优路径为 1-1-1-1 而实际上,在上图中,状态 1偏向于转移到状态 2,而状态 2总倾向于停留在状态 2,这就是所谓的标注偏置问题, 由于分支数不同, 概率的分布不均衡,导致状态的转移存在不公平 的情况。 PS:标注偏置问题存在于最大熵马尔可夫模型(MEMM)中,虽然MEMM解决了HMM 输出独立性假设的问题 ,但是只解决了 观察值独立的问题 , 状态之间的假设 则是 标注偏置问题产生的根源,CRF则解决了标注偏置问题,是HMM模型的进一步优化。 HMM模型中存在两个假设: 一是输出观察值之间严格独立,二是状态的转移过程中当前状态只与前一状态有关(一阶马尔可夫模型) 。 MEMM模型克服了观察值之间严格独立产生的问题,但是由于状态之间的假设理论,使得该模型存在标注偏置问题。 CRF模型解决了标注偏置问题,去除了HMM中两个不合理的假设,当然,模型相应得也变复杂了。 这三个模型都可以用来做序列标注模型。但是其各自有自身的特点,HMM模型是对转移概率和表现概率直接建模,统计共现概率

【社招】1年工作经验,字节跳动算法面经

若如初见. 提交于 2020-07-27 22:46:19
作者 | Batman1234 整理 | NewBeeNLP 面试锦囊之面经分享系列,持续更新中 欢迎后台回复" 面试 "加入讨论组交流噢 写在前面 在某大厂做算法一年,本来安安稳稳还没想过跳槽,某天接到了猎头的电话说字节在招数据挖掘工程师,择日不如撞日那就去试一试呗。 一面 问贝叶斯网络的原理。 一些统计学的原理比如t-test, AUC curve的意义是啥,为什么要用AUC去衡量机器学习模型的好坏。 问了一道题:假设现在有一个函数random(), n为未知数,1/n的概率返回0,2/n的概率返回1,写一个newRandom(),让返回0,1的概率各为1/2。medium。 二面 问了adaboost的原理,模型的权重以及数据的权重各自有什么意义,写出adaboost的伪代码。 CART树的原理,和ID3以及C4.5有什么区别,回归树与分类树有什么区别。 写出逻辑回归反向传播的伪代码。 算法题:现在有一个每行每列递增的2D数列,比如[[1,2,3,4], [2,3,4,5], [4,5,6,7]],在O(nm)的时间复杂度返回最小的k个数。hard。 三面 主要面C语言基础知识。 实现memcpy. 如何在main函数之外之行一个函数。 这样声明变量有没有问题:int a[10000000]. static修饰符有什么用?如果不加会出现什么后果? 四面 主要考察机器学习。

Prime Path素数筛与BFS动态规划

筅森魡賤 提交于 2020-05-09 09:01:48
埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法。对于求解不大于 n 的所有素数,我们先找出 sqrt(n) 内的 所有素数p1到pk ,其中 k = sqrt(n) ,依次剔除 Pi 的倍数,剩下的所有数都是素数。 具体操作如上述 图片所示。 C++实现 #include<iostream> #include<vector> using namespace std; int main() { int n; cin >> n; vector<bool> isprime(n + 5, true); vector<int> ans; for (int i = 2; i <= n; i++) { if (isprime[i]) { ans.push_back(i); for (int j = i * i; j <= n; j += i)isprime[j] = false; } } for (auto i : ans)cout << i << " "; cout << endl; return 0; } 整除问题 给定n,a求最大的k,使n!可以被a k整除但不能被a (k+1)整除。 输入描述 两个整数n(2<=n<=1000),a(2<=a<=1000) 输出描述 示例1 输入 555 12 输出 274

python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库 -转载

柔情痞子 提交于 2020-05-08 10:24:46
转载请注明出处 “结巴”中文分词:做最好的 Python 中文分词组件,分词模块jieba,它是python比较好用的分词模块, 支持中文简体,繁体分词,还支持自定义词库。 jieba的分词,提取关键词,自定义词语。 结巴分词的原理 原文链接: http://blog.csdn.net/HHTNAN/article/details/78722754 1、jieba.cut分词三种模式 jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型 jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8 jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 jieba.lcut 以及 jieba.lcut_for_search 直接返回 list jieba.Tokenizer(dictionary

Python分词工具——jieba

爷,独闯天下 提交于 2020-05-08 10:24:18
jieba简介   python在数据挖掘领域的使用越来越广泛。想要使用python做文本分析,分词是必不可少的一个环节在python的第三方包里,jieba应该算得上是分词领域的佼佼者。 GitHub地址: https://github.com/fxsjy/jieba 安装方法 # 全自动安装: easy_install jieba 或者 pip install jieba / pip3 install jieba # 半自动安装: 先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install # 手动安装: 将 jieba 目录放置于当前目录或者 site-packages 目录 主要算法 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法 特点 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 支持繁体分词 支持自定义词典 MIT

分词————jieba分词(Python)

本小妞迷上赌 提交于 2020-05-08 09:23:09
要使用分词器来看下各个分词器对文本数据的分词效果,找了很多资料发现有推荐最多的开源分词工具就是结巴(jieba)分词和清华NLP分词库(thulac),下面简单说下中文分词器的jieba分词,只写了切词和用户自定义词典两种方法,其他的功能后面再补充: 一、分词 1 import jieba 2 str = u ' 李建华为人民 ' 3 word = jieba.cut(str, HMM=True) # 产生一个生成器对象 4 word_list = [val for val in word] 5 for each in word_list: 6 print each 在上述代码中第1行导入jieba库; 第3行对词进行切分,生成一个生成器对象(HMM的参数就是是否使用隐马尔可夫的方式分词, HMM后面单独写一个再深入理解一下)。 简单程序运行结果如下: 二 、用户自定义词典 在jieba文件目录下,添加用户自定义词典 (例如:‘userdict.txt’) 将自定义的词、词频次和词性(词性可加可不加)加入(空格间隔)。 在程序中执行下列代码即可 jieba.load_userdict( ' userdict.txt ' ) # 加载上述用户字典 例句: 他来到了网易杭研大厦 加载用户自定义字典之前,粉刺结果如下图: 加载用户词典‘userdict.txt’后分词结果如下图: 来源:

24.时间序列---ARIMA模型

谁说我不能喝 提交于 2020-05-02 10:57:02
(一)Arima模型 时间序列建模基本步骤 获取被观测系统时间序列数据; 对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列; 经过第二步处理,已经得到平稳时间序列。要对平稳时间序列分别求得其自相关系数ACF 和偏自相关系数PACF ,通过对自相关图和偏自相关图的分析,得到最佳的阶层 p 和阶数 q 由以上得到的d、q、p,得到ARIMA模型。然后开始对得到的模型进行模型检验 一、时间序列平稳性 1.判断是否平稳   平稳性就是要求经由样本时间序列所得到的拟合曲线在未来一段时间内仍能顺着现有的形态惯性地延续下去。平稳性要求序列的 均值和方差不发生明显变化 。 严平稳: 严平稳表示的分布不随时间的改变而改变。如白噪声(正太),无论怎么取, 期望都是0,方差为1 。 宽平稳: 期望与相关系数(依赖性)不变。未来某时刻的t的值X t 要依赖于它的过去信息,所以需要依赖性。这种依赖性不能有明显的变化。 三种方法: (1)时序图检验 (2)自相关系数和偏相关系数 (3)单位根检验 如果是不平稳,那就需要将其转成平稳,就要用到差分法。 2.差分法 使用差分法可以使得数据更平稳,常用方法:一阶差分法和二阶差分法 3. 纯随机性检验   纯随机序列,又称白噪声序列,序列的各项数值之间没有任何相关关系,白噪声序列是没有信息可提取的平稳序列

优秀博士论文精华版:面向互联网金融微观对象的数据挖掘方法

柔情痞子 提交于 2020-04-27 10:52:52
      摘 要   近些年,互联网金融市场的蓬勃发展对传统金融行业造成了巨大冲击;与此同时,互联 网金融市场中积累的海量用户和交易数据为研究智能化、个性化、精准化的服务提供了 支持。本文通过大数据驱动的研究方法,分别针对互联网金融平台中的参与三方——用 户、金融产品和市场管理进行了系统性的研究。在真实互联网金融数据上的实验结果验 证了本研究中所提出方法的有效性。    关 键 字   互联网金融;微观对象;数据挖掘;行为分析;推荐系统    0 引言   互联网金融是指传统金融机构或者互联网企 业利用互联网等信息技术实现资金融通、支付、 投资和信息中介等服务的新型金融业务模式。互联网金融是目前金融科技(Fintech)领域的重要 形态和研究对象之一。相比于传统金融,互联网金融具有效率高、成本低、范围广、操作方便等优势。但是,互联网金融模式也在一定程度上造成了金融市场门槛降低、市场流动性增大,以及监管困难等问题。   互联网金融市场的易变性和业务复杂性对传统经济学、金融学的研究范式提出了挑战。与此同时,互联网金融市场中积累的海量用户和交易数据,也为研究者深入探索互联网环境下金融市场的潜在价值,解决互联网金融市场中存在的问题,开发大数据驱动的智慧金融服务带来了全新的机遇。   基于以上背景,本文调研了互联网金融的现状,并采用数据驱动的研究方法对互联网金融市场的主要微观对象(用户

PyTorch 1.0 中文官方教程:序列模型和LSTM网络

≯℡__Kan透↙ 提交于 2020-04-27 07:05:52
译者: ETCartman 之前我们已经学过了许多的前馈网络. 所谓前馈网络, 就是网络中不会保存状态. 然而有时 这并不是我们想要的效果. 在自然语言处理 (NLP, Natural Language Processing) 中, 序列模型是一个核心的概念. 所谓序列模型, 即输入依赖于时间信息的模型. 一个典型的序列模型是隐马尔科夫模型 (HMM, Hidden Markov Model). 另一个序列模型的例子是条件随机场 (CRF, Conditional Random Field). 循环神经网络是指可以保存某种状态的神经网络. 比如说, 网络上个时刻的输出可以作为下个 时刻的输入, 这样信息就可以通过序列在网络中一直往后传递. 对于LSTM (Long-Short Term Memory) 来说, 序列中的每个元素都有一个相应的隐状态 $h_t$, 该隐状态 原则上可以包含序列当前结点之前的任一节点的信息. 我们可以使用隐藏状态来预测语言模型 中的单词, 词性标签以及其他各种各样的东西. Pytorch中的LSTM 在正式学习之前,有几个点要说明一下,Pytorch中LSTM的输入形式是一个3D的Tensor,每一个维度都有固定的意义,第一个维度就是序列本身,第二个维度是mini-batch中实例的索引,第三个维度是输入元素的索引,我们之前没有接触过mini

#19 re&jieba模块

旧街凉风 提交于 2020-04-17 20:13:16
前言 在Python中,需要对字符串进行大量的操作,有时需要从一个字符串中提取到特定的信息,用切片肯定是不行的,所有这一节记录两个强大的文本处理模块,一个是正则表达式re模块,另一个是中文处理模块jieba,Here wo go! 一、re模块 re模块的出现使得Python完全支持正则表达式,在学re模块之前,先来认识一下正则表达式 正则表达式使用单个字符串来描述、匹配出特定句法的字符串,在文本编辑中,正则表达式常用来检索、替换那些特定匹配模式的文本。正则表达式使用起来十分繁琐,但是它带来的功能确实无比强大的,掌握正则表达式之后,工作效率将会大幅度提高! 1. 正则表达式基本语法 定位符 正则表达式 描述 示例 ^ 行起始标记 ^ import 匹配以import开头的行 $ 行尾标记 import $ 匹配以import结尾的行 限定符 正则表达式 描述 示例 . 匹配任意一个字符 impor.可以匹配到import、imporq、impor1等 + 匹配之前项1次或者多次 import+可以匹配到import、importt、importtt等,但是不能匹配到impor * 匹配之前项0次或者多次 import*可以匹配到impor、import、importt、importtt等 ? 匹配之前项0次或者1次 impor?t可以匹配到impot、import