当前位置:首页 » 编程语言 » 最大正向匹配python

最大正向匹配python

发布时间: 2023-05-22 20:40:39

Ⅰ 怎样让python的正则表达式从右向左匹配

直接匹配就行,匹配不成功,会返回None,成功则返回成功的匹配对象。

如:
if pat.match(‘a’)
print ‘match’
如果匹配了'a',则会输出match,否则if 条件不成立,枯隐也就什么都不轮穗输出。 不要用=='None', None本来就是False
直接
if s:
print 1 #匹配成功
else:
print 2 #匹配失没桐厅败

Ⅱ 如何对excel表格里的词结巴分词python

#-*-coding:utf-8-*-
importjieba
'''''
Createdon2015-11-23
'''

defword_split(text):
"""
Splitatextinwords.
(word,location).
"""
word_list=[]
windex=0
word_primitive=jieba.cut(text,cut_all=True)
forwordinword_primitive:
iflen(word)>0:
word_list.append((windex,word))
windex+=1
returnword_list

definverted_index(text):
"""
CreateanInverted-.
{word:[locations]}
"""
inverted={}
forindex,wordinword_split(text):
locations=inverted.setdefault(word,[])
locations.append(index)
returninverted


definverted_index_add(inverted,doc_id,doc_index):
"""
AddInvertd-Indexdoc_indexofthedocumentdoc_idtothe
Multi-DocumentInverted-Index(inverted),
usingdoc_idasdocumentidentifier.
{word:{doc_id:[locations]}}
"""
forword,locationsindoc_index.iteritems():
indices=inverted.setdefault(word,{})
indices[doc_id]=locations
returninverted

defsearch_a_word(inverted,word):
"""
searchoneword
"""
word=word.decode('utf-8')
ifwordnotininverted:
returnNone
else:
word_index=inverted[word]
returnword_index

defsearch_words(inverted,wordList):
"""
searchmorethanoneword
"""
wordDic=[]
docRight=[]
forwordinwordList:
ifisinstance(word,str):
word=word.decode('utf-8')
ifwordnotininverted:
returnNone
else:
element=inverted[word].keys()
element.sort()
wordDic.append(element)
numbers=len(wordDic)
inerIndex=[0foriinrange(numbers)]
docIndex=[wordDic[i][0]foriinrange(numbers)]
flag=True
whileflag:
ifmin(docIndex)==max(docIndex):
docRight.append(min(docIndex))
inerIndex=[inerIndex[i]+1foriinrange(numbers)]
foriinrange(numbers):
ifinerIndex[i]>=len(wordDic[i]):
flag=False
returndocRight
docIndex=[wordDic[i][inerIndex[i]]foriinrange(numbers)]
else:
minIndex=min(docIndex)
minPosition=docIndex.index(minIndex)
inerIndex[minPosition]+=1
ifinerIndex[minPosition]>=len(wordDic[minPosition]):
flag=False
returndocRight
docIndex=[wordDic[i][inerIndex[i]]foriinrange(numbers)]

defsearch_phrase(inverted,phrase):
"""
searchphrase
"""
docRight={}
temp=word_split(phrase)
wordList=[temp[i][1]foriinrange(len(temp))]
docPossible=search_words(inverted,wordList)
fordocindocPossible:
wordIndex=[]
indexRight=[]
forwordinwordList:
wordIndex.append(inverted[word][doc])
numbers=len(wordList)
inerIndex=[0foriinrange(numbers)]
words=[wordIndex[i][0]foriinrange(numbers)]
flag=True
whileflag:
ifwords[-1]-words[0]==numbers-1:
indexRight.append(words[0])
inerIndex=[inerIndex[i]+1foriinrange(numbers)]
foriinrange(numbers):
ifinerIndex[i]>=len(wordIndex[i]):
flag=False
docRight[doc]=indexRight
break
ifflag:
words=[wordIndex[i][inerIndex[i]]foriinrange(numbers)]
else:
minIndex=min(words)
minPosition=words.index(minIndex)
inerIndex[minPosition]+=1
ifinerIndex[minPosition]>=len(wordIndex[minPosition]):
flag=False
break
ifflag:
words=[wordIndex[i][inerIndex[i]]foriinrange(numbers)]
returndocRight


if__name__=='__main__':
doc1="""
中文分词指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范
重新组合成词序列的过程。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文
只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样
存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。
"""

