Sebbe33 commited on
Commit
f0f75ab
·
verified ·
1 Parent(s): ec51c24

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -10
app.py CHANGED
@@ -2,18 +2,23 @@ import gradio as gr
2
  from huggingface_hub import InferenceClient
3
  import urllib.request
4
  import xml.etree.ElementTree as ET
 
5
 
6
  # HuggingFace Inference Client
7
  #client = InferenceClient("meta-llama/Llama-3.3-70B-Instruct")
8
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
9
 
 
 
10
 
11
- # Funktion, um die Eingabe zu bereinigen und einen prägnanten Query zu erstellen
12
  def generate_query(input_text):
13
- stopwords = ["welche", "gibt", "es", "zum", "thema", "studien", "über", "zu", "dem"]
14
- words = input_text.lower().split()
15
- query = " ".join([word for word in words if word not in stopwords])
16
- return query.strip()
 
 
17
 
18
  # Funktion, um relevante Studien von arXiv zu suchen
19
  def fetch_arxiv_summary(query, sort_by="relevance", sort_order="descending", max_results=20):
@@ -26,13 +31,14 @@ def fetch_arxiv_summary(query, sort_by="relevance", sort_order="descending", max
26
  summaries = []
27
  for entry in root.findall(".//{http://www.w3.org/2005/Atom}entry"):
28
  title = entry.find("{http://www.w3.org/2005/Atom}title")
29
- link = entry.find("{http://www.w3.org/2005/Atom}link")
30
  summary = entry.find("{http://www.w3.org/2005/Atom}summary")
31
- if summary is not None and title is not None and link is not None:
32
- summaries.append(f"Titel: {title.text.strip()}\nLink: {link.text.strip()}\nZusammenfassung: {summary.text.strip()}")
 
33
  return summaries if summaries else ["Keine relevanten Studien gefunden."]
34
  except Exception as e:
35
- return [f"Fehler beim Abrufen der Studie: {str(e),str(url)}"]
36
 
37
  # Chatbot-Logik mit arXiv-Integration
38
  def respond(
@@ -59,7 +65,7 @@ def respond(
59
  if val[1]:
60
  messages.append({"role": "assistant", "content": val[1]})
61
 
62
- messages.append({"role": "user", "content": f"{message}\nStudies:\n{study_info}"})
63
 
64
  # Antwort vom Modell generieren
65
  response = ""
 
2
  from huggingface_hub import InferenceClient
3
  import urllib.request
4
  import xml.etree.ElementTree as ET
5
+ from transformers import pipeline
6
 
7
  # HuggingFace Inference Client
8
  #client = InferenceClient("meta-llama/Llama-3.3-70B-Instruct")
9
  client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
10
 
11
+ # Hugging Face Pipeline für Named Entity Recognition (NER)
12
+ nlp = pipeline("ner", model="dslim/bert-base-NER")
13
 
14
+ # Funktion zur Extraktion von Keywords ohne Füllwörter
15
  def generate_query(input_text):
16
+ entities = nlp(input_text)
17
+ keywords = [entity['word'] for entity in entities if entity['entity_group'] in ['MISC', 'ORG', 'LOC', 'PER']]
18
+ return " ".join(keywords).strip()
19
+
20
+
21
+
22
 
23
  # Funktion, um relevante Studien von arXiv zu suchen
24
  def fetch_arxiv_summary(query, sort_by="relevance", sort_order="descending", max_results=20):
 
31
  summaries = []
32
  for entry in root.findall(".//{http://www.w3.org/2005/Atom}entry"):
33
  title = entry.find("{http://www.w3.org/2005/Atom}title")
34
+ link_element = entry.find("{http://www.w3.org/2005/Atom}link[@rel='alternate']")
35
  summary = entry.find("{http://www.w3.org/2005/Atom}summary")
36
+ link = link_element.attrib.get("href") if link_element is not None else "Kein Link verfügbar"
37
+ if summary is not None and title is not None:
38
+ summaries.append(f"Titel: {title.text.strip()}\nLink: {link}\nZusammenfassung: {summary.text.strip()}")
39
  return summaries if summaries else ["Keine relevanten Studien gefunden."]
40
  except Exception as e:
41
+ return [f"Fehler beim Abrufen der Studie: {str(e)}"]
42
 
43
  # Chatbot-Logik mit arXiv-Integration
44
  def respond(
 
65
  if val[1]:
66
  messages.append({"role": "assistant", "content": val[1]})
67
 
68
+ messages.append({"role": "user", "content": f"{message}\nUse this Kontext:\n{study_info}"})
69
 
70
  # Antwort vom Modell generieren
71
  response = ""