Spaces:
Build error
Build error
| import gradio as gr | |
| import pandas as pd | |
| from jiwer import wer | |
| import re | |
| import os | |
| REGEX_YAML_BLOCK = re.compile(r"---[\n\r]+([\S\s]*?)[\n\r]+---[\n\r]") | |
| def parse_readme(filepath): | |
| if not os.path.exists(filepath): | |
| return "No README.md found." | |
| with open(filepath, "r") as f: | |
| text = f.read() | |
| match = REGEX_YAML_BLOCK.search(text) | |
| if match: | |
| text = text[match.end():] | |
| return text | |
| def get_wer(df: pd.DataFrame): | |
| print(df.keys()) | |
| preds = df.iloc[:, 0].tolist() | |
| truths = df.iloc[:, 1].tolist() | |
| print(truths, preds, type(truths)) | |
| err = wer(truths, preds) | |
| return err | |
| def compute(input_df: pd.DataFrame = None, input_file: str = None): | |
| if input_df is not None and not input_df.empty and input_file is None: | |
| print("in df") | |
| if not (input_df.values == "").any(): | |
| print("in df but empty string") | |
| return get_wer(input_df) | |
| elif input_file and (input_df.values == "").any(): | |
| print("in file") | |
| file_df = pd.read_csv(input_file.name) | |
| print(file_df) | |
| return get_wer(file_df) | |
| else: | |
| print("in error") | |
| raise ValueError("Please don't provide both DataFrame and file.") | |
| description = """ | |
| To calculate WER: | |
| * Type the `prediction` and the `truth` in the respective columns in the below calculator. | |
| * You can insert multiple predictions and truths by clicking on the `New row` button. | |
| * To calculate the WER after inserting all the texts, click on `Submit`. | |
| OR | |
| * Upload a CSV file with the columns being `prediction` and `truth`. | |
| * The first row of the file is supposed to have the column names. | |
| * The sentences should be enclosed within `""` and the prediction and truth need to be separated by `,`. | |
| * Find an example file [here](https://huggingface.co/spaces/neuralspace/wer_calculator/resolve/main/example.csv). | |
| * To calculate the WER after uploading the CSV file, click on `Submit`. | |
| NOTE: Pleasd don't use both the methods at once. | |
| """ | |
| demo = gr.Interface( | |
| fn=compute, | |
| inputs=[ | |
| gr.components.Dataframe( | |
| headers=["prediction", "truth"], | |
| col_count=2, | |
| row_count=1, | |
| label="Input" | |
| ), | |
| gr.File( | |
| file_count='single', | |
| file_types=['.csv'], | |
| label="CSV File" | |
| ) | |
| ], | |
| outputs=gr.components.Textbox(label="WER"), | |
| description=description, | |
| title="WER Calculator", | |
| article=parse_readme("README.md") | |
| ) | |
| demo.launch() | |