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单线程实现多个定时器示例
Mar 30 Python
python协程用法实例分析
Jun 04 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 Python
一行python实现树形结构的方法
Aug 09 Python
django 实现celery动态设置周期任务执行时间
Nov 19 Python
python 实现任务管理清单案例
Apr 25 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
Aug 03 Python
详解pycharm配置python解释器的问题
Oct 15 Python
Python实现简单的俄罗斯方块游戏
Sep 25 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使用缓存即时输出内容(output buffering)的方法
2015/08/03 PHP
PHP常用的三种设计模式汇总
2016/08/28 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
python实现聊天小程序
2018/03/13 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
python系列 文件操作的代码
2019/10/06 Python
python实现贪吃蛇游戏源码
2020/03/21 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
详解在Python中使用Torchmoji将文本转换为表情符号
2020/07/27 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
商务英语专业自荐信
2013/10/14 职场文书
工作睡觉检讨书
2014/02/25 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL