Alexander CARNET commited on
Commit
3a4bca3
·
1 Parent(s): a90d223

ajout d'une nouvelle api qui rends plusieurs vecteur en fonction d'etiquettes données et d'une phrase

Browse files
Files changed (2) hide show
  1. app.py +33 -5
  2. requirements.txt +2 -1
app.py CHANGED
@@ -1,18 +1,46 @@
1
  from fastapi import FastAPI
2
  from sentence_transformers import SentenceTransformer
 
3
  from pydantic import BaseModel
 
4
  import uvicorn
5
 
6
  app = FastAPI()
7
 
8
  class TextRequest(BaseModel):
9
- text : str
10
 
11
- #chargement de du modele ia SBERT
12
- modele = SentenceTransformer('dangvantuan/sentence-camembert-base')
 
 
 
 
 
13
 
14
  @app.post("/vecteur")
15
  def creat_vector(data: TextRequest):
16
- vecteur = modele.encode(data.text).tolist()
17
  print(f"Taille vecteur envoyé : {len(vecteur)}")
18
- return {"vecteur":vecteur}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from fastapi import FastAPI
2
  from sentence_transformers import SentenceTransformer
3
+ from gliner import GLiNER
4
  from pydantic import BaseModel
5
+ from typing import List
6
  import uvicorn
7
 
8
  app = FastAPI()
9
 
10
  class TextRequest(BaseModel):
11
+ text: str
12
 
13
+ class TextRequestAvecEtiquettes(BaseModel):
14
+ text: str
15
+ etiquettes: List[str]
16
+
17
+ # Chargement des modèles IA
18
+ modele_sbert = SentenceTransformer('dangvantuan/sentence-camembert-base')
19
+ modele_gliner = GLiNER.from_pretrained("urchade/gliner_medium-v2.1")
20
 
21
  @app.post("/vecteur")
22
  def creat_vector(data: TextRequest):
23
+ vecteur = modele_sbert.encode(data.text).tolist()
24
  print(f"Taille vecteur envoyé : {len(vecteur)}")
25
+ return {"vecteur": vecteur}
26
+
27
+ @app.post("/vecteurs")
28
+ def creat_vectors(data: TextRequestAvecEtiquettes):
29
+ # Extraction des entités par étiquette via GLiNER
30
+ entites = modele_gliner.predict_entities(data.text, data.etiquettes)
31
+
32
+ # Regroupement des textes extraits par étiquette
33
+ entites_par_etiquette: dict[str, List[str]] = {}
34
+ for entite in entites:
35
+ label = entite["label"]
36
+ texte = entite["text"]
37
+ entites_par_etiquette.setdefault(label, []).append(texte)
38
+
39
+ # Génération d'un vecteur SBERT par étiquette
40
+ resultat = {}
41
+ for label, textes in entites_par_etiquette.items():
42
+ vecteur = modele_sbert.encode(" ".join(textes)).tolist()
43
+ resultat[label] = vecteur
44
+ print(f"Étiquette '{label}' : {len(textes)} entité(s), taille vecteur : {len(vecteur)}")
45
+
46
+ return resultat
requirements.txt CHANGED
@@ -1,4 +1,5 @@
1
  fastapi
2
  uvicorn
3
  sentence-transformers
4
- pydantic
 
 
1
  fastapi
2
  uvicorn
3
  sentence-transformers
4
+ pydantic
5
+ gliner