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之Character string(实例讲解)
Sep 25 Python
解决Django的request.POST获取不到内容的问题
May 28 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
Python获取时间戳代码实例
Sep 24 Python
Python调用shell命令常用方法(4种)
May 11 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
如何用python免费看美剧
Aug 11 Python
怎么解决pycharm license Acti的方法
Oct 28 Python
在终端启动Python时报错的解决方案
Nov 20 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
python 模拟在天空中放风筝的示例代码
Apr 21 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 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
解析php扩展php_curl.dll不加载的解决方法
2013/06/26 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
去掉gridPanel表头全选框的小例子
2013/07/18 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
JS hashMap实例详解
2016/05/26 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
vue项目中,main.js,App.vue,index.html的调用方法
2018/09/20 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python处理中文编码和判断编码示例
2014/02/26 Python
Python常用库推荐
2016/12/04 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
python字典key不能是可以是啥类型
2020/08/04 Python
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
工业自动化毕业生自荐信范文
2014/01/04 职场文书
我爱读书演讲稿
2014/05/07 职场文书
蓬莱阁导游词
2015/02/04 职场文书
企业愿景口号
2015/12/25 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript