说到分词大家肯定一般认为是很高深的技术,但是今天作者用短短几十行代码就搞定了,感叹python很强大啊!作者也很强大。不过这个只是正向最大匹配,没有机器学习能力

注意:使用前先要下载搜狗词库# -*- coding:utf-8 -*-

#写了一个简单的支持中文的正向最大匹配的机械分词,其它不用解释了,就几十行代码

#附:搜狗词库下载地址:http://vdisk.weibo.com/s/7RlE5

import string

__dict = {}

def load_dict(dict_file='words.dic'):

#加载词库,把词库加载成一个key为首字符,value为相关词的列表的字典

words = [unicode(line, 'utf-8').split() for line in open(dict_file)]

for word_len, word in words:

first_char = word[0]

__dict.setdefault(first_char, [])

__dict[first_char].append(word)

#按词的长度倒序排列

for first_char, words in __dict.items():

__dict[first_char] = sorted(words, key=lambda x:len(x), reverse=True)

def __match_ascii(i, input):

#返回连续的英文字母,数字,符号

result = ''

for i in range(i, len(input)):

if not input[i] in string.ascii_letters: break

result += input[i]

return result

def __match_word(first_char, i , input):

#根据当前位置进行分词,ascii的直接读取连续字符,中文的读取词库

if not __dict.has_key(first_char):

if first_char in string.ascii_letters:

return __match_ascii(i, input)

return first_char

words = __dict[first_char]

for word in words:

if input[i:i+len(word)] == word:

return word

return first_char

def tokenize(input):

#对input进行分词,input必须是uncode编码

if not input: return []

tokens = []

i = 0

while i < len(input):

first_char = input[i]

matched_word = __match_word(first_char, i, input)

tokens.append(matched_word)

i += len(matched_word)

return tokens

if __name__ == '__main__':

def get_test_text():

import urllib2

url = "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, words in __dict.items():

print '%s:%s' % (first_char, ' '.join(words))

def tokenize_test(text):

load_dict()

tokens = tokenize(text)

for token in tokens:

print token

tokenize_test(unicode(u'美丽的花园里有各种各样的小动物'))

tokenize_test(get_test_text())我也学习啦~~~

python 英语分词_用几十行代码实现python中英文分词相关推荐

  1. Python灰帽子_黑客与逆向工程师的Python编程之道

    收藏自用 链接:Python灰帽子_黑客与逆向工程师的Python编程之道

  2. 用几十行代码实现python中英文分词

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

  3. python英语词频_为了边看美剧边学英语,我写了个字幕处理脚本

    每个英语学渣(好吧,其实这个说的就是学渣本渣了 ‍♀️)都有这样一个梦想:能够一边轻松愉快地看着美剧,一边自己的英语听力水平还能蹭蹭地往上涨.知乎上也有很多人分享了自己通过美剧练习听力的方法,比如说只 ...

  4. python 英语词典_使用Python的英语词典应用程序

    python 英语词典 Module used: 使用的模块: In this script, we will use the JSON module because we will use a JS ...

  5. ios手机python编译器免费_适用与IOS手机的python编辑器,让你不限空间,地点都能玩转pyhton代码 !...

    前言 现在越来越多人学习python,很多小伙伴都富有激情的,利用碎片化的时间都要学习,小编不得不佩服你们,大家都知道pyhton是简单易学的,但是光说不练,假把式,最好能编程并且运行,最好能有一款神 ...

  6. python热搜排行功能_简单几行代码用Python爬取微博的热搜榜

    简单几行代码用Python爬取微博的热搜榜 想要实时的看微博热搜 但是又不想去微博网站看!怎么办呢?其实很简单! 我们学了这个requests_html 这个库之后 就更加的简单了! 小编只用了短短的 ...

  7. python 面试问题_值得阅读的30个Python面试问题

    python 面试问题 Interview questions are quite tricky to predict. In most cases, even peoples with great ...

  8. 如何系统地自学python~知乎_经验分享 | 如何系统地自学 Python?

    是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓? 幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间 ...

  9. python 路径格式化_吐血整理!140种Python标准库、第三方库和外部工具都有了!...

    导读: Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据 ...

最新文章

  1. Python 用while 实现循环 到特定条件退出循环(input 输入错误之后重新输入)
  2. 暖通专业标准规范大全_中高级职称专业分类改革 机械类十大热门专业分享
  3. 《浪潮之巅》 读后感
  4. Android开发工具新接触
  5. linux如何映射Windows下的磁盘为网络盘
  6. Java 8中的功能接口是什么? @功能注释和示例
  7. linus为什么开源_Linus Torvalds谈个性崇拜,美国最好的开源学校等等
  8. 应该如何做好持续集成和部署?
  9. UTF8下的中文截取
  10. 二叉树类图_设计模式前言——UML类图
  11. 使用matlab计算并绘制连续信号的傅里叶变换
  12. 戴尔服务器安装群晖系统安装教程,实战群晖NAS小白安装教程与经验分享
  13. 安卓10不支持qmc解码_基于安卓10的LineageOS 17.1来了,支持一加、小米、LG等机型...
  14. 樊登读书搞定读后感_《读懂一本书:樊登读书法》读后感10篇
  15. Android 自定义按钮button 加图片和两行文字
  16. el-form的入门学习
  17. 大数据和人工智能的关系,超全解析 1
  18. 【千峰】网络安全学习笔记
  19. c++ 字符串 判断中文
  20. CentOS7 配置R语言及Rstudio-serve

热门文章

  1. 计算机B级基金有哪些类型,分级b基金是什么
  2. vmei-day04-Jcenter方式集成极光推送
  3. 华为破除魔咒:任正非的自我革命
  4. php1蛋白质带电情况,结合蛋白质(1)
  5. 百度发布AI 2020年十大科技趋势
  6. oracle论坛 南派三叔,南派三叔 不疯魔不成活的金牌网络写手(6)
  7. 网络安全实验室CTF—脚本关 writeup
  8. 如何处理图片用matlab,如何使用matlab来批处理文件图片格式
  9. PEEL——深度隐写信息去除攻击——PEEL: A Provable Removal Attack on Deep Hiding
  10. 笔记34-JavaScript高级笔记