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

File 如何计算两个license.txt文件之间的相似性?,file,text,information-retrieval,similarity,File,Text,Information Retrieval,Similarity,我想计算许可证的txt文件之间的相似性,这样我就可以根据license.txt识别它对应的许可证。我应该使用什么样的信息检索技术?一旦我编程tf idf,但我不确定这是否适用于这里。你有什么建议 您可以使用将所有许可证作为文档索引每个Lucene文档都是一个许可证。当您有一个新的license.txt,您想检查它对应的许可证时,您可以使用整个license.txt作为查询来查询lucene 那就是使用TF-IDF和所有红外设备。但是您也可以使用更具体的方法来解决这个问题,比如检查特定的关键字。您

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

您可以使用将所有许可证作为文档索引每个Lucene文档都是一个许可证。当您有一个新的license.txt,您想检查它对应的许可证时,您可以使用整个license.txt作为查询来查询lucene

那就是使用TF-IDF和所有红外设备。但是您也可以使用更具体的方法来解决这个问题,比如检查特定的关键字。

您可以将所有许可证作为文档进行索引,每个Lucene文档都是一个许可证。当您有一个新的license.txt,您想检查它对应的许可证时,您可以使用整个license.txt作为查询来查询lucene


那就是使用TF-IDF和所有红外设备。但是你也可以使用更具体的方法来解决这个问题,比如检查特定的关键字。

我已经研究这个问题3年多了,让我告诉你,这绝非小事,你不会用单一的算法来解决它,更不用说tf idf和余弦相似性了

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

类似的许可证文本agpl/gpl/lgpl、bsd/apache1.1/openssl、mit/isc/curl极难消除歧义,并且会有极高的余弦相似性,除非您在功能选择方面非常聪明,否则可能。。。 这同样适用于同一许可证lgpl 2.0/2.1的不同版本 LICENSE.TXT文件通常包含多个许可证 bsd通知很难捕捉到,即除了权利持有人之外,您的文本是相同的
你最终将使用多种方法的组合,不幸的是,没有银弹。

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

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

类似的许可证文本agpl/gpl/lgpl、bsd/apache1.1/openssl、mit/isc/curl极难消除歧义,并且会有极高的余弦相似性,除非您在功能选择方面非常聪明,否则可能。。。 这同样适用于同一许可证lgpl 2.0/2.1的不同版本 LICENSE.TXT文件通常包含多个许可证 bsd通知很难捕捉到,即除了权利持有人之外,您的文本是相同的
您最终将使用多种方法的组合,不幸的是,没有银弹。

坏消息:我想我必须对精确的字符串匹配做一些工作,其余部分我将手动检查。。。e、 g.如果许可证文本包含此url,则表示它确实是Apache 2.0版。请检查Fossology项目。这是一种创建自动扫描源以获取许可证和其他类型的IP标识的尝试。萨维诺是绝对正确的,没有银弹。LinuxFoundation的SPDX项目至少最终对已知开源许可证的一组通用标识符进行了标准化。如果开发人员开始在源代码标题中使用它们,那么解析源代码就会容易得多。坏消息:我想我必须对精确的字符串匹配做一些工作,其余的我将手动检查。。。e、 g.如果许可证文本包含此url,则表示它确实是Apache 2.0版。请检查Fossology项目。这是一种创建自动扫描源以获取许可证和其他类型的IP标识的尝试。萨维诺是绝对正确的,没有银弹。LinuxFoundation的SPDX项目至少最终对已知开源许可证的一组通用标识符进行了标准化。如果开发人员开始在源代码头中使用它们,那么解析源代码就会容易得多。