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实现批量下载图片的方法
Jul 08 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
在cmd中查看python的安装路径方法
Jul 03 Python
Django REST framework内置路由用法
Jul 26 Python
python读写csv文件的方法
Aug 13 Python
pandas实现将日期转换成timestamp
Dec 07 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
如何基于Python + requests实现发送HTTP请求
Jan 13 Python
深入了解Python装饰器的高级用法
Aug 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内存相关的功能特性详解
2013/06/08 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
深入解析Python中的WSGI接口
2015/05/11 Python
python开发之thread线程基础实例入门
2015/11/11 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
解决Django连接db遇到的问题
2019/08/29 Python
基于打开pycharm有带图片md文件卡死问题的解决
2020/04/24 Python
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
别名指示符是什么
2012/10/08 面试题
中专毕业自我鉴定
2013/10/16 职场文书
个人简历自我评价
2014/01/06 职场文书
公务员平时考核实施方案
2014/03/11 职场文书
目标责任书范文
2014/04/14 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
大学生党性分析材料
2014/12/19 职场文书
售房协议书范本
2015/08/11 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
python 实现的截屏工具
2021/05/08 Python