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做出贡献。如果您想做出贡献,可以
- 通过GitHub问题提交错误报告或功能请求。
- 分支存储库,进行更改,并提交审阅请求。
请遵循我们的贡献指南,以确保过程顺利。
行为准则
我们期望所有贡献者遵守我们的行为准则。
贡献者
以下人员为此项目做出了贡献
许可证
此包根据LASER BSD许可证发布。
项目详情
下载文件
下载适用于您平台上的文件。如果您不确定该选择哪个,请了解更多有关安装包的信息。