通过最大正向匹配算法对句子进行切分

# Defined in Section 2.2.2
def load_dict():f = open("/Users/Documents/NLP_data/plm-nlp-code-main/chp2/lexicon.txt")lexicon = set()  # 定义一个空集合,存储可变的不重复元素序列max_len = 0for line in f:word = line.strip()  # 去除字符串左右的空格lexicon.add(word)  # 如果某元素不在集合中,则向其内添加该元素if len(word) > max_len:  # 元素的max_len重置max_len = len(word)f.close()  # 关闭文件return lexicon,max_len# 通过最大正向匹配算法对句子进行切分
def fmm_word_seg(sentence, lexicon, max_len):"""sentence:待分词的句子lexicon:词典(所有单词集合)max_len:词典中最长单词长度"""begin = 0end = min(begin + max_len, len(sentence))words = []while begin < end:word = sentence[begin:end]  # 截取输入句子中最长单词长度窗口print("word",word,"begin:", begin,"end:",end)if word in lexicon or end - begin == 1:  # end - begin == 1表明到达最长单词的尾部words.append(word)begin = endend = min(begin + max_len, len(sentence))  # 切分出一个词之后,整体向前推进一个word的长度print("="*5,"word",word,"begin:", begin,"end:",end)else:end -= 1return wordslexicon, max_len =  load_dict()
words = fmm_word_seg(input("请输入句子:"), lexicon, max_len)
for word in words:print(word, )>>>
请输入句子:我爱深度学习
word 我爱深度 begin: 0 end: 4
word 我爱深 begin: 0 end: 3
word 我爱 begin: 0 end: 2
word 我 begin: 0 end: 1
===== word 我 begin: 1 end: 5
word 爱深度学 begin: 1 end: 5
word 爱深度 begin: 1 end: 4
word 爱深 begin: 1 end: 3
word 爱 begin: 1 end: 2
===== word 爱 begin: 2 end: 6
word 深度学习 begin: 2 end: 6
===== word 深度学习 begin: 6 end: 6
我
爱
深度学习lexicon = set()
lexicon
>>>
{'','存续期','吹响','干线网','夜半','到位关','倭寇','嬉闹','储备粮','国术会','欧盟','璀瑰','各口村','印度教',...}
lexicon.add("机器学习")# update(x),将x添加到集合中,且参数可以是列表、元组、字典等
s = set(('a', 'cc', 'f'))
# 添加字典只能添加不可变的--键
dict_1 = {'name': 'bb', 'age': 'cc', 'f': 11}
s.update(dict_1)
print("添加字典"+str(s))
>>>
添加字典{'name', 'cc', 'a', 'age', 'f'}

chp2-2-2_fmm_word_seg通过最大正向匹配算法对句子进行切分相关推荐

  1. python分词代码_中文分词--最大正向匹配算法python实现

    最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描).例如:词典中 ...

  2. 正向最大匹配算法 python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  3. python最大分词_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  4. 中文分词算法python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  5. 深圳东西冲穿越游玩攻略

    0 导语 值此2020上半年的假期余额还剩24小时之际, 特分享我2016年的时候写的一篇攻略, 当时我管它叫"檄文", 用来通知大家伙儿, 以招募驴友, 是今天删硬盘的时候发现的 ...

  6. 双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法

    双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法 一.理论描述 中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词 ...

  7. 正向/逆向最大匹配法分词实现

    最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描).例如:词典中 ...

  8. 第7-4课:最大匹配算法-最简单的中文分词算法

    在自然语言识别领域中,中文的分词技术绝对是一个很有意思的话题,英文本身是以单词为基础,单词之间以空格隔开,不存在分词的问题,但是汉语有这个问题.关于分词有很多可玩的地方,比如之前很火的一个对对联的小程 ...

  9. 一本读懂BERT(实践篇)重点

    目录 一.什么是BERT? 二.BERT安装 三.预训练模型 四.运行Fine-Tuning 五.数据读取源码阅读 (一) DataProcessor (二) MrpcProcessor 六.分词源码 ...

最新文章

  1. pythonsqlite3教程_使用 Python 在线操作 sqlite3
  2. Ant编译、FatJar编译方式
  3. java设置图书管理系统界面设计_java 图书管理系统 界面漂亮 绝对好用
  4. 01基于配置文件方式的SpringMVC,三种HandlerMapping,三种控制器
  5. WinCE 字体平滑 ClearType
  6. ajax 直接向后台发送请求,通过ajax异步向后端发送请求,响应请求向前端传送json格式数据的实现思路...
  7. 深度的卷积神经网络CNN(MNIST数据集示例)
  8. Intergration Service(2005)备忘(之)数据传输处理
  9. HTML5期末大作业:关于旅游主题网站设计——开心网旅游网页源码(15页) HTML+CSS+JavaScript
  10. MDui库又一次更新了,重构了绘制的相关逻辑
  11. cuda安装及百度云链接
  12. idea中自动生成Java类图和时序图
  13. Linux常用软件包安装工具及配置方法(apt-get, pip, dpkg)
  14. 1373:鱼塘钓鱼(fishing)
  15. 3.3V的稳压管,结果电压变成了2.5V
  16. 计算机图形学【GAMES-101】3、着色计算(深度缓存、着色模型、着色频率)
  17. RabbitMQ 归纳总结
  18. 杭电OJ4544 湫湫系列故事——消灭兔子(优先队列过)
  19. Android All flavors must now belong to a named flavor dimension
  20. 南京公用,海得控制,上柴股份,成交量异动检测

热门文章

  1. 数通基础-二层交换原理
  2. Android关系型数据库应用——电话(短信)黑名单
  3. Selenium+ChromeDriver爬取链家网二手房价(包括经纬度)信息
  4. C# 创建MDI窗体
  5. 最小生成树(普里姆算法)
  6. 一夜之间收到上百条短信,账户空了... 这种诈骗方式的背后技术原理
  7. Pandas项目实战1——好莱坞百万级电影评论数据分析
  8. 【微信小程序】日历弹窗选择器
  9. php setcookie应该在哪里使用,php setcookie 用法
  10. 10项目管理--项目沟通管理