`
phyeas
  • 浏览: 164259 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

γ code及其实现

阅读更多

 

1. What is γ code?

γ编码并不是我随便乱取的名字,其原理在信息检索导论第5章第3节有介绍,用于压缩一连串有序的数字类型的数据非常有用。在MG中将γ编码归类为全局模型(MG更推崇局部模型)。其原理是将所有的数据分成两部分连起来,第一部分为数据长度,第二部分为数据内容。这样做的好处是对于很小的数字γ编码可以只用bit就可以表示了,如对于8这样的数字,只需要表示数据长度的1110四位字节加上表示数据的000三位字节就可以表示了。而如果当做int保存,则需要4字节即32bit保存,而实际上前面的数据都是0,这样做很浪费空间。但γ编码需要保存后面的数据的长度,在保存很大的数字时会占用很大的空间,如保存一个4294967295这样的数字,需要占用64bit。而这个是一个32位的int内的数字,如保存为int,只需32bit即可保存了,前面提到γ编码用于保存一连串有序的数字类型非常有效,因为连续的有序数字型数据可以只保存数字间的间隔即可,如前一个数字是400000,后一个数字是400008,此时间隔只有8,只需保存成400000,8即可。因此后面这个数字就可以节省大量字节。而在搜索引擎的倒排索引中大量保存的都是这些数据,某单词对于的文档号,如:retrieval:1287,1297...

 γ编码的详细介绍请参照:http://nlp.stanford.edu/IR-book/html/htmledition/gamma-codes-1.html

 

相对于γ编码,有一个局部有参模型与之类似,在MG中有介绍,称之为全局贝努力和局部贝努力模型。可以参考下,主要是使用触发将数据化为商和余数,但除数需要经过训练得出。除数即为参数。

2. γ编码的实现

γ编码的实现难点是在文件中存储的是以byte为单位的数据,读取出数据时是一个一个的byte,需要精心计算每个数字的边界,并且计算出边界后需要使用各种二进制操作符对数据截取。

2.1 γ编码读取器

首先,需要确定的是数据的长度,即对读到的bit进行计数,当读到0时结束计数。即,如果读到的byte为01110111,读到第一个0时计数结束,说明后面跟着0bit数据。再加上前面已经确定的1,所有位加起来,数据就是1,然后读到第二个0时,此时计数器为3,表示后面跟着3bit的数据。也就是后面的111,再加上前面的1,即1111,转换为10进制就是15,也就是说这个byte包含两个数字:1,15。

假设现有byte by=119(01110111), by_index=0(用于保存当前byte被读了多少bit);

首先用by^-1(11111111),得到10001000,这里的1即表示0所在的位置,再判断10001000&10000000,如果等于10000000,则表示第一位存在0,如果与01000000做按位与操作得到01000000,则表示第二位为0,以此类推。

计数器为0直接返回1,此时by_index的值为1(已读取1bit)。再读取下一数据时,计数器为3。读取后面的数据需要先将by向左移动5位(by_index=5),用以截掉前面已经读取过的数据,得到11100000,再向右移动5位,得到00000111,假设目前有一临时结果保存在内存中(result)值为1。则将result向左移动三位(数据长度为3),得到00001000,再用00001000与00000111做按位或操作,得到00001111即为最终结果。

2.2 γ编码写入器

 γ编码的写入器首先要确定需要写入的数据的长度,同样需要对每个位做按位&计算,输出时需要考虑输出时按照每byte输出的,上次输出可能并没有完整地用完一byte,需要将bit数据加到后面去。

假设有数据15(1111),6(110)需要输出,首先经过计算得出数据15的长度是3(截掉前面的1),缓存中有byte by=0;需要先将3个1输出到缓存中,即by|11100000,然后输出数据,需要输出3位数字,此时前面4比特已被占用,需要将数据右移4bit。得到00001110,再与缓存数据做按位或操作,得到11101110,此时还有1bit未被占用,可被下一个数据使用,下一个数据需要2长度,使用上次遗存的1bit再加上下一byte的4byte就能完成存储了。

 

3.实验

使用GammaCodeWriter对随机100个1W以内的整数进行编码,输出到文件中,占用209字节,而如果使用DataOutputStream进行完整输出,则需要占用400字节。

 

 

分享到:
评论

相关推荐

    论文研究 - 通过γ激光或γ射线实现受控核聚变的方法

    提出了一种以一定的频率和足够大的强度照射目标球的γ激光或γ射线与普通激光实现可控核聚变的方法。 普通激光的功能是加热目标原子核并实现对目标原子核的惯性约束。 吸收γ-光子的目标核将处于一定的激发态。 为了...

    IL-12对人周围血NK细胞亚群IFN-γ产生的影响及其机制研究

    IL-12对人周围血NK细胞亚群IFN-γ产生的影响及其机制研究,范艳莹,付笑迎,目的 探讨IL-12对人周围血NK细胞亚群IFN-γ产生的影响及其机制研究。方法 免疫磁珠纯化法分离NK细胞及其亚群,加或不加IL-12刺激NK细胞...

    γ指纹的特征提取及其RBF神经网络识别.pdf

    γ指纹的特征提取及其RBF神经网络识别是深度学习和机器学习领域中的一个重要研究主题,尤其是在数据建模和专业指导方面。γ指纹是一种用于生物识别技术的独特标识,它利用γ射线对个体生物特征进行扫描并形成独特的...

    γ能谱数据分析

    γ能谱分析技术,是快速、可靠、非破坏性的确定待测样品中核素性质及其强度的重要手段,是一重比较直观的仪器分析技术。

    svm实现及其实现理论都有

    标题中提到的"svm实现及其实现理论",主要涉及以下几个关键点: 1. SVM的基本原理:SVM首先将数据映射到高维空间,寻找一个最大边距超平面作为决策边界。这个超平面是由最接近它的那些样本点(支持向量)决定的。...

    环境X-γ剂量率的测量及γ空气的吸收剂量率估算

    实验报告的主题是“环境X-γ剂量率的测量及γ空气的吸收剂量率估算”,主要涉及放射性环境监测,特别是针对X射线和γ射线的辐射剂量评估。实验的目标包括熟悉剂量率仪的操作,理解其工作原理,以及掌握环境空气吸收...

    腹膜间皮细胞PPARγ的表达及其配体对CD40和ICAM-I的影响

    腹膜间皮细胞PPARγ的表达及其配体对CD40和ICAM-I的影响,张云芳,阳晓,目的 观察过氧化物酶体增殖体激活受体γ(PPARγ)在大鼠腹膜间皮细胞(RPMCs)中的表达以及LPS的调节作用,并探讨PPARγ天然配体15d-PGJ2�

    极化可观测量T,P和H及其对γp→pπ0多极的影响

    报道了关于反应γp→pπ0的偏振可观察物T,P和H的数据。 与其他实验的早期数据相比,我们的数据更加精确,并且在能量和角度上都大大扩展了覆盖范围。 从使用横向极化目标和线性极化光子测量的方位不对称中提取结果。...

    小鼠肺组织γδT细胞的多样性及沙眼衣原体诱导的γδT细胞亚群的增殖

    小鼠肺组织γδT细胞的多样性及沙眼衣原体诱导的γδT细胞亚群的增殖,梁聚友,王悦,目的 探讨小鼠肺组织γδT细胞亚群的多样性及其Cm感染诱导的γδT细胞亚群在肺组织中的增殖。方法 制备健康C57BL/6小鼠肺组织匀...

    用质子标记探测LHC处的异常γγγZ耦合

    通过LHC前部区域中完整质子的γZ产生,估计对异常四次玻色子玻色子耦合γγγZ的敏感性。 质子标记被证明是抑制背景的有力工具,除了轻子外,它还可以考虑Z玻色子的强子衰变。 我们讨论了300 fb -1和3000 fb -1的...

    环境γ射线监测仪的双CPU实现.pdf

    【环境γ射线监测仪的双CPU实现】 环境γ射线监测仪是一种专门用于监测环境中的γ射线辐射强度的设备,特别是在居民区和核电站等场所,它能够有效地检测核泄漏等潜在风险。传统的γ射线监测仪采用单个CPU进行控制,...

    神经网络γ能谱分析

    神经网络γ能谱分析是核技术测量领域的一项重要应用,它主要依赖于人工神经网络这一强大的数据处理工具。人工神经网络是由大量简单的处理单元组成的并行分布的处理机,能够模拟人脑结构与功能。其学习和归纳能力尤为...

    60Coγ辐射悬铃木种子及其苗期生物学性状调查

    60Coγ辐射悬铃木种子及其苗期生物学性状调查,包满珠,李志能,以不同剂量的60Coγ射线辐射悬铃木干种子,测定了不同剂量对悬铃木M1代的影响。结果表明,在50~400Gy范围内,随着剂量的增加,悬铃木

    γ能谱图汇总 高纯锗.pdf

    γ能谱图汇总高纯锗的研究内容涵盖了伽马射线光谱学的核心知识点,主要集中在高纯锗探测器在放射性核素测量中的应用。本篇文档不仅汇总了不同伽马核素的γ能谱图,还包括了相关的衰变数据,这使得它对于从事放射化学...

    数字传输中彩色信号的γ失真及其校正 (2005年)

    ### 数字传输中彩色信号的γ失真及其校正 #### 概述 在数字传输领域,特别是针对视频信号的处理过程中,彩色信号的γ失真一直是研究的重点之一。γ失真不仅影响图像质量,还可能导致色彩失真等问题。本文通过对γ...

    基于人工神经网络的核材料γ能谱指纹识别

    在核材料γ能谱的指纹识别中,通过训练人工神经网络,使其能够自动识别和区分不同的γ能谱,进而实现对核材料的分类。 BP神经网络(Back Propagation Neural Network)和径向基(RBF,Radial Basis Function)神经...

Global site tag (gtag.js) - Google Analytics