。一个最大逆向匹配分词算法的例子

原文链接地址:
http://www.52nlp.cn/maximum-matching-method-of-chinese-word-segmentation/

逆向匹配法思想与正向一样,只是从右向左切分,这里举一个例子:
   输入例句:S1=”计算语言学课程有意思” ;
   定义:最大词长MaxLen = 5;S2= ” “;分隔符 = “/”;
   假设存在词表:…,计算语言学,课程,意思,…;
   最大逆向匹配分词算法过程如下:
 (1)S2=””;S1不为空,从S1右边取出候选子串W=”课程有意思”;
 (2)查词表,W不在词表中,将W最左边一个字去掉,得到W=”程有意思”;
 (3)查词表,W不在词表中,将W最左边一个字去掉,得到W=”有意思”;
 (4)查词表,W不在词表中,将W最左边一个字去掉,得到W=”意思”
 (5)查词表,“意思”在词表中,将W加入到S2中,S2=” 意思/”,并将W从S1中去掉,此时S1=”计算语言学课程有”;
 (6)S1不为空,于是从S1左边取出候选子串W=”言学课程有”;
 (7)查词表,W不在词表中,将W最左边一个字去掉,得到W=”学课程有”;
 (8)查词表,W不在词表中,将W最左边一个字去掉,得到W=”课程有”;
 (9)查词表,W不在词表中,将W最左边一个字去掉,得到W=”程有”;
 (10)查词表,W不在词表中,将W最左边一个字去掉,得到W=”有”,这W是单字,将W加入到S2中,S2=“ /有 /意思”,并将W从S1中去掉,此时S1=”计算语言学课程”;
 (11)S1不为空,于是从S1左边取出候选子串W=”语言学课程”;
 (12)查词表,W不在词表中,将W最左边一个字去掉,得到W=”言学课程”;
 (13)查词表,W不在词表中,将W最左边一个字去掉,得到W=”学课程”;
 (14)查词表,W不在词表中,将W最左边一个字去掉,得到W=”课程”;
 (15)查词表,“意思”在词表中,将W加入到S2中,S2=“ 课程/ 有/ 意思/”,并将W从S1中去掉,此时S1=”计算语言学”;
 (16)S1不为空,于是从S1左边取出候选子串W=”计算语言学”;
 (17)查词表,“计算语言学”在词表中,将W加入到S2中,S2=“计算语言学/ 课程/ 有/ 意思/”,并将W从S1中去掉,此时S1=””;
 (18)S1为空,输出S2作为分词结果,分词过程结束。

时间: 2024-07-29 08:09:10

。一个最大逆向匹配分词算法的例子的相关文章

自然语言处理 最大逆向匹配分词算法

输入例句:S1="计算语言学课程有意思" : 定义:最大词长MaxLen = 5:S2= " ":分隔符 = “/”: 假设存在词表:…,计算语言学,课程,意思,…: 最大逆向匹配分词算法过程如下: (1)S2="":S1不为空,从S1右边取出候选子串W="课程有意思": (2)查词表,W不在词表中,将W最左边一个字去掉,得到W="程有意思": (3)查词表,W不在词表中,将W最左边一个字去掉,得到W=&q

正向_逆向匹配分词

# 1.统计分词词典,确定词典中最长词条的字符m:# 2.从左向右取待切分语句的m个字符作为匹配字段,查找词典,如果匹配成功,则作为一个切分后的词语,# 否则,去掉待匹配字符的最后一个继续查找词典,重复上述步骤直到切分出所有词语. dictA = ['南京市', '南京市长', '长江大桥', '大桥'] maxDictA = max([len(word) for word in dictA]) sentence = "南京市长江大桥" def cutA(sentence): resu

逆向最大匹配分词算法C#

逆向顺序 句子:大家好我叫XX我是一名程序员 程序员 -> 序员 -> 员 名程序 -> 程序 -> 序 一名程 -> 名程 -> 程 是一名 -> 一名 -> 名 我是一 -> 是一 -> 一 X我是 -> 我是 -> 是 XX我  -> X我 -> 我 叫XX  -> XX -> X 我叫X -> 叫X -> X 好我叫 -> 我叫 -> 叫 家好我 -> 好我 -> 我

中文分词算法综述

英文文本词与词之间以空格分隔,方便计算机识别,但是中文以字为单位,句子所有字连起来才能表达一个完整的意思.如英文"I am writing a blog",英文词与词之间有空格进行隔开,而对应的中文"我在写博客",所有的词连在一起,计算机能很容易的识别"blog"是一个单词,而很难知道"博"."客"是一个词,因此对中文文本序列进行切分的过程称为"分词".中文分词算法是自然语言处理的基础,

最大匹配分词算法

全文检索有两个重要的过程: 1分词   2倒排索引 我们先看分词算法 目前对中文分词有两个方向,其中一个是利用概率的思想对文章分词. 也就是如果两个字,一起出现的频率很高的话,我们可以假设这两个字是一个词.这里可以用一个公式衡量:M(A,B)=P(AB)/P(A)P(B),其中 A表示一个字,B表示一个字,P(AB)表示AB相邻出现的概率,P(A)表示A在这篇文章中的频度,P(B)表示B在这篇文章中的频度.用概率分词的好 处是不需要借助词典的帮助,坏处是算法比较麻烦,效率不高,也存在一定的出错率

深度解析中文分词器算法(最大正向/逆向匹配)

中文分词算法概述: 1:非基于词典的分词(人工智能领域) 相当于人工智能领域计算.一般用于机器学习,特定领域等方法,这种在特定领域的分词可以让计算机在现有的规则模型中, 推理如何分词.在某个领域(垂直领域)分词精度较高.但是实现比较复杂. 例:比较流行的语义网:基于本体的语义检索. 大致实现:用protege工具构建一个本体(在哲学中也叫概念,在80年代开始被人工智能),通过jena的推理机制和实现方法. 实现对Ontology的语义检索. Ontology语义检索这块自己和一朋友也还在琢磨,目

分词算法-正向最大匹配算法与逆向最大匹配算法

这两种分词方法都是机械分词方法,按照一定的策略将待分析的汉字串与机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功.按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配.按照不同长度优先匹配的情况,可以分为最大匹配和最小匹配.由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少用.一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少.统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245.但这种精度还远远不能满足实际

大数据DDos检测——DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然! 和一个句子的分词算法CRF没有区别!

DDos攻击本质上是时间序列数据,t+1时刻的数据特点和t时刻强相关,因此用HMM或者CRF来做检测是必然!--和一个句子的分词算法CRF没有区别!注:传统DDos检测直接基于IP数据发送流量来识别,通过硬件防火墙搞定.大数据方案是针对慢速DDos攻击来搞定.难点:在进行攻击的时候,攻击数据包都是经过伪装的,在源IP 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的.这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的.领域知识见:http://blog.csdn.n

机器学习基础——一文讲懂中文分词算法

在前文当中,我们介绍了搜索引擎的大致原理.有错过或者不熟悉的同学,可以点击下方的链接回顾一下前文的内容. ML基础--搜索引擎基本原理 在介绍爬虫部分的时候,我们知道,爬虫在爬取到网页的内容之后,会先进行一些处理.首先要做的就是过滤掉HTML当中的各种标签信息,只保留最原生的网页内容.之后,程序会对这些文本内容提取关键词. 今天我们就来讲讲关键词提取当中最重要的一个部分--中文分词. 在世界上众多的语言当中,中文算是比较特殊的一种.许多语言自带分词信息,比如英文,机器学习写作machine le