本文实例讲述了python实现中文分词FMM算法。分享给大家供大家参考。具体分析如下:
FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n-1个...然后继续下去。假如n个词在词典中出现,那么从n+1位置继续找下去,直到句子结束。
import re def PreProcess(sentence,edcode="utf-8"): sentence = sentence.decode(edcode) sentence=re.sub(u"[。,,!……!《》<>\"'::?\?、\|“”‘';]"," ",sentence) return sentence def FMM(sentence,diction,result = [],maxwordLength = 4,edcode="utf-8"): i = 0 sentence = PreProcess(sentence,edcode) length = len(sentence) while i < length: # find the ascii word tempi=i tok=sentence[i:i+1] while re.search("[0-9A-Za-z\-\+#@_\.]{1}",tok)<>None: i= i+1 tok=sentence[i:i+1] if i-tempi>0: result.append(sentence[tempi:i].lower().encode(edcode)) # find chinese word left = len(sentence[i:]) if left == 1: """go to 4 step over the FMM""" """should we add the last one? Yes, if not blank""" if sentence[i:] <> " ": result.append(sentence[i:].encode(edcode)) return result m = min(left,maxwordLength) for j in xrange(m,0,-1): leftword = sentence[i:j+i].encode(edcode) # print leftword.decode(edcode) if LookUp(leftword,diction): # find the left word in dictionary # it's the right one i = j+i result.append(leftword) break elif j == 1: """only one word, add into result, if not blank""" if leftword.decode(edcode) <> " ": result.append(leftword) i = i+1 else: continue return result def LookUp(word,dictionary): if dictionary.has_key(word): return True return False def ConvertGBKtoUTF(sentence): return sentence.decode('gbk').encode('utf-8') dictions = {} dictions["ab"] = 1 dictions["cd"] = 2 dictions["abc"] = 1 dictions["ss"] = 1 dictions[ConvertGBKtoUTF("好的")] = 1 dictions[ConvertGBKtoUTF("真的")] = 1 sentence = "asdfa好的是这样吗vasdiw呀真的daf dasfiw asid是吗?" s = FMM(ConvertGBKtoUTF(sentence),dictions) for i in s: print i.decode("utf-8") test = open("test.txt","r") for line in test: s = FMM(CovertGBKtoUTF(line),dictions) for i in s: print i.decode("utf-8")
运行结果如下:
asdfa
好的
是
这
样
吗
vasdiw
呀
真的
daf
dasfiw
asid
是
吗
?
希望本文所述对大家的Python程序设计有所帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
