Ir al contenido

elmoyer

Moderadores
  • Contenido

    593
  • Registrado

  • Última Visita

  • Días Ganando

    12

elmoyer ganó por última vez en Junio 14 2017

¡elmoyer tuvo el contenido mejor valorado!

6 Seguidores

Sobre elmoyer

  • Rango
    Gurú

Género

  • Género
    Hombre

Características del sistema

  • Distribución
    Xubuntu
  • Entorno gráfico
    Xfce
  • Navegador Web
    Chromium
  • Distribución secundaria
    ArchLinux
  • Entorno gráfico secundario
    Xfce
  • Navegador Web secundario
    Chromium

Información personal

  • Lugar
    /root/
  • Intereses
    música, lingüística y tecnología.

Visitantes recientes en el perfil

618 visitas al perfil
  1. todo depende diría yo... no es lo mismo escribir un script en python que un script en C. Lo que yo me pregunto es si merece la pena escribir para el compilador o si con escribir código limpio bastaría.
  2. elmoyer

    Hola! qué tal tod@s

    Bienvenido!!
  3. elmoyer

    MagPi Downloader

    Código actualizado y mejorado(si el archivo ya se encuentra ya ha sido descargado y sigue estando en el directorio destino pasara al siguiente archivo. Es decir, solo descarga aquellos archivos que no están en la carpeta de tus descarga MagPi)
  4. elmoyer

    Debate Java.

    Añado a la lista otro lenguaje muy interesante! Groovy
  5. Buenas tarde, hoy vamos a trabajar con uno de los campos más interesantes(a mi parecer) de la lingüística computacional, word-sense disambiguation(desambiguación del significado de la palabra). Para ello vamos a usar nuestro querido NLTK y su módulo de WordNet así que vamos a ello! WordNet es una base de datos léxica del idioma inglés. Agrupa palabras en inglés en conjuntos de sinónimos llamados synsets, proporcionando definiciones cortas y generales, y almacena las relaciones semánticas entre los conjuntos de sinónimos. Su propósito es doble: producir una combinación de diccionario y tesauro cuyo uso sea más intuitivo, y soportar análisis automático de texto y a aplicaciones de Inteligencia Artificial. La base de datos y las herramientas del software se han liberado bajo una licencia BSD y pueden ser descargadas y usadas libremente. Además la base de datos puede consultarse en línea. Sinónimos y significados[senses and Synonyms]: Consideremos las siguientes frases: 1) Raquel tuvo un accidente con el coche. [\*Ya que WordNet es para inglés sustituiremos coche por motorcar*/] 2) Raquel tuvo un accidente con el automovil. [\*Ya que WordNet es para inglés sustituiremos coche por automobile*/] Las frases 1) y 2) tienen el mimos significado, por lo tanto podemos decir que son sinónimos. Gracias a NLTK y a su módulo de WordNet, podemos explorar la palabra "motorcar". Para ello iniciaremos como siempre nuestro querido python desde terminal e importaremos NLTK: elmoyer@tutorial:~$ python Python 2.7.6 (default, Jun 22 2015, 17:58:13) [GCC 4.8.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import nltk Tras importar NLTK, ya solo nos queda importar también el módulo de WordNet para poder trabajar con él: >>> from nltk.corpus import wordnet as wn Ese "as wn" es para que no tengamos que escribir siempre wordnet cuando vayamos a usar el módulo y se puede sustituir por wn o por lo que queramos. Una vez importado ya podemos empezar a jugar con los synsets: >>> wn.synsets('motorcar') [Synset('car.n.01')] Como vemos, motorcar solo tiene un significado posible que esta designado como "car.n.01", es decir el primer sustantivo con el significado coche. La entidad "car.n.01" se denomina "synset" o "set de sinónimos"(colección de palabras sinónimas o lemas). Para poder ver que palabras entran dentro de este synset, lo único que tenemos que escribir es: >>> wn.synsets('dry') \\Cambiamos de ejemplo y usamos "dry" [Synset('dry.n.01'), Synset('dry.v.01'), Synset('dry.v.02'), Synset('dry.a.01'), Synset('dry.s.02'), Synset('dry.a.03'), Synset('dry.a.04'), Synset('dry.a.05'), Synset('dry.a.06'), Synset('dry.a.07'), Synset('dry.s.08'), Synset('dry.s.09'), Synset('dry.s.10'), Synset('dry.s.11'), Synset('dry.s.12'), Synset('dry.s.13'), Synset('dry.s.14'), Synset('dry.s.15'), Synset('dry.s.16')] >>> wn.synset('dry.n.01').lemma_names() \\Vemos que palabras están dentro de este synset [u'dry', u'prohibitionist'] Cada synstes de una palabra puede tener distintos significados. Sin embargo a nosotros lo que nos interesa es el significado de cada palabra que forma el synstet. Estaría bien saber que significa cada palabra, ¿no?: >>> wn.synset('dry.n.01').definition() u'a reformer who opposes the use of intoxicating beverages' ¿Y qué tal un ejemplo también?: >>> wn.synset('dry.v.01').examples() [u'dry clothes', u'dry hair'] Como veís he tenido que migrar al synster de "dry" como verbo(v) y que el synset "dry.n.01" no tenía ejemplos: >>> wn.synset('dry.n.01').examples() [] Otra posibilidad que nos ofrece el módulo de WordNet, es obtener todos los lemas de un synset: >>> wn.synset('dry.n.01').lemmas() [Lemma('dry.n.01.dry'), Lemma('dry.n.01.prohibitionist')] O incluso buscar un lema en concreto: >>> wn.lemma('dry.n.01.dry') Lemma('dry.n.01.dry') O obtener el synset correspondiente a un lema: >>> wn.lemma('dry.n.01.dry').synset() Synset('dry.n.01') U obtener el "nombre"/"designación" de un lema: >>> wn.lemma('dry.n.01.dry').name() u'dry' Sin embargo, hay palabras que se podrían considerar ambiguas. En el campo de la lingüística, para ser más concretos en la sintaxis, decimos que una frase es ambigua cuando tienes mas de un árbol(distintas formas en las que se puede anañizar una frase). Esto se puede extrapolar también en este caso a las palabras de WordNet, es decir, decimos que una palabra puede ser ambigua cuando tiene distintos synsets. Así que volvemos a cambiar de ejemplo y vamos otra vez con "car": >>> wn.synsets('car') [Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')] Como vemos, tenemos 5 synsets que se diferencian notablemente unos de otros. Llegados a este punto, podríamos pensar que nos hemos quedado atascados y que nos llevaría mucho tiempo saber cual es el synset con el que queremos trabajar. Sin embargo la solución es muy sencilla, lo único que tenemos qu hacer es ver que palabras están dentro de los synsets y de esta forma elegir aquel con el que queríamos trabajar: >>> for synset in wn.synsets('car'): ... print(synset.lemma_names()) ... ['car', 'auto', 'automobile', 'machine', 'motorcar'] ['car', 'railcar', 'railway_car', 'railroad_car'] ['car', 'gondola'] ['car', 'elevator_car'] ['cable_car', 'car'] La jerarquia de WordNet: WordNet intenta facilitar la navegación entre los conceptos. para ser más especificos estos conceptos pueden ser: Sustantivos: hiperonimia (hypernymy, can hiperónimo de perro). hiponimia (hyponymy, perro es un hipónimo de can). términos coordinados (coordinate terms, lobo y perro son términos coordinados puesto que ambos son cánidos). holonimia (holonymy, edificio es un holónimo de ventana). Verbos: hiperonimia (hypernymy) troponimia (troponym) consecuencia lógica (entailment) términos coordinados (coordinate terms) Adjetivos: sustantivos relacionados similar a participios de verbos Adverbios La raíz de los adjetivos Un ejemplo de hyponyms con NLTK sería: >>> wn.synsets('sky') [Synset('sky.n.01'), Synset('flip.v.06')] >>> sky = wn.synset('sky.n.01') >>> types_of_sky = sky.hyponyms() >>> types_of_sky[0] Synset('blue_sky.n.01') >>> sorted(lemma.name() for synset in types_of_sky for lemma in synset.lemmas()) [u'blue', u'blue_air', u'blue_sky', u'mackerel_sky', u'wild_blue_yonder'] Un ejemplo de hypernyms con NLTK sería: >>> sky.hypernyms() [Synset('atmosphere.n.05')] Como se puede ver en la imagen, WordNet tiene distintas jerarquía y el root sería la "entidad". Pero podemos "navergar" por todos sus recorrido y ver el "largo" de la jerarquia de una palabra en concreto: >>> paths = sky.hypernym_paths() >>> len(paths) 1 >>> [synset.name() for synset in paths[0]] [u'entity.n.01', u'physical_entity.n.01', u'matter.n.03', u'fluid.n.02', u'gas.n.02', u'atmosphere.n.05', u'sky.n.01'] También podemos ir al "root", que sería la entidad que encontramos arriba del todo en la imagen: >>> sky.root_hypernyms() [Synset('entity.n.01')] Ahora vamos con meronimias y holonimias: >>> wn.synset('sky.n.01').part_meronyms() [Synset('cloud.n.02'), Synset('rainbow.n.01')] Por hoy eso es todo, espero poder hacer algo para la semana que viene con similitud semántica Un saludo!
  6. elmoyer

    Debate Java.

    Poco queda para que deje de ser así Python, sobre todo por lo mucho que se puede hacer con muy pocos conocimientos. Sin embargo yo creo que aquellos que nos hemos metido en algo que tiene que ver con programación no nos quedamos quietos si sólo nos enseñan un lenguaje. Personalmente y por gusto e interés me metí en perl, Ruby, HTML(a pesar que no se considere lenguaje de programación), CSS3, JavaScript y estoy con Go!. Por obligación tengo que seguir con Java el próximo curso y en mi lista de tareas pendientes tengo PHP, Swift, C(++, # ), bases de datos(Mongo y SQL), R, Lua y alguna que me habré dejado
  7. elmoyer

    presentacion

    Bienvenido, disfruta de la fuente de saber que está por ahí instalada
  8. elmoyer

    Hola !

    Bienvenido compañero
  9. elmoyer

    Debate Java.

    Ánimo con ese Go! Yo si tuviese tiempo me ponía ahora mismo a ello... y ten en cuenta que Java vas a tener que darlo obligatoriamente, aprovecha y prueba con otras cosas que las clases te las vas a tener que preparar de todas formas
  10. elmoyer

    Debate Java.

    Go es el lenguaje de Google, se puede incluso desarrollar alguna apk con Go. Yo diría que es interesante, al igual que Ruby que también permite con algún modulo crear una APK Perl vs Python...un eterno dilema, pero una vez leí(no se donde) que a los programadores se les recomendaba tener conocimientos de 2 o 3 lenguajes de scripting. Lua al principio si que estaba más pensado para videojuegos, pero por ejemplo en Kali Linux hay unas cuantas cosas programadas en Lua y no es una distro orientada a los videojuegos... otro ejemplo, los wathcfaces que puedes instalar en los smartwatches(como mínimo en LG), están programados en Lua
  11. elmoyer

    Debate Java.

    ¿Has pensado en otros lenguajes? En mi lista , además de C(o C++) y Java, tengo: Go Ruby Lua JavaScript Perl R Programming También podrías jugar con PHP o incluso con bases de datos no relacionales(MongoDB por ejemplo). Yo antes de decidir que lenguaje elegir, leo un code del lenguaje o lenguajes en cuestión y me pongo con el que más me haya impactado o gustado...
  12. elmoyer

    Debate Java.

    Yo en la universidad empecé con Python y Java lo doy ahora. Sin embargo lo mismo que te digo que adoro Python, te digo que odio Java... creo que soy mas de programación scripting. Yo lo veo así, los que nos dedicamos a algo relacionado con la informática y programación, tenemos siempre el gusanillo de aprender un lenguaje nuevo. Así que ya que vas a tener que dar Java si o si, aprovecha ahora y ponte con otro de forma que tengas uno más en la lista.
  13. elmoyer

    MagPi Downloader

    Actualizado con la última revista publicada
  14. elmoyer

    Feliz Navidad

    Feliz navidad compañeros!
×