사람이 읽을 수 있는 텍스트 파일(라이센스 파일) 간의 유사성이나 거리를 어떻게 측정합니까?

사람이 읽을 수 있는 텍스트 파일(라이센스 파일) 간의 유사성이나 거리를 어떻게 측정합니까?

소스트리에 어떤 라이센스가 있는지 알고 싶습니다. 컴퓨터는 어떤 라이센스 파일이 밀접하게 일치하는지 제안해야 합니다. 그런 다음 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. 추가 엔트로피가 최소화된 파일은 유사합니다. 더 좋은 아이디어가 있나요?

답변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도 제공합니다.

답변2

(아마도 편견이 있는) 관리자로서https://github.com/nexB/scancode-toolkit최고의 선택이 아닐까 싶습니다 :D

특히 이 접근 방식은 여기에 나열되었거나 다른 방법으로 사용 가능한 대부분의 다른 도구와 다릅니다. 다양한 기술을 사용하여 궁극적으로 귀하의 텍스트와 약 30,000개의 라이센스가 부여된 텍스트 및 공지(OP에서 인용된 융합과 같은)를 비교합니다. 비결은 충분히 빠르게 만드는 것입니다. diff를 사용하면 정확도가 더 높아집니다. 이제 이 분야에서 업계 최고의 도구가 되었으며 오픈 소스 라이선스 감지를 진지하게 받아들이는 대부분의 도구와 조직에서 사용됩니다.

관련 정보