Text-Processing

如何衡量人類可讀文本文件(許可證文件)之間的相似度或距離?

  • March 13, 2022

我想找出原始碼樹擁有的許可證。電腦應建議哪些許可證文件密切匹配。然後我想meld手動比較文本。

在典型的原始碼樹中,我有可能包含任何類型(許可證)文本的文本文件,並希望將其與/licenses/*.

該指標應強調人類可讀文本的內容。

  • 單個額外單詞的低權重
  • 錯別字權重低
  • 空格的最小權重

如何將文件與 Linux 工具進行比較?

$> 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。具有最小附加熵的文件是相似的。有更好的想法嗎?

為此有專門的工具,您正在尋找開源許可證合規工具。可用工具的幾個例子:

範例輸出可能如下所示。大多數工具還將掃描源文件標頭以獲取許可證,因此您需要將掃描限制為僅許可證文件。

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。

引用自:https://unix.stackexchange.com/questions/653319