跳转到主要内容

生产就绪的LASER多语言嵌入

项目描述

LASER嵌入

GitHub Workflow Status PyPI - Python Version PyPI PyPI - License

开箱即用的多语言句子嵌入。

LASER embeddings maps similar sentences in any language to similar language-agnostic embeddings

laserembeddings是将Facebook Research的LASER (语言无关句子表示)打包成pip包,用于计算多语言句子嵌入的生产就绪版本。

有关完整文档,请查看项目的repo (master分支此版本)。

入门指南

先决条件

您需要Python 3.6+和PyTorch。请参阅PyTorch安装说明

安装

pip install laserembeddings

中文语言

默认情况下不支持中文。如果您需要嵌入中文句子,请使用“zh”额外功能安装laserembeddings。此额外功能包括jieba

pip install laserembeddings[zh]

日语语言

默认情况下不支持日语。如果您需要嵌入日语句子,请使用“ja”额外功能安装laserembeddings。此额外功能包括mecab-python3ipadic 字典,后者在原始LASER项目中使用。

如果您在运行laserembeddings时遇到关于日语句子的问题,请参阅mecab-python3文档进行故障排除。

pip install laserembeddings[ja]

下载预训练模型

python -m laserembeddings download-models

这将下载模型到包源代码旁边的默认data目录。使用python -m laserembeddings download-models path/to/model/directory将模型下载到指定位置。

使用方法

from laserembeddings import Laser

laser = Laser()

# if all sentences are in the same language:

embeddings = laser.embed_sentences(
    ['let your neural network be polyglot',
     'use multilingual embeddings!'],
    lang='en')  # lang is only used for tokenization

# embeddings is a N*1024 (N = number of sentences) NumPy array

如果句子不在同一语言中,您可以传递一个语言代码列表

embeddings = laser.embed_sentences(
    ['I love pasta.',
     "J'adore les pâtes.",
     'Ich liebe Pasta.'],
    lang=['en', 'fr', 'de'])

如果您已将模型下载到特定目录

from laserembeddings import Laser

path_to_bpe_codes = ...
path_to_bpe_vocab = ...
path_to_encoder = ...

laser = Laser(path_to_bpe_codes, path_to_bpe_vocab, path_to_encoder)

# you can also supply file objects instead of file paths

如果您想从S3拉取模型

from io import BytesIO, StringIO
from laserembeddings import Laser
import boto3

s3 = boto3.resource('s3')
MODELS_BUCKET = ...

f_bpe_codes = StringIO(s3.Object(MODELS_BUCKET, 'path_to_bpe_codes.fcodes').get()['Body'].read().decode('utf-8'))
f_bpe_vocab = StringIO(s3.Object(MODELS_BUCKET, 'path_to_bpe_vocabulary.fvocab').get()['Body'].read().decode('utf-8'))
f_encoder = BytesIO(s3.Object(MODELS_BUCKET, 'path_to_encoder.pt').get()['Body'].read())

laser = Laser(f_bpe_codes, f_bpe_vocab, f_encoder)

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

laserembeddings-1.1.2.tar.gz (12.8 kB 查看哈希值)

上传时间

构建分发

laserembeddings-1.1.2-py3-none-any.whl (13.4 kB 查看哈希值)

上传时间 Python 3

由以下支持