使用Helsinki-NLP提供中英文翻译
技术探讨 未结
0
4
雷锋吧
雷锋吧
2023年05月25日


模型:Helsinki-NLP/opus-mt-zh-en,Helsinki-NLP/opus-mt-en-zh
web应用:fastapi

pip install fastapi
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from fastapi import FastAPI
from typing import Union
app = FastAPI()

tokenizer_zh2en = AutoTokenizer.from_pretrained(
    "G:/model/Helsinki-NLP/opus-mt-zh-en")
model_zh2en = AutoModelForSeq2SeqLM.from_pretrained(
    "G:/model/Helsinki-NLP/opus-mt-zh-en")


def zh2en(text):
    tokenized_text = tokenizer_zh2en([text], return_tensors='pt')
    translation = model_zh2en.generate(**tokenized_text, max_new_tokens=1024)
    return tokenizer_zh2en.batch_decode(translation, skip_special_tokens=True)[0]


tokenizer_en2zh = AutoTokenizer.from_pretrained(
    "G:/model/Helsinki-NLP/opus-mt-en-zh")
model_en2zh = AutoModelForSeq2SeqLM.from_pretrained(
    "G:/model/Helsinki-NLP/opus-mt-en-zh")


def en2zh(text):
    tokenized_text = tokenizer_en2zh([text], return_tensors='pt')
    translation = model_en2zh.generate(**tokenized_text, max_new_tokens=1024)
    return tokenizer_en2zh.batch_decode(translation, skip_special_tokens=True)[0]


@app.get('/')
async def hello_world():

    return 'Hello FastApi!'


@app.get('/zh2en')
async def r_zh2en(text: Union[str, None] = None):
    if text == None:
        text = "我是中国人民的儿子"
    str = zh2en(text)
    return {"error":0,"data":str}


@app.get('/en2zh')
async def r_en2zh(text :Union[str, None] = None):
    if text == None:
        text = "I am a Chinese person"    # 如果没有传递text参数,则使用中文作为内容作为
    str = en2zh(text)
    return {"error":0,"data":str}



消灭零回复