Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
python2020
Ejemplos
Commits
a670858e
Commit
a670858e
authored
Jun 02, 2020
by
sofia martin
Browse files
ejemplo de como generar combinaciones y permutaciones dad una lista de letrsa
parent
e48c3db2
Changes
1
Hide whitespace changes
Inline
Side-by-side
generar-validar.py
0 → 100644
View file @
a670858e
from
itertools
import
permutations
import
pattern.es
'''este programa genera todas las combinaciones posibles con las letras que recibe en una lista'''
#clasificaciones posibles para adjetivos y verbos
TIPO
=
{
'adj'
:
[
"AO"
,
"JJ"
,
"AQ"
,
"DI"
,
"DT"
],
'verb'
:
[
"VAG"
,
"VBG"
,
"VAI"
,
"VAN"
,
"MD"
,
"VAS"
,
"VMG"
,
"VMI"
,
"VB"
,
"VMM"
,
"VMN"
,
"VMP"
,
"VBN"
,
"VMS"
,
"VSG"
,
"VSI"
,
"VSN"
,
"VSP"
,
"VSS"
]
}
def
clasifico
(
palabra
,
clasificacion
):
'''
Función que recibe una palabra y verifica que sea aadjetivo o verbo
:param palabra: es un string
:param clasificacion: un diccionario que tiene las clasficaciones que busco
:return: True si está dentro de la clasificación, False caso contrario
'''
s
=
(
pattern
.
es
.
parse
(
palabra
)).
split
()
# print(s)
for
cada
in
s
:
for
c
in
cada
:
for
tipo
in
clasificacion
:
# print("la clasificacion que se busca es {}".format(tipo))
if
c
[
1
]
in
clasificacion
[
tipo
]:
print
(
palabra
+
" es del tipo "
+
tipo
)
return
True
def
es_pal
(
pal
):
'''
Verifica si es una palabra válida
:param pal: un string
:return: True si es, False caso contrario
'''
if
pal
in
pattern
.
es
.
lexicon
:
# print(pal + " en lexicon ")
if
pal
in
pattern
.
es
.
spelling
:
# print(pal + " en spelling ")
return
True
return
False
def
armo_palabra
(
letras_palabras
):
'''
Armo las posibles combinaciones y permutaciones con una lista de letras recibidas
:param letras_palabras: lista de letras
:return: un conjunto con las palabras armadas
'''
letras
=
''
# for letra in letras_palabras:
# letras += entradas[letra]
for
letra
in
letras_palabras
:
letras
+=
letra
print
(
letras
)
palabras
=
set
()
for
i
in
range
(
2
,
len
(
letras
)
+
1
):
palabras
.
update
((
map
(
""
.
join
,
permutations
(
letras
,
i
))))
return
(
palabras
)
#Ejemplo de uso con una lista de letras dada
lista_palabras
=
armo_palabra
([
"c"
,
"a"
,
"s"
,
"s"
,
"k"
,
"a"
,
"r"
])
# clasifico con pattern
#lista palabras válidas dad una clasificación
palabras_adj_verb
=
[]
#todas las palabras válidas posibles
palabras_validas
=
[]
for
pal
in
lista_palabras
:
if
es_pal
(
pal
):
palabras_validas
.
append
(
pal
)
if
clasifico
(
pal
,
TIPO
):
palabras_adj_verb
.
append
(
pal
)
print
(
palabras_adj_verb
)
print
(
palabras_validas
)
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment