Ejemplo n.º 1
0
def convertir(
    cambiar
):  #Diccionario con {'s':[palabrassingulares],'p':[palabrasplurales]}
    """ Devuelve un diccionario con palabras singulares en plurales y viceversa """
    invertido = {'p': [], 's': []}
    for singulares in cambiar['s']:
        invertido['p'].append(pluralize(singulares))
    for plurales in cambiar['p']:
        invertido['s'].append(singularize(plurales))
    return invertido
Ejemplo n.º 2
0
def convertir(dicc):
    dicc_nuevo = {}
    for x in dicc:
        if x == 's':
            dicc_nuevo['p'] = []
            for i in range(len(dicc[x])):
                dicc_nuevo['p'].append(pluralize(dicc[x][i]))
        if x == 'p':
            dicc_nuevo['s'] = []
            for i in range(len(dicc[x])):
                dicc_nuevo['s'].append(singularize(dicc[x][i]))
    return dicc_nuevo
Ejemplo n.º 3
0
 def test_pluralize(self):
     # Assert the accuracy of the pluralization algorithm.
     from pattern.db import Datasheet
     test = {}
     for w, lemma, tag, f in Datasheet.load(os.path.join(PATH, "corpora", "wordforms-es-davies.csv")):
         if tag == "n": test.setdefault(lemma, []).append(w)
     i, n = 0, 0
     for sg, pl in test.items():
         pl = sorted(pl, key=len, reverse=True)[0]
         if es.pluralize(sg) == pl:
             i += 1
         n += 1
     self.assertTrue(float(i) / n > 0.77)
     print("pattern.es.pluralize()")
Ejemplo n.º 4
0
def convertir(dic):
    diccionario = {}
    for clave in dic:
        lista = dic[clave]
        listaAux = []
        if (clave == 's'):
            for elem in lista:
                listaAux.append(pluralize(elem))
            diccionario['p'] = listaAux
        else:
            for elem in lista:
                listaAux.append(singularize(elem))
            diccionario['s'] = listaAux
    return diccionario
Ejemplo n.º 5
0
 def test_pluralize(self):
     # Assert the accuracy of the pluralization algorithm.
     from pattern.db import Datasheet
     test = {}
     for w, lemma, tag, f in Datasheet.load(os.path.join(PATH, "corpora", "wordforms-es-davies.csv")):
         if tag == "n": test.setdefault(lemma, []).append(w)
     i, n = 0, 0
     for sg, pl in test.items():
         pl = sorted(pl, key=len, reverse=True)[0]
         if es.pluralize(sg) == pl:
             i += 1
         n += 1
     self.assertTrue(float(i) / n > 0.77)
     print "pattern.es.pluralize()"
Ejemplo n.º 6
0
def parse_NP(words):
    number="s"
    noun=""
    gender='m'

    t=Word_list_to_Text(words)

    # Example: todos los perros
    m=pattern_match("{DT} {DT} {JJ*|NN*}", t)
    if m and len(m)==len(t.words):
        learn_gender(m.group(2)[0].string, noun)
        noun = singularize(m.group(3)[0].string)
        if m.group(2)[0].string in plural_words:
            number='p'
        if m.group(2)[0].string in female_words:
            gender='f'
        return number, gender, noun

    # Example: el perro
    m=pattern_match("{DT} {JJ*|NN*}", t)
    if m and len(m)==len(t.words):
        noun = singularize(m.group(2)[0].string)
        learn_gender(m.group(1)[0].string, noun)
        if m.group(1)[0].string in plural_words:
            number='p'
        if m.group(1)[0].string in female_words:
            gender='f'
        return number, gender, noun

    # Example: verde
    m=pattern_match("{JJ*|NN*}", t)
    if m and len(m)==len(t.words):
        noun=m.group(1)[0].string
        if noun==pluralize(noun):
            number="p"
        noun = singularize(noun)
        
        # TODO: gender     

        return number, gender, noun

    print "parse_NP() : not found", t
    sys.exit(0)
Ejemplo n.º 7
0
def convertir_corto(cambiar):
    dicc = {
        'p': list(map(lambda x: pluralize(x), cambiar['s'])),
        's': list(map(lambda x: singularize(x), cambiar['p']))
    }
    return dicc  #por que no anda si hago return {...}??????
Ejemplo n.º 8
0
def validacion(teclado, diccionario):
    """ Esta funcion debe ser llamada dentro de un loop para ingresar todas las palabras. Puntualmente
	la funcion valida 1a palabra ingresada y la agrega a un diccionario de palabras validas """
    web = Wiktionary(language="es")
    articulo = web.search(teclado)  #PALABRA
    cambio = False
    try:
        s = list(filter(lambda x: x.title == "Español", articulo.sections))
        etimologia = list(
            filter(lambda x: x.title == "Etimología", s[0].children))
        if etimologia == []:
            teclado = singularize(teclado)
            cambio = True  #booleano que indica si la palabra cambió de plural a singular
            validado = False
            articulo = web.search(teclado)
        if articulo is not None:
            try:
                s = list(
                    filter(lambda x: x.title == "Español", articulo.sections))
                etimologia = list(
                    filter(lambda x: x.title == "Etimología", s[0].children))
                definicion = etimologia[0].content  #DEFINICION
                lista = [
                    "Adjetivo", "Verbo", "Verbo intransitivo", "Forma verbal",
                    "Verbo transitivo", "Forma adjetiva", "Sustantivo",
                    "Sustantivo masculino", "Sustantivo femenino"
                ]
                lista_verbos = [
                    "Verbo", "Verbo intransitivo", "Forma verbal",
                    "Verbo transitivo"
                ]
                lista_sustantivos = [
                    "Sustantivo", "Sustantivo masculino", "Sustantivo femenino"
                ]
                lista_adjetivos = ["Adjetivo", "Forma Adjetiva"]
                for tipo in lista:
                    tipo_real = list(
                        filter(lambda x: x.title == tipo, s[0].children))
                    if tipo_real:
                        clasificacion = tipo
                        break
                if clasificacion in lista_adjetivos:
                    clasificacion = "Adjetivo"
                elif clasificacion in lista_sustantivos:
                    clasificacion = "Sustantivo"
                elif clasificacion in lista_verbos:
                    clasificacion = "Verbo"
                validado = True
            except IndexError:  #esto previene el error de que la pagina de wik no tenga etimologia (definicion)
                validado = False
                definicion = ""  # lo declaro para evitar un error posterior de referenciar una variable antes de que tenga un valor
                clasificacion = ""
    except AttributeError:
        validado = False
        definicion = ""  # lo declaro para evitar un error posterior de referenciar una variable antes de que tenga un valor
        clasificacion = ""
    if cambio:
        teclado = pluralize(teclado)

    indice = teclado
    diccionario[indice] = {
        "Definición": definicion,
        "Tipo": clasificacion
    }  #diccionario con la palabra , su deficinicion y su tipo.
    if validado:
        datos = {
            "info_palabra": diccionario,
            "validez": True
        }  #si se ingreso correctamente, se modifica la lista y diccionario
    else:
        datos = {
            "info_palabra": diccionario,
            "validez": False
        }  #si no se ingresó, solo "sirve" la validez
    return datos
Ejemplo n.º 9
0
def pluralize_singularize():
    print(pluralize('gato'))
    print(singularize('gatos'))