我想计算许可证的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你想检查它对应的licene时,你可以使用整个license.txt作为查询来查询lucene。
这将使用TF-IDF和所有的IR东西。但你也可以使用更具体的问题,如检查特定的关键字。
相关问题
- 1. 如何计算两个张量之间的余弦相似度?
- 2. 如何计算两列之间的余弦相似度? - Python的
- 3. 计算两个线条图之间的相似度
- 4. 计算两个句子之间的语法相似度
- 5. 计算两个列表之间的相似度
- 6. 如何计算查询和文档之间的相似度?
- 7. 如何计算两个字符串之间的相似性MYSQL
- 8. 如何计算两个单词之间的余弦相似度(matlab中的word2vec)?
- 9. 计算数百万个文档之间的相似性度量
- 10. 如何计算两个句子之间的相似度(句法和语义)
- 11. 计算两个列表的相似度
- 12. 使用SOLR计算两个长度之间的“相似度”/“位数”
- 13. 计算两个配置文件之间的共同特征数量之间的相似度
- 14. 如何通过MinHash计算两个文本与两个包的Jaccard相似度的相似度?
- 15. 如何计算标签之间的相似度?
- 16. 如何计算NLTK中synsets之间的最大相似度? -Python
- 17. 如何用LSA计算句子之间的相似度?
- 18. 计算Lucene文档和质心之间的相似度
- 19. Excel:计算两个列表之间的相似性
- 20. 计算两个序列之间相似性的复杂性
- 21. n个实体之间的计算相似度
- 22. 计算多个词典之间的相似度“分数”
- 23. 计算不同长度的DataFrame列之间的Jaccard相似度
- 24. 如何计算JavaScript中两个列表的相似度
- 25. 如何计算两个用户的百分比相似度?
- 26. 如何计算PySpark中两个向量的余弦相似度?
- 27. 如何计算两个整数的相似度?
- 28. 如何计算一个项目和一个项目集之间的相似度?
- 29. 计算两个副词或两个形容词的相似度
- 30. 如何计算两个用户的常见邻居并计算相似度?
坏消息:我想我将不得不做一些与确切的字符串匹配的一部分,其余我会手动检查...例如,如果许可证文本包含此URL http://www.apache.org/licenses/LICENSE-2.0.txt,则表示它确实是Apache 2.0版。 – ilija 2012-01-18 23:33:10
检出Fossology项目。这是尝试为许可证和其他类型的IP标识创建自动扫描源。萨维诺绝对正确,没有银弹。 Linux基金会的SPDX项目至少最终标准化了已知开源许可证的一组通用标识符。如果开发人员开始在源代码头中使用它们,它将使解析源代码变得更容易。 – 2012-02-10 21:40:18