llm-syntax / app.py
missvector's picture
Update space
632dfc5
raw
history blame
2.47 kB
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)