Spaces:
Running
Running
adds config file
Browse files- app.py +3 -2
- ner.py +4 -5
- neural_searcher.py +8 -7
- senatus_client.py +14 -13
app.py
CHANGED
@@ -5,13 +5,14 @@ from fastapi.responses import JSONResponse
|
|
5 |
from starlette.status import HTTP_504_GATEWAY_TIMEOUT
|
6 |
from neural_searcher import NeuralSearcher
|
7 |
from huggingface_hub import login
|
|
|
8 |
import os
|
9 |
|
10 |
-
login(
|
11 |
|
12 |
app = FastAPI()
|
13 |
|
14 |
-
neural_searcher = NeuralSearcher(collection_name=
|
15 |
|
16 |
REQUEST_TIMEOUT_ERROR = 30
|
17 |
|
|
|
5 |
from starlette.status import HTTP_504_GATEWAY_TIMEOUT
|
6 |
from neural_searcher import NeuralSearcher
|
7 |
from huggingface_hub import login
|
8 |
+
from config import HUGGING_FACE_API_KEY,COLLECTION_NAME
|
9 |
import os
|
10 |
|
11 |
+
login(HUGGING_FACE_API_KEY)
|
12 |
|
13 |
app = FastAPI()
|
14 |
|
15 |
+
neural_searcher = NeuralSearcher(collection_name=COLLECTION_NAME)
|
16 |
|
17 |
REQUEST_TIMEOUT_ERROR = 30
|
18 |
|
ner.py
CHANGED
@@ -1,9 +1,10 @@
|
|
1 |
from transformers import AutoModelForTokenClassification, AutoTokenizer
|
|
|
2 |
import torch
|
3 |
|
4 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
5 |
-
tokenizer = AutoTokenizer.from_pretrained(
|
6 |
-
model = AutoModelForTokenClassification.from_pretrained(
|
7 |
|
8 |
id_to_label = {
|
9 |
0: 'O',
|
@@ -51,9 +52,7 @@ def perform_ner(text):
|
|
51 |
]
|
52 |
return results
|
53 |
|
54 |
-
text = ""
|
55 |
-
IP 229/16 PRIVREDNI SUD CRNE GORE, u Vijeću sastavljenom od sudija Dijane Raičković kao predsjednika Vijeća, Ivana Kovačevića i Nataše Sekulić, kao članova Vijeća, u pravnoj stvari izvršnog povjerioca ''M.” AD P., protiv izvršnog dužnika ''F.” DOO P., koga zastupa punomoćnik N. M. advokat iz P. odlučujući po prigovoru izvršnog dužnika na rješenje Javnog izvršitelja A. T. V. I.br.4282/2015 od 29.12.2015.godine, radi naplate novčanog potraživanja u iznosu od 24.750,00€, u sjednici Vijeća održanoj dana‚19.01.2016.godine, donio je RJEŠENJE Usvaja se prigovor izvršnog dužnika pa se rješenje o izvršenju Javnog izvršitelja A. T. V. I.br.4282/2015 od 29.12.2015.godine, stavlja van snage i ukidaju sprovedene izvršne radnje. Predlog za izvršenje ima se smatrati tužbom. Spise predmeta zavesti u upisnik P . OBRAZLOŽENJE Javni izvršitelj A. T. V. iz P. je na predlog izvršnog povjerioca, na osnovu vjerodostojne isprave-računa br.2015/03/S02/277,dana 29.12.2015.godine, donio rješenje o izvršenju I br.4282/2015, kojim je obavezao izvršnog dužnika da izvršnom povjeriocu isplati iznos od 24.750,00€ sa kamatom i troškovima postupka, kako je to bliže precizirano navedenim rješenjem o izvršenju. Izvršni dužnik je blagovremeno izjavio prigovor kojim je osporio navedeno rješenje o izvršenju ističući da je odmah nakon prijema predmetne fakture istu vratio u originalu izvršnom povjeriocu dana 09.12.2015.godine,osporavajući u cjelosti sadržaj iste i postojanje bilo kakve obaveze prema izvršnom povjeriocu.Navodi da pomenutu fakturu,izvršni dužnik uopšte nije knjižio u svom knjigovodstvu,o čemu je obavijestio izvršnog povjerioca prilikom vraćanja iste,obavještavajući ga istovremeno da po predmetnoj fakturi neće vršiti plaćanje,kako po osnovu tako i visini,o čemu u prilogu dostavlja dopise br.10596 od 09.12.2015.godine i od 17.12.2015.godine, u kojem je, izjašnjavajući se na opomenu od 14.12.2015.godine,ponovo osporio predmetnu fakturu.Ističe da je povjerilac paušalno odmjerio iznos iz fakture,te iz tih razloga predlaže finansijsko vještačenje.Pojašnjava da se potraživanje odnosi na otkazane letove od 04,11 i 18.01.2014.godine,na relaciji P.-H.-P.,a po ugovoru br.10638,koji nije dostavljen uz predlog,dok označeni letovi nijesu otkazani krivicom izvršnog dužnika.Dalje ističe da je povjerilac dozvolu za saobraćaj u dobio tek 24.12.2013.godine,a koju dozvolu je dostavio izvršnom dužniku putem e-maila,pa stoga dana 21.12.2013.godine,let nije bio relizovan isključivom krivicom izvršnog povjerioca,jer nije obezbijedio neophodne dozvole za letenje.Navedeno je uzrokovalo i potpuno zaustavljanje prodaje karata od strane izvršnog dužnika za naredni period jer neizvjesnost oko dobijanja dozvole za let na pomenutoj relaciji,za dužnika kao zakupca čartera,proizvodila veliki rizik naknadni refundacija i negativnog publiciteta,kod turista i stalnih klijenata.Ukazuje da bilateralni sporazum zaključen između Crne Gore i U. Privredni Sud Crne Gore Ip 229/2016 19. Januar 2016 ne tretira čarter saobraćaj,što je predmet ugovora među strankama,već samo redovni vazdušni saobraćaj između ove dvije zemlje,koji se prema definiciji odvija po utvrđenom redu letenja i sa unaprijed utvrđenim linijama.Posebno ističe da je Sporazumom o vazdušnom saobraćaju između Vlade Crne Gore i kabineta ministara U. od09.12.2011.godine- član 3 i 12 određeno da se radi o preciziranim rutama do maksimalnih frekvencija,što znači da izvršni pojerilac može da obavlja samo redovni a ne i čarter prevoz.Dodaje da izvršni dužnik nije bio u mogućnosti da postupi shodno član 5 osnovnog ugovora,u kome su precizirane otkazne klauzule u slučaju kad zakupac čartera otkazuje let,te blagovremeno otkaže letove,budući da isti nijesu potvrđeni od strane prevoznika-izvršnog povjerioca.,te predlaže saslušanje ovlašćenih zastupnika parničnih stranaka.Predlaže da Vijeće usvoji prigovor ukine rješenje o izvršenju i obustavi sprovedeneizvršne radnje.Tražio je troškove posstupka po AT-u. Izvršni povjerilac je u odgovoru na prigovor istakao da Ugovorom o čarter prevozu član 5 st1 t.1 i 2,definiše da zakupac čartera(izvršni dužnik),zadržava pravo da otkaže bilo koji let iz Anexa 1 Ugovora,navodeći uslove koji su za to neophodni.Ističe da je član 1 Anexa 2 Ugovora o čarter prevozu br.2909/13 ugovorena cijena čarter prevoza na predmetnoj relaciji u iznosu od 22.500,00€,tako da nije proizvoljno izvršen obračun taksi za otkaz, kako je to navedeno u prigovoru.Navodi da je dana 23.12.2013.godine dobijena dozvola za obavljanje serije čarter letova na pomenutoj ruti za dane 28.12.2013.godine,04./11./18./25.01.2014.godine,01.08/15/22.02.2014.godine i 01/08/15/ 03.2014.godine.Ističe da je za potrebe izvršnog dužnika obavio let dana 28.12.2013.godine,te da je izvršni dužnika nakon toga putem maila otkazao sve letove ,u potpunosti svestan svoje obaveze u slučaju otkazivanja leta za 04./11./18.01.2014.godine,saglasno odredbama član 5 st1 t.1 i 2 Ugovora o čarter prevozu,o čemu prilogu dostavlja mail izvršnog direktora izvršnog dužnika od 25.12.2013.godine.Predlaže da se prigovor odbije. Odredbom člana 60 stav 3 Zakona o izvršenju i obezbjeđenju ( Sl.list CG , br.36/2011-u daljem tekstu ZIO), propisano je da ako izvršni dužnik učini vjerovatnim navode iz prigovora kojim rješenje pobija u cjelini ili u dijelu kojim je obavezan da namiri potraživanje, vijeće suda će staviti van snage rješenje o izvršenju u dijelu kojim je određeno izvršenje i odrediti da se postupak nastavi kao povodom prigovora protiv platnog naloga. Protiv rješenja o stavljanju van snage rješenja o izvršenju nije dozvoljen prigovor. Kako je izvršni dužnik blagovremenim i obrazloženim prigovorom osporio navedeno rješenje o izvršenju I.br.4282/2015.godine,uz navođenje konkretnih radnji na kojima se zasniva prigovor u dijelu nepostojanja obaveze u odnosu na vjerodostojnu ispravu,a takođe osporavajući osnov i visinu potraživanja,a sve vezano za međusobne obaveze izvršnog povjerioca i izvršnog dužnika,odnosno neipunjavanje obaveze izvršnog povjerioca,učinio vjerovatnim svoje navode iz prigovora i u cjelosti osporio rješenje kojim je obavezan da namiri potraživanje,to je Vijeće na osnovu člana 60 stav 3 Zakona o izvršenju i obezbjeđenju, odlučilo kao u izreci. PRIVREDNI SUD CRNE GORE Dana, 19.01.2016.godine Predsjednik Vijeća - Sudija, Dijana Raičković,s.r. PRAVNA POUKA:Protiv ovog rješenja, nije dozvoljen prigovor.
|
56 |
-
"""
|
57 |
|
58 |
def merge_entities(token_label_pairs):
|
59 |
merged_words, merged_labels = [], []
|
|
|
1 |
from transformers import AutoModelForTokenClassification, AutoTokenizer
|
2 |
+
from config import NER_MODEL
|
3 |
import torch
|
4 |
|
5 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
6 |
+
tokenizer = AutoTokenizer.from_pretrained(NER_MODEL, use_auth_token=True)
|
7 |
+
model = AutoModelForTokenClassification.from_pretrained(NER_MODEL, use_auth_token=True).to(device)
|
8 |
|
9 |
id_to_label = {
|
10 |
0: 'O',
|
|
|
52 |
]
|
53 |
return results
|
54 |
|
55 |
+
text = ""
|
|
|
|
|
56 |
|
57 |
def merge_entities(token_label_pairs):
|
58 |
merged_words, merged_labels = [], []
|
neural_searcher.py
CHANGED
@@ -3,16 +3,17 @@ from fastembed import SparseTextEmbedding, LateInteractionTextEmbedding
|
|
3 |
from qdrant_client import QdrantClient, models
|
4 |
from sentence_transformers import SentenceTransformer
|
5 |
from collections import Counter
|
|
|
6 |
import os
|
7 |
|
8 |
class NeuralSearcher:
|
9 |
|
10 |
def __init__(self, collection_name):
|
11 |
self.collection_name = collection_name
|
12 |
-
self.dense_model = SentenceTransformer(
|
13 |
-
self.sparse_model = SparseTextEmbedding(
|
14 |
-
self.late_interaction_model = LateInteractionTextEmbedding(
|
15 |
-
self.qdrant_client = QdrantClient(
|
16 |
|
17 |
async def search(self, text: str):
|
18 |
|
@@ -23,12 +24,12 @@ class NeuralSearcher:
|
|
23 |
prefetch = [
|
24 |
models.Prefetch(
|
25 |
query=dense_query,
|
26 |
-
using=
|
27 |
limit=200
|
28 |
),
|
29 |
models.Prefetch(
|
30 |
query=models.SparseVector(**sparse_query.as_object()),
|
31 |
-
using=
|
32 |
limit=200
|
33 |
)
|
34 |
]
|
@@ -39,7 +40,7 @@ class NeuralSearcher:
|
|
39 |
query=models.FusionQuery(
|
40 |
fusion=models.Fusion.RRF,
|
41 |
),
|
42 |
-
# using=
|
43 |
with_payload=True,
|
44 |
limit = 10
|
45 |
).points
|
|
|
3 |
from qdrant_client import QdrantClient, models
|
4 |
from sentence_transformers import SentenceTransformer
|
5 |
from collections import Counter
|
6 |
+
from config import DENSE_MODEL, SPARSE_MODEL, LATE_INTERACTION_MODEL, QDRANT_URL, QDRANT_API_KEY
|
7 |
import os
|
8 |
|
9 |
class NeuralSearcher:
|
10 |
|
11 |
def __init__(self, collection_name):
|
12 |
self.collection_name = collection_name
|
13 |
+
self.dense_model = SentenceTransformer(DENSE_MODEL,device="cpu")
|
14 |
+
self.sparse_model = SparseTextEmbedding(SPARSE_MODEL)
|
15 |
+
self.late_interaction_model = LateInteractionTextEmbedding(LATE_INTERACTION_MODEL)
|
16 |
+
self.qdrant_client = QdrantClient(QDRANT_URL,api_key=QDRANT_API_KEY)
|
17 |
|
18 |
async def search(self, text: str):
|
19 |
|
|
|
24 |
prefetch = [
|
25 |
models.Prefetch(
|
26 |
query=dense_query,
|
27 |
+
using=DENSE_MODEL,
|
28 |
limit=200
|
29 |
),
|
30 |
models.Prefetch(
|
31 |
query=models.SparseVector(**sparse_query.as_object()),
|
32 |
+
using=SPARSE_MODEL,
|
33 |
limit=200
|
34 |
)
|
35 |
]
|
|
|
40 |
query=models.FusionQuery(
|
41 |
fusion=models.Fusion.RRF,
|
42 |
),
|
43 |
+
# using=LATE_INTERACTION_MODEL,
|
44 |
with_payload=True,
|
45 |
limit = 10
|
46 |
).points
|
senatus_client.py
CHANGED
@@ -1,21 +1,22 @@
|
|
1 |
import json
|
2 |
import uuid
|
|
|
|
|
3 |
from huggingface_hub import login
|
4 |
from fastembed import SparseTextEmbedding,LateInteractionTextEmbedding
|
5 |
from qdrant_client import QdrantClient, models
|
6 |
from sentence_transformers import SentenceTransformer
|
7 |
from tqdm import tqdm
|
8 |
-
import numpy as np
|
9 |
from huggingface_hub import login
|
10 |
-
import
|
11 |
|
12 |
-
login(
|
13 |
|
14 |
folder_path = 'data'
|
15 |
|
16 |
-
dense_model = SentenceTransformer(
|
17 |
-
sparse_model = SparseTextEmbedding(
|
18 |
-
# late_interaction_embedding_model = LateInteractionTextEmbedding(
|
19 |
|
20 |
data = []
|
21 |
for filename in os.listdir(folder_path):
|
@@ -25,14 +26,14 @@ for filename in os.listdir(folder_path):
|
|
25 |
data = json.load(f)
|
26 |
|
27 |
|
28 |
-
client = QdrantClient(
|
29 |
|
30 |
|
31 |
data_array = np.array(data)
|
32 |
|
33 |
split_data = np.array_split(data_array, 1000)
|
34 |
|
35 |
-
collection_name =
|
36 |
|
37 |
for local_data in split_data:
|
38 |
|
@@ -67,12 +68,12 @@ for local_data in split_data:
|
|
67 |
client.create_collection(
|
68 |
collection_name=collection_name,
|
69 |
vectors_config={
|
70 |
-
|
71 |
size=len(dense_embeddings[0]),
|
72 |
distance=models.Distance.COSINE,
|
73 |
on_disk=True
|
74 |
),
|
75 |
-
#
|
76 |
# size=len(late_interaction_embeddings[0][0]),
|
77 |
# distance=models.Distance.COSINE,
|
78 |
# multivector_config=models.MultiVectorConfig(
|
@@ -85,7 +86,7 @@ for local_data in split_data:
|
|
85 |
# ),
|
86 |
},
|
87 |
sparse_vectors_config={
|
88 |
-
|
89 |
modifier=models.Modifier.IDF,
|
90 |
),
|
91 |
},
|
@@ -111,8 +112,8 @@ for local_data in split_data:
|
|
111 |
models.PointStruct(
|
112 |
id=uuid.uuid4().hex,
|
113 |
vector={
|
114 |
-
|
115 |
-
|
116 |
# "answerdotai/answerai-colbert-small-v1":late_interaction_embedding
|
117 |
},
|
118 |
payload=doc,
|
|
|
1 |
import json
|
2 |
import uuid
|
3 |
+
import numpy as np
|
4 |
+
import os
|
5 |
from huggingface_hub import login
|
6 |
from fastembed import SparseTextEmbedding,LateInteractionTextEmbedding
|
7 |
from qdrant_client import QdrantClient, models
|
8 |
from sentence_transformers import SentenceTransformer
|
9 |
from tqdm import tqdm
|
|
|
10 |
from huggingface_hub import login
|
11 |
+
from config import HUGGING_FACE_API_KEY, DENSE_MODEL, SPARSE_MODEL, LATE_INTERACTION_MODEL, QDRANT_URL, QDRANT_API_KEY, COLLECTION_NAME
|
12 |
|
13 |
+
login(HUGGING_FACE_API_KEY)
|
14 |
|
15 |
folder_path = 'data'
|
16 |
|
17 |
+
dense_model = SentenceTransformer(DENSE_MODEL)
|
18 |
+
sparse_model = SparseTextEmbedding(SPARSE_MODEL)
|
19 |
+
# late_interaction_embedding_model = LateInteractionTextEmbedding(LATE_INTERACTION_MODEL)
|
20 |
|
21 |
data = []
|
22 |
for filename in os.listdir(folder_path):
|
|
|
26 |
data = json.load(f)
|
27 |
|
28 |
|
29 |
+
client = QdrantClient(QDRANT_URL,api_key=QDRANT_API_KEY)
|
30 |
|
31 |
|
32 |
data_array = np.array(data)
|
33 |
|
34 |
split_data = np.array_split(data_array, 1000)
|
35 |
|
36 |
+
collection_name = COLLECTION_NAME
|
37 |
|
38 |
for local_data in split_data:
|
39 |
|
|
|
68 |
client.create_collection(
|
69 |
collection_name=collection_name,
|
70 |
vectors_config={
|
71 |
+
DENSE_MODEL: models.VectorParams(
|
72 |
size=len(dense_embeddings[0]),
|
73 |
distance=models.Distance.COSINE,
|
74 |
on_disk=True
|
75 |
),
|
76 |
+
# LATE_INTERACTION_MODEL: models.VectorParams(
|
77 |
# size=len(late_interaction_embeddings[0][0]),
|
78 |
# distance=models.Distance.COSINE,
|
79 |
# multivector_config=models.MultiVectorConfig(
|
|
|
86 |
# ),
|
87 |
},
|
88 |
sparse_vectors_config={
|
89 |
+
SPARSE_MODEL: models.SparseVectorParams(
|
90 |
modifier=models.Modifier.IDF,
|
91 |
),
|
92 |
},
|
|
|
112 |
models.PointStruct(
|
113 |
id=uuid.uuid4().hex,
|
114 |
vector={
|
115 |
+
DENSE_MODEL: dense_embedding,
|
116 |
+
SPARSE_MODEL: sparse_embedding.as_object(),
|
117 |
# "answerdotai/answerai-colbert-small-v1":late_interaction_embedding
|
118 |
},
|
119 |
payload=doc,
|