赞
踩
图像处理:
我们在前面学KNN 的时候 ,知道图像是将 一幅图 转换成 灰度图 ,然后在转换成 0101
然后变成 一个 [ 1024] 的向量 。
文本:
我们一般先将一个文本先切成 单个 单词 ,然后在用特征工程 (后面我们会专门讲解这个)变成机器可以识别的向量 。 所以分词 是最先的一个步骤。
输入待切分句子:提高人民生活水平
可以切分输出 :提高/人民/生活/水平
或者切分输出:提/高人/民生/活水/平
可以看到,明显第二个输出为歧义切分。
未登录词指的是在已有的词典中,或者训练语料里面没有出现过的词,分为实体名词,专有名词及新词。 比如每年网络会爆出一些网红词 : 给力 ,盘它 。这样的词以前是没有出现过的 。 我们也希望能够切分出来。
机械分词算法,将待分的字符串与一个充分大的机器词典中的词条进行匹配。
分为正向匹配和逆向匹配;最大长度匹配和最小长度匹配;单纯分词和分词与标注过程相结合的一体化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。
实际应用中,将机械分词作为初分手段,再利用其他方法提高准确率。
统计分词,是一种全切分方法。切分出待分语句中所有的词,基于训练语料词表中每个词出现的频率,运用统计模型和决策算法决定最优的切分结果。
主要基于句法、语法分析,并结合语义分析,通过对上下文内容所提供信息的分析对词进行定界。
这类方法试图让机器具有人类的理解能力,需要使用大量的语言知识和信息,目前还处在试验阶段
1,jieba 分词
2, jieba_fast
3,HanLP
中文分词 jieba 和 hanlp 用的最多。jieba_fast 比jieba效率高 用C 重写了这个库。
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("全模式: " + "/ ".join(seg_list)) # 全模式
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("精准模式: " + "/ ".join(seg_list)) # 精确模式
全模式: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
精准模式: 我/ 来到/ 北京/ 清华大学
使用非常简单 ,但是我们一般会
前缀词典,实际上可以认为是一个词频词典 我们存在一个文本文件中,
里面都是 {词:频率} 这种形式 ;
比如 { 我们 : 1000,
我 : 1001,
实际: 500
}
DAG是基于前面得到的前缀词典进行构造的,基本思想是将待分语句进行全切分,将切分完的词语列表与前缀词典进行比较,如果这个词存在,就存下来,并用词在字符串中的位置索引进行替代,转化为{key:list[i,j…], …}的字典结构,如下:
假设有句子,去北京大学玩,则对应的DAG为,{0 : [0], 1 : [1, 2, 4], 2 : [2], 3 : [3, 4], 4 : [4], 5 : [5]} 这样一个字典。
具体意思是,0:[0]代表0位置,即‘去’在前缀词典中代表一个词,同理1 : [1, 2, 4]代表‘北’,‘北京’,‘北京大学’
我们拥有所有可能出现的词及其对应的所有可能组成路径(即DAG),那么应该用什么方法去找到一条最可能的路径呢?
jieba中使用了动态规划的方法,这里简单的理解就是对于一个长度为n的句子,由后往前遍历。
假设最后一个词出现的概率为N,倒数第二个词出现的概率为N-1,那么两个词在一起出现概率则为N(N-1),以此类推,直到到达第一个词,计算出所有可能路径中的最大概率路径。这里还需要理解两个名词,重叠子问题,最优子结构,最终得到最优的路径
还是 去北京大学玩 举例:
P(玩)*P(学)*P(大)*P(京)*p(北)*p(去) = 概率1
P(玩)*P(大学)*p(京)*P(北)*P(去) = 概率2
…
各种概率对比 . 概率比较大的 就是最优解 。
jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型 求解 未登录词。
jieba 采用的是 隐马尔可夫HMM (这个我后面详解 )
已知:
状态转移概率:
P={‘B’: {‘E’: -0.510825623765990, ‘M’: -0.916290731874155},
‘E’: {‘B’: -0.5897149736854513, ‘S’: -0.8085250474669937},
‘M’: {‘E’: -0.33344856811948514, ‘M’: -1.2603623820268226},
‘S’: {‘B’: -0.7211965654669841, ‘S’: -0.6658631448798212}}
初始概率:
P={‘B’: -0.26268660809250016,
‘E’: -3.14e+100,
‘M’: -3.14e+100,
‘S’: -1.4652633398537678}
观测序列O
对于每一个待分的句子,都视为一个观测序列,如:去北京大学玩,就是一个长度T为6的观测序列
每一个观测序列,都对应着相同长度的状态序列。这里将汉字按SBME进行标注,分别代表single(单独成词的字)、begin(一个词语开始字)、middle(一个词语中间的字)、end(一个词语结束的字),如:
观测序列:去 / 北京大学 / 玩
状态序列:S / BMME / S
输出概率:
P={‘B’: {’\u4e00’: -3.6544978750449433,
‘\u4e01’: -8.125041941842026,
‘\u4e03’: -7.817392401429855,
‘\u4e07’: -6.3096425804013165,
…}
根据:HMM
综上 我们 已知:
y,b,a 并且知道x 的几种状态
求: x 的输出顺序 也就是典型的 HMM 已知观察 和转换 求解 隐含状态。
比如:
求出每一个 字 B ,M ,E,S 的概率 最后 可能得出
S我 S是 B中M国E人
所以就将 中国人 作为一个词 放入。
这些状态数据 BMES 概率 根据这个网址 可以得出 。这是人工根据大量的报纸,小说,标记而成 。 可见人工智能有很大人工的工作量 。
https://blog.csdn.net/sinat_33741547/article/details/78690440
https://www.cnblogs.com/skyme/p/4651331.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。