隐马尔可夫

图像识别之物体识别

橙三吉。 提交于 2021-02-08 04:05:33
''' 物体识别 ''' import cv2 as cv import os import warnings import numpy as np import hmmlearn.hmm as hl warnings.filterwarnings( ' ignore ' , category= DeprecationWarning) np.seterr(all = ' ignore ' ) def search_objects(directory): directory = os.path.normpath(directory) if not os.path.isdir(directory): raise IOError( ' the directory ' + directory + ' doesnt exist! ' ) objects = {} for curdir, subdirs, files in os.walk(directory): for jpeg in (file for file in files if file.endswith( ' .jpg ' )): path = os.path.join(curdir, jpeg) label = path.split(os.path.sep)[-2 ] if label not in objects:

通俗易懂理解——条件随机场CRF

青春壹個敷衍的年華 提交于 2021-01-30 08:30:35
https://mp.weixin.qq.com/s?__biz=MzIyNzE5NjExMA==&mid=2651342812&idx=1&sn=2f74c852200d6868f68a2f05ba561ac8&chksm=f3980a7dc4ef836b764c7ad2bab7c92e696074af43efa2a6be03d686fcec0a4a91a05a116b38&scene=178&cur_album_id=1381650339941761024&exportkey=AaZpj6rbOKQmUg2WIvFt0k0%3D&pass_ticket=lXzBpkoZ2YPJsUPAT3fbhToQqpCP%2BpcjC24v76SUrC6t0zqXhUNtg4RI8W8iC6It&wx_header=0#rd 前言 CRF是一个概率无向图模型,在NLP领域应用广泛,目前大部分的序列标注问题(分词、实体识别等)都会采用Neural Network+CRF作为baseline,本文将会对CRF做一个基本的介绍,并讲解其推导过程。 CRF解决的是什么问题 假设你有许多小明同学一天内不同时段的照片,从小明起床到睡觉各个时间段都有。现在的任务是对这些照片进行分类。比如有的照片是吃饭,那就给它打上吃饭的标签;有的照片是跑步时拍的,那就打上跑步的标签;有的照片是开会时拍的

Python实现语音识别和语音合成

狂风中的少年 提交于 2021-01-13 07:37:08
声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。 通过傅里叶变换,可以将时间域的声音函数分解为一系列不同频率的正弦函数的叠加,通过频率谱线的特殊分布,建立音频内容和文本的对应关系,以此作为模型训练的基础。 案例:画出语音信号的波形和频率分布,( freq.wav数据地址 ) # -*- encoding:utf-8 -*- import numpy as np import numpy.fft as nf import scipy.io.wavfile as wf import matplotlib.pyplot as plt sample_rate, sigs = wf.read( ' ../machine_learning_date/freq.wav ' ) print (sample_rate) # 8000采样率 print (sigs.shape) # (3251,) sigs = sigs / (2 ** 15) # 归一化 times = np.arange(len(sigs)) / sample_rate freqs = nf.fftfreq(sigs.size, 1 / sample_rate) ffts = nf.fft(sigs) pows = np.abs(ffts) plt.figure( ' Audio

机器学习算法总结(十一)——条件随机场

主宰稳场 提交于 2021-01-12 06:55:39
1、条件随机场的定义      条件随机场的定义:设X与Y是随机变量,P(Y|X)是给定条件X时Y的条件概率分布,此时若随机变量Y构成的是一个马尔科夫随机场,则称条件概率分布P(Y|X)是条件随机场。隐马尔科夫模型和隐马尔科夫随机场是属于生成模型,因为它们都有计算联合概率分布,而条件随机场是判别模型,其目标就是直接构建条件概率模型P(Y|X)。    首先定义一般的条件随机场模型 ,设X与Y是随机变量。若随机变量Y构成一个由无向图G=(V, E)表示的马尔科夫随机场。则有下面的表达式      对于上面的式子若是对所有的v都成立,则称条件概率分布P(Y|X)为条件随机场。式子中w~v表示与结点v有边连接的所有结点(也就是和结点v存在依赖关系的结点),而w≠v,则表示除了v之外的所有结点。对于一般的条件随机场来说,结点v的条件概率除了和X有关还和与之有边相连的结点有关。    再来看线性链条件随机场 ,在一般的条件随机场中并没有要求X和Y具有相同的结构,而在线性链条件随机场中要求X和Y具有相同的结构,具体结构如下图         设X = (X 1 , X 2 , ..., X n ),Y = (Y 1 , Y 2 , ..., Y n )均为线性链表示的随机变量序列,若在给定随机变量序列X的条件下,随机变量序列Y的条件概率分布P(Y|X)构成条件随机场,即满足马尔科夫性

