首页 > 其他分享 >Ctranslate2 调用翻译模型 M2M100

Ctranslate2 调用翻译模型 M2M100

时间:2024-06-07 19:32:14浏览次数:18  
标签:调用 zh sp Ctranslate2 token queries M2M100 translation model

点击下载完整代码: 完整代码

import ctranslate2
import sentencepiece as spm
import os
def tokenize(sp, queries):
    if isinstance(queries, list):
        return sp.encode(queries, out_type=str)
    else:
        return [sp.encode(queries, out_type=str)]

def detokenize(sp, queries, lang):
    translation = sp.decode(queries)
    prefix_len = len(lang) + 1
    translation = [''.join(query)[prefix_len:] for query in translation]
    return translation

os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
sp = spm.SentencePieceProcessor()
sp.load("m2m100_418m\sentencepiece.model")
# 假设'zh'对应的文本表示是'<2zh>'(这只是一个例子,实际情况可能不同)
zh_token_text = '<2zh>'
zh_token_id = "__zh__"
print(f"target token: {zh_token_id} "  )
# source = sp.encode("Hello world!", out_type=str)
queries= ["Hello world! ",
          "My name is Jason Hong.",
          "In some cases, you might want to temporarily unload the model and load it back later. ",
          "The Translator object provides the methods unload_model and load_model for this purpose. ",
          "The model can be either fully unloaded or moved to the CPU memory. "]
translator = ctranslate2.Translator("m2m100_418m")
queries_tokenized = tokenize(sp,queries)
print(f"queries_tokenized: {queries_tokenized} ")
results = translator.translate_batch(
source=queries_tokenized,
target_prefix=[[zh_token_id]] * len(queries),
beam_size=5,
max_batch_size=1024,
return_alternatives=False,
disable_unk=True,
replace_unknowns=True,
repetition_penalty=3)

# 对翻译结果进行去分词(detokenize)
translations = [sp.decode(ids.hypotheses[0]) for ids in results]

# 打印翻译结果
for translation in translations:
    print(translation)

输出结果:不知道第四条,怎么还有原文 ,求大神指点

标签:调用,zh,sp,Ctranslate2,token,queries,M2M100,translation,model
From: https://blog.csdn.net/jasonhongcn/article/details/139524022

相关文章

  • 调用文心一言API询问httpx的使用方法2
    [importrequestsimportjsondefget_access_token():url="https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=输入自己的id&client_secret=输入自己id的密码"payload=json.dumps("")headers={"Content-Typ......
  • 调用文心一言API询问httpx的使用方法
    importrequestsimportjsondefget_access_token():url="https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=输入自己的id&client_secret=输入自己id的密码"payload=json.dumps("")headers={"Content-Type......
  • RPC--远程过程调用协议
    什么是RPC?RPC的全称是:RemoteProcedureCall,远程过程调用。它的作用就是允许一台机器上的程序去调用另一台机器上的程序,而不会意识到这个过程是远程的,也就是程序员不需要知道网络通信中的任何细节。为什么要使用RPC?提高开发效率:程序员不需要再关心网络中实现的细节,可以直接......
  • 如何优雅的编写Java接口(安全性,可重复调用,稳定性,追溯性)
    接口编写注意事项签名:对外提供的接口要做签名认证,认证不通过的请求不允许访问接口、提供服务。加密:敏感数据在网络传输过程中应该加密。IP白名单:限制请求的IP,增加IP白名单,一般在网关层处理。限流:尤其是对外提供的接口,无法保障调用的频率,应该做限流处理,保障接口服务正......
  • C语言杂谈:函数栈帧,函数调用时到底发生了什么
            我们都知道在调用函数时,要为函数在栈上开辟空间,函数后续内容都会在栈帧空间中保存,如非静态局部变量,返回值等。这段空间就叫栈帧。    当函数调用,就会开辟栈帧空间,函数返回时,栈帧空间就会被释放。这里的释放并非清空,而是让其无效化,可以后续的使用。1,......
  • C# 调用外部exe的三种方式
    C# 调用外部exe的三种方式调用外部exe是常用的功能,本文主要介绍了C# 调用外部exe的三种方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧 方式一:直接调用Process类来实现:usingSystem.Diagnostics;Processp=Process.Start("program.e......
  • ollama 跨设备访问,轻松搞定远程调用
    ##ollama跨设备访问,轻松搞定远程调用用OllamaAPI调用本地大模型,通过`localhost:11434`就能搞定。但是,想在其他电脑上用IP地址调用,可能会存在问题。网上搜了搜,要么是Linux环境下的设置,要么是调整windows环境变量。st,Windows下也能这么操作。`ollama-h`看下帮助,然......
  • GLM-4-9B领先!伯克利函数调用榜单BFCL的Function Calling评测方法解析与梳理
    智谱公布的GLM-4-9B基于BFCL榜单的工具调用能力测试结果©作者|格林来源|神州问学在智谱最新开源的GLM-4-9B-Chat中,其工具调用能力在BFCL(伯克利函数调用排行榜)榜上获得了超高的总BFCL分,和gpt-4-turbo-2024-04-09几乎不相上下。在榜单中,还提到了AST总分以及Exec总分两个......
  • SendGrid发送邮件时如何调用API接口群发?
    SendGrid发送邮件模板如何定制?邮件发送限制有哪些?SendGrid发送邮件是一种方便快捷的方式,可以在应用程序或网站中轻松地发送大量邮件。通过调用SendGrid的API接口,您可以实现群发邮件,无论是通知用户、发送营销邮件还是其他目的,都能够高效完成。SendGrid发送邮件:调用接口通过S......
  • 基于调用C语言作为reference_model的UVM对全加器的验证
    代码来自于,本篇文章只对其中的细节做探讨UVM的基本教程-CSDN博客首先DUT为加法器,但是舒服不仅是加数和被加数,还有ready和valid,输出也不止是和,还有valid和ready。valid代表数据有效,ready表示已经准备好发送或者接收。加法器的设计语言中,共有三个状态,INITIAL/WAIT/SEND,rst为1......