说到分词大家肯定一般认为是很高深的技术,但是今天作者用短短几十行代码就搞定了,感叹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中英文分词相关推荐

  1. python 英语分词_用几十行代码实现python中英文分词

    说到分词大家肯定一般认为是很高深的技术,但是今天作者用短短几十行代码就搞定了,感叹python很强大啊!作者也很强大.不过这个只是正向最大匹配,没有机器学习能力 注意:使用前先要下载搜狗词库# -*- ...

  2. 爬取三千条数据需要多久_只需几十行代码,Python就能轻松爬取 3000+ 上市公司的信息...

    点击关注"Python学习与数据挖掘" 更多超级干货第一时间推送给你哦!!! 入门爬虫很容易,几行代码就可以,可以说是学习 Python 最简单的途径.刚开始动手写爬虫,你只需要关 ...

  3. python制作u盘病毒_十行代码--用Python写一个USB病毒!

    大家好,我又回来了. 昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序.查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb autorun ...

  4. python十行代码实现文件去重,去除重复文件的脚本

    导入依赖 '''导入依赖'''from pathlib import Pathimport filecmp 函数说明 ''' filecmp.cmp(path1, path2, shallow=Tru ...

  5. Python只需要三十行代码,打造一款简单的人工语音对话

    @Author:Runsen 1876年,亚历山大·格雷厄姆·贝尔(Alexander Graham Bell)发明了一种电报机,可以通过电线传输音频.托马斯·爱迪生(Thomas Edison)于1 ...

  6. 十行代码,我用Python做一个迷你版的美图秀秀!

    美图秀秀相信大家都不陌生,大家只要操作美图秀秀,就可以P掉图片中脸上的一些瑕疵,让人变得更加的美丽.今天小编就带领大家来借助Python和Flask来实现一个美图秀秀的网页设计,大家只需要通过网页上传 ...

  7. Python二十行代码实现hexo的md文件格式解析

    最近用django+Vue实现了一个博客应用,原来的hexo的博客用着也挺好,想继续留着用,于是就想将hexo生成的.md的博客内容文件解析后直接写到django的博客数据库里做同步显示. hexo生 ...

  8. 七十行代码教你使用 python ffmpeg 压缩视频,再也不用担心视频过大了

    前期准备 最近要压缩视频,然后发现一些压缩视频的工具要是收费,要么有水印,完全不符合要求啊.正当我发愁的时候突然想到,去年的时候接触过 ffmpeg ,可以用python ffmpeg 来压缩视频啊, ...

  9. 无法找到CCTV直播MP4地址?七十行代码,简单使用FFplay直接观看还是下载CCTV栏目都轻松搞定(Python利用FLVCD硕鼠解析CCTV直播,FFplay播放并下载视频)

    我们在每天使用新闻的时候大都会以CCTV发布的新闻为准,我们的每天新闻收视率最高的还是我们的总台,大家闲来无事可能也会看一下央视网提供视频直播吧,看看还可以,但是我们可以发现我们完全解析不了,大家看一 ...

最新文章

  1. python:进程操作
  2. permission denied for window type 2003
  3. SoapUI工具中的用户名和密码如何用net代码实现传入
  4. 大数据凉了?No,流式计算浪潮才刚刚开始!
  5. 九、深入Java字符串(上篇)
  6. 社群系统ThinkSNS+ V2.2-V2.3升级教程
  7. Android 数据存储之文件存储小记
  8. 工作流实战_12_flowable 流程实例 终止流程
  9. C++:遍历指定路径下的文件/图片
  10. 7-34 红色警报 (10 分)(结构体并查集)
  11. php-redis中文参考手册_zset
  12. java 代码重排_Java中指令重排
  13. matlab 正版下载,matlab软件正版
  14. uniapp开发微信小程序--实现电子签名功能
  15. linux安装svn服务端图形化界面,Linux svn 图形界面客户端 Rabbitvcs 安装
  16. Quartus II——基于VGA的图像显示
  17. Linux下移动anaconda虚拟环境的位置
  18. 从VIVO到华为,让人目瞪口呆的“未来SMT智能工厂”亮相
  19. php青蛙跳井代码,四川招警考试行测答题技巧:青蛙跳井问题全解析
  20. 如何理解java程序一次编写,处处运行?

热门文章

  1. 设计模式のNullObjectPattern(空对象模式)----行为模式
  2. 生成Geometry
  3. 核心动画05-CAAnimationGroup
  4. Chrome DevTools进阶教程
  5. 01Spring的helloworld程序
  6. wamp2 php配置,Wamp2+SVN+Eclipse配置_PHP教程
  7. windows时间同步软件_有没有好用的windows时间管理软件?这款便签软件帮你
  8. php5.4与php5.2,升级php 5.2.14 到5.4.11版本报错问题
  9. Java多线程-线程状态
  10. 第十二章 类和动态内存分配