我计划使用 NLTK、Gensim 和 Scikit Learn 进行一些 NLP/文本挖掘。但我将使用这些库来处理我的组织数据。问题是在使用这些库时“它们是否调用 API 来处理数据”,或者是从 python shell 中取出数据进行处理。这是一个安全问题,所以想知道是否有人有任何文档可供引用。
感谢对此的任何帮助。
最佳答案
通常,对于 NLTK、gensim 和 scikit-learn,算法在其源代码中实现,并在数据上本地运行,而无需发送数据进行其他处理。
我从未注意到这些软件包的任何文档/功能提到对远程/云服务的依赖,也没有看到用户讨论相同的内容。
但是,它们都是大型库,具有许多我从未审查过的功能,并且许多贡献者添加了新选项。而且我不知道项目负责人是否明确 promise 永远不依赖外部服务。
因此可能无法得出明确、永久的答案。如果您的项目关心这种安全性,您应该仔细查看您正在使用的那些函数/类/方法的文档,甚至源代码。 (这些项目都不会故意隐藏对外部服务的依赖。)
您还可以在联系外部服务的能力受到防火墙限制的系统上开发、测试和部署代码,以便您可以检测并阻止与外部计算机的任何未公开或无意的通信。
另请注意,这些库中的每一个又依赖于其他公共(public)库。如果您还担心粗心或故意恶意插入私有(private)数据泄露方法的可能性,那么您可能需要对这些库以及它们引入的所有其他库进行更深入的分析。 (仅仅信任顶级文档可能是不够的。)
此外,每个库都具有实用功能,可以根据用户的明确需求下载示例数据集或共享非代码资源(例如停用词或词典列表)。使用此类功能不会将您的任何数据上传到其他地方,但可能会泄露您正在使用特定功能。上述基于防火墙的方法可能会干扰此类下载步骤。在高度警惕/偏执的情况下,您可能需要特别注意此类额外下载方法的使用和行为,以确保它们不会做超出其应有的事情来更改本地环境或执行/替换其他方法库代码。
最后,通过坚持使用广泛使用的包/功能,以及一直保持可用的较旧版本,您可能会受益于一些“社区保证”,即包的行为是易于理解的,没有令人惊讶的依赖项或漏洞。也就是说,许多其他用户已经对这些代码路径给予了一些关注、分析和实际使用——因此任何问题可能已经被发现、披露和修复。
关于python - 来自 NLTK、Gensim、Scikit Learn 的 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59845191/