嵌入
.. image:: https://readthedocs.org/projects/embeddings/badge/?version=latest :target: http://embeddings.readthedocs.io/en/latest/?badge=latest :alt: 文档状态 .. image:: https://travis-ci.org/vzhong/embeddings.svg?branch=master :target: https://travis-ci.org/vzhong/embeddings
嵌入是一个Python包,为自然语言处理和机器学习提供预训练的词嵌入。
与加载大文件来查询嵌入不同,embeddings
由数据库支持,加载和查询速度快:
.. code-block:: python
>>> %timeit GloveEmbedding('common_crawl_840', d_emb=300)
100次循环,3次中最佳:每次12.7毫秒
>>> %timeit GloveEmbedding('common_crawl_840', d_emb=300).emb('canada')
100次循环,3次中最佳:每次12.9毫秒
>>> g = GloveEmbedding('common_crawl_840', d_emb=300)
>>> %timeit -n1 g.emb('canada')
1次循环,3次中最佳:38.2微秒
安装
.. code-block:: sh
pip install embeddings # 从pypi安装
pip install git+https://github.com/vzhong/embeddings.git # 从github安装
使用
首次使用时,嵌入会以SQLite数据库的形式下载到磁盘上。
对于GloVe等大型嵌入,这可能需要很长时间。
之后使用嵌入时将直接查询数据库。
嵌入数据库存储在 $EMBEDDINGS_ROOT
目录中(默认为 ~/.embeddings
)。请注意,如果您的主目录在NFS上,这个位置可能不合适,因为它会显著减慢数据库查询速度。
.. code-block:: python
from embeddings import GloveEmbedding, FastTextEmbedding, KazumaCharEmbedding, ConcatEmbedding
g = GloveEmbedding('common_crawl_840', d_emb=300, show_progress=True)
f = FastTextEmbedding()
k = KazumaCharEmbedding()
c = ConcatEmbedding([g, f, k])
for w in ['canada', 'vancouver', 'toronto']:
print('嵌入 {}'.format(w))
print(g.emb(w))
print(f.emb(w))
print(k.emb(w))
print(c.emb(w))
Docker
如果您使用Docker,可以在 vzhong/embeddings <https://hub.docker.com/r/vzhong/embeddings>
_ 找到一个预装了Common Crawl 840 GloVe嵌入和Kazuma Hashimoto字符n-gram嵌入的镜像。
要从此容器挂载卷,请在容器中将 $EMBEDDINGS_ROOT
设置为 /opt/embeddings
。
例如:
.. code-block:: bash
docker run --volumes-from vzhong/embeddings -e EMBEDDINGS_ROOT='/opt/embeddings' myimage python train.py
贡献
欢迎提交拉取请求!