python正向最大匹配分词和逆向最大匹配分词的实例

正向最大匹配

# -*- coding:utf-8 -*-

CODEC='utf-8'

def u(s, encoding):
  'converted other encoding to unicode encoding'
  if isinstance(s, unicode):
    return s
  else:
    return unicode(s, encoding)

def fwd_mm_seg(wordDict, maxLen, str):
  'forward max match segment'
  wordList = []
  segStr = str
  segStrLen = len(segStr)
  for word in wordDict:
    print 'word: ', word
  print "\n"
  while segStrLen > 0:
    if segStrLen > maxLen:
      wordLen = maxLen
    else:
      wordLen = segStrLen
    subStr = segStr[0:wordLen]
    print "subStr: ", subStr
    while wordLen > 1:
      if subStr in wordDict:
        print "subStr1: %r" % subStr
        break
      else:
        print "subStr2: %r" % subStr
        wordLen = wordLen - 1
        subStr = subStr[0:wordLen]
#      print "subStr3: ", subStr
    wordList.append(subStr)
    segStr = segStr[wordLen:]
    segStrLen = segStrLen - wordLen
  for wordstr in wordList:
    print "wordstr: ", wordstr
  return wordList

def main():
  fp_dict = open('words.dic')
  wordDict = {}
  for eachWord in fp_dict:
    wordDict[u(eachWord.strip(), 'utf-8')] = 1
  segStr = u'你好世界hello world'
  print segStr
  wordList = fwd_mm_seg(wordDict, 10, segStr)
  print "==".join(wordList)

if __name__ == '__main__':
  main()

逆向最大匹配

# -*- coding:utf-8 -*-

def u(s, encoding):
  'converted other encoding to unicode encoding'
  if isinstance(s, unicode):
    return s
  else:
    return unicode(s, encoding)

CODEC='utf-8'

def bwd_mm_seg(wordDict, maxLen, str):
  'forward max match segment'
  wordList = []
  segStr = str
  segStrLen = len(segStr)
  for word in wordDict:
    print 'word: ', word
  print "\n"
  while segStrLen > 0:
    if segStrLen > maxLen:
      wordLen = maxLen
    else:
      wordLen = segStrLen
    subStr = segStr[-wordLen:None]
    print "subStr: ", subStr
    while wordLen > 1:
      if subStr in wordDict:
        print "subStr1: %r" % subStr
        break
      else:
        print "subStr2: %r" % subStr
        wordLen = wordLen - 1
        subStr = subStr[-wordLen:None]
#      print "subStr3: ", subStr
    wordList.append(subStr)
    segStr = segStr[0: -wordLen]
    segStrLen = segStrLen - wordLen
  wordList.reverse()
  for wordstr in wordList:
    print "wordstr: ", wordstr
  return wordList

def main():
  fp_dict = open('words.dic')
  wordDict = {}
  for eachWord in fp_dict:
    wordDict[u(eachWord.strip(), 'utf-8')] = 1
  segStr = ur'你好世界hello world'
  print segStr
  wordList = bwd_mm_seg(wordDict, 10, segStr)
  print "==".join(wordList)

if __name__ == '__main__':
  main()

以上这篇python正向最大匹配分词和逆向最大匹配分词的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python中文分词教程之前向最大正向匹配算法详解

    前言 大家都知道,英文的分词由于单词间是以空格进行分隔的,所以分词要相对的容易些,而中文就不同了,中文中一个句子的分隔就是以字为单位的了,而所谓的正向最大匹配和逆向最大匹配便是一种分词匹配的方法,这里以词典匹配说明. 最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候寻找当前开始的这个长度的词来和字典中的词匹配,如果没有找到,就缩短长度继续寻找,直

  • python实现中文分词FMM算法实例

    本文实例讲述了python实现中文分词FMM算法.分享给大家供大家参考.具体分析如下: FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n-1个...然后继续下去.假如n个词在词典中出现,那么从n+1位置继续找下去,直到句子结束. import re def PreProcess(sentence,edcode="utf-8"): sentence = sentence.decode(edcode) sentence=re.s

  • python实现机械分词之逆向最大匹配算法代码示例

    逆向最大匹配方法 有正即有负,正向最大匹配算法大家可以参阅http://www.jb51.net/article/127404.htm 逆向最大匹配分词是中文分词基本算法之一,因为是机械切分,所以它也有分词速度快的优点,且逆向最大匹配分词比起正向最大匹配分词更符合人们的语言习惯.逆向最大匹配分词需要在已有词典的基础上,从被处理文档的末端开始匹配扫描,每次取最末端的i个字符(分词所确定的阈值i)作为匹配字段,若匹配失败,则去掉匹配字段最前面的一个字,继续匹配.而且选择的阈值越大,分词越慢,但准确性

  • python中文分词,使用结巴分词对python进行分词(实例讲解)

    在采集美女站时,需要对关键词进行分词,最终采用的是python的结巴分词方法. 中文分词是中文文本处理的一个基础性工作,结巴分词利用进行中文分词. 其基本实现原理有三点: 1.基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG) 2.采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 3.对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法 安装(Linux环境) 下载工具包,解压后进入目录下,运行:python set

  • Python自然语言处理之词干,词形与最大匹配算法代码详解

    本文主要对词干提取及词形还原以及最大匹配算法进行了介绍和代码示例,Python实现,下面我们一起看看具体内容. 自然语言处理中一个很重要的操作就是所谓的stemming和lemmatization,二者非常类似.它们是词形规范化的两类重要方式,都能够达到有效归并词形的目的,二者既有联系也有区别. 1.词干提取(stemming) 定义:Stemmingistheprocessforreducinginflected(orsometimesderived)wordstotheirstem,base

  • python正向最大匹配分词和逆向最大匹配分词的实例

    正向最大匹配 # -*- coding:utf-8 -*- CODEC='utf-8' def u(s, encoding): 'converted other encoding to unicode encoding' if isinstance(s, unicode): return s else: return unicode(s, encoding) def fwd_mm_seg(wordDict, maxLen, str): 'forward max match segment' wo

  • Python中文分词工具之结巴分词用法实例总结【经典案例】

    本文实例讲述了Python中文分词工具之结巴分词用法.分享给大家供大家参考,具体如下: 结巴分词工具的安装及基本用法,前面的文章<Python结巴中文分词工具使用过程中遇到的问题及解决方法>中已经有所描述.这里要说的内容与实际应用更贴近--从文本中读取中文信息,利用结巴分词工具进行分词及词性标注. 示例代码如下: #coding=utf-8 import jieba import jieba.posseg as pseg import time t1=time.time() f=open(&q

  • Python机器学习NLP自然语言处理基本操作精确分词

    目录 概述 分词器 jieba 安装 精确分词 全模式 搜索引擎模式 获取词性 概述 从今天开始我们将开启一段自然语言处理 (NLP) 的旅程. 自然语言处理可以让来处理, 理解, 以及运用人类的语言, 实现机器语言和人类语言之间的沟通桥梁. 分词器 jieba jieba 算法基于前缀词典实现高效的词图扫描, 生成句子中汉字所有可能成词的情况所构成的有向无环图. 通过动态规划查找最大概率路径, 找出基于词频的最大切分组合. 对于未登录词采用了基于汉字成词能力的 HMM 模型, 使用 Viter

  • Python第三方库jieba库与中文分词全面详解

    目录 一.什么是jieba库 二.jieba分词原理 三.jieba库支持的三种分词模式 1.精确模式 2.全模式 3.搜索引擎模式 四.jieba库常用函数 五.jieba实操 练习一(jieba.lcut)精确模式 练习二(jieba.lcut(s,cut_all=True) )全模式 练习三(jieba.lcut_for_search)搜索引擎模式 练习四(jieba.add_word(w))增加新词 总结 一.什么是jieba库 jieba是优秀的中文分词第三方库,由于中文文本之间每个汉

  • 开源php中文分词系统SCWS安装和使用实例

    一.SCWS简介 SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统).这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词. 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点.SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK.UTF-8 等.此外还提供了 PHP 扩展模

  • python爬虫实战steam加密逆向RSA登录解析

    目录 采集目标 工具准备 项目思路解析 采集目标 网址:steam 工具准备 开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:requests 项目思路解析 访问登录页面重登录页面获取登录接口, 先输入错误的账户密码去测试登录接口. 获取到登录的接口地址,请求方法是post请求,找到需要传递的参数,可以看到密码数据是加密的第一个数据是时间戳密码加密字段应该用的base64,rsatimestamp字段目前还不清楚是什么,其他的都是固定数据. 找到pass

  • python根据文章标题内容自动生成摘要的实例

    text.py title = '智能金融起锚:文因.数库.通联瞄准的kensho革命' text = '''2015年9月13日,39岁的鲍捷乘上从硅谷至北京的飞机,开启了他心中的金融梦想. 鲍捷,人工智能博士后,如今他是文因互联公司创始人兼CEO.和鲍捷一样,越来越多的硅谷以及华尔街的金融和科技人才已经踏上了归国创业征程. 在硅谷和华尔街,已涌现出Alphasense.Kensho等智能金融公司. 如今,这些公司已经成长为独角兽. 大数据.算法驱动的人工智能已经进入到金融领域.人工智能有望在

  • Python实现对百度云的文件上传(实例讲解)

    环境准备 python3.6 PyCharm 2017.1.3 Windows环境 框架搭建 selenium3.6 安装方法: pip install selenium 实现步骤: 一.步骤分析 1.选择"账号密码登录" 2.用户名.密码输入,登录 3.文件上传 注:本文主要介绍利用selenium包下的webdriver加载Firefox浏览器. 二.元素捕捉 利用火狐浏览器firebug插件复制控件的XPATH路径,注:Python3.6对应Firefox版本40.x,暂不支持最

  • python的pdb调试命令的命令整理及实例

    python的pdb调试命令的命令整理及实例 一.命令整理 pdb调试命令 完整命令 简写命令 描述 args a 打印当前函数的参数 break b 设置断点 clear cl 清除断点 condition 无 设置条件断点 continue c或者cont 继续运行,知道遇到断点或者脚本结束 disable 无 禁用断点 enable 无 启用断点 help h 查看pdb帮助 ignore 无 忽略断点 jump j 跳转到指定行数运行 list l 列出脚本清单 next n 执行下条语

随机推荐