나는 라이센스의 txt 파일 간의 유사성을 계산하고 싶습니다. 그러면 해당 라이센스에 해당하는 license.txt를 기반으로합니다. 어떤 종류의 정보 검색 기술을 사용해야합니까? 일단 tf-idf를 프로그래밍했는데 이것이 여기에 적용 가능한지 확실하지 않습니다. 너는 무엇을 제안 하는가?두 개의 license.txt 파일 간의 유사성을 계산하는 방법은 무엇입니까?
2
A
답변
3
저는 3 년 이상이 문제를 해결하기 위해 노력해 왔습니다. 아주 간단하다고 말하지만, tf-idf와 코사인 유사성을 제외하고는 단일 알고리즘으로 해결하지 않을 것입니다.
도전의 숫자가 있습니다, 나는 그들 중 일부 쓰기 :
- 유사한 라이센스 텍스트를 (AGPL/GPL/LGPL, BSD/apache1.1 /하려면 openssl, MIT/ISC/컬)이 있습니다 매우 어려운 (당신이 기능 선택과 관련하여 매우 똑똑하지 않은 한 ...)
- 동일한 라이선스의 다른 버전 (lgpl 2.0/2.1)에 적용됩니다.
- LICENSE.TXT 파일에 여러 라이센스가 포함되는 경우가 많음
- bsd 통지를 수신하는 것은 매우 어렵 기 때문에, 즉. 당신은 권리 보유자를 제외하고 동일한 원본이 있습니다
당신은 결국 접근법의 조합을 사용하게 될 것이며, 불행히도 은색 총알은 없습니다.
1
Lucene을 사용하여 모든 라이센스를 문서화 할 수 있습니다 (각 Lucene 문서는 라이센스입니다). 새로운 license.txt가있을 때 어떤 라이센스가 해당 라이센스인지 확인하려면 전체 license.txt를 쿼리로 사용하여 lucene을 쿼리하면됩니다.
TF-IDF와 모든 IR 정보를 사용합니다. 그러나 특정 키워드를 확인하는 것과 같은 문제에보다 구체적인 것을 사용할 수도 있습니다.
관련 문제
- 1. 문자열의 두 시퀀스 간의 유사성을 측정하는 알고리즘
- 2. 두 Geolocations 간의 각도를 계산하는 방법은 무엇입니까?
- 3. 두 개념 맵 간의 유사성을 비교하는 방법
- 4. 약간의 차이가있는 데이터 세트 간의 유사성을 비교하는 좋은 방법은 무엇입니까?
- 5. 두 문자열을 비교하고 두 문자열의 유사성을 결정하는 방법은 무엇입니까?
- 6. 두 도시 간의 여행 시간을 계산하는 방법은 무엇입니까?
- 7. EMGU에서 두 이미지 간의 상관 관계를 계산하는 방법은 무엇입니까?
- 8. 두 선수 간의 회문 게임에서 총점을 계산하는 방법은 무엇입니까?
- 9. Java의 두 다차원 배열 간의 유사성을 비교하는 방법
- 10. 문장 간의 '대략적인'의미 상 유사성을 추정하는 좋은 방법은 무엇입니까?
- 11. 유사성을 나열합니다.
- 12. 두 데이터 그룹 간의 거리를 계산하는 방법
- 13. C에서 두 세트 간의 차이를 계산하는 방법?
- 14. 두 문자열 간의 유사성을 측정하는 효율적인 방법은 무엇입니까? (Levenshtein Distance는 스택을 너무 깊게 만듭니다.)
- 15. 두 비트 시퀀스 간의 유사성을 빠르게 결정하기위한 패키지
- 16. C#에서 두 문자열 간의 유사성을 어떻게 계산합니까?
- 17. T-SQL에서 두 개의 다른 열을 계산하는 방법은 무엇입니까?
- 18. MySQL과 PHP를 사용하여 두 개의 MySQL 테이블을 계산하는 방법은 무엇입니까?
- 19. 두 위치 간의 시간차를 계산하는 방법
- 20. 지오 코드 간의 주소 라우팅 거리를 계산하는 방법은 무엇입니까?
- 21. 파일 크기를 계산하는 방법은 무엇입니까?
- 22. 문자 유사성을 결정하는 방법은 무엇입니까?
- 23. 두 개의 이름 목록 간의 일치를 결정하는 방법은 무엇입니까?
- 24. 유사성을 위해 다각형 비교
- 25. 이미지 영역 사이의 유사성을 계산하는 일반적인 알고리즘은 무엇입니까?
- 26. 두 문자열 간의 차이점을 찾는 방법은 무엇입니까?
- 27. Lucene이 문서 유사성을 수행합니다.
- 28. Lucene과 Java를 사용하여 tf-idf로 코사인 유사성을 계산하는 방법
- 29. Lucene의 두 파일 간의 차이점
- 30. 두 DateTime의 차이를 ms로 계산하는 방법은 무엇입니까?
나쁜 소식 : 정확한 문자열 일치 부분을 수행해야하고 나머지는 수동으로 검사 할 것입니다. 예를 들어 라이센스 텍스트에 http://www.apache.org/licenses/LICENSE-2.0.txt라는 URL이 포함되어 있으면 Apache 버전 2.0이라는 것을 의미합니다. – ilija
Fossology 프로젝트를 체크 아웃하십시오. 이것은 라이센스 및 다른 종류의 IP 식별을위한 소스의 자동 스캔을 작성하려는 시도입니다. 사비 노는 은색 총알이 절대적으로 옳다. Linux foudation의 SPDX 프로젝트는 알려진 오픈 소스 라이센스에 대한 공통된 식별자 세트를 적어도 최종적으로 표준화하고 있습니다. 개발자가 소스 코드 헤더에서 사용하기 시작하면 훨씬 쉽게 소스를 파싱 할 수 있습니다. –