文章目录

  • 1. 机械分词算法
    • 1.1. 正向最大匹配算法
    • 1.2. 逆向最大匹配算法

参考链接:
https://blog.csdn.net/lcwdzl/article/details/78493637
https://blog.csdn.net/liu_zhlai/article/details/52125174?spm=1001.2014.3001.5501
代码源码地址:
https://github.com/lankuohsing/Study_NLP

1. 机械分词算法

1.1. 正向最大匹配算法

custom_dict={"南京","南京市","市长","长江","大桥","江大桥",}
input_sentence="南京市长江大桥"
max_word_len=0
for word in custom_dict:if len(word)>max_word_len:max_word_len=len(word)if len(input_sentence)<max_word_len:max_word_len=len(input_sentence)start=0
seg_results=[]
while start<len(input_sentence):temp_len=max_word_lenif len(input_sentence)-start<max_word_len:temp_len=len(input_sentence)-startwhile temp_len>0:sub_sentence=input_sentence[start:start+temp_len]if sub_sentence in custom_dict:seg_results.append(sub_sentence)start+=temp_lenbreakelse:temp_len-=1# 没有子串匹配,则单独成词if temp_len==0:seg_results.append(input_sentence[start:start+1])start+=1
print(seg_results)

1.2. 逆向最大匹配算法

custom_dict={"南京","南京市","市长","长江","大桥","江大桥"}
input_sentence="南京市长江大桥"
max_word_len=0
for word in custom_dict:if len(word)>max_word_len:max_word_len=len(word)if len(input_sentence)<max_word_len:max_word_len=len(input_sentence)end=len(input_sentence)
seg_results=[]
while end>0:temp_len=max_word_lenif end<max_word_len:temp_len=endwhile temp_len>0:sub_sentence=input_sentence[end-temp_len:end]if sub_sentence in custom_dict:seg_results.append(sub_sentence)end-=temp_lenbreakelse:temp_len-=1# 没有子串匹配,则单独成词if temp_len==0:sub_sentence=input_sentence[end-1:end]seg_results.append(sub_sentence)end-=1
print(seg_results)

中文分词算法及python代码实现(持续更新中)相关推荐

  1. 入门科普:一文看懂NLP和中文分词算法(附代码举例)

    导读:在人类社会中,语言扮演着重要的角色,语言是人类区别于其他动物的根本标志,没有语言,人类的思维无从谈起,沟通交流更是无源之水. 所谓"自然"乃是寓意自然进化形成,是为了区分一些 ...

  2. 简易中文分词算法(python)_自然语言处理(NLP)中的的中文分词算法及 Python 实现...

    本 Chat 首先简单介绍了自然语言处理中中文分词的概念和应用场景.然后通过两个简单的小例子展示了算法的步骤.接着编写了 Python 代码,并在<红楼梦>上做了测试.最后,总结了我在写代 ...

  3. 商业数据分析模型及其核心Python代码_持续更新

    商业数据分析模型_持续更新 一.AARRR模型 二.PEST模型 理论 医美行业应用案例 三.RFM模型 理论 Python实战_核心指标计算 四.SWOT模型 五.5W1H模型 六.流程拆解法 七. ...

  4. 破解md5的python代码,持续更新

    这个是穷举法: # -*- coding: utf-8 -*- import string import hashlib file=open("hello.txt","a ...

  5. iOS/iPhone学习系列、代码教程----~~~持续更新中~~~

    http://www.devdiv.com/forum.php?mod=viewthread&tid=48165   part 1--入门: 1. xcode 版本下载 以及 iphone s ...

  6. [源码、文档、分享] iOS/iPhone学习系列、代码教程----~~~持续更新中~~~

    转自:http://www.devdiv.com/iOS_iPhone-iOS_iPhone%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E3%80%81%E4%BB%A3 ...

  7. AcWing算法基础课 第一讲小结(持续更新中)

    目录 前言 一.快速排序法及其扩展 快速排序法 介绍 思路 + 步骤 模拟代入 模板 练习 扩展(求第k个数) 思路 代码 二.归并排序法 归并排序 思路 思路 + 步骤 模拟代入 模板 练习 应用( ...

  8. Linux部署Python项目(持续更新中)

    项目部署 ​ 项目部署对恩操作通常是由运维人员来进行统一管理装配的,但是对于一个开发人员来讲,基础的项目部署还是要会的. ​ 这里我主要讲解python的项目是如何部署的,至于项目哪里来的,这就要看观 ...

  9. 【机器学习】算法面试知识点整理(持续更新中~)

    1.监督学习(SupervisedLearning):有类别标签的学习,基于训练样本的输入.输出训练得到最优模型,再使用该模型预测新输入的输出: 代表算法:决策树.朴素贝叶斯.逻辑回归.KNN.SVM ...

最新文章

  1. spring 注解上传文件 @RequestParam,FormData上传文件
  2. Jupyter notebook快捷操作
  3. 处理浏览器兼容你最喜欢用哪种方式
  4. 为什么我们总是「习惯性辩解」?
  5. chartjs和echartsjs库简介
  6. html css网页布局实例简单,Div+CSS网页布局项目实战一(含设计图、HTML和CSS源文件)...
  7. dpkg:处理软件包 xxx (--configure)时出错
  8. AMD Catalyst 14.4 Linux带来完整的 OpenGL 4.4 支持
  9. python pip工具安装教程
  10. Linux转发性能评估与优化 转发瓶颈分析与解决方案
  11. uni-app:自定义vue模板
  12. 慕课秒杀项目seckill
  13. The application bundle does not contain a valid identifier
  14. PPT模板制作图片折叠效果怎么做?
  15. simulink 脱离 matlab,Simulink软件不能脱离MATLAB环境而运行
  16. 伦敦经济学院开设加密货币相关课程
  17. Tita OKR:掌握大局的仪表盘
  18. 驳少壮不努力,老大搞IT
  19. 新版骆驼lPTV小肥米lptv管理系统+全开源源码/可对接EZtv电视直播管理系统
  20. 什么是api应用程序接口?

热门文章

  1. 代码本色0章——Perlin噪声生成起伏地形
  2. 在外包做了3年,离职后成功入职字节跳动....
  3. uniapp的uni_modules目录需要提交到Git吗?为什么有了node_modules,还需要再发明一个uni_modules的轮子?node_modules和uni_modules的区别
  4. Android:调用其他程序中的activity和Permission Denial: starting Intent 错误解决办法
  5. linux---软件包管理rpm
  6. 免费一键生成原创文章-原创文章批量生成
  7. 递归算法实例:十进制转换N进制(vb.net代码)
  8. MODBUS-TCP协议简介与编程流程图
  9. 在苹果Mac上如何设置固件密码?
  10. 不需要苹果官方支持,可重置MAC系统固件密码