浅谈分词算法(1)分词中的基本问题

耗尽温柔 提交于 2020-12-27 00:24:44
[TOC] #前言 分词或说切词是自然语言处理中一个经典且基础的问题,在平时的工作中也反复的接触到分词问题,用到了不同的模型,不同的方法应用在各个领域中,所以想对分词问题做一个系统的梳理。大多数分词问题主要是针对类似汉语、韩语、日语等,词语之间并没有天然的分割,而像英语等,句子中是带有天然的分割的。但是英语也会涉及到分词问题,比如实体识别、词性标注等内容。而本系列文章更多的是讨论汉语中的分词问题,首先我们从分词问题的基本出发,之后从传统的词典分词到将分词转为序列标注问题的分词,以及最新的结合深度学习的分词,基本按照时间顺序对分词模型可能用到的算法模型进行一步步尝试与介绍,所有代码我会放在自己的github上: xlturing 。 #目录 浅谈分词算法(1)分词中的基本问题 浅谈分词算法(2)基于词典的分词方法 浅谈分词算法(3)基于字的分词方法(HMM) 浅谈分词算法(4)基于字的分词方法(CRF) 浅谈分词算法(5)基于字的分词方法(LSTM) #分词中的基本问题 简单的讲,汉语自动分词就是让计算机在汉语文本中的词与词之间自动加上空格或其他边界标记。分词中涉及到三个基本问题:分词规范、歧义切分和未登录词的识别。 ##分词规范 我们从小学习汉语开始,基本顺序就是汉字->词语->句子->段落->篇章,而其中词是什么,什么是词语,这个问题看似有些莫名其妙

jieba结巴分词

走远了吗. 提交于 2020-12-17 15:28:16
pip install jieba 安装jieba模块 如果网速比较慢, 可以使用豆瓣的Python源: pip install -i https://pypi.douban.com/simple/ jieba 一、分词: import jieba seg_list = jieba.cut( "从没见过我这么弱的垃圾" , cut_all= True) print( "全模式:" + " ".join(seg_list)) # 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义 seg_list = jieba.cut( "从没见过我这么弱的垃圾") print( "精确模式:" + " ".join(seg_list)) # 精确模式,试图将句子最精确地切开,适合文本分析 seg_list = jieba.cut_for_search( "从没见过我这么弱的垃圾") print( "搜索引擎模式:" + " ".join(seg_list)) # 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词,符合中国人的使用习惯 打印结果: 全模式: 从没 没见 过 我 这么 弱 的 垃圾 精确模式: 从没 见 过 我 这么 弱 的 垃圾 搜索引擎模式: 从没 见 过 我 这么 弱 的 垃圾 也可以这样写: import

jieba分词

蓝咒 提交于 2020-12-16 09:24:35
一. 三种模式 精确模式 ,试图将句子最精确地切开,适合文本分析; 全模式 ,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式 ,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 二. 算法 基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法 三. 功能 1.分词 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 以及

以kaldi中的yesno为例谈谈transition

