人間が読めるテキストファイル(ライセンスファイル)間の類似性や距離をどのように測定しますか?

人間が読めるテキストファイル(ライセンスファイル)間の類似性や距離をどのように測定しますか?

ソースツリーにどのライセンスがあるか知りたいです。コンピュータは、どのライセンスファイルが密接に一致するかを提案する必要があります。その後、meldテキストとマニュアルを比較したいと思います。

一般的なソースツリーには、任意の種類の(ライセンス)テキストを含むことができるテキストファイルがあります/licenses/*

指標は、人間が読めるテキストの内容を強調する必要があります。

  • 1つの追加の単語には、より少ない重みが与えられます。
  • スペルミスには重みがあまり適用されません。
  • スペースの最小重量

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

私が持っている1つのアイデアは、ライセンスのエントロピーを計算し、ライセンスをリンクしてunknown.txtエントロピーを再計算することでしたent。追加のエントロピーが最小化されたファイルは似ています。より良いアイデアがありますか?

ベストアンサー1

これを達成するための専門ツールがあります。あなたはそのうちの1つを探しています。オープンソースライセンスに準拠ツール。利用可能なツールのいくつかの例:

サンプル出力は次のとおりです。ほとんどのツールはソースファイルヘッダーでもライセンスを検索するため、ライセンスファイルのみを検索するように制限することをお勧めします。

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も提供します。

おすすめ記事