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多线程抓取天涯帖子内容示例
Apr 03 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
Apr 01 Python
Numpy 理解ndarray对象的示例代码
Apr 03 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 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/01/11 PHP
php中常用的预定义变量小结
2012/05/09 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
PHP Cookie学习笔记
2016/08/23 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
JS+Ajax实现百度智能搜索框
2017/08/04 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
Python中优化NumPy包使用性能的教程
2015/04/23 Python
简单理解Python中的装饰器
2015/07/31 Python
Python 的内置字符串方法小结
2016/03/15 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
python如何安装下载后的模块
2020/07/03 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
预备党员思想汇报范文
2014/01/11 职场文书
社区文化建设方案
2014/05/02 职场文书
党支部综合考察意见
2015/06/01 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书