Text-Processing
如何衡量人類可讀文本文件(許可證文件)之間的相似度或距離?
我想找出原始碼樹擁有的許可證。電腦應建議哪些許可證文件密切匹配。然後我想
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。