Spaces:
Running
Running
from huggingface_hub import InferenceClient | |
import ast | |
import nltk | |
import matplotlib.pyplot as plt | |
import gradio as gr | |
client = InferenceClient("Qwen/Qwen2.5-72B-Instruct") | |
def get_structures(sent): | |
c_structure = ast.literal_eval(client.chat.completions.create( | |
messages=[ | |
{"role": "system", | |
"content": "generate bnf description for buiding c-structure according to lexical-functional grammar framework, no explanation or additional text, use the following structure:\n" | |
"c-structure: 'generated bnf description'" | |
}, | |
{"role": "user", | |
"content": f"generate bnf description for c-structure of the following sentence: {sent}"}, | |
], | |
response_format={ | |
"type": "json", | |
"value": { | |
"properties": { | |
"c-structure": {"type": "string"}}, | |
} | |
}, | |
stream=False, | |
max_tokens=512, | |
temperature=0.7, | |
top_p=0.1 | |
).choices[0].get('message')['content']) | |
c_latex = ast.literal_eval(client.chat.completions.create( | |
messages=[ | |
{"role": "system", | |
"content": "generate nltk respresentation for the LFG c-structure of the sentence according to provided bnf description, no explanation or additional text\n" | |
"example: (S (NP 'Text') (VP 'text')))" | |
}, | |
{"role": "user", | |
"content": f"description: {c_structure['c-structure']}"}, | |
], | |
response_format={ | |
"type": "json", | |
"value": { | |
"properties": { | |
"c-structure": {"type": "string"}}, | |
} | |
}, | |
stream=False, | |
max_tokens=512, | |
temperature=0.7, | |
top_p=0.1 | |
).choices[0].get('message')['content']) | |
tree = nltk.Tree.fromstring(c_latex['c-structure']) | |
with open('output.txt', 'wt') as out: | |
tree.pretty_print(stream=out) | |
with open('output.txt', 'a') as f: | |
f.write(f'c-structure:\n{c_latex["c-structure"]}\n\nBNF-description:\n{c_structure["c-structure"]}') | |
return 'output.txt' | |
interface = gr.Interface( | |
fn=get_structures, | |
inputs=gr.Textbox(label="Enter your sentence"), | |
outputs=gr.File(), | |
title="LFG AI-Parser", | |
description="Enter a sentence and visualize its c-structure according to LFG.", | |
) | |
if __name__ == "__main__": | |
interface.launch(share=True) | |