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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 Python
深入理解Python3中的http.client模块
Mar 29 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
django如何连接已存在数据的数据库
Aug 14 Python
基于python指定包的安装路径方法
Oct 27 Python
Pycharm设置去除显示的波浪线方法
Oct 28 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
python求最大值最小值方法总结
Jun 25 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
Python编译成.so文件进行加密后调用的实现
Dec 23 Python
基于python实现判断字符串是否数字算法
Jul 10 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
PHP中一个控制字符串输出的函数
2006/10/09 PHP
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
让网页根据不同IE版本显示不同的内容
2009/02/08 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python复制文件操作实例详解
2015/11/10 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
执行Python程序时模块报错问题
2020/03/26 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
远程调用的原理
2014/07/05 面试题
护士思想汇报
2014/01/12 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
个人工作表现评语
2014/04/30 职场文书
副处级干部考察材料
2014/05/17 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
民政工作个人总结
2015/02/28 职场文书
小学教师教育随笔
2015/08/14 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书