如何计算两个license.txt文件之间的相似度?

时间:2012-01-17 20:02:17

标签: file text information-retrieval similarity

我想计算许可证的txt文件之间的相似性,这样我就可以根据license.txt识别它对应的许可证。我应该使用什么样的信息检索技术?一旦我编写了tf-idf,但我不确定这是否适用于此。你有什么建议?

2 个答案:

答案 0 :(得分:3)

我已经在这个问题上工作了3年多,让我告诉你它远非微不足道,你不会用单一算法解决它,更不用说tf-idf和余弦相似性。

有很多挑战,我写了一些:

  1. 类似的许可文本(agpl / gpl / lgpl,bsd / apache1.1 / openssl,mit / isc / curl)极难消除歧义,并且具有极高的余弦相似性(除非你对特征选择非常聪明) ,也许......)
  2. 同样适用于同一许可证的不同版本(lgpl 2.0 / 2.1)
  3. LICENSE.TXT文件通常包含多个许可证
  4. bsd通知非常难以捕捉,即。除权利持有人外,您有相同的文字
  5. 你将最终使用各种方法,不幸的是没有银弹。

答案 1 :(得分:1)

您可以使用Lucene将所有许可证编入索引作为文档(每个Lucene文档都是许可证)。如果你有一个新的license.txt,你想检查它对应的licene,你可以使用整个license.txt查询lucene作为查询。

那将是使用TF-IDF和所有IR的东西。但您也可以使用更具体的问题,例如检查特定的关键字。