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实现360的字符显示界面
Feb 21 Python
Python访问MySQL封装的常用类实例
Nov 11 Python
python友情链接检查方法
Jul 08 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
django 自定义过滤器的实现
Feb 26 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
pytz格式化北京时间多出6分钟问题的解决方法
Jun 21 Python
python用for循环求和的方法总结
Jul 08 Python
python递归下载文件夹下所有文件
Aug 31 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
Python加载数据的5种不同方式(收藏)
Nov 13 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环境――Appserv
2006/12/13 PHP
php 注释规范
2012/03/29 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
Python fileinput模块使用实例
2015/05/28 Python
python删除过期文件的方法
2015/05/29 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Django框架验证码用法实例分析
2019/05/10 Python
Python with语句和过程抽取思想
2019/12/23 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
音乐器材管理制度
2014/01/31 职场文书
服装采购员岗位职责
2014/03/15 职场文书
公司业务员岗位职责
2014/03/18 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
二胎满月酒致辞
2015/07/29 职场文书
2015年中秋晚会主持稿
2015/07/30 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
JavaScript 数组去重详解
2021/09/15 Javascript