HoneyTian's picture
update
cb97e31
raw
history blame
3.46 kB
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
https://huggingface.co/spaces/sayakpaul/demo-docker-gradio
"""
import argparse
import json
import platform
from typing import Tuple
import gradio as gr
import langid
from langid.langid import LanguageIdentifier, model
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
from project_settings import project_path, temp_directory
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
"--lang_id_examples_file",
default=(project_path / "lang_id_examples.json").as_posix(),
type=str
)
args = parser.parse_args()
return args
lang_id_identifier = LanguageIdentifier.from_modelstring(model, norm_probs=True)
def click_lang_id_button(text: str, ground_true: str, model_name: str):
global lang_id_identifier
if model_name == "langid":
label, prob = lang_id_identifier.classify(text)
else:
label = "model_name not available."
prob = 0.0
return label, round(prob, 4)
def main():
args = get_args()
brief_description = """
## Language Identification
langid 识别 97 种语言。
https://github.com/saffsd/langid.py
"""
# examples
with open(args.lang_id_examples_file, "r", encoding="utf-8") as f:
lang_id_examples = json.load(f)
# ui
with gr.Blocks() as blocks:
gr.Markdown(value=brief_description)
with gr.Row():
with gr.Column(scale=5):
with gr.Tabs():
with gr.TabItem("lang_id"):
gr.Markdown(value="")
with gr.Row():
with gr.Column(scale=1):
lang_id_text = gr.Textbox(lines=2, max_lines=50, label="text")
lang_id_ground_true = gr.Textbox(label="ground_true")
lang_id_model_name = gr.Dropdown(choices=["langid"], value="langid", label="model_name")
lang_id_button = gr.Button("run", variant="primary")
with gr.Column(scale=1):
lang_id_label = gr.Textbox(label="label")
lang_id_prob = gr.Number(label="prob")
gr.Examples(
examples=lang_id_examples,
inputs=[
lang_id_text,
lang_id_ground_true,
lang_id_model_name,
],
outputs=[lang_id_label, lang_id_prob],
fn=click_lang_id_button
)
# click event
lang_id_button.click(
click_lang_id_button,
inputs=[
lang_id_text,
lang_id_ground_true,
lang_id_model_name,
],
outputs=[lang_id_label, lang_id_prob],
)
blocks.queue().launch(
share=False if platform.system() == "Windows" else False,
server_name="127.0.0.1" if platform.system() == "Windows" else "0.0.0.0",
server_port=7860
)
return
if __name__ == "__main__":
main()