自然语言处理--MM、RMM算法及Python 复习
注意文本的格式,建议UTF-8防止出现不可见字符导致无法匹配
class CSegment:def __init__(self, MaxLen, seg):self.MaxLen = MaxLen # 初始化MaxLenself.seg = seg # 初始化分隔符# 初始化词典(数据类型为dict)self.Dict=[]self.setDict()# 初始化分词结果self.result = []def setDict(self):# 打开词典文件file = open("D:\\chineseDic.txt",mode='r')# 添加到词典中for line in file:self.Dict[line.split(',')[0]]=1#Dict可以O(1)查找,下面list是O(m)#self.Dict.append(line.split(',')[0])def MM(self, sentence): # 正向最大匹配indexpos, Len = 0, self.MaxLenwhile indexpos < len(sentence): # 顺序扫描str_ = sentence[indexpos:indexpos + Len] # 从待切分语料中正向取长度为 MaxLen 的字串 str_if str_ in self.Dict or len(str_) == 1: # 匹配成功,list和dict都是这样写self.result.append(str_) # 将结果添加到result词典中indexpos, Len = indexpos + Len, self.MaxLen # indexpos向后移动, Len复位为MaxLenelse:Len -= 1# 根据seg自动返回切分好的句子return "{}".format(self.seg).join(self.result)def RMM(self, sentence): # 反向最大匹配indexpos, Len = len(sentence), self.MaxLenwhile indexpos > 0:# 从待切分语料中反向取长度为 MaxLen 的字串 str_str_ = sentence[indexpos - Len:indexpos]if str_ in self.Dict or len(str_) == 1:self.result.append(str_) # 匹配成功indexpos, Len = indexpos - Len, self.MaxLen # indexpos向前移动, Len复位else:Len -= 1# 根据seg自动返回切分好的句子return "{}".format(self.seg).join(self.result[::-1])def getResult(self, ans: str, seg: str):M = ans.split(seg) # 标准答案集N = self.result # 实际测试结果n = [i for i in M if i in N] # M ∩ Ntry:P = len(n) / len(N)R = len(n) / len(M)F = (2 * P * R) / (P + R)except ZeroDivisionError: # 一个词都没有分对P, R, F = 0, 0, 0# 百分号格式化(输出)return "结果: \nP:{:.3%}\nR:{:.3%}\nF:{:.3%}".format(P, R, F)def main():sentence = input("输入待分词句子: \n")MaxLen = int(input("MaxLen = "))seg = input("输入切分符号: ")ans = input("输入标准文本串: \n")print("MM:")MMCutter = CSegment(MaxLen=MaxLen, seg=seg)print(MMCutter.MM(sentence=sentence))print(MMCutter.getResult(ans=ans, seg=seg))print("RMM:")RMMCutter = CSegment(MaxLen=MaxLen, seg=seg)print(RMMCutter.RMM(sentence=sentence))print(RMMCutter.getResult(ans=ans, seg=seg))main()
自然语言处理--MM、RMM算法及Python 复习相关推荐
- 自然语言处理之中文分词逆向最大匹配算法(RMM算法)
经过了一阶段的学习上课,现在已经开始开始在自然语言处理的道路上安心研究,最近看了一本叫<python自然语言处理实战核心技术与算法>,大致的溜了一遍,感觉写的很基础了,个人认为主要写的好的 ...
- 自然语言处理实验—分词算法(含python代码及详细例子讲解)
自然语言处理实验-分词算法 最近在学自然语言处理,这是第一个上机实验自然语言处理的分词算法,也是自然语言处理比较入门的算法.和大家分享一下. 首先,自然语言处理,英文是(Nature Language ...
- 教程 | 理解和实现自然语言处理终极指南(附Python代码)
教程 | 理解和实现自然语言处理终极指南(附Python代码) 时间 2017-02-16 14:41:39 机器之心 原文 http://www.jiqizhixin.com/article ...
- 《数据结构与算法:Python语言描述》一1.3算法和算法分析
本节书摘来自华章出版社<数据结构与算法:Python语言描述>一书中的第1章,第1.3节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看 1.3算法 ...
- [强化学习代码笔记]Python复习
文章目录 Python复习 1. 介绍 2. 编写规范 3. 基本语法 一切都是对象 查看帮助 空/否定 保留字 as assert del try...except...finally global ...
- python思想读后感_数据结构与算法:Python语言描述读后感1000字
<数据结构与算法:Python语言描述>是一本由裘宗燕著作,机械工业出版社出版的平装图书,本书定价:CNY 45.00,页数:343,特精心从网络上整理的一些读者的读后感,希望对大家能有帮 ...
- 基于朴素贝叶斯的垃圾分类算法(Python实现)
有代码和数据集的 https://blog.csdn.net/weixin_33734785/article/details/91428991 附有git库代码的 https://www.cnblog ...
- 手把手教你在多种无监督聚类算法实现Python(附代码)
来源: 机器之心 本文约2704字,建议阅读6分钟. 本文简要介绍了多种无监督学习算法的 Python 实现,包括 K 均值聚类.层次聚类.t-SNE 聚类.DBSCAN 聚类. 无监督学习是一类用于 ...
- 八大排序算法的 Python 实现
八大排序算法的 Python 实现 本文用Python实现了插入排序.希尔排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序. 1.插入排序 描述 插入排序的基本操作就是将一个数据插入 ...
最新文章
- XML中CDATA及其字符实体的使用
- Swift基础语法 、 元组(Tuple)
- c语言 数组指针,C语言数组名及指向数组指针的小结
- C语言-实现矩阵的转置-随机函数产生随机数并赋予数组中-190222
- python迭代器使用_Python迭代器的用法
- LeetCode 775. 全局倒置与局部倒置(归并排序/二分查找/一次遍历)
- linux 源码搭建lnmp_详解CentOS 7.0源码包搭建LNMP 实际环境搭建
- byte二维数组表示
- JAVA延迟执行(thread方式和timer方式)
- Linux系统下文件与目录操作
- 遥感影像预处理流程及基本概念介绍(辐射校正、辐射定标、大气校正、正射校正等)
- 概率算法/拉斯维加斯 蒙特卡洛 舍伍德算法
- android怎么监听多点触摸_android 手势监听和多点触摸 笔记
- elementui打包后出现图标乱码的问题解决
- 老男孩28期学员卞勃森决心书
- sonar代码质量检测告警“static“ base class members should not be accessed via derived types
- 重新认识Windows计算器Calc(MatLab计算替代品)——你所不知道的细节
- 关于PostgreSQL执行计划中的Bitmap Heap Scan、Bitmap Index Scan、Recheck Cond
- 15数字华容道解法 图解_数字华容道攻略(数字华容道最快解法图)
- 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))
热门文章
- NDIS小端口驱动ndisEdge学习二——小端口驱动的初始化
- 给“四时有惑”播客招募几位志愿者
- 网络对抗技术_实验四_恶意代码技术
- IOTE 2019物联网嘉年华在深圆满落幕
- 【秋钓皮皮】 奔跑吧,皮皮!(有图了)
- MES系统对企业而言是必须的吗?
- 荣耀锐龙版笔记本怎么样?开箱评测了解一下
- 计算机考研跨审计好跨嘛,跨专业考研,快来看看你符不符合条件
- altium designer 10 的AD10Crakc.zip解压后没有patch.exe
- 微信 IOS系统 安卓时间格式