概率中国一种没有语料字典的分词方法

这两天一直在研究概率中国之类的问题,今天正好有机会和大家共享一下.

    危险 优秀沉默李景隆影响杨继盛 疼痛脑壳徐有贞厉害支撑

    蓝玉杨廷和瓦剌申时行判断 记录孙承宗坚持愤怒奏疏锦衣卫 严世蕃祁钰 倭寇东林党费事朋友努尔哈赤  选择喜欢容易首辅 御史李如松

    父亲戚继光投降陈友谅 厚照希望蒙古简略估计消息完全胡宗宪

    祁镇

    毕竟

    魏忠贤

    告诉

    袁崇焕

    嘉靖

    似乎

    准备

    。。。。。。。。

    空间时间

    吸引

    增加

    基本

    标准

    效应

    货色

    描述

    轨道

    位置

    边界

    产生

    解释

    夸克

    狭义绝对论

    坍缩

    辐射

    部分

    知道

    状态

    区域

    距离

    爆炸

    问题

    奇点

    模型

    太阳

    事件

    迷信

    预言

    运动

    膨胀

    任何

    必须

    恒星

    黑洞

    .......

    程序做得太快了,不好,还是把关键函数贴出来吧,就是暴力的编码,用了python自带的便利的数据结构来倏地开辟。所以速度上比拟慢,而且内存上。。呵呵。。说不定会爆哦。。。。完整程序:

    https://github.com/wyh267/ChineseWordSegmentation

    每日一道理
可以破碎的人,必定真正活过。林黛玉的破碎,在于她有刻骨铭心的爱情;三毛的破碎,源于她历经沧桑后一刹那的明彻与超脱;凡高的破碎,是太阳用黄金的刀子让他在光明中不断剧痛,贝多芬的破碎,则是灵性至极的黑白键撞击生命的悲壮乐章。如果说那些平凡者的破碎泄漏的是人性最纯最美的光点,那么这些优秀的灵魂的破碎则如银色的梨花开满了我们头顶的天空。

    # -*- coding=utf-8 -*- ''' Created on 2013-5-9 @author: Wu YingHao @email: wyh817@gmail.com 该程序可以在没有语料库的情况下从文本中抽取出中文词汇 理论支撑: http://www.matrix67.com/blog/archives/5044 ''' import math """ 计算每个字和词的涌现频率 输入: words 字符串内容 num 须要截取的最长字串 输出: split_words 分割好的所有子串的数据,以字典形式返回 split_words 说明 {"字串" : [ 涌现次数,涌现概率,凝固水平,凝固水平*涌现次数,自在水平,前缀集合,后缀集合] .....} """ def find_words(words,num=6): split_words={} lens=len(words) for i in range(0,lens): for j in range(1,num+1): if i+j < lens -num-2: if words[i:i+j] in split_words: split_words[words[i:i+j]][0]+=1 split_words[words[i:i+j]][1]=float(split_words[words[i:i+j]][0])/float(lens) split_words[words[i:i+j]][6].append(words[i-1]) split_words[words[i:i+j]][7].append(words[i+j]) else: split_words[words[i:i+j]]=[1, 1/float(lens), words[i:i+j], 1, 1, 0, [words[i-1]], [words[i+j]] ] if(i%10000==0): print "实现 :" + str(float(i)/float(len(words))*100) + " %" return split_words """ 计算凝聚水平 输入:words_dic 已拆分好的字符串字典 输出:填充好凝聚水平的字典 """ def find_nh(words_dic): for key in words_dic.keys(): if(len(key)>1): #左凝聚水平 left_p=words_dic[key][1]/(words_dic[key[:1]][1]*words_dic[key[1:]][1]) #右凝聚水平 right_p=words_dic[key][1]/(words_dic[key[:-1]][1]*words_dic[key[:-1]][1]) if(left_p<right_p): words_dic[key][3]=left_p else: words_dic[key][3]=right_p """ 计算自在水平 输入: word_dic 字典文件 返回:word_dic 添加自在水平当前的字典 """ def calc_free(word_dic): for key in word_dic.keys(): front_free=0 end_free=0 for front in word_dic[key][6]: if front in word_dic: front_free-=math.log(word_dic[front][1])*word_dic[front][1] for end in word_dic[key][7]: if end in word_dic: end_free-=math.log(word_dic[end][1])*word_dic[end][1] if(front_free < end_free): word_dic[key][5]=front_free else: word_dic[key][5]=end_free return word_dic

    注:本文虽然不是转帖,但是内容参考了matrix67的博客,地址为  http://www.matrix67.com/blog/archives/5044  ,特此声明。

    

 

    

 



文章结束给大家分享下程序员的一些笑话语录: 程序员的愿望
  有一天一个程序员见到了上帝.上帝: 小伙子,我可以满足你一个愿望.程序员: 我希望中国国家队能再次打进世界杯.
  上帝: 这个啊!这个不好办啊,你还说下一个吧!
  程序员: 那好!我的下一个愿望是每天都能休息6个小时以上.
  上帝: 还是让中国国家打进世界杯.

原文地址:https://www.cnblogs.com/xinyuyuanm/p/3078588.html