Obtenga el archivo del modelo word2vec entrenado con WikiNews en Español: eswikinews.bin
In [6]:
# import word2vec model from gensim
from gensim.models.word2vec import Word2Vec
# load pre-trained model
model = Word2Vec.load_word2vec_format('eswikinews.bin', binary=True)
Composicionalidad y analogía son dos mecanismos diferentes que se pueden usar con representaciones distribuidas. La idea es usar independientemente composicionalidad y analogía para resolver el mismo problema. El problema a resolver es encontrar el presidente de un país dado.
Primero usaremos composicionalidad. La función siguiente debe recibir el nombre de un país y retornar una lista de palabras que posiblemente corresponden a presidentes.
Por ejemplo, si la función se invoca con 'ecuador' como argumento:
>>> presidents_comp('ecuador')
[u'jamil_mahuad',
u'presidencia',
u'jose_maria_velasco_ibarra',
u'republica',
u'rafael_correa',
u'gustavo_noboa',
u'lucio_gutierrez',
u'abdala_bucaram',
u'vicepresidente',
u'gabriel_garcia_moreno']
In [1]:
def presidents_comp(country):
### Su código debe ir aquí
return []
for country in ['colombia', 'venezuela', 'ecuador', 'brasil', 'argentina', 'chile']:
print country
for president in presidents_comp(country):
print ' ', president
El siguiente paso es usar analogías para encontrar el presidente de un país dado.
In [2]:
def presidents_analogy(country):
### Su código debe ir aquí
return []
for country in ['colombia', 'venezuela', 'ecuador', 'brasil', 'argentina', 'chile']:
print country
for president in presidents_analogy(country):
print ' ', president
¿Cual versión funciona mejor? Explique claramente. ¿Por qué cree que este es le caso?
In [3]:
def antonimo(palabra):
### Su código debe ir aquí
return '-'
for palabra in ['blanco', 'menor', 'rapido', 'arriba']:
print palabra, antonimo(palabra)
Busque más ejemplos en los que funcione y otros en los que no funcione. Explique.
In [26]:
model.doesnt_match("azul rojo abajo verde".split())
Out[26]:
La idea es implementar la misma funcionalidad por nuestra cuenta. La condición es que solo podemos usar la función
similarity
de Gensim la cual calcula la similitud de dos palabras:
In [28]:
print model.similarity('azul', 'rojo')
print model.similarity('azul', 'abajo')
In [5]:
import numpy as np
def no_es_como_las_otras(lista):
### Su código debe ir aquí
return '-'
print no_es_como_las_otras("azul rojo abajo verde".split())
Nota: no olvide incluir los nombres de los integrantes del grupo (máximo 2) en el encabezado del notebook. Remita el notebook al siguiente file request de Dropbox: https://www.dropbox.com/request/k4GFiKHjl8OuE9sCiq1N.