亡梦爱人 提交于 2020-12-07 03:32:42
在基于GMM-HMM的传统语音识别里,比音素(phone)更小的单位是状态(state)。一般每个音素由三个状态组成,特殊的是静音(SIL)由五个状态组成。这里所说的状态就是指HMM里的隐藏的状态,而每帧数据就是指HMM里的观测值。每个状态可以用一个GMM模型表示(这个GMM模型的参数是通过训练得到的)。在识别时把每帧数据对应的特征值放进每个状态的GMM里算概率,概率最大的那个就是这帧对应的状态。再从状态得到音素(HMM负责),从音素得到词(字典模型负责),从词得到句子(语言模型负责),最终完成识别。可以从一个状态转到另一个状态,即状态之间存在转移(transition)。Transition是kaldi里一个非常重要的概念,相关的有transition-state、transition-index、transition-id等,初一看云里雾里不太好理解,其实它们都是根据topo图(/s5/data/lang/topo)得到的。今天就基于yesno的例子对它们做一个讲解。 先看yesno中的topo图(见下图),它有三个音素:SIL、yes、no (yes和no均作为一个音素处理),id 分别为1、2、3. SIL有5个状态,id为0—4 ,5为结束态。yes/no分别有三个状态,id为0—2 ,3为结束态。 SIL中状态0—3 分别有4条状态转移路径(或者叫转移弧),以状态0为例

音频工具kaldi部署及模型制作调研学习

女生的网名这么多〃 提交于 2020-12-02 05:46:09
语音识别简介 语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR)、计算机语音识别(英语:Computer Speech Recognition)或是语音转文本识别(英语:Speech To Text, STT),其目标是以计算机自动将人类的语音内容转换为相应的文字。 按照不同纬度如下分类: 按词汇量(vocabulary)大小分类: 小词汇量:几十个词; 中等词汇量:几百个到上千个词 大词汇量:几千到几万个 按说话的方式(style)分类: 孤立词(isolated words) 连续(continously) 按声学(Acoustic)环境分类: 录音室 不同程度的噪音环境 按说话人(Speaker)分类: 说话人相关(Speaker depender) 说话音素(Phoneme):单词的发音都是由音素构成,对于英语,常用的音素集是 CMU 的 39 个音素构成的音素集。而对于汉语,一般直接用全部声母和韵母作为音素集,另外汉语识别还要考虑音调。 The CMU Pronouncing Dictionary. 声学模型 :是将声学和发音学(phonetics)的知识进行整合,以特征提取部分生成的特征作为输入,并为可变长特征序列生成声学模型分数。 语言模型 :通过从训练语料

哈尔滨工业大学计算机学院-自然语言处理-课程总结

不问归期 提交于 2020-11-24 15:06:50
1. 前言 自然语言处理是关毅老师的研究生课程。 本博客仅对噪声信道模型、n元文法(N-gram语言模型)、维特比算法详细介绍。 其他的重点知识还包括概率上文无关文法(PCFG)、HMM形式化定义、词网格分词等等,比较简单,不做赘述。 2. 噪声信道模型 2.1 噪声信道模型原理 噪声信道模型的示意图如下所示: 该模型的目标是通过有噪声的输出信号试图恢复输入信号,依据贝叶斯公式,其计算公式如下所示: $$I = \arg \max _ { I } P ( I | O ) = \arg \max _ { I } \frac { P ( O | I ) P ( I ) } { P ( O ) } = \arg \max _ { I } P ( O | I ) P ( I )$$ $I$指输入信号,$O$指输出信号。 噪声模型的优点是具有普适性,通过修改噪声信道的定义,可以将很多常见的应用纳入到这一模型的框架之中,相关介绍见2.1。 2.2 噪声信道模型的应用 2.2.1 语音识别 语音识别的目的是通过声学信号,找到与其对应的置信度最大的语言文本。 计算公式与上文相同,此时的$I$为语言文本,$O$为声学信号。 代码实现过程中,有一个信息源以概率$P(I)$生成语言文本,噪声信道以概率分布$P(O|I)$将语言文本转换为声学信号。 模型通过贝叶斯公式对后验概率$P(I|O)$进行计算。