⑴ 文本相似度计算(一):距离方法
距离方法
1、文本的表示
1.1、VSM表示
1.2、词向量表示
1.3、迁移方法
2、距离计算方法
2.1、欧氏距离 (L 2 范数)、曼哈顿距离 (L 1 范数)、 明氏距离
2.2、汉明距离
2.3、Jaccard相似系数、 Jaccard距离( 1-Jaccard相似系数)
2.4、余弦距离
2.5、皮尔森相关系数
2.5、编辑距离
场景举例:
1)计算 Query 和文档的相关度、2)问答系统中计算问题和答案的相似度、3)广告系统中计算 Query 和广告词的匹配程度、4)推荐系统中 要给某个用户推荐某件物品,计算这件物品和这个用户兴趣的相似度
更多地,判断两个query表达的意思是否相同也可以看作属于文本相似度的范畴。
相似度一定是指两个东西(姑且分别用 P 和 Q 表示)的相似程度,而这两个东西可以是任何形式的,例如文本、图片、声音等等。最终要计算相似度,那必须把这些东西抽象成数学形式,说白了 ,就是怎么用数字把 这些 东西表示出来, 一 般会表示成向量或者矩阵。那如果表示成了向量, 计算相似度就可以使用大家在数学课上学的知识了。
这里希望可以比较清晰全面地介绍一下文本相似度的计算方法,目前来说,大致分为距离、hash、深度学习三种方法。
这些所谓的距离其实都是一些 固定 的公式而己,关键在于如何应用。实际应用中可以使用tf-idf、word2vec、LDA等方法实现相似度的距离计算。
很多相似度的第一步其实都是文本的表示问题,即把文本用数字的形式表示出来,这一步目前主要有 VSM(vector space model) ,和 词向量表示 两种方式。
这种方法其实灵活性较大,可以基于分词,对于中文基于字符或n-grams的表示也有一定效果。
1) tf-idf/bow表示 :在给定文档集合C和词典D的条件下,将某篇文档通过词袋模型表示成一个个的词,而后根据 TF-IDF 为每个词计算出一个实数值;
由于词典D的大小为M,因此 将这篇文档转化成一个M维向量 ,如果词典中某个词未出现在文档中,则这个词的在向量中对应的元素为0,若某个词出现在文档中,则这个词在向量中 对应的元素值为这个词的tf-idf值 。这样,就把文档表示成向量了,而这就是 向量空间模型(vector space model) 。从这里也可看出:向量空间模型并没有catch住词(term)与词(term)之间的关系,它假设各个term之间是相互独立的。
而有了文档向量,就可以计算文档之间的相似度了。
这种表示方法与词典大小相关,往往会使文本的表示比较稀疏且高维,可以通过PCA缓解这一问题。
2) 主题模型表示 :实际上VSM可以作为一种文本表示的思想:把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度。
在这个角度,使用LDA,LSA等主题模型同样可以完成文本的VSM表示:将文本表示为topic的向量空间。
这种方法维度可自定义(topic数),且不稀疏,但是可能存在文本对之间距离相似度分布空间密集的情况导致效果不佳。
这种方法一般直接将文本分词后 将词向量相加除以句子长度就可得到 。也可以使用如 smooth inverse frequency的加权方法 将词向量加权:每个词嵌入都由a/(a + p(w))进行加权,其中a的值经常被设置为0.01,而p(w)是词语在语料中预计出现的频率。
一般来说word2vec的词向量方法 强于glove方法 ,而对于word2vec,cbow方法强于skip-gram(具体原因并不复杂,感兴趣可以从训练方法角度思考一下~)
更多地,上述文本表示方法其实会损失或无法捕捉到语义信息,通过bert、elmo等预训练方法的表示更加靠谱,也可以用于无监督的文本相似度计算。
欧氏距离:
曼哈顿距离:
表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。
(1)雅各相似系数:
两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。
杰卡德相似系数是衡量两个集合的相似度一种指标。
实际使用中,可以用去重与不去重两种方式计算,更多地,可以转换为交集的tf-idf值之和除以并集的tf-idf值之和
(2) 杰卡德距离
与杰卡德相似系数相反的概念是杰卡德距离(Jaccard distance)。
杰卡德距离可用如下公式表示:
杰卡德距离用两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。
夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。文本的相似度一般取绝对值。
皮尔森相关系数在推荐系统用的较多,它的公式如下 :
指两个字符串,由一个变成另一个所需的最少的编辑次数,这个编 就包括替换、插入、删除操作。
文本相似度的计算一般使用VSM/cbow+cos距离/欧式距离,或jaccard距离
Dice 系数可以计算两个字符串的相似度:Dice(s1,s2)=2*comm(s1,s2)/(leng(s1)+leng(s2))。
https://blog.csdn.net/weixin_43526820/article/details/89883640?spm=1001.2014.3001.5501
⑵ VSM价值流图的VSM价值流图分析法
对一个产品来说,以下两条主要流动路径是至关重要的:一是从原材料到达顾客手中的生产流程;二是从概念到正式发布的产品设计流程。价值流就是使一个产品通过这些主要流程所需要的全部活动,包括增值活动、必要但非增值活动和非增值活动(即浪费)三类。研究表明,企业用于增值活动的时间仅占整个流程的极小部分,大部分时间都花在非增值的活动中。价值流图是一种使用铅笔和纸的工具,它有助于观察和理解产品通过价值流过程时的物料流动和信息流动,以及其中的增值和非增值活动,从而发现浪费和确定需要改善的地方,为改善活动定下一个蓝图和方向。同时也便于员工了解企业的状态,提供参与改善的机会。
应用价值流图分析企业生产流程,意味着要从全盘看待问题,而不是集中于某个单独的过程;意味着将改变整体,而不仅仅是优化某个部分。价值流图分析可以是针对企业又称为“四堵墙以内”)的活动进行分析和改善,也可以针对“四堵墙以外”,即从供应商出货起到顾客收货为止的整个价值流的分析和念茄纤改善。
图二价值流图示意图在价值流分析中,有一套约定俗成的符号供绘制价值流图之用,使用者只要经常运用,就能轻易掌握。价值流图分析法的一般先对运作过程的现状进行分析,即所谓“当前状态图”。从顾客一端开始,首先要了解顾客的需求情况及节拍Takt,因为Takt决定了生产各个工序的节拍。生产节拍不能满足Takt的要求,就有可仔仿能导致过纳友量生产或停顿、生产不足或延迟,这些都是浪费。延迟发货还会导致顾客的不满意,造成进一步的信誉损失。然后研究运作流程中的每一道工序,从下游追溯到上游,直至供应商。分析每个工序的增值和非增值活动,包括准备、加工、换型、库存、物料转移方法、质量状况、停机次数、班次、人数等等,记录对应的时间。接着要了解和分析物流信息的传递方法和路径,包括顾客到工厂、工厂到供应商、生产物料计划到各工序的信息传递情况,生产计划是如何下达的。最后,有了上面的资料,就可以计算出整个运作过程的生产周期(TotalProctCycleTime)以及相应的增值时间。通常,人们会发现改善之前增值时间只占Tpct的很小比例,远不足5%。
有了“当前状态图”,管理人员一般都能比较容易地判别和确定出浪费所在及其原因,为消灭浪费和持续改善提供目标。“未来状态图”是以精益思想为指导,按照企业的实际情况,为未来的运作模式指明方向,设计新的精益流程。所谓“未来状态”,也仅仅是基于当前的技术和认知水平,在一定时间内可以达到的较为理想的目标。随着人们技术和认知水平的提高,原来的目标又变得不理想了,人们又进入了一个更高层次的改善循环。如此往复,正是精益思想中“与完美竞争,永无止境”的精髓所在。