1. 语料库准备

(需要的私聊博主)

2.处理语料文档

2.1处理多余字符

def string_process(x):    #处理字符串a=re.sub(r'\d{8}-\d{2}-\d{3}-\d{3}/m|[/a-z!。”“,、——\[\]():《》……A-Z?]', "", x)
#前面时间的正则表达式,后面部分删掉字母和其他符号b=a.replace("  "," ")return b.rstrip()

2.2 处理字典数据集

def file_process():s=""with open('199801-train.txt','r',encoding='UTF-8') as f:for line1 in f:a=string_process(line1)a=string_process(a)s+=a+"\n"f.close()with open("process_1.txt",'w',encoding='UTF-8') as w:w.write(s)w.close()

2.3处理测试数据集

def test_file_process(): s = ""with open('199801-test.txt', 'r', encoding='UTF-8') as f:for line1 in f:a = string_process(line1)a = string_process(a)s += a + "\n"f.close()with open("test_process_1.txt", 'w', encoding='UTF-8') as w:w.write(s)w.close()

2.4处理测试集空格

def delete_space():f = open('test_process_1.txt','r', encoding='utf-8')f2 = open('test_endfile.txt', 'w', encoding='utf-8')s = f.read()r = ''.join(s.split())f2.write(r)

3.FMM

training_words = 'result.txt'def get_dic(training_words):with open(training_words,'r',encoding='utf-8') as f:try:file_content = f.read().split()finally:f.close()chars = list(set(file_content))return charsdic = get_dic(training_words)def readfile():max_length=0for i in dic:max_length=max(max_length,len(i))##获得最大长度zz=max_lengthf=open("test_endfile.txt",'r',encoding='utf-8')ff=open("生成文档正向最大匹配(真).txt",'w',encoding='utf-8')lines=f.readlines()f.close()for line in lines:#分别对每一行进行正向最大匹配处理max_length=zzmy_list=[]len_hang=len(line)while len_hang>0:tryW=line[0:max_length]##切割字符串while tryW not in dic:if len(tryW)==1:#长度为1的时候就直接退出break;tryW=tryW[0:len(tryW)-1]my_list.append(tryW)line=line[len(tryW):]len_hang=len(line)for i in my_list:ff.write(i+"/")ff.close()print("complete !!!")
readfile()

4.BMM


training_words = 'result.txt'def get_dic(training_words):with open(training_words,'r',encoding='utf-8') as f:try:file_content = f.read().split()finally:f.close()chars = list(set(file_content))return charsdic = get_dic(training_words)def readfile():max_length=0for i in dic:max_length=max(max_length,len(i))##获得最大长度zz=max_lengthf=open("测试.txt",'r',encoding='utf-8')ff=open("生成文档逆向最大匹配.txt",'w',encoding='utf-8')lines=f.readlines()f.close()for line in lines:#分别对每一行进行逆向最大匹配处理max_length=zzmy_list = []len_hang=len(line)while len_hang>0:tryW=line[max(0,len_hang-max_length):len_hang]#防止溢出while tryW not in dic:if len(tryW)==1:break;tryW=tryW[1:len(tryW)]#这里注意,一直是从1开始的my_list.append(tryW)line=line[0:len_hang-len(tryW)]len_hang=len(line)while len(my_list):tt=my_list.pop()#这里类似栈的操作ff.write(tt+"/")ff.close()
readfile()##012345

【中文分词】 FMM BMM (python)相关推荐

  1. 中文分词算法python代码_python实现中文分词FMM算法实例

    本文实例讲述了python实现中文分词FMM算法.分享给大家供大家参考.具体分析如下: FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n- ...

  2. 中文分词算法python_python实现中文分词FMM算法实例

    本文实例讲述了python实现中文分词FMM算法.分享给大家供大家参考.具体分析如下: FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n- ...

  3. 基于条件随机场模型的中文分词改进(Python中文分词)

    目录 改进分词速度 一.更改存储特征值的数据结构 二.缩短对语料库的遍历时间(对语料库的预处理) 三.先将所有的特征值保存到数据库中 改进分词的准确度 实验项目和结果截图 实验项目 保存特征值时采用多 ...

  4. 词频统计,中文分词FMM,BMM博客

    分词 | 双向匹配中文分词算法python实现 https://blog.csdn.net/Elenore1997/article/details/83274720 正向最大匹配算法实现之python ...

  5. 自然语言处理之中文分词(基于Python)

    人生苦短,我用python 除了给你生孩子,python都能给你做到. 这句话所言不假,python拥有丰富的库,能完成各种各样的的功能. 只有你想不到的,没有python做不到的.下面我们来看看py ...

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

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

  7. 中文分词算法python_python 中文分词——FMM 算法 | 学步园

    FMM import re def PreProcess(sentence,edcode="utf-8"): sentence = sentence.decode(edcode) ...

  8. 中文分词算法及python代码实现(持续更新中)

    文章目录 1. 机械分词算法 1.1. 正向最大匹配算法 1.2. 逆向最大匹配算法 参考链接: https://blog.csdn.net/lcwdzl/article/details/784936 ...

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

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

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

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

最新文章

  1. Fade 数字切换动效
  2. Linux_SquidProxyServer代理服务器
  3. 开发利器_Pigar.快速为Python项目生成依赖文件requirements.txt?
  4. export default 和export 的区别
  5. 使用Varnish加速Web
  6. Mac下Nginx、PHP、MySQL 和 PHP-fpm安装配置
  7. 3种基于深度学习的有监督关系抽取方法
  8. postgresql 删除触发器_postgresql 触发器
  9. 【SSM 1】SpringMVC、Spring和Struts的区别
  10. postgres报错:FATAL: Peer authentication failed for user “zabbix“ Previous connection kept
  11. android动画的实现过程
  12. python_mysql
  13. 直播APP源码开发,直播APP源码搭建,如何优化程序?
  14. android 换机 备份,Android QQ同步助手3.7:资料备份让换机刷机无忧
  15. 《赖氏经典英语语法》第六集
  16. ttl传输种过期_Ping提示TTL传输中过期导致Web不能访问
  17. ES6模块化的引入和暴漏本质
  18. 手机键盘(简单模拟)
  19. 光标大小怎么调_cad十字光标和坐标系,你必知的几个小技巧!
  20. c#自定义事件以及与其他事件绑定

热门文章

  1. Cookie存储购物车
  2. 【AD系列教程】在PCB中加入任意图形
  3. 工业互联网+5G 发展策略研究
  4. uni-app 压缩图片(base64上传)包含图片验证
  5. 打破985校史!她以独作身份投中顶刊,曾因换方向重读博士7年,科研之路也“坎坎坷坷”……...
  6. Wi-Fi PNO扫描流程(Android P)
  7. swagger工具编写接口文档
  8. Web在线打印设计器即将推出,像Excel一样在线设计模板
  9. Ubuntu20.4 搭建OnlyOffice文档服务器
  10. PPT文字过少时,如何排版比较好