Update routers/textclas.py
Browse files- routers/textclas.py +14 -5
routers/textclas.py
CHANGED
@@ -12,7 +12,7 @@ def extract_keywords(
|
|
12 |
num_keywords: int = Query(5, description="Número de palavras-chave a serem retornadas", ge=1, le=20)
|
13 |
):
|
14 |
"""
|
15 |
-
Extrai palavras-chave relevantes de um texto com base
|
16 |
"""
|
17 |
try:
|
18 |
# Processa o texto com spaCy
|
@@ -21,15 +21,24 @@ def extract_keywords(
|
|
21 |
# Extrai as entidades nomeadas do texto (pessoas, organizações, locais, etc)
|
22 |
entities = [ent.text for ent in doc.ents]
|
23 |
|
24 |
-
#
|
25 |
-
if
|
26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
# Retorna o número solicitado de palavras-chave, ou todas as palavras-chave extraídas
|
29 |
return {
|
30 |
"text": text,
|
31 |
"num_keywords": num_keywords,
|
32 |
-
"keywords":
|
33 |
}
|
34 |
|
35 |
except ValueError as ve:
|
|
|
12 |
num_keywords: int = Query(5, description="Número de palavras-chave a serem retornadas", ge=1, le=20)
|
13 |
):
|
14 |
"""
|
15 |
+
Extrai palavras-chave relevantes de um texto com base em entidades nomeadas, substantivos e adjetivos.
|
16 |
"""
|
17 |
try:
|
18 |
# Processa o texto com spaCy
|
|
|
21 |
# Extrai as entidades nomeadas do texto (pessoas, organizações, locais, etc)
|
22 |
entities = [ent.text for ent in doc.ents]
|
23 |
|
24 |
+
# Extrai substantivos e adjetivos importantes
|
25 |
+
keywords = [token.lemma_ for token in doc if token.pos_ in ['NOUN', 'ADJ'] and not token.is_stop]
|
26 |
+
|
27 |
+
# Junta as entidades com as palavras-chave encontradas
|
28 |
+
keywords.extend(entities)
|
29 |
+
|
30 |
+
# Remover duplicatas
|
31 |
+
keywords = list(set(keywords))
|
32 |
+
|
33 |
+
# Se o número de palavras-chave for menor que o número solicitado, retorne todas
|
34 |
+
if len(keywords) < num_keywords:
|
35 |
+
num_keywords = len(keywords)
|
36 |
|
37 |
# Retorna o número solicitado de palavras-chave, ou todas as palavras-chave extraídas
|
38 |
return {
|
39 |
"text": text,
|
40 |
"num_keywords": num_keywords,
|
41 |
+
"keywords": keywords[:num_keywords]
|
42 |
}
|
43 |
|
44 |
except ValueError as ve:
|