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使用新浪微博API发送微博的例子
Apr 10 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
快速实现基于Python的微信聊天机器人示例代码
Mar 03 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
Jan 04 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
Python3用tkinter和PIL实现看图工具
Jun 21 Python
获取python的list中含有重复值的index方法
Jun 27 Python
Python中反射和描述器总结
Sep 23 Python
Python单元测试与测试用例简析
Nov 09 Python
python构造函数init实例方法解析
Jan 19 Python
python实现经典排序算法的示例代码
Feb 07 Python
基于python制作简易版学生信息管理系统
Apr 20 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
Google排名中的10个最著名的 JavaScript库
2010/04/27 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
jQuery实现可编辑的表格
2019/12/11 jQuery
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
Python入门篇之正则表达式
2014/10/20 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Tory Burch德国官网:美国时尚生活品牌
2018/01/03 全球购物
给老师的道歉信
2014/01/11 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
写求职信有什么意义
2014/02/17 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
python基础之while循环语句的使用
2021/04/20 Python
MySQL里面的子查询的基本使用
2021/08/02 MySQL
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python