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


Posted in Python onNovember 14, 2018

正向最大匹配

# -*- 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正向最大匹配分词和逆向最大匹配分词的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现将DOC文档转换为PDF的方法
Jul 25 Python
Python装饰器入门学习教程(九步学习)
Jan 28 Python
Python环境下搭建属于自己的pip源的教程
May 05 Python
python直接访问私有属性的简单方法
Jul 25 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
ubuntu上安装python的实例方法
Sep 30 Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 Python
对python中的乘法dot和对应分量相乘multiply详解
Nov 14 #Python
在python中实现对list求和及求积
Nov 14 #Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 #Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 #Python
python将一组数分成每3个一组的实例
Nov 14 #Python
Python中实现单例模式的n种方式和原理
Nov 14 #Python
解决Python print输出不换行没空格的问题
Nov 14 #Python
You might like
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
关于javascript中的parseInt使用技巧
2009/09/03 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
js实现五星评价功能
2017/03/08 Javascript
JS switch判断 三目运算 while 及 属性操作代码
2017/09/03 Javascript
使用Electron构建React+Webpack桌面应用的方法
2017/12/15 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
python中函数默认值使用注意点详解
2016/06/01 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
Python探索之ModelForm代码详解
2017/10/26 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
安阳殷墟导游词
2015/02/10 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
MySQL的全局锁和表级锁的具体使用
2021/08/23 MySQL