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计算auc指标实例
Jul 13 Python
python调用百度语音识别实现大音频文件语音识别功能
Aug 30 Python
利用python实现汉字转拼音的2种方法
Aug 12 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
Oct 12 Python
python flask搭建web应用教程
Nov 19 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
Python astype(np.float)函数使用方法解析
Jun 08 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
什么是Python装饰器?如何定义和使用?
Apr 11 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 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中静态变量的使用方法实例分析
2016/12/01 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
JavaScript中的数组特性介绍
2014/12/30 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
Python常见数据结构详解
2014/07/24 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
使用python实现对元素的长截图功能
2019/11/14 Python
Python 在函数上添加包装器
2020/07/28 Python
python读取xml文件方法解析
2020/08/04 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
yy司仪主持词
2014/03/22 职场文书
支部书记四风对照材料
2014/08/28 职场文书
求职自我评价范文100字
2014/09/23 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
运动会广播稿50字
2015/08/19 职场文书
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技