doc2="""
存在中文分词技术,是由于中文在基本文法上有其特殊性,具体表现在:
与英文为代表的拉丁语系语言相比,英文以空格作为天然的分隔符,而中文由于继承自古代汉语的传统,
词语之间没有分隔。古代汉语中除了连绵词和人名地名等,词通常就是单个汉字,所以当时没有分词
书写的必要。而现代汉语中双字或多字词居多,一个字不再等同于一个词。
在中文里,“词”和“词组”边界模糊
现代汉语的基本表达单元虽然为“词”,且以双字或者多字词居多,但由于人们认识水平的不同,对词和
短语的边界很难去区分。
例如:“对随地吐痰者给予处罚”,“随地吐痰者”本身是一个词还是一个短语,不同的人会有不同的标准,
同样的“海上”“酒厂”等等,即使是同一个人也可能做出不同判断,如果汉语真的要分词书写,必然会出现
混乱,难度很大。
中文分词的方法其实不局限于中文应用,也被应用到英文处理,如手写识别,单词之间的空格就不很清楚,
中文分词方法可以帮助判别英文单词的边界。
"""

doc3="""
作用
中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,
但如何让计算机也能理解?其处理过程就是分词算法
影响
中文分词对于搜索引擎来说,最重要的并不是找到所有结果,因为在上百亿的网页中找到所有结果没有太多的意义,
没有人能看得完,最重要的是把最相关的结果排在最前面,这也称为相关度排序。中文分词的准确与否,常常直接
影响到对搜索结果的相关度排序。从定性分析来说,搜索引擎的分词算法不同,词库的不同都会影响页面的返回结果
"""

doc4="""
这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,
若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向
匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;常用的几种
机械分词方法如下:
正向最大匹配法(由左到右的方向);
逆向最大匹配法(由右到左的方向);
最少切分(使每一句中切出的词数最小);
双向最大匹配法(进行由左到右、由右到左两次扫描)
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。
由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于
正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为,单纯使用逆向
最大匹配的错误率为。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词
作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征
的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法
是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词
结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。
"""

doc5="""
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。
因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度
进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字的相邻共现概率。互现信息体现了
汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法
只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法
也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、
“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本
的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,
既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
另外一类是基于统计机器学习的方法。首先给出大量已经分词的文本,利用统计机器学习模型学习词语切分的规律
(称为训练),从而实现对未知文本的切分。我们知道,汉语中各个字单独作词语的能力是不同的,此外有的字常
常作为前缀出现,有的字却常常作为后缀(“者”“性”),结合两个字相临时是否成词的信息,这样就得到了许多
与分词有关的知识。这种方法就是充分利用汉语组词的规律来分词。这种方法的最大缺点是需要有大量预先分好词
的语料作支撑,而且训练过程中时空开销极大。
到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法
来实现,都需要综合不同的算法。例如,海量科技的分词算法就采用“复方分词法”,所谓复方,就是像中西医结合
般综合运用机械方法和知识方法。对于成熟的中文分词系统,需要多种算法综合处理问题。
"""

#BuildInverted-Indexfordocuments
inverted={}
documents={'doc1':doc1,'doc2':doc2,'doc3':doc3,'doc4':doc4,'doc5':doc5}
fordoc_id,textindocuments.iteritems():
doc_index=inverted_index(text)
inverted_index_add(inverted,doc_id,doc_index)

#Searchoneword
aWord="分词"
result_a_word=search_a_word(inverted,aWord)
ifresult_a_word:
result_a_word_docs=result_a_word.keys()
print"'%s'isappearedat"%(aWord)
forresult_a_word_docinresult_a_word_docs:
result_a_word_index=result_a_word[result_a_word_doc]
forindexinresult_a_word_index:
print(str(index)+''),
print"of"+result_a_word_doc
print""
else:
print"Nomatches! "

#Searchmorethanoneword
words=["汉语","切分"]
result_words=search_words(inverted,words)
ifresult_words:
print("["),
foriinrange(len(words)):
print("%s"%(words[i])),
print("]areappearedatthe"),
forresult_words_docinresult_words:
print(result_words_doc+''),
print" "
else:
print"Nomatches! "

#Searchphrase
phrase="中文分词"
result_phrase=search_phrase(inverted,phrase)
ifresult_phrase:
result_phrase_docs=result_phrase.keys()
print"'%s'isappearedatthe"%(phrase)
forresult_phrase_docinresult_phrase_docs:
result_phrase_index=result_phrase[result_phrase_doc]
forindexinresult_phrase_index:
print(str(index)+''),
print"of"+result_phrase_doc
print""
else:
print"Nomatches! "

Ⅲ python正则匹配和字符串匹配,哪个效率更高

$ python -m timeit "import re; pat = re.compile(r'llo'); pat.search('hello');"

# 编译过的 re
$ python -m timeit -s "import re; pat = re.compile(r'llo');" "pat.search('hello')"
1000000 loops, best of 3: 0.234 usec per loop

# 字符串匹配
$ python -m timeit "'hello'.index('llo')"
1000000 loops, best of 3: 0.214 usec per loop

# 单纯地判断是否存在匹配
$ python -m timeit "'llo' in 'hello'"
10000000 loops, best of 3: 0.0495 usec per loop

######## 忽略大小的匹配
python -m timeit -s "import re; pat = re.compile(r'llo', re.IGNORECASE);" "pat.search('helLo')"
1000000 loops, best of 3: 0.387 usec per loop
###### 没区别...
$ python -m timeit -s "tomatch='llo'" "'heLlo'.lower().index('llo')"
1000000 loops, best of 3: 0.373 usec per loop

在 反复 查找同一字符串的情况下字符串匹配高效一点点,可以忽略不计。
如果只是 单次 匹配,或者只是查找是否有匹配的情况下regex要慢很多

Ⅳ Python中,已经得到一个包含所有单词的词典,如何统计词典中的单词在每一句话中出现的次数

众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。
中文分词技术属于自然语言处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法。

现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

1、基于字符串匹配的分词方法

这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:

1)正向最大匹配法(由左到右的方向);

2)逆向最大匹配法(由右到左的方向);

3)最少切分(使每一句中切出的词数最小)。

还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。

一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。

对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。

2、基于理解的分词方法

这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。

3、基于统计的分词方法

从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。笔者了解,海量科技的分词算法就采用“复方分词法”,所谓复方,相当于用中药中的复方概念,即用不同的药才综合起来去医治疾病,同样,对于中文词的识别,需要多种算法来处理不同的问题。

Ⅳ python中提供了哪几种通过正则表达式匹配字符串的方法有哪

python中提供了3种通过正则表达式匹配字符串的方法。种通过正则表达式匹配字符串的方法有以下三种。
1、贪婪匹配与非贪婪匹配:在定义用于匹配的模式串时,使用.*,则为贪婪匹配。使用.*,则为非贪婪匹配。
2、indall与search的选取问题:自己定义的模式串只能匹配到一个结果,使用search方法结合group方法可以直接得到这个字符串。自己定义的模式串能匹配到多个结果,则使用findall方法可以得到存储多个结果字符串的列表。
3、匹配时"()"和[]的用法:目标字符串‘abcde’[…]会匹配在[]内的任意一个字符,而不会匹配整个字符串。(…)会匹配在()内的整个字符串。使用search方法时则正常匹配(相当于没有()),使用findall方法时则只会匹配(…)的内容。)[]同时出现,考虑(…)式的字符串与[…]式内的字符和顺序,使用findall方法时结果会舍弃[…]内容,使用search方法时则正常匹配(相当于没有()和[])。

Ⅵ Python正则表达式匹配问题求大神帮忙

正则表达式:[0-9]+(?=年出生)

我给你一个java程序的例子:

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

public灶辩classGG{

publicstaticvoidmain(String[]args){

Strings="董码桥事长。1953年出生,大专学历,高级经济师。2012年10月至今";

Stringregex="[0-9]+(?=年出生)";

Patternp=Pattern.compile(regex);

Matcherm=p.matcher(s);

隐模缺while(m.find()){

System.out.println(m.group());

}

}

}

运行结果:

1953

Ⅶ 使用正向最大匹配算法给一个长句子分词的顺序是

使用正向最大匹配算法给一个长句子分词的顺序应该如下:

1、从句子的开头开始扫描,取出最长的匹配词作为分词结果。

2、将扫描指针移动至已经分词的末尾,继续扫描未分词的文本,重复步骤1,直至扫描完整个句子。

需要注意的是,正向最大匹配算法可能会存在歧义和错误切分的情况,因此在实际应用中常常需要结合其他算法进行纠错和优化。

3、处理未登录词:未登录词指词典中没有收录的新词或专有名词等。在正向最大匹配算法中,未登录词可能会被切分成几个部分。因此,需要采用其他方法来处理未登录词,例如基于统计模型的分词算法。

4、解决歧义:正向最大匹配算法可能会遇到哪启裂歧义问题,例如“北京大学生命科学学院”,可以分为“北京大学/生命科学/学院”和“北京/大学生命科学学院”两种切分结旁信果。可以采用规则集、统计模型等方式解决歧义问题。

总而言之,正向最大匹配算法是一种简单有效的分词算法,但也存在一些局限性和问题,需要根据实际需求和情况进行调整和优化。

Ⅷ seo问题,什么叫正向匹配什么叫逆向匹配举例说明

下面牛到家SEO介绍的分词算法中最简单的正向最大匹配和反向最大匹配。

