精华内容
下载资源
问答
  • 【论文】文本相似度计算方法综述

    千次阅读 2019-11-05 15:25:50
    概述 在信息爆炸时代,人们迫切...因此了解文本相似度的计算方法是很有必要的。 文本相似度定义 文本相似度在不同领域被广泛讨论,由于应用场景不同,其内涵有所差异,故没有统一、公认的定义。 Lin从信息论的角度...

    概述

    在信息爆炸时代,人们迫切希望从海量信息中获取与自身需要和兴趣吻合度高的内容,为了满足此需求,出现了多种技术,如:搜索引擎、推荐系统、问答系统、文档分类与聚类、文献查重等,而这些应用场景的关键技术之一就是文本相似度计算技术。因此了解文本相似度的计算方法是很有必要的。

    文本相似度定义

    文本相似度在不同领域被广泛讨论,由于应用场景不同,其内涵有所差异,故没有统一、公认的定义。

    Lin从信息论的角度阐明相似度与文本之间的共性和差异有关,共性越大、差异越小、则相似度越高;共性越小、差异越大、则相似度越低。相似度最大的情况是文本完全相同。同时提出基于假设推论出相似度定理,如下所示:
    S i m ( A , B ) = l o g P ( c o m m o n ( A , B ) ) l o g P ( d e s c r i p t i o n ( A , B ) ) Sim(A,B) = \frac{ log P(common(A,B)) } {log P(description(A,B))} Sim(A,B)=logP(description(A,B))logP(common(A,B))
    其中,common(A,B)是A和B的共性信息,description(A,B)是描述A和B的全部信息,上述公式表达出相似度与文本共性成正相关。 由于没有限制领域,此定义被采用较多。

    相关度与相似度是容易混淆的概念,大量学者没有对此做过对比说明。相关度体现在文本共现或者以任何形式相互关联(包括上下位关系、同义关系、反义关系、部件-整体关系、值-属性关系等)反映出文本的组合特点。而相似度是相关度的一种特殊情况,包括上下位关系和同义关系。由此得出,文本的相似度越高,则相关度越大,但是相关度越大并不能说明相似度高。

    相似度一般用[0,1]表示,该实数可以通过语义距离计算获得。相似度与语义距离呈反比关系,语义距离越小,相似度越高;语义距离越大,相似度越低。通常用下面的公式表示相似度与语义距离的关系。
    S i m ( S A , S B ) = α D i s ( S A , S B ) + α Sim(S_A,S_B) = \frac {\alpha} { Dis(S_A,S_B) + \alpha } Sim(SA,SB)=Dis(SA,SB)+αα
    其中, D i s ( S A , S B ) Dis(S_A,S_B) Dis(SA,SB)表示文本 S A , S B S_A,S_B SA,SB之间的非负语义距离, α \alpha α为调节因子,保证了当语义距离为0时上述公式的意义。

    文本相似度计算中还有一个重要的概念是文本表示,代表对文本的基本处理,目的是将半结构化或非结构化的文本转化为计算机可读形式。文本相似度计算方法的不同本质是文本表示方法不同

    文本相似度计算方法

    文本相似度计算方法

    文本相似度计算方法可分为四大类:

    • 基于字符串的方法(String-Based)
    • 基于语料库的方法(Corpus-Based)
    • 基于世界知识的方法(Knowledge-Based)
    • 其他方法

    基于字符串的方法

    该方法从字符串匹配度出发,以字符串共现和重复程度为相似度的衡量标准。根据计算粒度不同,可以将该方法分为基于字符的方法基于词语的方法。下图列出两种方法常见的算法以及思路

    基于字符串的方法

    基于字符串的方法是在字面层次上的文本比较,文本表示即为原始文本,该方法原理简单,易于实现,现已成为其他方法的计算基础。

    但不足的是将字符或词语作为独立的知识单元,并未考虑词语本身的含义和词语之间的关系。以同义词为例,尽管表达不同,但具有相同的含义,而这类词语的相似度依靠基于字符串的方法并不能准确计算。

    基于语料库的方法

    基于语料库的方法利用语料库中获取的信息计算文本相似度。基于语料库的方法可以划分为:

    • 基于词袋模型的方法
    • 基于神经网络的方法
    • 基于搜索引擎的方法

    基于词袋

    词袋模型(Bag of Words Model,BOW)建立在分布假说的基础上,即“词语所处的上下文语境相似,其语义则相似”。其基本思想是:不考虑词语在文档中出现的顺序,将文档表示成一系列词语的组合。

    根据考虑的语义成程度不同,基于词袋模型的方法主要包括:

    • 向量空间模型(Vector Space Model,VSM)
    • 潜在语义分析(Latent Semantic Analysis,LSA)
    • 概率潜在语义分析(Probabilistic Latent Semantic Analysis,PLSA)
    • 潜在狄利克雷分布(Latent Dirichlet Allocation,LDA)

    VSM

    VSM模型的基本思想是将每篇文档表示成一个基于词频或者词频-逆文档频率权重的实值向量,那么N篇文档则构成n维实值空间,其中空间的每一维都对用词项,每一篇文档表示该空间的一个点或者向量。两个文档之间的相似度就是两个向量的距离,一般采用余弦相似度方法计算。

    VSM有两个明显的缺点:一是该方法基于文本中的特征项进行相似度计算,当特征项较多时,产生的高维稀疏矩阵导致计算效率不高;二是向量空间模型算法的假设是文本中抽取的特征项没有关联,不符合文本语义表达。

    LSA,PLSA

    LSA算法的基本思想是将文本从稀疏的高维词汇空间映射到低维的潜在语义空间,在潜在的语义空间计算相似性。LSA是基于VSM提出的,两种方法都是采用空间向量表示文本,但LSA使用潜在语义空间,利用奇异值分解提高对高维的词条-文档矩阵进行处理,去除了原始向量空间的某些“噪音”,使数据不再稀疏。Hofmann在LSA的基础上引入主题层,采用期望最大化算法(EM)训练主题。

    LSA本质上是通过降维提高计算准确度,但该算法复杂度比较高,可移植性差,比较之下,PLSA具备统计基础,多义词和同义词在PLSA中分别被训练到不同的主题和相同的主题,从而避免了多义词,同义词的影响,使得计算结构更加准确,但不适用于大规模文本。

    LDA

    LDA主题模型是一个三层的贝叶斯概率网络,包含词、主题和文档三层结构。采用LDA计算文本相似性的基本思想是对文本进行主题建模,并在主题对应的词语分布中遍历抽取文本中的词语,得到文本的主题分布,通过此分布计算文本相似度。

    以上三类尽管都是采用词袋模型实现文本表示,但是不同方法考虑的语义程度有所不同。基于向量空间建模的方法语义程度居中,加入潜在语义空间概念,解决了向量空间模型方法的稀疏矩阵问题并降低了多义词,同义词的影响。基于LDA的主题模型的方法语义程度最高,基于相似词语可能属于统一主题的理论,主题经过训练得到,从而保证了文本的语义性。

    基于神经网络

    基于神经网络生成词向量计算文本相似度是近些年提的比较多的。不少产生词向量的模型和工具也被提出,比如Word2Vec和GloVe等。词向量的本质是从未标记的非结构文本中训练出一种低维实数向量,这种表达方式使得类似的词语在距离上更为接近,同时较好的解决了词袋模型由于词语独立带来的维数灾难和语义不足问题。

    基于神经网络方法与词袋模型方法的不同之处在于表达文本的方式。词向量是经过训练得到的低维实数向量,维数可以认为限制,实数值可根据文本距离调整,这种文本表示符合人理解文本的方式,所以基于词向量判断文本相似度的效果有进一步研究空间。

    基于搜索引擎

    基本原理是给定搜索关键词 x , y x,y x,y,搜索引擎返回包含 x , y x,y x,y的网页数量 f ( x ) , f ( y ) f(x),f(y) f(x),f(y)以及同时包含 x , y x,y x,y的网页数量 f ( x , y ) f(x,y) f(x,y),计算谷歌相似度距离如下所示:
    N G D ( x , y ) = G ( x , y ) − m i n ( G ( x ) , G ( y ) ) m a x ( G ( x ) , G ( y ) = m a x { l o g   f ( x ) , l o g   f ( y ) } − l o g   f ( x , y ) l o g   N − m i n l o g   f ( x ) , l o g   f ( y ) NGD(x,y) = \frac { G(x,y) - min(G(x),G(y)) } { max(G(x),G(y)} \\ = \frac {max\{ log \,f(x), log\,f(y) \} - log \, f(x,y)} { log \, N - min{log \,f(x), log \, f(y)} } NGD(x,y)=max(G(x),G(y)G(x,y)min(G(x),G(y))=logNminlogf(x),logf(y)max{logf(x),logf(y)}logf(x,y)

    但是该方法最大的不足是计算结果完全取决于搜索引擎的查询效果, 相似度因搜索引擎而异

    基于世界知识的方法

    基于世界知识的方法是利用具有规范组织体系的知识库计算文本相似度,一般分为两种:基于本体知识和基于网络知识。

    基于本体知识

    文本相似度计算方法使用的本体不是严格的本体概念, 而指广泛的词典、叙词表、词汇表以及狭义的本体。由于本体能够准确地表示概念含义并能反映出概念之间的关系, 所以本体成为文本相似度的研究基础[7]。最常利用的本体是通用词典, 例如 WordNet、《知网》(HowNet)和《同义词词林》等, 除了词典还有一些领域本体, 例如医疗本体、电子商务本体、地理本体、农业本体等。

    结合Hliaoutaki、Batet等的研究,将基于本体的文本相似度算法概括为四种:

    • 基于距离
    • 基于内容
    • 基于属性
    • 混合式相似度

    下表列出了各种方法的基本原理、代表方法和特点
    基于本体的文本相似度算法

    基于网络知识

    由于本体中词语数量的限制,有些学者开始转向基于网络知识方法的研究,原因是后者覆盖范围广泛、富含丰富的语义信息、更新速度相对较快,使用最多的网络知识是维基百科、百度百科。网络知识一般包括两种结构,分别是词条页面之间的链接和词条之间的层次结构。

    基于网络知识的文本相似度计算方法大多利用页面链接或层次结构,能较好的反映出词条的语义关系。但其不足在于:词条与词条的信息完备程度差异较大,不能保证计算准确度,网络知识的生产方式是大众参与,导致文本缺少一定的专业性。

    其他方法

    除了基于字符串、基于语料库和基于世界知识的方法, 文本相似度计算还有一些其他方法,比如:

    • 句法分析
    • 混合方法

    总结

    本文总结了文本相似度计算的四种方法,以及他们的优缺点。作者认为今后文本相似度的计算方法趋势有三个方向,分别是:

    • 基于神经网络的方法研究将更加丰富
    • 网络资源为文本相似度计算方法研究提供更多支持
    • 针对特定领域以及跨领域文本的相似度计算将成为今后发展的重点

    【技术服务】,详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

    扫一扫 关注微信公众号!号主 专注于搜索和推荐系统,尝试使用算法去更好的服务于用户,包括但不局限于机器学习,深度学习,强化学习,自然语言理解,知识图谱,还不定时分享技术,资料,思考等文章!

    展开全文
  • mAP的计算方法

    万次阅读 多人点赞 2018-11-06 13:42:47
    这一文章首先假设一个测试集,然后围绕这一测试集来介绍这几种度量方式的计算方法。 大雁与飞机 假设现在有这样一个测试集,测试集中的图片只由大雁和飞机两种图片组成,如下图所示: 假设你的分类系统最终...
    侵删, 转载于: https://blog.csdn.net/hysteric314/article/details/54093734

    摘要

    在训练YOLO v2的过程中,系统会显示出一些评价训练效果的值,如Recall,IoU等等。为了怕以后忘了,现在把自己对这几种度量方式的理解记录一下。
    这一文章首先假设一个测试集,然后围绕这一测试集来介绍这几种度量方式的计算方法。

    大雁与飞机

    假设现在有这样一个测试集,测试集中的图片只由大雁和飞机两种图片组成,如下图所示:
    这里写图片描述

    假设你的分类系统最终的目的是:能取出测试集中所有飞机的图片,而不是大雁的图片。

    现在做如下的定义:
    True positives : 飞机的图片被正确的识别成了飞机。
    True negatives: 大雁的图片没有被识别出来,系统正确地认为它们是大雁。
    False positives: 大雁的图片被错误地识别成了飞机。
    False negatives: 飞机的图片没有被识别出来,系统错误地认为它们是大雁。

    假设你的分类系统使用了上述假设识别出了四个结果,如下图所示:
    这里写图片描述

    那么在识别出的这四张照片中:
    True positives : 有三个,画绿色框的飞机。
    False positives: 有一个,画红色框的大雁。

    没被识别出来的六张图片中:
    True negatives : 有四个,这四个大雁的图片,系统正确地没有把它们识别成飞机。
    False negatives: 有两个,两个飞机没有被识别出来,系统错误地认为它们是大雁。

    Precision 与 Recall

    Precision其实就是在识别出来的图片中,True positives所占的比率:
    这里写图片描述
    其中的n代表的是(True positives + False positives),也就是系统一共识别出来多少照片 。
    在这一例子中,True positives为3,False positives为1,所以Precision值是 3/(3+1)=0.75。
    意味着在识别出的结果中,飞机的图片占75%。

    Recall 是被正确识别出来的飞机个数与测试集中所有飞机的个数的比值:
    这里写图片描述
    Recall的分母是(True positives + False negatives),这两个值的和,可以理解为一共有多少张飞机的照片。
    在这一例子中,True positives为3,False negatives为2,那么Recall值是 3/(3+2)=0.6。
    意味着在所有的飞机图片中,60%的飞机被正确的识别成飞机.。

    调整阈值

    你也可以通过调整阈值,来选择让系统识别出多少图片,进而改变Precision 或 Recall 的值。
    在某种阈值的前提下(蓝色虚线),系统识别出了四张图片,如下图中所示:
    这里写图片描述
    分类系统认为大于阈值(蓝色虚线之上)的四个图片更像飞机。

    我们可以通过改变阈值(也可以看作上下移动蓝色的虚线),来选择让系统识别能出多少个图片,当然阈值的变化会导致Precision与Recall值发生变化。比如,把蓝色虚线放到第一张图片下面,也就是说让系统只识别出最上面的那张飞机图片,那么Precision的值就是100%,而Recall的值则是20%。如果把蓝色虚线放到第二张图片下面,也就是说让系统只识别出最上面的前两张图片,那么Precision的值还是100%,而Recall的值则增长到是40%。

    下图为不同阈值条件下,Precision与Recall的变化情况:
    这里写图片描述

    Precision-recall 曲线

    如果你想评估一个分类器的性能,一个比较好的方法就是:观察当阈值变化时,Precision与Recall值的变化情况。如果一个分类器的性能比较好,那么它应该有如下的表现:被识别出的图片中飞机所占的比重比较大,并且在识别出大雁之前,尽可能多地正确识别出飞机,也就是让Recall值增长的同时保持Precision的值在一个很高的水平。而性能比较差的分类器可能会损失很多Precision值才能换来Recall值的提高。通常情况下,文章中都会使用Precision-recall曲线,来显示出分类器在Precision与Recall之间的权衡。
    这里写图片描述
    上图就是分类器的Precision-recall 曲线,在不损失精度的条件下它能达到40%Recall。而当Recall达到100%时,Precision 降低到50%。

    Approximated Average precision

    相比较与曲线图,在某些时候还是一个具体的数值能更直观地表现出分类器的性能。通常情况下都是用 Average Precision来作为这一度量标准,它的公式为:
    这里写图片描述
    在这一积分中,其中p代表Precision ,r代表Recall,p是一个以r为参数的函数,That is equal to taking the area under the curve.

    实际上这一积分极其接近于这一数值:对每一种阈值分别求(Precision值)乘以(Recall值的变化情况),再把所有阈值下求得的乘积值进行累加。公式如下:
    这里写图片描述
    在这一公式中,N代表测试集中所有图片的个数,P(k)表示在能识别出k个图片的时候Precision的值,而 Delta r(k) 则表示识别图片个数从k-1变化到k时(通过调整阈值)Recall值的变化情况。

    在这一例子中,Approximated Average Precision的值
    =(1 * (0.2-0)) + (1 * (0.4-0.2)) + (0.66 * (0.4-0.4)) + (0.75 * (0.6-0.4)) + (0.6 * (0.6-0.6)) + (0.66 * (0.8-0.6)) + (0.57 * (0.8-0.8)) + (0.5 * (0.8-0.8)) + (0.44 * (0.8-0.8)) + (0.5 * (1-0.8)) = 0.782.

    =(1 * 0.2) + (1 * 0.2) + (0.66 * 0) + (0.75 * 0.2) + (0.6 * 0) + (0.66 * 0.2) + (0.57 * 0) + (0.5 * 0) + (0.44 * 0) + (0.5 * 0.2) = 0.782.

    通过计算可以看到,那些Recall值没有变化的地方(红色数值),对增加Average Precision值没有贡献。

    Interpolated average precision

    不同于Approximated Average Precision,一些作者选择另一种度量性能的标准:Interpolated Average Precision。这一新的算法不再使用P(k),也就是说,不再使用当系统识别出k个图片的时候Precision的值与Recall变化值相乘。而是使用:
    这里写图片描述
    也就是每次使用在所有阈值的Precision中,最大值的那个Precision值与Recall的变化值相乘。公式如下:
    这里写图片描述

    下图的图片是Approximated Average Precision 与 Interpolated Average Precision相比较。
    需要注意的是,为了让特征更明显,图片中使用的参数与上面所说的例子无关。
    这里写图片描述
    很明显 Approximated Average Precision与精度曲线挨的很近,而使用Interpolated Average Precision算出的Average Precision值明显要比Approximated Average Precision的方法算出的要高。

    一些很重要的文章都是用Interpolated Average Precision 作为度量方法,并且直接称算出的值为Average Precision 。PASCAL Visual Objects Challenge从2007年开始就是用这一度量制度,他们认为这一方法能有效地减少Precision-recall 曲线中的抖动。所以在比较文章中Average Precision 值的时候,最好先弄清楚它们使用的是那种度量方式。

    IoU

    IoU这一值,可以理解为系统预测出来的框与原来图片中标记的框的重合程度。
    计算方法即检测结果Detection Result与 Ground Truth 的交集比上它们的并集,即为检测的准确率:

    IoU=DetectionResultGroundTruthDetectionResultGroundTruthIoU=DetectionResult⋂GroundTruthDetectionResult⋃GroundTruth

    如下图所示:
    蓝色的框是:GroundTruth
    黄色的框是:DetectionResult
    绿色的框是:DetectionResult GroundTruth
    红色的框是:DetectionResult GroundTruth

    这里写图片描述

    要说的

    1,本文参考了以下博客
    https://sanchom.wordpress.com/tag/average-precision/
    http://blog.csdn.net/eddy_zheng/article/details/52126641
    2,在训练YOLO v2中,会出现这几个参数,所以在这总结一下,省得以后忘了。
    3,本文只是一个学习笔记,内容可能会有错误,仅供参考。
    4,如果你发现文中的错误,欢迎留言指正,谢谢!
    5,之后会继续把训练YOLO过程中出现的问题写在博客上。

    展开全文
  • CRC-16校验码计算方法: 常用查表法和计算法。 计算法一般都是: (1)、预置1个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器; (2)、把第一个8位二进制数据(既通讯信息帧的第一个...

    参考链接:https://blog.csdn.net/Chuck_lin/article/details/79199381

                   https://blog.csdn.net/chen249191508/article/details/52980936

    一、什么是CRC校验?

    CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

    • 循环冗余校验码(CRC)的基本原理是

    在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。
    校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2R,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*2R除以生成多项式G(x)得到的余数就是校验码。

    • CRC校验原理:

    其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错。

    • 模2除法:

    模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模2除法。

    例:

    二、CRC8计算与举例

    • CRC8校验步骤:

    CRC校验中有两个关键点:

    一是预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准,但是最高位和最低位必须为1

    二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码。

    • CRC8具体计算步骤:

    1. 选择合适的除数(生成多项式)

    2. 看选定除数的二进制位数,然后再要发送的数据帧上面加上这个位数-1位的0,然后用新生成的帧以模2除法的方式除上面的除数,得到的余数就是该帧的CRC校验码。注意,余数的位数一定只比除数位数少一位,也就是CRC校验码位数比除数位数少一位,如果前面位是0也不能省略。

    3. 将计算出来的CRC校验码附加在原数据帧后面,构建成一个新的数据帧进行发送;最后接收端在以模2除法方式除以前面选择的除数,如果没有余数,则说明数据帧在传输的过程中没有出错。

     

    • CRC8校验码计算示例:

    现假设选择的CRC生成多项式为G(X) = X4 + X3 + 1,要求出二进制序列10110011的CRC校验码。下面是具体的计算过程:

    ①将多项式转化为二进制序列,由G(X) = X4 + X3 + 1可知二进制一种有五位,第4位、第三位和第零位分别为1,则序列为11001

    ②多项式的位数位5,则在数据帧的后面加上5-1位0,数据帧变为101100110000,然后使用模2除法除以除数11001,得到余数。

    ③将计算出来的CRC校验码添加在原始帧的后面,真正的数据帧为101100110100,再把这个数据帧发送到接收端。

    ④接收端收到数据帧后,用上面选定的除数(生成多项式),用模2除法除去,验证余数是否为0,如果为0,则说明数据帧没有出错。

    • 常用CRC生成多项式如下表:

    三、CRC16计算与举例

     

    • CRC-16校验码计算方法:

    常用查表法和计算法。

    计算法一般都是:

    (1)、预置1个16位的寄存器为十六进制FFFF(即全为1),称此寄存器为CRC寄存器;
    (2)、把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低
           8位相异或,把结果放于CRC寄存器,高八位数据不变;
    (3)、把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;
    (4)、如果移出位为0:重复第3步(再次右移一位);如果移出位为1,CRC寄存器与多

        项式(例如:1010 0000 0000 0001)进行异或;
    (5)、重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
    (6)、重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
    (7)、将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低
           字节进行交换;
    (8)、最后得到的CRC寄存器内容即为:CRC码。

    以上计算步骤中的多项式A001(1010 0000 0000 0001)是8005按位颠倒后的结果。

    查表法:

    将移位异或的计算结果做成了一个表,就是将0~256放入一个长度为16位的寄存器中的低八位,高八位填充0,然后将该寄存器与多项式例如:1010 0000 0000 0001)按照上述3、4步骤,直到八位全部移出,最后寄存器中的值就是表格中的数据,高八位、低八位分别单独一个表。

     

    例子:有一16进制只字符串 7E 00 05 60 31 32 33;要在末尾添加两个CRC16校验码 校验这7个16进制字符。注:生成多项式:CRC-CCITT (XModem)  CRC16_XMODEM:多项式x16+x12+x5+1(0x1021),初始值0x0000,低位在后,高位在前,结果与0x0000异或.

     

    7E 00 05 60 31 32 33 计算CRC16结果应该是:5B3E
    
    方法如下:
    
     

    CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0),   之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

    1.设置CRC寄存器,并给其赋值FFFF(hex)。   

    2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。

    CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或(异或:二进制运算 相同为0,不同为1;0^0=0;0^1=1;1^0=1;1^1=0),   之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

    3.CRC寄存器向右移一位,MSB补零,移出并检查LSB。   
    4.如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。   
    5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。   
    6.重复第2至第5步直到所有数据全部处理完成。   
    7.最终CRC寄存器的内容即为CRC值。
    CRC(16位)多项式为 X16+X15+X2+1,其对应校验二进制位列为1 1000 0000 0000 0101。
    
    展开全文
  • VLSM子网划分计算方法

    千次阅读 2020-08-17 13:25:28
    可变长度子网掩码(VLSM)在子网划分中的应用: 大家可以参考这篇文章,写的非常详细! https://blog.51cto.com/mmanong/1945144

    可变长度子网掩码(VLSM)在子网划分中的应用:

    大家可以参考这篇文章,写的非常详细!
    https://blog.51cto.com/mmanong/1945144

    展开全文
  • VaR如何计算?VaR计算方法

    万次阅读 2020-04-23 22:41:10
    VaR的计算方法通常有三大类:分析法、历史模拟法和蒙特卡罗模拟法,这3种方法从不同角度来分析资产的风险价值。后面的案例中将对股指期货交易中金的最大损失值进行计算,即对金的VaR值进行估计。 1、分析法 ...
  • python实现常用的相似度计算方法

    千次阅读 2019-05-07 19:43:11
    相似度计算是很多具体的应用了里面都会使用到的一些东西,我们学过的有很多相似度计算方法,最初的相似度计算是为了表征向量的重合程度的,在这里最经典的就是余弦相似度了,当然使用正弦或者是正切等等三角函数也...
  • 数值计算方法python实现

    千次阅读 2017-11-19 14:12:10
    包括: 泰勒级数展开 差分逼近微分 ...代码在我的github上,[数值计算方法]( https://github.com/c-dafan/numerical-computation-method ]) https://github.com/c-dafan/numerical-computation-method
  • 实用的行列式计算方法 —— 线性代数

    万次阅读 多人点赞 2020-06-02 21:16:14
    行列式怎么求?学这一篇就够了
  • 计算方法》复习重点归纳

    千次阅读 2019-11-29 15:10:59
    (Lagrange插值公式)求插值多项式 代数精度 复化梯形公式计算近似值 Euler公式求解常微分方程 华科软院,亲测考了上述内容的80%以上,天天翘课80+分飘过 补充:本院的同学请务必按照课本的解法去解题,有些概念不同...
  • 拥堵指数计算方法

    千次阅读 2020-03-25 19:07:04
    国内外对城市交通运行情况的评价方法 1、基于旅行时间进行评价计算实际通行时间与自由流之间的关系来得到评价结果。Tomtom 使用的是实际旅行时间比自由流情况下增加的时间比例来衡量。 2、基于旅行速度进行评价通过...
  • 一、最新个税计算方式 目前的个税计算方式与之前有一些变化。 以前是每个月缴纳一次,年底不再清算(按单月计算)。 现在是每个月预扣一次,年底再清算一次(按年度累计计算)。 所以其计算方式也变得更加麻烦了。 ...
  • 哈工大2020春计算方法实验报告

    千次阅读 多人点赞 2020-05-30 22:01:50
    哈工大2020春计算方法实验报告:包括拉格朗日插值方法、四阶龙格库塔方法和牛顿迭代法。实验结果和内容可能包含一些错误,请谨慎参考。
  • 权重计算方法

    万次阅读 2019-06-10 16:58:47
    AHP方法 AHP算法计算层次权重其基本步骤为将问题分解为不同的组成因素,按照因素间的相互关系或者隶属关系将因素按不同因素聚集集合,形成一个多层次的分析结构模型,并由此构建判断(或成对比较)矩阵,依据判断...
  • AUC的计算方法及相关总结

    万次阅读 2018-07-18 12:00:30
    3. 方法3跟方法2是一样的,只不过做了一些处理减小了复杂度,首先按照score进行排序,得分最大的为n,第二大的为n-1,依次类推,最小一个即为1,那么AUC的计算方法为:AUC=((正样本的排序之和)-m*(m+1)/2)/(M*N)。...
  • 高等数学——二重积分的计算方法

    千次阅读 2021-06-04 16:53:51
  • IP和网段的计算方法

    万次阅读 多人点赞 2018-01-09 17:26:23
    IP和网段的计算方法 我们都知道,IP是由四段数字组成,在此,我们先来了解一下3类常用的IP  A类IP段 0.0.0.0 到127.255.255.255   B类IP段 128.0.0.0 到191.255.255.255   C类IP段 192.0.0.0 到223....
  • (28)损失度Loss的计算方法

    千次阅读 2019-04-12 08:57:31
    Loss的计算方法一:最简单的损失度Loss的计算方式是把每个实例Instance计算的预测Predicted的结果减去真实值Real Value(在AI盘古案例中,根据instances的第1列,第2列在神经网络计算出的预测结果,然后减去真实值0...
  • AUC的计算方法

    万次阅读 多人点赞 2017-11-29 17:44:49
    相信大家很多时候都是用写好的库直接计算,可能对AUC计算不太了解,下面这篇文章就简单的概述一下AUC的计算方法。 (注:本文的重点其实不在于阐述什么是AUC。因为网上关于这方面的文章实在太多了。但是对于AUC的...
  • 质心计算方法

    千次阅读 2020-08-27 15:22:55
    https://wenku.baidu.com/view/2b08a1eeb8f67c1cfad6b8ef.html
  • 行列式的计算方法

    万次阅读 2020-02-24 14:19:22
    从计算机算法的复杂度来看 根据逆序数定义,n阶行列式共有n!,每项是n个数的乘法,如果直接按照这个定义计算,那么该算法的时间复杂度是O(nn!...1.二阶行列式:直接计算秒出结果,计算复杂度O(1)...
  • 文本相似度几种计算方法及代码python实现

    千次阅读 多人点赞 2020-05-28 10:31:35
    方法1 编辑距离 编辑距离又称Levenshtein距离,是指将一个字符串转为另一个字符串所需的字符编辑次数,包括以下三种操作: 插入 - 在任意位置插入一个字符 删除 - 将任意一个字符删除 替换 - 将任意一个字符替换为另...
  • SVD计算方法

    千次阅读 2019-05-14 16:11:23
    问题模型: 对下面的矩阵进行SVD运算: 步骤1: 步骤2: 步骤3:构建对角矩阵S 通过上面的图可以看出来A被分解了之后又被近似的还原过来。 ...
  • VaR、CoVaR、delta CoVaR计算方法综述 案例与代码

    万次阅读 热门讨论 2020-04-06 15:32:48
    在金融市场上,金融机构的风险不仅受其自身因素的影响,还受其他金融机构风险的冲击,这种机构之间的风险波动传导机制即为风险溢出效应,然而,传统的度量风险的主流方法VaR(在险价值)只能衡量机构自身的风险,却...
  • 树的叶子结点与完全二叉树结点计算方法

    万次阅读 多人点赞 2018-12-19 22:58:35
    二:树的叶子结点计算方法 在学习树的时候经常会遇到计算树中叶子结点的个数的题,比如现在有这样一道题 已知在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,...
  • 自然语言语义相似度计算方法

    千次阅读 2018-04-19 00:00:00
    计算机对主观题的自动评阅准确与否,主要取决于其对文本相似度的计算是否准确。由于文本相似度计算在文档复制检查、信息检索和机器翻译等领域都有十分广泛的应用,所以,近年来有越来...
  • 语义相似度的计算方法

    千次阅读 2018-06-08 20:42:20
    词语的语义相似度计算主要有两种方法 :一类是通过语义词典,把有关词语的概念组织在一个树形的结构中来计算;另一类主要是通过词语上下文的信息,运用统计的方法进行求解。 1. 语义相似度Dekang Lin认为任何两个...
  • 随机指标(KDJ)的计算方法详解

    千次阅读 2020-12-05 21:40:52
    KDJ指标的计算方法 KDJ指标是一种常用的价格走势判断指标 指标KDJ的计算并不复杂,首先要计算周期(n日、n周等)的RSV值,即未成熟随机指标值,然后再计算K值、D值、J值等。以日KDJ数值的计算为例,其计算公式为(以9...
  • 置信区间计算方法

    千次阅读 2019-11-11 22:12:28
    画图加个阴影,需要用到置信区间的计算方法。SPSS和R应该都能算,这里简单罗列下三阶统计的计算方法。 1 均值的置信区间 以前保存的一个表格,来源未知。补充,对于非正态的数据的小样本数据,参考[这里]。...
  • CRC 循环冗余码的计算方法

    万次阅读 多人点赞 2019-12-19 12:58:32
    前言 期末复习了,发现循环冗余码的计算方法老是忘,特此记录一下 内容仅供参考,如果有不对的地方,敬请海涵,望多指教! 计算步骤 计算冗余位的位数,即生成多项式的最高阶数 在信息位后补冗余位个数的0 将第二步...
  • 补码计算方法

    万次阅读 2019-05-08 21:54:12
    ​​很基础的知识,但是确实很多人并不知道怎么计算,总结了下,可以收藏,需要的时候看下。 与编程息息相关 学习目标: 在vc++6.0中int类型所能存储的数字的范围是多少 int类型所能存储的最大正数用十六...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,521,652
精华内容 1,408,660
关键字:

计算方法