我正在尝试复制科恩最近的工作论文(懒惰价格)。
本文的主要思想是,“与去年相比具有较低相似性的发行财务披露的公司平均表现可能会较差”。
为了测量相似性,他使用了四个相似性度量:余弦,Jaccard,Sim_MinEdit和Sim_Simple。
我认为前两种措施得到了广泛使用,因此与它们相关的方法已经相当完善。
但是,最后两个似乎很模棱两可。
对于Sim_MinEdit,他解释说,它是通过计算将一个文档转换为另一个文档所需的最少操作数来计算的。 (例如,从“我们预计需求将增加”到“我们预计销售疲软”,“需求”,“达到”和“增加”将被删除,而“疲软”,“进入”和“销售” ”。)
它看起来与“编辑距离”(例如Levenshtein距离)非常相似。但是,就我所寻找的而言,有关互联网中Levenshtein的所有材料都是在“字符级”计算的。
我的问题是,“有没有一种算法可以使用Levenshtein的基本原理来计算单词级别的相似度?”
第二,Sim_Simple在Microsoft Words中使用“ Track Changes”或在Unix / Linux终端中使用“ diff”功能。我发现python上的Difflib-SequenceMatcher可以完成相同的工作。但是,由于我要在字词级别上衡量相似度,因此我正在使用
SequenceMatcher(None, doc1.split(), doc2.split()).ratio())
代替
SequenceMatcher(None, doc1, doc2).ratio())
其中doc1,doc2是文本。
我知道stackoverflow并不是解决此类问题的地方,但是,由于我自己未能在Web上找到任何相关信息,因此一直被困在这里,我一直在寻求帮助。.