这种两种方法都是机械分词方法,它是按照一定的策略将待分析的汉字串与一个”充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。
按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词
类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率
定义比较抽象,举个例子来说明正向最大匹配和反向最大匹配。
例子:’今天来了许多新同事’
1.正向最大匹配方式,最大长度为5
今天来了许
今天来了
今天来
今天 ====》 得到一个词–今天
来了许多新
来了许多
来了许
来了
来 ====》 得到一个词–来
了许多新同
了许多新
了许多
了许
了 ====》 得到一个词–了
许多新同事
许多新同
许多新
许多 ====》得到一个词– 许多
新同事
新同
新 ====》得到一个词– 新
同事 ====》得到一个词– 同事
最后正向最大匹配的结果是:
/今天/来/了/许多/新/同事/
2.反向最大匹配方式,最大长度为5
许多新同事
多新同事
新同事
同事 ====》得到一个词– 同事
来了许多新
了许多新
许多新
多新
新 ====》得到一个词– 新
天来了许多
来了许多
了许多
许多 ====》得到一个词– 许多
今天来了
天来了
来了
了 ====》得到一个词– 了
今天来
天来
来 ====》得到一个词– 来
今天 ====》得到一个词– 今天
最后反向最大匹配的结果是:
/今天/来/了/许多/新/同事/
正向最大匹配和反向最大匹配的结果并不一定相同
例子:’我一个人吃饭’
1.正向最大匹配方式,最大长度为5
我一个人吃
我一个人
我一个
我一
我 ====》得到一个词– 我
一个人吃饭
一个人吃
一个人
一个 ====》得到一个词– 一个
人吃饭
人吃
人 ====》得到一个词– 人
吃饭 ====》得到一个词– 吃饭
最后正向最大匹配的结果是:
/我/一个/人/吃饭/
2.反向最大匹配方式,最大长度为5
一个人吃饭
个人吃饭
人吃饭
吃饭 ====》得到一个词– 吃饭
我一个人
一个人
个人 ====》得到一个词– 个人
我一
一 ====》得到一个词– 一
我 ====》得到一个词– 我
最后反向最大匹配的结果是:
/我/一/个人/吃饭/
这次两种方式的结果就不一致了。更多SEO知识请网络搜牛到家SEO

Ⅸ 什么叫正向最大匹配算法,反向最大匹配算法

分词算法里的吧

比如 我是一个好人

由于 词语很多,所以分词中先设定一个可能的,最长的词组的词数
比如说,我认定最长的词组是3个字,那在比对中,会将句子3个字为始进行比对
正向匹配算法好象是从左到右 反向区域算法是从右到左,具体忘记了

以 “我是一个好人” 为例

正向的顺序为
我是一
我是
我 ===> 得到一个词
是一个
是一
是 ===>得到一个词
一个好
一个===> 得到一个词
好人===>得到一个词
结果 我、是、一个、好人

反向算法
个好人
好人==> 好人
是一个
一个==> 一个
我是
是==> 是
我==> 我
结果 我、是、一个、好人

Ⅹ 中文分词中正向最大匹配算法的分词速度是多少准确率大概为多少

主要看你的词表结构了,最大词长的初始值,查词典的次数和匹配的次数,然后得出时间复杂度,原始hash算法复杂度没记错的话应该是2.89,11年看过一个文献,提出一种改进的算法时间复杂度是2.291……

另外,分词算法并不是原封不动的,比如有些搜索引擎的词表结构就采用tire树结构,这样不用设置最大词长,不过内存空间方面就要有取舍,甚至还有采用减少查典次数增加匹配次数的搜索引擎……
所以单纯的给你一个189.3m/M纯内存分词速度,但是这算法换个台更高配置的服务器却变成了497.6ms/M,这没有任何意义……
记得哪个文献上有人说,分词本身不是目的,而是后续处理过程的必要阶段,所以,除非你是研究算法的,否则单纯追求这东西的速度和准确率没什么太大意义

热点内容
资本论第一卷中央编译局 发布:2024-05-21 09:06:21 浏览:66
我的世界多人游戏服务器有哪些 发布:2024-05-21 09:02:48 浏览:589
社保计算编程 发布:2024-05-21 08:52:49 浏览:529
船用空气压缩机 发布:2024-05-21 08:49:11 浏览:185
oppo怎么查密码是多少 发布:2024-05-21 08:48:28 浏览:139
我的世界服务器怎么禁用传送 发布:2024-05-21 08:35:51 浏览:106
python程序设计基础 发布:2024-05-21 08:34:06 浏览:302
csql类 发布:2024-05-21 08:19:38 浏览:413
高通芯片代码编译 发布:2024-05-21 08:06:46 浏览:480
预编译cpp 发布:2024-05-21 08:01:12 浏览:91