首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何度量人类可读的文本文件(许可文件)之间的相似性或距离?

如何度量人类可读的文本文件(许可文件)之间的相似性或距离?
EN

Unix & Linux用户
提问于 2021-06-08 05:47:08
回答 2查看 173关注 0票数 -1

我想知道源树有哪个许可证。计算机应该提出一个建议,说明哪些许可文件是紧密匹配的。然后,我想要比较文本与meld手动。

在典型的源代码树中,我有可以包含任何类型(许可)文本的文本文件,并希望将其与/licenses/*中已知的许可文件进行比较。

衡量标准应强调人类可读性文本的内容。

  • 对单个额外单词的权重低
  • 打字重量低
  • 白空间上的最小权

如何将该文件与Linux工具进行比较?

代码语言:javascript
复制
A10gt; supertool unknown.txt /licenses/*  # example of an imaginary solution

0.10 gmap.txt
0.12 gnuplot.txt
0.14 GOG-EULA.txt
0.25 google-chrome.txt
0.13 Google-TOS.txt
0.87 GPL-1.txt
0.95 GPL-1+.txt
0.99 GPL-2.txt
0.56 GPL-2+.txt
0.60 GPL-3.txt
0.78 GPL-3+.txt

我的一个想法是计算许可的熵,然后将unknown.txt和许可连接起来,再用ent计算熵。附加熵最小的文件是相似的。有更好的主意吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2021-06-08 06:32:52

这里有专门的工具,您正在寻找一个开源许可遵从工具。可用工具的几个例子:

示例输出可以如下所示。大多数工具还会扫描源文件头以获取许可,因此您需要将扫描限制为仅许可文件。

代码语言:javascript
复制
Directory                       File            License            Confidence  Size
------------------------------------------------------------------------------------
/home/vtrefny/projects/blivet/  COPYING         GPL-2.0-or-later   99.47%      17.7K
/home/vtrefny/projects/blivet/  COPYING.LESSER  LGPL-2.1-or-later  99.63%      25.9K
------------------------------------------------------------------------------------

还有更多,你应该能够找到合适的工具供你使用。其中一些还提供了库/API,如果您需要一些非常具体的东西。

票数 3
EN

Unix & Linux用户

发布于 2022-03-13 16:26:46

作为https://github.com/nexB/scancode-toolkit的(可能有偏见的)维护者,我想说这是最好的选择。

特别是,它与这里列出的大多数其他工具或其他可用的工具有不同的方法。它使用多种技术,并最终在您的文本和大约30,000个许可文本和通知之间做了一个差异(比如OP引用的meld )。诀窍是让它足够快。使用diff提供了更好的准确性:它现在是这一领域的行业领先工具,大多数工具和orgs都对开源许可证检测非常认真。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/653319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档