|
import os |
|
import requests |
|
import json |
|
from fastapi import FastAPI |
|
from fastapi.staticfiles import StaticFiles |
|
from fastapi.responses import FileResponse |
|
from mosestokenizer import * |
|
from indicnlp.tokenize import sentence_tokenize |
|
|
|
INDIC = ["as", "bn", "gu", "hi", "kn", "ml", "mr", "or", "pa", "ta", "te"] |
|
|
|
def split_sentences(paragraph, language): |
|
if language == "en": |
|
with MosesSentenceSplitter(language) as splitter: |
|
return splitter([paragraph]) |
|
elif language in INDIC: |
|
return sentence_tokenize.sentence_split(paragraph, lang=language) |
|
|
|
|
|
|
|
|
|
|
|
|
|
app = FastAPI() |
|
|
|
uri = "http://216.48.181.177:5050" |
|
|
|
@app.get("/infer_t5") |
|
def t5(input): |
|
API_URL = f"{uri}/batch_translate" |
|
sentence_batch = split_sentences(input, language="en") |
|
response = requests.post( |
|
API_URL, |
|
json={ |
|
"text_lines": sentence_batch, |
|
"source_language": "en", |
|
"target_language": "ml" |
|
}, |
|
) |
|
|
|
output = json.loads(response.text) |
|
return {"output":output["text_lines"][0]} |
|
|
|
app.mount("/", StaticFiles(directory="static", html=True), name="static") |
|
|
|
@app.get("/") |
|
def index() -> FileResponse: |
|
return FileResponse(path="/app/static/index.html", media_type="text/html") |