File size: 3,758 Bytes
38f8736
 
 
6c05acd
 
 
38f8736
351552e
38f8736
3818f5a
7eaf1c3
3d3f8f8
7eaf1c3
3818f5a
3d3f8f8
 
 
 
1ab68b7
3d3f8f8
 
b474dc5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3d3f8f8
7eaf1c3
3d3f8f8
 
 
 
 
 
7eaf1c3
6288997
7eaf1c3
3d3f8f8
 
 
 
 
 
3818f5a
3d3f8f8
 
 
1833979
3d3f8f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120ad08
3d3f8f8
 
 
 
 
 
 
 
3818f5a
 
3d3f8f8
 
 
 
 
 
 
3818f5a
 
3d3f8f8
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

import os
import spacy
import gradio as gr
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
import zipfile


zip_path = "en_core_web_lg-3.8.0.zip"  # Carica il file ZIP nella cartella del progetto
extraction_dir = "./extracted_models"  # Scegli una sottocartella per l'estrazione
test_dir = "./extracted_models/en_core_web_lg-3.8.0"  # Cartella dopo l'estrazione

# Verifica se la cartella esiste già
if not os.path.exists(test_dir):
    # Se la cartella non esiste, decomprimi il file ZIP
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        zip_ref.extractall(extraction_dir)
    print(f"Modello estratto correttamente nella cartella {extraction_dir}")

import os
import zipfile

# Percorso del file zip caricato
zip_path = "./images.zip"  # Assicurati che il file sia stato caricato su Hugging Face
extract_to = "./images"    # Directory di destinazione per le immagini

# Controlla se la directory esiste già
if not os.path.exists(extract_to):
    os.makedirs(extract_to)  # Crea la directory

# Estrai il file zip
if os.path.exists(zip_path):  # Controlla che il file zip esista
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        zip_ref.extractall(extract_to)
    print(f"Immagini estratte nella directory: {extract_to}")
else:
    print(f"File {zip_path} non trovato. Assicurati di caricarlo nello Space.")



# Percorso della cartella estratta
model_path = os.path.join(extraction_dir, "en_core_web_lg-3.8.0")  # Assicurati che sia corretto

    # Carica il modello
nlp = spacy.load(model_path)


# Carica il modello SentenceTransformer

model = SentenceTransformer('sentence-transformers/paraphrase-multilingual-mpnet-base-v2', device='cpu')                             




# Preprocessamento manuale (carica il manuale da un file o base di dati)
with open('testo.txt', 'r', encoding='utf-8') as file:
    text = file.read()

# Tokenizza il testo in frasi usando SpaCy
doc = nlp(text)
sentences = [sent.text for sent in doc.sents]  # Estrarre frasi dal testo

# Crea gli embedding per il manuale
embeddings = model.encode(sentences, batch_size=8, show_progress_bar=True)

# Funzione per ottenere le frasi più rilevanti
def find_relevant_sentences(query):
    query_embedding = model.encode([query])
    similarities = cosine_similarity(query_embedding, embeddings).flatten()

    # Filtra i risultati in base alla similitudine
    threshold = 0.2
    filtered_results = [(idx, sim) for idx, sim in enumerate(similarities) if sim >= threshold]

    # Ordina i risultati per similitudine
    filtered_results.sort(key=lambda x: x[1], reverse=True)

    # Ottieni le frasi più rilevanti
    top_n = 5
    relevant_sentences = [sentences[idx] for idx, _ in filtered_results[:top_n]]
        
    doc = nlp(" ".join(relevant_sentences))
 
    grouped_results = [sent.text for sent in doc.sents]
    # Pulizia
    cleaned_results = [text.replace("\n", " ") for text in grouped_results]  # Rimuove gli a capo
    final_output = " ".join(cleaned_results)  # Combina tutte le frasi in un unico testo

    
    return final_output

examples = [
    ["irresponsible use of the machine?"],
    ["If I have a problem how can I get help? "],
    ["precautions when using the cutting machine"],
    ["How do I change the knife of the cutting machine?"],
    
]

# Interfaccia Gradio
iface = gr.Interface(
    fn=find_relevant_sentences, 
    inputs=gr.Textbox(label="Insert your query"), 
    outputs=gr.Textbox(label="Relevant sentences"),
    examples=examples, 
    title="Manual Querying System",
    description="Enter a question about the machine, and this tool will find the most relevant sentences from the manual."
)

# Avvia l'app Gradio
iface.launch()