用几十行代码实现python中英文分词
说到分词大家肯定一般认为是很高深的技术,但是今天作者用短短几十行代码就搞定了,感叹python很强大啊!作者也很强大。不过这个只是正向最大匹配,没有机器学习能力
注意:使用前先要下载搜狗词库
# -*- coding:utf-8 -*-#写了一个简单的支持中文的正向最大匹配的机械分词,其它不用解释了,就几十行代码
#附:搜狗词库下载地址:http://vdisk.weibo.com/s/7RlE5import string
__dict= {}def load_dict(dict_file='words.dic'):#加载词库,把词库加载成一个key为首字符,value为相关词的列表的字典words= [unicode(line,'utf-8').split()for linein open(dict_file)]for word_len, wordin words:first_char= word[0]__dict.setdefault(first_char, [])__dict[first_char].append(word)#按词的长度倒序排列for first_char, wordsin __dict.items():__dict[first_char]= sorted(words, key=lambda x:len(x), reverse=True)def __match_ascii(i,input):#返回连续的英文字母,数字,符号result= ''for iin range(i,len(input)):if not input[i]in string.ascii_letters:breakresult+= input[i]return resultdef __match_word(first_char, i ,input):#根据当前位置进行分词,ascii的直接读取连续字符,中文的读取词库if not __dict.has_key(first_char):if first_charin string.ascii_letters:return __match_ascii(i,input)return first_charwords= __dict[first_char]for wordin words:if input[i:i+len(word)]== word:return wordreturn first_chardef tokenize(input):#对input进行分词,input必须是uncode编码if not input:return []tokens= []i= 0while i <len(input):first_char= input[i]matched_word= __match_word(first_char, i,input)tokens.append(matched_word)i+= len(matched_word)return tokensif __name__== '__main__':def get_test_text():import urllib2url= "http://news.baidu.com/n?cmd=4&class=rolling&pn=1&from=tab&sub=0"text= urllib2.urlopen(url).read()return unicode(text,'gbk')def load_dict_test():load_dict()for first_char, wordsin __dict.items():print '%s:%s' % (first_char,' '.join(words))def tokenize_test(text):load_dict()tokens= tokenize(text)for tokenin tokens:print tokentokenize_test(unicode(u'美丽的花园里有各种各样的小动物'))tokenize_test(get_test_text())
用几十行代码实现python中英文分词相关推荐
- python 英语分词_用几十行代码实现python中英文分词
说到分词大家肯定一般认为是很高深的技术,但是今天作者用短短几十行代码就搞定了,感叹python很强大啊!作者也很强大.不过这个只是正向最大匹配,没有机器学习能力 注意:使用前先要下载搜狗词库# -*- ...
- 爬取三千条数据需要多久_只需几十行代码,Python就能轻松爬取 3000+ 上市公司的信息...
点击关注"Python学习与数据挖掘" 更多超级干货第一时间推送给你哦!!! 入门爬虫很容易,几行代码就可以,可以说是学习 Python 最简单的途径.刚开始动手写爬虫,你只需要关 ...
- python制作u盘病毒_十行代码--用Python写一个USB病毒!
大家好,我又回来了. 昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun ...
- python十行代码实现文件去重,去除重复文件的脚本
导入依赖 '''导入依赖'''from pathlib import Pathimport filecmp 函数说明 ''' filecmp.cmp(path1, path2, shallow=Tru ...
- Python只需要三十行代码,打造一款简单的人工语音对话
@Author:Runsen 1876年,亚历山大·格雷厄姆·贝尔(Alexander Graham Bell)发明了一种电报机,可以通过电线传输音频.托马斯·爱迪生(Thomas Edison)于1 ...
- 十行代码,我用Python做一个迷你版的美图秀秀!
美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让人变得更加的美丽.今天小编就带领大家来借助Python和Flask来实现一个美图秀秀的网页设计,大家只需要通过网页上传 ...
- Python二十行代码实现hexo的md文件格式解析
最近用django+Vue实现了一个博客应用,原来的hexo的博客用着也挺好,想继续留着用,于是就想将hexo生成的.md的博客内容文件解析后直接写到django的博客数据库里做同步显示. hexo生 ...
- 七十行代码教你使用 python ffmpeg 压缩视频,再也不用担心视频过大了
前期准备 最近要压缩视频,然后发现一些压缩视频的工具要是收费,要么有水印,完全不符合要求啊.正当我发愁的时候突然想到,去年的时候接触过 ffmpeg ,可以用python ffmpeg 来压缩视频啊, ...
- 无法找到CCTV直播MP4地址?七十行代码,简单使用FFplay直接观看还是下载CCTV栏目都轻松搞定(Python利用FLVCD硕鼠解析CCTV直播,FFplay播放并下载视频)
我们在每天使用新闻的时候大都会以CCTV发布的新闻为准,我们的每天新闻收视率最高的还是我们的总台,大家闲来无事可能也会看一下央视网提供视频直播吧,看看还可以,但是我们可以发现我们完全解析不了,大家看一 ...
最新文章
- python:进程操作
- permission denied for window type 2003
- SoapUI工具中的用户名和密码如何用net代码实现传入
- 大数据凉了?No,流式计算浪潮才刚刚开始!
- 九、深入Java字符串(上篇)
- 社群系统ThinkSNS+ V2.2-V2.3升级教程
- Android 数据存储之文件存储小记
- 工作流实战_12_flowable 流程实例 终止流程
- C++:遍历指定路径下的文件/图片
- 7-34 红色警报 (10 分)(结构体并查集)
- php-redis中文参考手册_zset
- java 代码重排_Java中指令重排
- matlab 正版下载,matlab软件正版
- uniapp开发微信小程序--实现电子签名功能
- linux安装svn服务端图形化界面,Linux svn 图形界面客户端 Rabbitvcs 安装
- Quartus II——基于VGA的图像显示
- Linux下移动anaconda虚拟环境的位置
- 从VIVO到华为,让人目瞪口呆的“未来SMT智能工厂”亮相
- php青蛙跳井代码,四川招警考试行测答题技巧:青蛙跳井问题全解析
- 如何理解java程序一次编写,处处运行?
热门文章
- 设计模式のNullObjectPattern(空对象模式)----行为模式
- 生成Geometry
- 核心动画05-CAAnimationGroup
- Chrome DevTools进阶教程
- 01Spring的helloworld程序
- wamp2 php配置,Wamp2+SVN+Eclipse配置_PHP教程
- windows时间同步软件_有没有好用的windows时间管理软件?这款便签软件帮你
- php5.4与php5.2,升级php 5.2.14 到5.4.11版本报错问题
- Java多线程-线程状态
- 第十二章 类和动态内存分配