中文分词的python实现-基于FMM算法
正向最大匹配算法(FMM)
正向最大匹配算法(FMM)是一种基于词典的分词方法,思想很简单就是从左向右扫描寻找词的最大匹配,比如词典中同时含有“钓鱼”和“钓鱼岛”,那“钓鱼岛属于中国”就会被分词成“钓鱼岛/属于/中国”
过程
- 限定词的最大长度(例如5)
- 从最大的长度开始在词库中进行匹配,直到匹配成功
- 更新起点的位置继续上一步骤直到全部完成
实验
代码
# -*- coding: utf-8 -*-
# 中文正向最大匹配(FMM)分词import sys
reload(sys) #动态重新加载sys模块
sys.setdefaultencoding('utf8')word_dict = ['新华网', '东京', '记者', '吴谷丰', '日本共同社', '28', '报道']test_str = ' 新华网东京电记者吴谷丰据日本共同社28日报道'# 获取分词
def getSeg(text):if not text:return ''if len(text) == 1:return textif text in word_dict:return textelse:small = len(text) - 1text = text[0:small]return getSeg(text)def main():global test_strtest_str = test_str.decode('utf8').strip()max_len = 5 # 正向最大匹配分词测试,最大长度5result_str = '' # 保存要输出的分词结果result_len = 0print 'input :', test_strwhile test_str:tmp_str = test_str[0:max_len]seg_str = getSeg(tmp_str)seg_len = len(seg_str)result_len = result_len + seg_lenif seg_str.strip():result_str = result_str + seg_str + ' / 'test_str = test_str[seg_len:]print 'output :', result_strif __name__ == '__main__':main()
结果
input : 新华网东京电记者吴谷丰据日本共同社28日报道
output : 新华网 / 东京 / 电 / 记者 / 吴谷丰 / 据 / 日本共同社 / 28 / 日 / 报道 /
分词词典可以自定义或者从此网页下载,然后将word_dict代码更换成下面这行
word_dict = [line.strip() for line in open('dict.txt')]
中文分词的python实现-基于FMM算法相关推荐
- python实现蒙特卡洛算法_用Python实现基于蒙特卡洛算法小实验
用Python实现基于蒙特卡洛算法小实验 蒙特卡洛算法思想 蒙特卡洛(Monte Carlo)法是一类随机算法的统称,提出者是大名鼎鼎的数学家冯· 诺伊曼 ,他在20世纪40年代中期用驰名世界的赌城- ...
- python实现基于OCR算法的图像文字识别报错
最近想用python实现基于OCR算法的图像文字识别工作,在网上看到调库实现的代码基于Python的OCR实现,在操作后报错,如下: 需要执行: brew install tesseract 然后执行 ...
- 中文分词jieba python 学习
中文分词工具,结巴分词很好用,以下是验证小结. import jieba import jieba.analyse import jieba.posseg as pseg import time fi ...
- 自然语言处理之中文分词逆向最大匹配算法(RMM算法)
经过了一阶段的学习上课,现在已经开始开始在自然语言处理的道路上安心研究,最近看了一本叫<python自然语言处理实战核心技术与算法>,大致的溜了一遍,感觉写的很基础了,个人认为主要写的好的 ...
- python连接es_Elasticsearch --- 3. ik中文分词器, python操作es
一.IK中文分词器 1.下载安装 2.测试 #显示结果 {"tokens": [ {"token" : "上海","start_o ...
- 【Python】基于kNN算法的手写识别系统的实现与分类器测试
基于kNN算法的手写识别系统 1. 数据准备 使用windows画图工具,手写0-9共10个数字,每个数字写20遍,共200个BMP文件. 方法如下,使用画图工具,打开网格线,调整像素为32 ...
- java将输出的内容存入词典,中文分词JAVA实现(基于已知的词典txt)
这是我第一次写博客,里面有些内容可能描述不当,但是我能保证最后的程序可以在eclipse环境下运行 最近有了作业,要求写中文分词程序,主要是依据一个词典,txt文本,里面是词语,然后要求依据词典,对输 ...
- 【中文分词系列】 5. 基于语言模型的无监督分词
转载:https://spaces.ac.cn/archives/3956/ 迄今为止,前四篇文章已经介绍了分词的若干思路,其中有基于最大概率的查词典方法.基于HMM或LSTM的字标注方法等.这些都是 ...
- python实现基于SIFT算法的图像配准(仿射变换)
话不多说,直接上代码,可以用的话别忘了请喝可乐!(手动笑哭脸) [用法] 第45.46行的输入: img1 = cv2.imread('sift/3.jpg') img2 = cv2.imread(' ...
最新文章
- HDFS伪分布式环境搭建
- 【Kaggle-MNIST之路】CNN再添加一个层卷积(八)
- python怎么写csv文件_python怎么写csv文件
- AndroidStudio3.4+Unity2018.3,导出JAR包给UNITY使用
- Fibonacci Tree HDU - 4786——解题报告
- sql 以a开头的所有记录_SQL开发与数据库管理笔记
- mysql5.6定时备份_Mysql自动备份
- matlab memorySian,matlab内存溢出的解决方案
- 一个新的轮回,一个新的开始
- mysql安装和基本操作
- Javashop-B2B2C多店铺系统,Javashop B2C开源电商系统下载
- mac dmg包签名及公证
- 复旦大学机试题2019A斗牛
- iphone4s更换电池_如果更换了iPhone电池后仍然出现问题该怎么办
- Promise和事件循环
- 不一样的SpringBoot注解
- .Net 中使用Farpoint Web Spread 自定义CellType
- 找2021考研资料?这些超强资源网站必须知道!
- html怎么给图片加页码,在Word里,怎样让页码显示在插入的图片上?
- 足球比赛常用英语单词集锦