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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
Python使用CMD模块更优雅的运行脚本
May 11 Python
Python中atexit模块的基本使用示例
Jul 08 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
Feb 22 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
python flask开发的简单基金查询工具
Jun 02 Python
分享Python异步爬取知乎热榜
Apr 12 Python
Python实现信息管理系统
Jun 05 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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
pw的一个放后门的方法分析
2007/10/08 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
PHP连接access数据库
2015/03/27 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
PHP实现类似题库抽题效果
2018/08/16 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
2015/08/24 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
javascript按顺序加载运行js方法
2017/12/01 Javascript
Vue中对比scoped css和css module的区别
2018/05/17 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
解读Python中degrees()方法的使用
2015/05/18 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
django-filter和普通查询的例子
2019/08/12 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
2020/03/06 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
印度排名第一的蛋糕、鲜花和礼品送货:Winni
2019/08/02 全球购物
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
中专生职业生涯规划书范文
2014/01/10 职场文书