将公司、产品等实体转换为向量,以支持使用近似最近邻进行可扩展的记录链接/实体解析。
项目描述
实体嵌入
实体嵌入允许您将公司、产品等实体转换为向量,以支持使用近似最近邻进行可扩展的记录链接/实体解析。
使用实体嵌入,您可以训练一个深度学习模型将记录转换到N维嵌入空间中的向量。得益于对比损失,这些向量在嵌入空间中组织,使得相似记录靠近,不同记录远离。嵌入记录可以实现每秒每CPU找到数千个候选重复记录对的可扩展ANN搜索。
实体嵌入在多个数据集上实现了约0.99的召回率,对偶实体比率低于100。实体嵌入旨在以精度为代价实现高召回率。因此,这个库适用于实体解析管道的阻塞/索引阶段。可扩展且抗噪声的阻塞过程通常是实体解析管道性能和质量的瓶颈,所以这个库旨在解决这个问题。请注意,在嵌入记录上的ANN搜索返回多个候选对,必须进行过滤以找到最佳匹配对,可能需要使用成对分类器(有关该示例的说明,请参阅此处)。
实体嵌入基于Amazon描述的AutoBlock模型,并且是它的一个特例。
⚠️ 警告:此项目正在积极开发中。
文档
https://entity-embed.readthedocs.io
需求
系统
- MacOS或Linux(已在最新MacOS和Ubuntu上通过GitHub Actions进行测试)。
- 实体嵌入可以在功能强大的笔记本电脑上训练和运行。在32 GB RAM、RTX 2070 Mobile(8 GB VRAM)、i7-10750H(12线程)的系统上进行了测试。当批量大小小于32且字段类型较少时,即使只有2 GB的VRAM也可以进行训练和运行。
库
- Python: >= 3.6
- Numpy: >= 1.19.0
- PyTorch: >= 1.7.1, < 1.9
- PyTorch Lightning: >= 1.1.6, < 1.3
- N2: >= 0.1.7, < 1.2
以及其他,请参阅requirements.txt。
安装
pip install entity-embed
对于Conda用户
如果您使用Conda,您必须先安装PyTorch以获得适当的CUDA支持。请在使用pip
安装Entity Embed之前,在Conda环境中运行以下命令
conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c conda-forge
示例
运行
pip install -r requirements-examples.txt
然后检查示例Jupyter笔记本
- 去重,当您有一个包含重复数据的单个脏数据集时:notebooks/Deduplication-Example.ipynb
- 记录链接,当您有多个干净的数据集需要链接时:notebooks/Record-Linkage-Example.ipynb
- 运行notebooks/Record-Linkage-Example.ipynb后,您可以检查notebooks/End-to-End-Matching-Example.ipynb以了解如何将Entity Embed与成对分类器集成。
Colab
版本
请参阅CHANGELOG.md。
致谢
此项目由开源贡献者和Vinta Software维护。
此包是用Cookiecutter和audreyr/cookiecutter-pypackage
项目模板创建的。
商业支持
Vinta Software始终在寻找令人兴奋的工作,因此如果您需要任何商业支持,请随时与我们联系:contact@vinta.com.br
参考文献
- Zhang, W., Wei, H., Sisman, B., Dong, X. L., Faloutsos, C., & Page, D. (2020, January). AutoBlock: A hands-off blocking framework for entity matching. In Proceedings of the 13th International Conference on Web Search and Data Mining (pp. 744-752). (pdf)
- Dai, X., Yan, X., Zhou, K., Wang, Y., Yang, H., & Cheng, J. (2020, July). Convolutional Embedding for Edit Distance. In Proceedings of the 43rd International ACM SIGIR Conference on Research and Development in Information Retrieval (pp. 599-608). (pdf) (code)
引用
如果您在研究中使用Entity Embed,请考虑引用它。
BibTeX条目
@software{entity-embed,
title = {{Entity Embed}: Scalable Entity Resolution using Approximate Nearest Neighbors.},
author = {Juvenal, Flávio and Vieira, Renato},
url = {https://github.com/vintasoftware/entity-embed},
version = {0.0.6},
date = {2021-07-16},
year = {2021}
}
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
entity-embed-0.0.6.tar.gz的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | d5aaafe92bc3f817c5331978771a3cf3e8fe982377ef69d18608a12db993946b |
|
MD5 | b3ef2682b93e31f8d6470f4bbce6f70d |
|
BLAKE2b-256 | 9a18385655bba9c9c7369d7d27ec30333655b71a066d5a70c4f6aa41514aef67 |
entity_embed-0.0.6-py2.py3-none-any.whl的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 056b52ee1067debb275f8155c0d6fb63343822dfbaf0623b35f9dd93435a7330 |
|
MD5 | daf40601fc2eb1923ab06064842fdb70 |
|
BLAKE2b-256 | a59b9d11327de548dc2473c9718305126aa1ba0e845a286b54692f55b114df15 |