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中input和raw_input的一点区别
Oct 21 Python
python开发之函数定义实例分析
Nov 12 Python
Django接受前端数据的几种方法总结
Nov 04 Python
Python 中 list 的各项操作技巧
Apr 13 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
python实现flappy bird小游戏
Dec 24 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
Jul 03 Python
python 获取等间隔的数组实例
Jul 04 Python
Python3 pywin32模块安装的详细步骤
May 26 Python
python 解决函数返回return的问题
Dec 05 Python
python 监控服务器是否有人远程登录(详细思路+代码)
Dec 18 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入门速成(2)
2006/10/09 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
2015/11/02 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
Python实用日期时间处理方法汇总
2015/05/09 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
Python numpy 常用函数总结
2017/12/07 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
大专自我鉴定范文
2013/10/01 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
四风问题对照检查材料
2014/09/22 职场文书
个人买房协议书范本
2014/10/06 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
社区母亲节活动总结
2015/02/10 职场文书
地道战观后感
2015/06/04 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL