跳转到主要内容

LASER 语言无关句子表示是一种工具包,用于计算多语言句子嵌入,并使用这些嵌入进行文档分类、比特语过滤和挖掘。

项目描述

LASER编码器

LASER语言无关句子表示工具包

laser_encoders是Facebook LASER 库的官方Python包。它提供了一种简单方便的方法来在Python中使用LASER嵌入。它允许您使用LASER工具包计算多语言句子嵌入。这些嵌入可用于各种自然语言处理任务,包括文档分类、比特语过滤和挖掘。

依赖项

  • Python >= 3.8
  • PyTorch >= 1.10.0
  • sacremoses >=0.1.0
  • sentencepiece >=0.1.99
  • numpy >=1.21.3
  • fairseq >=0.12.2

您可以在此处找到完整的需求列表

安装

您可以从PyPI安装laser_encoders

pip install laser_encoders

或者,您可以从此存储库的本地克隆中安装,并使用可编辑模式

pip install . -e

用法

以下是如何使用LaserEncoderPipeline获取句子嵌入的简单示例

注意:默认情况下,模型将下载到~/.cache/laser_encoders目录。要指定不同的下载位置,可以提供参数model_dir=路径/to/模型目录

from laser_encoders import LaserEncoderPipeline

# Initialize the LASER encoder pipeline
encoder = LaserEncoderPipeline(lang="igbo")

# Encode sentences into embeddings
embeddings = encoder.encode_sentences(["nnọọ, kedu ka ị mere"])
# If you want the output embeddings to be L2-normalized, set normalize_embeddings to True
normalized_embeddings = encoder.encode_sentences(["nnọọ, kedu ka ị mere"], normalize_embeddings=True)

如果您希望对标记化和编码过程有更多控制,可以分别初始化标记器和编码器

from laser_encoders import initialize_encoder, initialize_tokenizer

# Initialize the LASER tokenizer
tokenizer = initialize_tokenizer(lang="igbo")
tokenized_sentence = tokenizer.tokenize("nnọọ, kedu ka ị mere")

# Initialize the LASER sentence encoder
encoder = initialize_encoder(lang="igbo")

# Encode tokenized sentences into embeddings
embeddings = encoder.encode_sentences([tokenized_sentence])

默认情况下,初始化编码器时将spm标志设置为True,以确保下载相应的spm模型。

支持的语言:您可以从FLORES200数据集中指定任何语言。这包括由其全代码识别的语言(如“ibo_Latn”)和更简单的替代方案(如“igbo”)。

下载预训练模型

如果您希望单独下载模型,可以使用以下命令

python -m laser_encoders.download_models --lang=your_prefered_language  # e.g., --lang="igbo""

默认情况下,下载的模型将存储在~/.cache/laser_encoders目录。要指定不同的下载位置,请使用以下命令

python -m laser_encoders.download_models --model-dir=path/to/model/directory

有关可用参数的完整列表,您可以使用下载模型脚本的--help命令。

下载成功后,您可以使用SentenceEncoder在您希望的语言中对您的文本进行标记化和编码。以下是一个示例

from laser_encoders.models import SentenceEncoder
from pathlib import Path

encoder = SentenceEncoder(model_path=path/to/downloaded/model, spm_model=Path(path/to/spm_model), spm_vocab=path/to/cvocab)
embeddings = encoder("This is a test sentence.")

如果您想单独进行标记化,可以这样做

from laser_encoders.laser_tokenizer import LaserTokenizer

tokenizer = LaserTokenizer(spm_model=Path(path/to/spm_model))

tokenized_sentence = tokenizer.tokenize("This is a test sentence.")

encoder = SentenceEncoder(model_path=path/to/downloaded/model, spm_vocab=path/to/cvocab)
embeddings = encoder.encode_sentences([tokenized_sentence])

对于将文件标记化为字符串,可以使用以下方法

tokenized_sentence = tokenizer.tokenize_file(inp_fname=Path(path/to/input_file.txt), out_fname=Path(path/to/output_file.txt))

现在您可以使用这些嵌入进行下游任务

有关更高级的使用和选项,请参阅官方LASER存储库文档。

LASER版本和相关包

对于熟悉LASER早期版本的用户,您可能已经遇到了laserembeddings包。此包主要处理LASER-1模型嵌入。

对于最新的LASER-2,3模型,请使用新引入的laser_encoders包,它提供更好的性能和对更广泛语言的支持。

贡献

我们欢迎开发社区为增强和改进laser_encoders做出贡献。如果您想做出贡献,可以

  1. 通过GitHub问题提交错误报告或功能请求。
  2. 分支存储库,进行更改,并提交审阅请求。

请遵循我们的贡献指南,以确保过程顺利。

行为准则

我们期望所有贡献者遵守我们的行为准则

贡献者

以下人员为此项目做出了贡献

许可证

此包根据LASER BSD许可证发布。

项目详情


下载文件

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

源代码分发

laser_encoders-0.0.2.tar.gz (19.4 kB 查看哈希值)

上传时间: 源代码

构建分发

laser_encoders-0.0.2-py3-none-any.whl (24.3 kB 查看哈希值)

上传时间: Python 3