DISEÑO Y DESARROLLO DE UN SERVICIO BIG DATA EN LA
NUBE PARA BÚSQUEDA, COMPARTICIÓN DE FICHEROS Y
DATA MINING
Juan Ramos Díaz
GRADO EN INGENIERÍA INFORMÁTICA, FACULTAD DE INFORMÁTICA,
UNIVERSIDAD COMPLUTENSE DE MADRID
T abajo Fin g ado
Junio 2016
Di ec o es: Vic o ia López, José Ja ie Ga cía A anda
2
3
Au o ización de di usión y u ilización
Juan Ramos Díaz
Mad id, 17 de Junio de 2016
El abajo i man e, ma iculado en el G ado en Ingenie ía In o má ica de la Facul ad de In o má ica,
au o iza a la Uni e sidad Complu ense de Mad id (UCM) a di undi y u iliza con ines académicos,
no come ciales y mencionando exp esamen e a su au o el p esen e T abajo Fin de G ado: “DISEÑO
Y DESARROLLO DE UN SERVICIO BIG DATA EN LA NUBE PARA BÚSQUEDA, COMPARTICIÓN DE
FICHEROS Y DATA MINING”, ealizado du an e el cu so académico 2015-2016 bajo la di ección de
Vic o ia López en el Depa amen o de A qui ec u a de Compu ado es, y a la Biblio eca de la UCM a
deposi a lo en el A chi o Ins i ucional E-P in s Complu ense con el obje o de inc emen a la
di usión, uso e impac o del abajo en In e ne y ga an iza su p ese ación y acceso a la go plazo.
4
5
Resumen
En es a memo ia se p esen a el diseño y desa ollo de una aplicación en la nube des inada a la
compa ición de obje os y se icios.
El desa ollo de es a aplicación su ge den o del p oyec o de I+D+i, SITAC: Social In e ne o
Things – Apps by and o he C owd ITEA 2 11020, que a a de c ea una a qui ec u a
in eg ado a y un “ecosis ema” que incluya pla a o mas, he amien as y me odologías pa a
acili a la conexión y coope ación de en idades de dis in o ipo conec adas a la ed bien sean
sis emas, máquinas, disposi i os o pe sonas con disposi i os mó iles pe sonales como able as o
elé onos mó iles. El p oyec o inno a á median e la u ilización de un modelo inspi ado en las
edes sociales pa a acili a y uni ica las in e acciones an o en e pe sonas como en e pe sonas
y disposi i os.
En es e con ex o su ge la necesidad de desa olla una aplicación des inada a la compa ición de
ecu sos en la nube que pueden se an o lógicos como ísicos, y que es é o ien ada al big da a.
És a se á la aplicación p esen ada en es e abajo, el “Resou ce Sha ing Cen e ”, que o ece un
se icio web pa a el in e cambio y compa ición de con enido, y un mo o de ecomendaciones
basado en las p e e encias de los usua ios.
Con es e obje i o, se han usado ecnologías de despliegue en la nube, como Elas ic Beans alk (el
PaaS de Amazon Web Se ices), S3 (el sis ema de almacenamien o de Amazon Web Se ices),
SimpleDB (base de da os NoSQL) y HTML5 con Ja aSc ip y Twi e Boo s ap pa a el
desa ollo del on -end, siendo Py hon y Node.js las ecnologías usadas en el back end, y
habiendo con ibuido a la mejo a de he amien as de clus e ing sob e big da a. Po úl imo, y de
ca a a ealiza el es udio sob e las p uebas de ca ga de la aplicación se ha usado la he amien a
ApacheJMe e .
Palab as cla e
Nube, In e ne de las Cosas, Big Da a, Compa ición, Clus e ing, Py hon, Node.js, Elas ic
Beans alk, Amazon Web Se ices, SimpleDB.
6
Abs ac
This pape p esen s he design and de elopmen o a cloud applica ion in ended o sha ing
objec s and se ices.
The de elopmen o his applica ion comes wi hin he I+D+i, SITAC: Social In e ne o Thing –
Apps by and o he C owd ITEA 2 11020, ying o c ea e an in eg a ed a chi ec u e and an
"ecosys em" ha includes pla o ms, ools and me hodologies o acili a e he connec ion and
coope a ion o en i ies o di e en ypes connec ed o he ne wo k, whe he sys ems, machines,
de ices o people wi h pe sonal mobile de ices such as able s o mobile phones. The p ojec
will inno a e by using a model inspi ed by social ne wo ks o acili a e and uni y he in e ac ions
bo h among people and be ween people and de ices.
In his con ex a ises he need o de elop an applica ion o he sha ing o esou ces in he cloud
ha can be bo h logical and physical, and ha is o ien ed big da a.
This will be he applica ion p esen ed in his pape , he "Resou ce Sha ing Cen e " which o e s a
web se ice o he exchange and sha ing o con en , and a ecommenda ion engine based on
use p e e ences.
To his end, i has been used cloud deploymen echnologies, as Elas ic Beans alk (PaaS se ice
o m Amazon Web Se ices), S3 (s o age se ice o m Amazon Web Se ice), SimpleDB
(NoSQL da abase), and HTML5 wi h Ja aSc ip and Twi e Boo s ap o he on -end
de elopmen , wi h Py hon and Node.js being used o he back-end de elopmen , and ha ing
con ibu ed o imp o ing clus e ing ools on big da a. Finally, and in unde aking he s udy load
es ing he applica ion i has been used ApacheJMe e ool.
Keywo ds
Cloud, In e ne o Things, Big Da a, Sha ing, Clus e ing, Py hon, Node.js, Elas ic Beans alk,
Amazon Web Se ices, SimpleDB.
7
Índice
1 In oducción ........................................................................................................................................ 13
1.1 Obje i os ..................................................................................................................................... 13
1.2 Es uc u a de la memo ia ............................................................................................................ 13
2 Es ado del a e .................................................................................................................................... 15
2.1 Compu ación en la nube ............................................................................................................. 15
2.1.1 Ca ac e ís icas esenciales ................................................................................................... 15
2.1.2 Modelos de se icio ............................................................................................................ 16
2.1.3 Modelos de despliegue ....................................................................................................... 17
2.1.4 Pla a o mas de compu ación en la nube disponibles ......................................................... 17
2.2 He amien as de Amazon Web Se ice. ...................................................................................... 18
2.3 Desa ollo en Elas ic Beans alk ................................................................................................... 20
2.3.1 Componen es de Elas ic Beans alk ..................................................................................... 21
2.3.2 Roles, ins ancias de pe iles y polí icas de usua ios. .......................................................... 22
2.4 Tecnologías de desa ollo en la nube. ......................................................................................... 24
2.4.1 Py hon ................................................................................................................................. 25
2.4.2 Ja asc ip ............................................................................................................................. 26
2.4.3 Node.js ................................................................................................................................ 28
2.4.4 O as ecnologías ................................................................................................................ 29
2.5 Big Da a ....................................................................................................................................... 32
2.5.1 Bases de da os NOSQL ........................................................................................................ 33
2.5.2 Mine ía de da os ................................................................................................................. 34
2.6 Lema ización ............................................................................................................................... 38
2.6.1 Algo i mos de lema ización ................................................................................................ 39
2.6.2 Lema ización en Español ..................................................................................................... 39
2.7 OpenId Connec ........................................................................................................................... 39
2.7.1 OpenID sob e Oau h ........................................................................................................... 40
3 Módulo Resou ce Sha ing Cen e ....................................................................................................... 43
3.1 A qui ec u a y modelo de da os .................................................................................................. 44
3.1.1 P incipios de diseño ............................................................................................................ 45
3.1.2 Componen es ...................................................................................................................... 49
8
3.1.3 Modelo de da os ................................................................................................................. 51
3.2 Diseño uncional se ido ............................................................................................................ 54
3.2.1 Funcionalidades .................................................................................................................. 54
3.2.2 API ....................................................................................................................................... 74
3.3 Diseño clien e (GUI) ..................................................................................................................... 76
3.3.1 In e acción con el back-end ................................................................................................ 76
3.3.2 Desc ipción de la GUI .......................................................................................................... 77
3.4 O os elemen os .......................................................................................................................... 88
3.4.1 Algo i mo MMS Rank .......................................................................................................... 88
4 Módulo Analy ics ................................................................................................................................ 91
4.1 De inición del clús e ................................................................................................................... 91
4.1.1 No malización de los da os ................................................................................................. 92
4.1.2 Dis ancia de una cla e ......................................................................................................... 92
4.1.3 Dis ancia en e usua ios...................................................................................................... 93
4.2 Selección de algo i mo y lib e ía ................................................................................................. 93
4.3 Diseño del módulo analy ics ....................................................................................................... 94
4.3.1 Población de da os .............................................................................................................. 94
Pasos de p oceso ........................................................................................................................ 95
4.3.2 .................................................................................................................................................... 95
4.4 API del módulo Anali ycs ............................................................................................................. 98
4.4.1 Adiciones a la lib e ía .......................................................................................................... 98
4.4.2 Módulo ba ch ...................................................................................................................... 99
4.4.3 In e acción con el RSC ......................................................................................................... 99
4.4.4 P uebas de la solución ...................................................................................................... 100
4.5 Modelo de da os ....................................................................................................................... 100
4.5.1 Dominio CENTROIDS ......................................................................................................... 100
4.6 Cambios en la lib e ía................................................................................................................ 101
4.6.1 Reducción de la complejidad ............................................................................................ 101
4.6.2 Op imización del iempo de compu ación ........................................................................ 102
4.6.3 P oblema de la al a dimensionalidad................................................................................ 102
4.6.4 Validación del uso de la media en luga de la mediana .................................................... 102
5 Resul ados ......................................................................................................................................... 105
9
5.1 Se icio Resou ce Sha ing Cen e .............................................................................................. 105
5.2 Se icio web escalable .............................................................................................................. 108
5.3 Despliegue en Amazon .............................................................................................................. 109
5.3.1 Sob e la implemen ación del se icio ............................................................................... 109
5.4 Es udio sob e clus e ing y mejo a de la lib e ía clus e 1.2.2 ................................................... 110
6 Conclusiones y líneas u u as de abajo .......................................................................................... 115
Re e encias ................................................................................................................................................ 117
Anexo. ....................................................................................................................................................... 123
Anexo 1: He amien as ......................................................................................................................... 123
Anexo 2: Mejo as lib e ía de clus e ..................................................................................................... 125
Reducción de la complejidad ............................................................................................................ 125
Op imización del iempo de compu ación ........................................................................................ 126
Da os especí icos del RSC y al a dimensionalidad ............................................................................ 128
Anexo 3: In eg ación de la au en icación delegada. ............................................................................. 131
Anexo 4: ................................................................................................................................................ 135
P uebas de ca ga con Apache JMe e ................................................................................................... 135
1 Pe iciones ....................................................................................................................................... 135
2. Es a egia pa a los es s ................................................................................................................ 136
3. Pa áme os de au o escalado ....................................................................................................... 136
4. Escena ios y esul ados ................................................................................................................. 138
Anexo 5:Desc ipción de código ............................................................................................................. 147
Lema izado ...................................................................................................................................... 147
Thumbnails ........................................................................................................................................ 157
Cons ucción del índice in e so ........................................................................................................ 159
16
2.1.2 Modelos de se icio
Las pla a o mas de compu ación en la nube pueden o ece sus se icios de las siguien es
mane as.
So wa e como se icio (SaaS): El consumido de la nube no ges iona ni con ola la
p opia in aes uc u a ( ed, se ido , sis ema ope a i o, almacenamien o). Desa olla el
se icio al ma gen del despliegue del mismo. Una aplicación o ecida en modo SaaS se
ejecu a á sob e una in aes uc u a PaaS o IaaS
Pla a o ma como se icio (PaaS): El consumido de la nube puede ges iona y con ola
el lenguaje de p og amación, lib e ías, se icios y o as he amien as que le p o ee el
ges o de la nube pa a desa olla su se icio. Pe o no iene con ol de la capa in e io de
la in aes uc u a de la nube, ed, se ido , almacenamien o.
In aes uc u a como se icio (IaaS): El consumido de la nube puede ges iona y
con ola la in aes uc u a que le o ece el p o eedo de la nube. Puede con ola el
sis ema ope a i o, de almacenamien o, el lenguaje de p og amación y lib e ías que usa a
pa a desa olla su se icio.
Figu a 1. Modelos de se icio
17
2.1.3 Modelos de despliegue
Exis en cua o modelos de despliegue que se desc iben a con inuación.
Nube p i ada: La in aes uc u a de la nube es suminis ada pa a el uso exclusi o de una
única o ganización que comp ende a múl iples consumido es. El dueño de la nube, o
enca gado de ges iona la puede se la o ganización, o una o ganización ajena, o una
combinación en e ambas.
Nube comuni a ia: La in aes uc u a de la nube es suminis ada pa a el uso exclusi o de
una comunidad de consumido es, que pueden se o ganizaciones con polí icas exclusi as.
El dueño de es a nube, o el enca gado de ges iona la puede se una o más de las
o ganizaciones de la comunidad, una o ganización ajena, o una combinación en e ambas.
Nube pública: La in aes uc u a de la nube es suminis ada pa a el uso del público
gene al. El dueño de la nube o el enca gado de ges iona la puede se un cen o
académico, o ganización gube namen al, o una combinación de ambas.
Nube híb ida: La in aes uc u a de la nube es una composición de dos o más
in aes uc u as de nube que siguen modelos de despliegue dis in os, que pueden segui
siendo en idades sepa adas, pe o es ablecen polí icas pa a pe mi i la po abilidad de las
dis in as in aes uc u as.
2.1.4 Pla a o mas de compu ación en la nube disponibles
En e las más impo an es se encuen an las siguien es:
Amazon Web Se ices (AWS) [4]: La pla a o ma de compu ación en la nube de Amazon,
es una de las pione as en es e campo y es usada en aplicaciones como Reddi o Ne lix.
Algunos de sus p incipales se icios son: Amazon EC2, Amazon S3, y Amazon RDS.
Es os se icios es án dedicados espec i amen e al hos ing de aplicaciones,
almacenamien o masi o, y ges ión de bases de da os.
Google Cloud Pla o m [5]: La pla a o ma de compu ación en la nube de Google, o ece
a sus clien es la misma in aes uc u a de sopo e que Google usa in e namen e pa a sus
p oduc os como Google Sea ch y You ube. O ece se icios como Google App Engine,
pa a el hos ing de aplicaciones, Google Cloud S o age pa a almacenamien o, y Google
Big able pa a la ges ión de bases de da os.
18
Mic oso Azu e [6]: La pla a o ma de compu ación en la nube de Mic oso , en
compe encia di ec a con las pla a o mas de Google y Amazon, es usada po emp esas
como Mazda o Heineken, o ece se icios como Azu eVM, Azu eBackup, y
Documen DB pa a hos ing, almacenamien o y ges ión de bases de da os.
Openshi [7]: La pla a o ma de compu ación en la nube de RedHa es código abie o y se
puede accede pa a desa olla aplicaciones en Gi Hub. O ece se icios basados en el
modelo Pla o m as a Se ice (PaaS), pa a es o da sopo e a los en o nos de p og amación
más comunes, como Node.js, Ruby o Py hon, y amewo ks de aplicaciones web como
WSGI pa a Py hon o Rack pa a Ruby. También sopo a p og amas bina ios que sean
aplicaciones web, siemp e que se puedan ejecu a en la dis ibución de Linux de RedHa
(RHEL).
2.2 He amien as de Amazon Web Se ice.
Amazon Web Se ice (AWS) es la in aes uc u a en la nube de Amazon, o ece las
he amien as necesa ias pa a desa olla se icios en la nube pa a cualquie modelo (PaaS, IaaS,
o SaaS). A con inuación amos a enume a y de alla las p incipales he amien as que o ece.
Amazon SimpleDB: Es una base de da os NOSQL (No Only SQL), que además de
ga an iza almacenamien o masi o con accesos muy ápidos sin ene que usa
ope aciones complejas que se dan en bases de da os SQL, pe mi e ambién al clien e
abs ae se de su ges ión, adminis ación y man enimien o de la misma, ya que Amazon
adminis a au omá icamen e el ap o isionamien o de la in aes uc u a, man enimien o de
ha dwa e y so wa e, e indexa au omá icamen e los da os (índice au omá ico de
SimpleDB), y c ea y adminis a éplicas de los mismos que dis ibuye geog á icamen e
pa a pe mi i al a disponibilidad y capacidad de du ación.
SimpleDB se adap a ambién con acilidad a cualquie cambio, se puede añadi cualquie
a ibu o a cualquie abla sin p eocupa se po ompe un esquema ígido o e ac o iza el
código.
El se icio sólo cob a los ecu sos consumidos en almacenamien o de los da os y en
dis ibución de las solici udes, y no cob a nada en la ans e encia de da os en e
SimpleDB y o os se icios de AWS en la misma egión.
O os se icios de bases de da os que o ece AWS son: Amazon RDS, base de da os
elacional en la nube, que ambién abs ae al p og amado de las a eas de adminis ación;
Amazon DynamoDB, base de da os NOSQL mas escalable que SimpleDB pe o menos
lexible.
19
Amazon Simple S o age Se ice (Amazon S3): Es un se icio de almacenamien o en la
nube o ien ado a o ece una al a du abilidad, almacenando los da os de o ma sinc ónica
en a ias ins alaciones, disponibilidad, pe mi iendo además la posibilidad de elegi en
que egión es a án los da os pa a op imiza la la encia, segu idad, pe mi iendo ansmi i
sus da os a a és de SSL y ci a los de o ma au omá ica y median e su compa ibilidad
con el se icio de acceso e iden idad de Amazon (AWS IAM), escalabilidad, ya que se
pueden almacena odos los da os que se desee sin p eocupa se sob e cuan o se a a
necesi a , con acilidad de uso, es ando in eg ado en o os se icios de AWS (como
Elas ic Beans alk), y o eciendo API REST comple as y los SDK pa a pe mi i una
in eg ación sencilla con o as ecnologías.
Amazon S3 busca ambién educi el p ecio cob ando solo po lo que se necesi e, sin
comp omisos de gas o mínimo ni cuo as iniciales, y pe mi iendo la ans e encia de da os
que no se usen a menudo a Amazon Glacie educiendo de es a o ma ambién los cos es.
Amazon Elas ic Compu e Cloud (Amazon EC2): Se icio de hospedaje de se ido es
i uales, p opo ciona ecu sos compu acionales de o ma elás ica o ien ada a los
se icios de la nube.
Amazon EC2 pe mi e elegi los ecu sos sob e los que desplega se icios en la nube,
con igu ación de memo ia, CPU, almacenamien o de la ins ancia y amaño de pa ición
de a anque pa a su sis ema ope a i o y su aplicación.
Amazon EC2 o o ga un con ol comple o sob e los ecu sos in o má icos que se
desplieguen en la nube y pe mi e ins ancia odas las máquinas necesa ias en demanda.
Pa a adap a el p ecio a las necesidades de cada usua io Amazon o ece es modelos de
comp a de ins ancias de AmazonEC2: Bajo demanda, ese adas e ins ancias de subas a.
También o ece la opción de paga po hos s dedicados.
Amazon Rou e 53: Se icio web DNS escalable y de al a disponibilidad, conec a las
solici udes del usua io con la in aes uc u a en ejecución en AWS, es compa ible con los
se icios de AWS, como Amazon EC2 y Amazon S3, y ambién puede di ecciona a
usua ios a in aes uc u as ex e nas a AWS.
Con iene la he amien a Amazon Rou e 53 T a ic Flow, se puede di igi el á ico en
unción del es ado de los pun os de enlace, la ubicación geog á ica y la la encia.
AWS Elas ic Beans alk: Pe mi e implemen a se icios en la nube siguiendo el modelo
PaaS, es á diseñado pa a que sea muy sencillo implemen a y escala se icios y
aplicaciones web desa olladas con dis in as ecnologías, p eocupándose el usua io de
AWS solo de ca ga el código ya que Elas ic Beans alk adminis a de o ma au omá ica el
se icio, enca gándose del ap o isionamien o de la capacidad, equilib io de ca ga,
escalado au omá ico y moni o ización de la aplicación.
20
Amazon Elas ic MapReduce (Amazon EMR): Se icio que acili a el p oceso de big
da a aliéndose de la ecnología Hadoop, o ien ado al p ocesamien o de g andes
can idades de da os en e ins ancias de Amazon EC2 dinámicamen e escalables de o ma
muy sencilla y en able.
Amazon EMR ambién adminis a el es o de casos de uso de big da a, como el análisis
de logs, indexación web, almacenamien o de da os, ap endizaje au omá ico, análisis
inancie o, simulación cien í ica y la bioin o má ica.
AWS Iden i y and Access Managemen (Amazon IAM): Se icio g a ui o que pe mi e
con ola el acceso de los usua ios a se icios y ecu sos de AWS. Pe mi e c ea usua ios
y g upos de usua ios, o oles que es os usua ios puedan asumi . Pe mi e ges iona las
polí icas de acceso y de con ianza en compañías de e ce os, an o pa a usua ios y g upos
como pa a oles.
2.3 Desa ollo en Elas ic Beans alk
Elas ic Beans alk es el se icio PaaS de Amazon, o ien ado a acili a la adminis ación de
aplicaciones cloud ya que el desa ollado solo iene que ca ga la aplicación y Elas ic Beans alk
adminis a á de mane a au omá ica los de alles de la adminis ación y es ado de la aplicación.
Elas ic Beans alk p o ee pla a o mas pa a lenguajes de p og amación (Ja a, PHP, Py hon, Ruby,
Go) y con enedo es Web (Tomca , Passenge , Puma). Y los ecu sos necesa ios pa a ejecu a las
aplicaciones, incluyendo ins ancias de Amazon EC2.
Pa a usa es e se icio, lo p ime o que se hace es ca ga la aplicación en Elas ic Beans alk
in o mando al se icio del lenguaje en que es á desa ollada y sob e qué sis ema ope a i o
quie es que co a la ins ancia en Amazon EC2 que con end á la aplicación. Elas ic Beans alk
au omá icamen e lanza un en o no y c ea y con igu a los ecu sos de AWS necesa ios pa a
ejecu a el código. Una ez que el en o no es á lanzado, se puede adminis a , desa olla nue as
e siones de u aplicación, y de o ma opcional ambién puedes adminis a el escalado de las
ins ancias de EC2, el es ado del en o no, o maneja e en os y mé icas desde la in e az web de
Elas ic Beans alk, como pueden se los dispa ado es de elas icidad, pa a con ola el escalado
dinámico del se icio. La Figu a 2 mues a el lujo de abajo de Elas ic Beans alk.
21
Figu a 2: Flujo de abajo en Elas ic Beans alk
2.3.1 Componen es de Elas ic Beans alk
Aplicación: Una aplicación en Elas ic Beans alk es la colección lógica de los
componen es de la misma, incluyendo los en o nos, las e siones y con igu aciones del
en o no. Concep ualmen e es simila a una ca pe a.
Ve sión de una aplicación: Una e sión de aplicación se e ie e al código de una
i e ación especí ica de la aplicación web. Cada e sión es almacenada como un obje o en
Amazon S3 con eniendo el código de la misma.
En un en o no ac i o se puede desplega en cualquie momen o cualquie e sión de una
aplicación ya ca gada en S3.
En o no: El en o no de una aplicación man iene ca gada la e sión ac ual del código y
p o ee a la aplicación de los ecu sos necesa ios pa a ejecu a la, como las ins ancias en
EC2, que son las máquinas que ca ga án el código, moni o iza el se ido de la
aplicación, o los balanceado es de ca ga. La Figu a 3 mues a una aplicación con dos
en o nos.
Figu a 3: Aplicación de AWS EB con dos en o nos
22
2.3.2 Roles, ins ancias de pe iles y polí icas de usua ios.
Cuando se c ea un en o no en Elas ic Beans alk, se debe p opo ciona un ol y una ins ancia de
un pe il del se icio de Amazon IAM. El ol pe mi e a Elas ic Beans alk asumi lo pa a pode
usa o os se icios de AWS asociados y la ins ancia del pe il pe mi e a las ins ancias den o del
en o no subi in o mes a S3 y ealiza dis in as a eas de adminis ación que dependen de cada
ipo de en o no y pla a o ma.
Además se pueden c ea polí icas de usua ios y aplica las en la cuen a de IAM, pa a c ea y
adminis a en o nos de Elas ic Beans alk, es o da mayo con ol pa a los dis in os escena ios en
los que se desa olla la aplicación, pe mi iendo al usua io más libe ad en la aplicación o añadi
más es icciones en dis in os casos de uso.
Rol de Elas ic Beans alk: Es el ol que Elas ic Beans alk asume cuando in e ac úa con
o o se icio, como pueden se pe misos adicionales pa a in e ac ua con las ins ancias
en EC2 en las que se ejecu a la aplicación. En la Figu a 4 emos un ejemplo de cómo es
un ol en Elas ic Beans alk.
Figu a 4: Ejemplo de Rol en Elas ic Beans alk
Ins ancia de un pe il: Una ins ancia de un pe il de Amazon IAM en Elas ic Beans alk
es un ol que se aplica a las ins ancias lanzadas den o del en o no. Pa a es as ins ancias
se deben de ini los pe misos, como pueden se acceso a Amazon S3, pa a lee , esc ibi
o ambos. En la Figu a 5 emos un ejemplo de una ins ancia de un pe il.
23
Figu a 5: Ins ancia de pe il
Polí ica de usua io: Son usua ios de Amazon IAM c eados pa a cada pe sona que use
Elas ic Beans alk y así e i a que usen una cuen a con pe misos de adminis ado , o que
és e compa a sus c edenciales.
Es as condiciones pe mi en a o o desa ollado con menos pe misos desplega cie os
se icios en Elas ic Beans alk, o enca ga se sólo de cie as a eas de adminis ación. La
Figu a 6 mues a un ejemplo de es as polí icas.
24
Figu a 6: Ejemplo de Poli ica de usua io
2.4 Tecnologías de desa ollo en la nube.
Las ecnologías de p og amación que se han usado en es e abajo y se an a desc ibi en es e
apa ado son: Py hon y Ja asc ip , y Node.js, o as ecnologías usadas son Ajax, Json y Twi e
Boo s ap que ambién se desc iben en es a sección.
25
2.4.1 Py hon
Py hon es un lenguaje de p og amación in e p e ado de al o ni el, in e ac i o, y mul i-
pa adigma. Usa ipado dinámico, es mul ipla a o ma, y basa su sin axis en la indexación, pa a
acili a la legibilidad del código [8].
Py hon ue c eado en 1991 po Guido an Rossum en el S ich ing Ma hema isch Cen um en los
Países Bajos como suceso de un lenguaje llamado ABC. Y en 2001 se undó la Py hon
So wa e Founda ion, una o ganización sin ánimo de luc o c eada especí icamen e pa a se la
poseedo a de oda la p opiedad in elec ual ela i a a Py hon. Py hon se dis ibuye bajo una
licencia de código abie o denominada Py hon So wa e Founda ion License, compa ible con la
licencia gene al GNU [9].
2.4.1.1 P incipales ca ac e ís icas.
Mul ipa adigma: Py hon no ue za al desa ollado a p og ama de una o ma
de e minada si no que admi e dis in os pa adigmas. Admi e comple amen e los
pa adigmas de p og amación o ien ada a obje os y de p og amación es uc u ada. Y en
meno medida ambién sopo a muchas ca ac e ís icas de o os pa adigmas como
p og amación uncional (lis a in ensionales y dicciona ios), p og amación o ien ada a
aspec os y median e ex ensiones se pueden inco po a más pa adigmas.
Zen o Py hon [10]: The zen o Py hon es un documen o que esume y da indicaciones
sob e la iloso ía de p og amación Py hon, en la que p ima un código cla amen e legible,
y ácil de en ende .
Facilidad de ex ensión: Py hon es á diseñado pa a se ácilmen e ex ensible an es que
cons ui oda la uncionalidad en el núcleo del lenguaje. Es muy ácil cons ui y usa
ex ensiones en C y C++ que cub an o mejo en uncionalidades de Py hon, como puede
se la op imización de la elocidad, pe mi iendo así man ene la cla idad del lenguaje en
luga de complica lo.
Ges ión de la memo ia: Py hon op imiza la ges ión de la memo ia usando ipado
dinámico y con eo de e e encias pa a libe a los ecu sos. Además usa esolución
dinámica de nomb es, enlazando nomb es de a iables y mé odos du an e la ejecución
del p og ama.
32
Figu a 13: Aplicación Apache JMe e
2.5 Big Da a
El é mino Big Da a se e ie e a colecciones de da os que son an g andes o complejos que no se
pueden a a como conjun os de da os adicionales. Con el a ance de la ecnología, da os de
comunicación en e máquinas, da os p oducidos po los usua ios en la web 2.0, da os
acumulados po di e sas indus ias o cen os de in es igación, ha su gido una nue a
p oblemá ica, ya que no solo es á el p oblema del g an olumen de da os, sino que ambién es os
da os pueden se ex emadamen e a iados en e sí, y la cons ucción de aplicaciones que
analicen es os da os a una elocidad adecuada, o los cap u en, busquen, compa an o almacenen
no se pueden ealiza con ecnologías adicionales como las bases de da os con encionales [40].
33
Figu a 14: C ecimien o de digi alización y capacidad global de almacenamien o de la in o mación
2.5.1 Bases de da os NOSQL
Las bases de da os NoSQL (No Only SQL) son sis emas de almacenamien o de in o mación que
no cumplen con el esquema en idad- elación, es án o ien adas pa a abaja con una g an
escalabilidad pa a maneja olúmenes de da os de abajo con Big Da a.
Respec o a las bases de da os adicionales se di e encian en que las bases de da os NOSQL no
basan su uncionamien o en ablas, joins y ansacciones, si no que p o een un esquema más
lexible [41]. En unción de es e esquema se dis inguen cua o ipos undamen ales de bases de
da os NOSQL:
Almacenamien o cla e- alo : Se accede a los da os a pa i de una cla e única [42]. Al
no o ece una es uc u a de da os cla es son de mayo u ilidad en ope aciones simples
basadas en cla es.
Almacenamien o documen al: Pa ecidas a las de almacenamien o cla e- alo , pe o es e
ipo de bases de da os sí que equie e una es uc u a de da os conc e a [43], a es os da os
se les llama documen os, y pueden oma dis in os o ma os como JSON o XML.
Además pe mi e lanza que ies sob e es os da os [42]. MongoDB o SimpleDB son las
ecnologías de es e ipo más usadas. Y las ecnologías MapReduce de google y Hadoop
de apache ambién es án basadas en es e concep o.
34
Almacenamien o en g a o: No se basan en ablas sino en g a os, almacenando la
in o mación en los nodos mien as que las elaciones las ep esen an las a is as [43]. Las
ope aciones que an es e an en e ablas aho a son eco idos del g a o, ac ualizando
siemp e una lis a de adyacencia en e los nodos [42]. G aphDB es la ecnología más
u ilizada en es e aspec o.
Almacenamien o o ien ado a columnas: Es e ipo de almacenamien o es pa ecido al
Documen al. Su modelo de da os es de inido como “un mapa de da os mul idimensional
poco denso, dis ibuido y pe sis en e” [42]. Es á o ien ado al almacenaje de da os que
escalan ho izon almen e, pe mi iendo que bajo una misma cla e se almacenen a ios
ipos de a ibu os. HBase o Hype Table son las p incipales ecnologías que implemen an
es e ipo de base de da os.
2.5.2 Mine ía de da os
Da a mining o mine ía de da os en un subcampo in e disciplina de las ciencias de compu ación
cuyas p incipales a eas se pueden di idi en dos: p edicción, que consis e en hace uso de los
alo es conocidos pa a de e mina alo es de los da os desconocido o u u os, y desc ipción que
consis e en el descub imien o de pa ones sob e conjun os de da os muy g andes (big da a), pa a
ex ae in o mación es uc u ada de o ma comp ensible [44]. Engloba aspec os de la in eligencia
a i icial, ap endizaje au omá ico, es adís ica y sis emas de bases de da os [45].
Los p incipales pa ones que se econocen g acias a la mine ía de da os y has a aho a
desconocidos son los g upos de egis os de da os en el que se cen a el análisis de clus e s, los
egis os poco usuales en los que se cen a la de ección de anomalías y el es udio de
dependencias en el que se basa la mine ía po eglas de asociación.
2.5.2.1 Técnicas de mine ía de da os
Algunas de las p incipales écnicas de mine ía de da os, basadas en el descub imien o de
in o mación en e los da os son [44]:
Reglas de asociación: Se usan pa a descub i enómenos en común que ocu en en un
conjun o de da os.
Reglas de clasi icación: Basado en el descub imien o de eglas que pe mi en pa iciona
los da os en conjun os disjun os.
Redes neu onales: Inspi ado en la o ma en que unciona el sis ema ne ioso, se
cons uye un sis ema de ap endizaje y p ocesamien o au omá ico en el que un sis ema de
neu onas compone una ed que colabo an en e ellas pa a p oduci la salida.
35
Clus e ing: Es un p oceso de ag upamien o de da os den o del conjun o, basado en
dis in os c i e ios, siendo el más popula la dis ancia en e es os da os, dando luga a
conjun os de da os simila es den o del conjun o de da os inicial. En la Figu a 15 emos
un ejemplo de es e p oceso.
Figu a 15: Clus e ing de un conjun o de da os
2.5.2.2 Técnicas de clus e nig.
En es e abajo se han usado écnicas de clus e ing pa a ealiza mine ía de da os, en es a sección
desc ibimos las p incipales.
Clus e ing basado en densidad con el algo i mo DBScan
DBScan (el ag upamien o espacial basado en densidad de aplicaciones con uido) es un
algo i mo de clus e ing basado en la densidad de los da os y diseñado pa a descub i clus e s de
o mas a bi a ias [46]. Es muy ú il cuando los da os se dis ibuyen en zonas de densidad al a y
baja. En la Figu a 16 emos un ejemplo de es a écnica de clus e ing.
36
Figu a 16: Clus e ing con DBScan
Clus e ing basado en o denamien o je á quico
El o denamien o je á quico es un mé odo de clus e ing basado en la cons ucción de una
je a quía de clus e s [47], es o se ealiza median e la cons ucción de un á bol donde las hojas
son los elemen os del conjun o y el es o de nodos son subconjun os que se pueden pa iciona a
su ez esol iendo así el p oblema de de e mina el núme o de conjun os (clus e s) en los que se
di idi á el conjun o de da os ya que se calcula de o ma au omá ica, como se e en la Figu a 17.
Figu a 17: Rep esen ación del clus e ing median e el o denamien o je á quico
El cos e de los algo i mos de es a écnica de clus e ing es muy ele ado ( ) [48] [49]po lo
que no son algo i mos escalables.
37
Clus e ing basado en o denamien o no je á quico con el algo i mo K-means
K-means es un algo i mo de clus e ing que consis e en la pa ición de un conjun o de da os en k
clus e s en los que cada da o pe enece al g upo cuya media sea más ce cana a su alo , es e
alo de la media es á ep esen ado po el cen oide del clus e .
El p oblema de clus e ing usando k-means con espacios de d dimensiones es un p oblema NP-
di ícil [50]. Pe o se ija el núme o de clus e s k, y el núme o de dimensiones d, la complejidad es
polinómica espec o al núme o de da os a clasi ica (n) [51]:
O
El algo i mo comienza colocando k pun os en el espacio ep esen ado po los obje os que se an
a ag upa , ep esen ando el g upo inicial de cen oides.
Se asigna cada obje o al g upo que iene el cen oide más ce cano, con una unción dis ancia
en e obje os (dis ancia Manha an, dis ancia Minkowski, po ejemplo).
Cuando odos los obje os han sido asignados, se ecalculan las posiciones de los cen oides, es o
se epi e has a que el g upo de cen oides no a íe [52].
Figu a 18: Aplicación del algo i mo K-Means
La mé ica SSE (Sum o Squa ed E o ) se usa pa a ayuda a decidi el núme o de clus e s en que
di idi emos el conjun o de da os al usa el algo i mo k-means.
38
La mé ica mide la suma del cuad ado de las dis ancias en e cada miemb o del clus e y su
cen oide según la siguien e ó mula.
Donde es el cen oide de cada clus e , k el núme o de clus e s y Ci cada uno de los clus e s.
Es a mé ica mide la cohesión in e na del clus e y la sepa ación ex e na, eniendo su alo
op imo cuando deja de dec ece ab up amen e [53]. Se usa pa a alida el alo de k.
Figu a 19: Ejemplo de alidación de k usando la mé ica SSE
2.6 Lema ización
La lema izacion es el p oceso po el que se educe una palab a a su aíz o lema, es usado en el
campo de la mo ología lingüís ica y la ecupe ación de in o mación. Es e lema al que se educen
las palab as no siemp e iene po qué coincidi con su aíz mo ológica [54].
El p ime algo i mo de lema izacion ue publicado en 1968 po Julie Be h Lo ins [54], pe o ue
en 1980 cuando Ma in Po e desa ollo en p incipal algo i mo de lema ización en el que se
basan los algo i mos usados hoy en día [55].
39
2.6.1 Algo i mos de lema ización
En es a sección se desc iben las p incipales o mas de implemen a un algo i mo lema izado en
unción de la p ecisión, endimien o y esolución de p oblemas que puedan su gi :
La écnica de p oducción: Es e algo i mo se basa en el uso de una abla que con iene
odos los lemas y pa a cada palab a se busca en la abla pa a ob ene el mismo, aunque se
pueden de ol e a ias o mas.
Algo i mos de desmon ado de su ijos: Es os algo i mos cons an de eglas almacenadas
que ayuda a eco a la palab a de en ada has a encon a su lema.
Algo i mos es ocás icos: Es os algo i mos incluyen el uso de la p obabilidad pa a
iden i ica el lema de una palab a, ap enden de una abla con las o mas de las aíces
has a sus declinaciones pa a desa olla un modelo p obabilís ico que se exp esa en o ma
de eglas lingüís icas simila es a las de los algo i mos de desmon ado de su ijos.
2.6.2 Lema ización en Español
El es udio de la lema ización es á cen ado en su mayo ía sob e el inglés, pe o ambién se han
adap ado los algo i mos al español, en especial g acias al abajo de Ma in Po e que c eó el
lenguaje de p og amación Snowball [56], diseñado pa a c ea algo i mos lema izado es que se
usen en los casos de ecupe ación de la in o mación, y g acias a es o se ha pe mi ido la
cons ucción de algo i mos lema izado es en o os idiomas como el ancés, i aliano y español
[57].
2.7 OpenId Connec
OpenID Connec es una capa de au en icación de iden idad sob e el p o ocolo OAu h 2.0 [58],
que pe mi e la au en icación delegada de un usua io en una aplicación delegando la e i icación
de iden idad po un se ido de au o ización bien conocido y de con ianza, como se desc ibe en
la Figu a 20.
40
Figu a 20: Flujo de au o ización de OAu h 2.0
El p o ocolo OAu h 2.0 de ine es os lujos de au o ización [59], pe o pa a ealiza la
au en icación delegada se usa el es ánda OpenId Connec , que sob e OAu h de ine la es uc u a
del oken de iden idad y el scope (ámbi o) del oken pa a es ablece que da os eque idos del
usua io.
OIDC = OAu h 2.0 + IdToken + Scopes
El p o ocolo OAu h se empezó a desa olla en No iemb e de 2006, pe o ue en ab il de 2007
cuando DeWi Clin on de Google se in e esó en apoya el p oyec o en el que en diciemb e de
ese mismo año se p esen aba el bo ado de ini i o [60].
La e sión 1.0 del p o ocolo se p esen ó en Ab il de 2010, y en Oc ub e de 2012 se p esen ó la
e sión 2.0 que se usa en es e p oyec o.
2.7.1 OpenID sob e Oau h
Cuando se usa OpenID, el au ho iza ion se e es un p o eedo de iden idad, como puede se
Google, Facebook o Amazon, con a los que el usua io se au en ica y e de uel en un code que
se i á pa a e i ica esa au en icación po el se ido de la aplicación con a la que se quie a
au en ica .
En la Figu a 21 se desc ibe el lujo de es a ope ación usando Google como el p o eedo de
iden idad.
41
Figu a 21: Flujo de au en icación con OpenId sob e Google
48
Figu a 28: Fiche o CORS en AWS
3.1.1.3 Comunicación uni o me
Pa a implemen a de o ma uni o me y obus a la comunicación on -end-back-end, y que
pe mi a múl iples implemen aciones de las aplicaciones en modo clien e, se es ablecen las
espues as en o ma o JSON con una o ma de inida.
3.1.1.3.1 Fo ma o de las espues as JSON
Las espues as son obje os JSON con los siguien es a ibu os.
Resul : “SUCCESS” | “FAILURE”
Code: <Valo numé ico>
Desc ip ion : <Tex o desc ip i o opcional>
Da a: <obje o JSON>
Ejemplos:
Ge P o ile()
{" esul ":"SUCCESS",
"code":0,
"desc ip ion":"ope a ion ok",
"da a":[
49
{"key":"CASA","weigh ":1},
{"key":"PERRO","weigh ":1}
]}
ge Sha edResou ces()
{" esul ":"SUCCESS",
"code":0,
"desc ip ion":4,
"da a":[
{"KEYWORDS":["CASA","PERRO”],
"CIRCLES":[{"ci cle_id":"PUBLIC","ci cle_name":"PUBLIC"}],
"DESCRIPTION":"cccc","VALUE":"u l2","TYPE":"FILE"},
{"KEYWORDS":["CASA","PERRO"],
"CIRCLES":[{"ci cle_id":"PUBLIC","ci cle_name":"PUBLIC"}],
"DESCRIPTION":"dedede","VALUE":"u l4","TYPE":"FILE"},
{"KEYWORDS":["CASA","PERRO"],"CIRCLES":"ALL","DESCRIPTION":"dddd","VALUE":"u
l3","TYPE":"FILE"},
{"KEYWORDS":["CASA","PERRO"],
"CIRCLES":[{"ci cle_id":"PUBLIC","ci cle_name":"PUBLIC"}],
"DESCRIPTION":"dede ded","VALUE":"u l7","TYPE":"FILE"}]}
3.1.2 Componen es
El RSC es á compues o po dos módulos p incipales, basados en la a qui ec u a clien e y
se ido . En el módulo clien e es á la página del se icio desa ollada en HTML5 con Twi e
Boo s ap, y el módulo se ido es á compues o po dos submódulos, el módulo “Sha ing”
implemen ado en Node.js y el módulo “Hello”, que es a implemen ado en Py hon.
Po úl imo y pa a ealiza unciones muy especí icas, hay un módulo “Ba ch”, que se ejecu a
pe iódicamen e y que iene unciones pa a gene a la abla de índice in e so, y el clus e ing que
se de ini á en el módulo Analy ics. En la Figu a 29 se mues a es a desc ipción de la
a qui ec u a.
50
Figu a 29: A qui ec u a del se icio
3.1.2.1 Lado se ido
Es a desplegado en Elas ic Beans alk como una sola aplicación con dos en o nos de AWS.
Un en o no en Node.js (la maquina p incipal que se ins ancia en EC2 y odas las maquinas que
se pod án ins ancia en unción a las llamadas que se ealicen, ca ga án el código de inido en
es e en o no), ap o echando las en ajas del callback y la ejecución monohilo pa a ealiza la
comunicación con el back-end, ya que puede en ia a ias pe iciones y segui ejecu ando o as
unciones.
El o o en o no en Py hon se enca ga de las unciones que necesi an una espues a pa a pode
con inua con su ejecución, como la au en icación de usua io y c eación de su ca pe a po
de ec o, y la comunicación con el módulo Anali ycs.
51
3.1.2.2 Lado clien e
La página de la aplicación la desplega á el módulo Hello, es una página usando HTML5,
Ja aSc ip pa a las unciones de la página, AJAX sob e es o, pa a la comunicación con el back-
end, más especí icamen e, con las unciones del módulo Sha ing, y Twi e Boo s ap pa a el
diseño isual de la página y esponsi e web design.
El diseño del lado clien e se puede di idi en es módulos, el módulo de in e acción con el back-
end, compues o po las unciones que con ienen las llamadas AJAX, el módulo de in e acción
con la página, que con iene las unciones que se ejecu an sob e la página, y el módulo de diseño,
con el diseño en Boo s ap de la página.
3.1.3 Modelo de da os
En es a sección se desc ibi án los ipos de da os que hay en las bases de da os, la o ma en que se
elacionan y las condiciones que deben cumpli los mismos.
3.1.3.1 Dominio MMS_RESOURCE_TABLE
En es e dominio incluimos los obje os compa idos en el RSC:
Tipo de campo
Nomb e del Campo
Comen a io
Nomb e del obje o
USER_ID+VALUE
A ibu o
USER_ID
A ibu o
TYPE
A ibu o
VALUE
U l del ecu so
A ibu o
LIST_OF_CIRCLES
Lis a de cí culos donde es
compa ido
A ibu o
DESCRIPTION
Tex o
A ibu o
KEYWORDS
Lis a de palab as cla e
ex aídas au omá icamen e del
ex o de la desc ipción.
A ibu o
TIMESTAMP
Cuando ue c eado o
ac ualizado.
52
A ibu o
PICKUP_COUNTER
Se inc emen a cuando o o
usua io ealiza la unción
pickup() sob e el ecu so pa a
añadi lo a su in en a io de
e ce os.
A ibu o
OWNER
Dueño del ecu so.
A ibu o
OWNED
YES cuando
USER_ID=OWNER
A ibu o
SUBSCRIPTION_ID
Solo si el usua io es á susc i o
a es e ecu so.
A ibu o
SERVICE_NAME
Solo si el ecu so es de ipo
Se icio
A ibu o
PRICE
Solo si el alo del cí culo
empieza po : “MARKET-
$$$$$$$”
Donde:
TYPE = “FOLDER” | “SERVICE” | “INTEREST” | “FAVOURITE_LINK”
Y VALUE oma los siguien es alo es, dependiendo de TYPE:
TYPE= “FOLDER”, en onces el VALUE es la u l de S3.
TYPE= “SERVICIO”, en onces el VALUE es la u l del se icio
TYPE=”INTEREST” en onces el VALUE es “INTEREST”
TYPE=“FAVOURITE_LINK” en onces el VALUE es la u l del link.
La lis a del a ibu o KEYWORDS es de la siguien e o ma: ["MUSIC","SHAKIRA", "POP"]
La azón pa a ene dos campos an simila es como Owne y Owned es que SimpleDB no pe mi e
hace búsquedas del ipo:
selec * om MMS_RESOURCE_TABLE whe e USER_ID=OWNER_ID
El é mino a la de echa de la igualdad debe se una cons an e, po eso se usa el campo OWNED.
53
3.1.3.2 Dominio USER_PROFILE_TABLE
En es e dominio se gua da la in o mación sob e los usua ios, y sus cí culos y ca pe as po
de ec o.
Tipo de campo
Nomb e del campo
Comen a io
Nomb e del obje o
Valo de USER_ID
A ibu o
DEFAULT_BUCKET_NAME
Ca pe a po de ec o de cada
usua io
A ibu o
PROFILE
A ibu o
OTHER_CIRCLES
Cí culos de o os usua ios a
los que pe enece.
El pe il es a en o ma o JSON con la siguien e o ma:
[{"key":"MUSIC","weigh ":2},
{"key":"SHAKIRA","weigh ":1},
{"key":"LENNON","weigh ":1},
{"key":"COMPUTERS","weigh ":1}]
3.1.3.3 Dominio SERVICE_PROFILE_TABLE
En es e dominio se almacenan los se icios ( ecu sos ísicos) que han dado de al a los usua ios
Tipo de campo
Nomb e del campo
Comen a io
Nomb e del obje o
Valo de SERVICE_ID
(use _id+se ice_name)
A ibu o
SERVICE_NAME
Nomb e del se icio
A ibu o
USER_ID
Dueño del se icio
A ibu o
DESCRIPTION
Desc ipción del se icio
A ibu o
KEYWORDS
Lis a de palab as cla e
ex aídas au omá icamen e
54
del ex o de la desc ipción.
A ibu o
SERVICE_URL
U l del se icio
A ibu o
FUNCTIONAL_PARAMS
Pa áme os uncionales,
de inidos con el se icio.
A ibu o
NON_FUNCTIONAL_PARAMS
Pa áme os no uncionales,
de inidos con el se icio.
3.2 Diseño uncional se ido
En es e apa ado se ealiza a una desc ipción uncional del se ido , especi icando las
uncionalidades del se icio.
3.2.1 Funcionalidades
El Resou ce Sha ing Cen e iene las siguien es uncionalidades:
Au en icación delegada: Puedes accede al se icio con u cuen a de google, ya que AWS
pe mi e la au en icación delegada basada en el p o ocolo OpenId.
Acceso empo al con oken de AWS: Al loguea e en la aplicación se inicia un dialogo
con AWS pa a pedi un oken empo al que e da á acceso a los se icios de AWS que la
aplicación u iliza.
C eación de la ca pe a en S3 po de ec o:
La ca pe a po de ec o se á la ca pe a aíz del usua io, si el usua io ya iene una ca pe a
aíz el RSC le de ol e á el nomb e de es a en la abla USER_PROFILE_TABLE. Si no
iene, el RSC c ea á una ca pe a aíz pa a el usua io asignándola un nomb e único pa a
cada ca pe a aíz de usua io.
La ca pe a po de ec o es c eada en el lado clien e, pe o el nomb e pa a es a e lo da el
lado se ido . Es a es a egia es obus a y educe cos es, ya que no en ía á ico salien e
del se ido a S3.
55
C eación y bo ado de ca pe as:
Es as unciones es án implemen adas en el lado clien e, que in oca al se icio S3, y
den o de la ca pe a aíz del usua io pe mi e c ea un á bol de ca pe as pa a o ganiza los
ecu sos lógicos de los que dispone.
Subida de con enido mul imedia:
Diálogo en e la aplicación clien e con S3 sin la in e acción del lado se ido .
Compa ición de ecu sos (con enido mul imedia, links a o i os y se icios):
Los usua ios pueden compa i obje os in ocando la unción en el lado se ido del RSC,
que ac ualiza la abla MMS_RESOURCE_TABLE indicando si un obje o pa icula es
compa ido y en que cí culos sociales.
Un usua io puede compa i se icios, ca pe as (no iche os po sepa ado), y links
a o i os que son compa idos y públicos po de ec o.
Cuando un usua io compa e un obje o, iene que ellena un campo de desc ipción, sob e
el que se aplica á un algo i mo de lema ización pa a ob ene las palab as cla e e
implemen a la unción de búsqueda sob e es as.
Figu a 30: Ven ana modal con o mula io de compa ición
Funcionalidad Ma ke place:
Los usua ios pueden elegi un p ecio pa a los con enidos que compa en, pa a hace es o,
ienen que compa i el con enido en el cí culo “MARKET” y pone un p ecio, en es e
caso el acceso al cí culo social se hace cuando el usua io paga po el con enido.
De ca a al usua io es o es anspa en e, pe o el cí culo MARKET pa a cada con enido de
pago end á un nomb e dis in o que se gene a alea o iamen e pa a que un usua io que
pague po un con enido no enga acceso a odos los con enidos de pago del dueño.
56
Búsqueda de con enido mul imedia, links a o i os y se icios.
Cada ez que un usua io compa e un obje o, es obliga o io es ablece me ada os, las
palab as cla e que el algo i mo lema izado ob iene de la desc ipción. Así, es posible
busca y encon a es os obje os compa idos usando búsquedas en la base de da os
basadas en esas palab as cla e.
Figu a 31: Fo mula io de búsqueda en ba a de na egación
Gene ación de humbnails:
En el lado clien e, cada ez que un usua io suba una imagen se gene a á un humbnail
que es el que se e á desde la aplicación clien e, pa a no ene que ca ga siemp e la
imagen o iginal que puede se muy pesada en el na egado .
Es a unción es anspa en e al usua io que no pod á in e ac ua con los humbnails, solo
los e en el na egado .
Mo o de ecomendación basado en el pe il de usua io:
Es o es pa e del o o módulo de la aplicación, el módulo Analy ics. Basándose en el
pe il del usua io, se o ece á una ecomendación al usua io de un ecu so que le pueda
in e esa .
3.2.1.1 Au en icación y acceso
Una ez el usua io se loguea, el RSC le de uel e un oken empo al de AWS, es e oken
pe mi i á du an e un iempo limi ado que el usua io in e ac úe con los se icios de AWS (S3 y
SimpleDB, almacenamien o y base de da os)
El oken AWS es gene ado en el módulo se ido en Py hon in ocando la unción assume_ ole()
o asume_ ole_wi h_web_iden i y() (dependiendo de si el acceso es di ec o a la aplicación o
median e un p o eedo de iden idad) pe enecien e al API de ges ión de iden idad y acceso
(AWS IAM) de AWS y es en iado a la pa e clien e jun o con la espues a al login.
Es e oken p o ee de acceso limi ado a los ecu sos de Amazon, y iene los mismos pe misos que
el ol de usua io que hemos de inido pa a es e p opósi o en el se icio IAM de AWS. Es e ol, de
hecho, es un conjun o de pe misos. El nomb e de es e ol pa a el RSC es “mmsclien ”.
57
Figu a 32: Rol mmsclien
Una ez el usua io ha conseguido asumi el ol mmsclien y el oken de AWS, se p ocede á a la
c eación de la ca pe a po de ec o, si no es á c eada ya y el pos e io en ío del nomb e de es a
ca pe a al clien e, o solamen e el en ío del nomb e si ya es á c eada.
Figu a 33: Flujo de acceso y au en icación
64
3.2.1.6 Compa ición de ecu sos
Se pueden compa i cua o ipos de ecu sos: Ca pe as, se icios, links a o i os e in e eses, el
p oceso de compa ición consis e en elegi una se ie de pa áme os necesa ios, como la u l del
ecu so a compa i , el cí culo en que se compa i á, y la desc ipción del ecu so (pa a ob ene las
palab as cla e que obedezcan al se icio de búsqueda) y compa i el ecu so inse ándolo en la
abla MMS_RESOURCE_SHARING_CENTER median e la unción sha eResou ce() que el
clien e in oca con a el RSC, como se e en la Figu a 41.
Figu a 41: Compa ición de ecu sos
La unción sha eResou ce() inse a o ac ualiza los a ibu os de un ecu so compa ido en la abla
MMS_RESOURCE_TABLE.
Cuando un usua io compa e un ecu so es obliga o io p opo ciona una lis a de palab as cla e
asociadas al ecu so, pa a inse a las en la abla MMS_RESOURCE_TABLE. Es o pe mi e
ejecu a búsquedas basadas en las cla es y po lo an o encon a es os con enidos basándose en
las cla es p opo cionadas.
La lis a de cla es se ex ae del a ibu o desc ipción que el usua io p opo ciona du an e el p oceso
de compa ición usando un algo i mo lema izado , y an o la desc ipción como la lis a de cla es
se incluyen en la abla MMS_RESOURCE_TABLE.
65
Algo i mo lema izado
Los me ada os de los obje os compa idos son gene ados aplicando un algo i mo lema izado
sob e el campo desc ipción.
Sob e la desc ipción de los ecu sos se aplica un algo i mo de lema ización de desmon e de
su ijos, de la o ma que se e en la Figu a 42.
Figu a 42: Reglas de desmon ado de su ijos
Pa a lle a a cabo es o, hay que elimina p ime o las s op wo ds (palab as como: a, un, unas que
no apo an in o mación sob e la desc ipción) y luego aplica las eglas de desmon ado de su ijos
sob e las palab as que quedan pa a así de ol e una lis a de las cla es sob e las que se basa án
las búsquedas (po ejemplo, si se busca cocheci o, se busca á la aíz coch, pa a de ol e ambién
palab as elacionadas).
El algo i mo lema izado usado en es e abajo es á basado en el algo i mo de Ma in Po e , es la
aducción a Ja aSc ip de la implemen ación del algo i mo en php po Paolo Ragone [62].
Cons ucción y ac ualización del pe il de usua io.
La lis a de palab as cla e de los con enidos compa idos po un usua io pa icula o ma pa e de
su pe il, po lo an o un usua io es á de inido po la suma de las lis as de palab as cla e de sus
obje os compa idos. Si hay más de una apa ición de la misma palab a cla e, se iene en cuen a
median e un con ado de cada palab a cla e en el pe il del usua io que no malizamos espec o
del o al de las palab as y denominamos peso de la cla e. En la Figu a 43 emos una
ep esen ación g á ica de un pe il de usua io con sus cla es y pesos asociados.
Figu a 43: Rep esen ación del pe il de un usua io
66
El o ma o de la lis a de palab as cla e es JSON, a con inuación emos un ejemplo del a ibu o
PROFILE de la abla USER_PROFILE_TABLE:
[{"key":"MUSIC","weigh ":2},
{"key":"SHAKIRA","weigh ":1},
{"key":"LENNON","weigh ":1},
{"key":"COMPUTERS","weigh ":1}]
Cada ez que un usua io compa e un ecu so, la unción ebuildP o ile() del RSC (que
econs uye el pe il del usua io en unción de las nue as palab as cla es) es in ocada, pe o no
desde el lado clien e, se hace au omá icamen e en el se ido cuando inse a un nue o elemen o
en la abla MMS_RESOURCE_TABLE.
Compa ición de ecu sos: Ca pe as
El mé odo de compa ición de iche os se ealiza compa iendo las ca pe as que los con ienen, no
se pueden compa i los iche os de o ma independien e, ya que se compa e la u l de S3 que da
acceso al bucke pa icula ep esen ado po esa ca pe a.
En la Figu a 44 emos el o mula io de compa ición de ca pe as que incluye los campos u l,
communi ies (que es el cí culo donde se compa i á) y desc ipción.
Figu a 44: Ven ana modal con o mula io de compa ición
Compa ición de ecu sos: Links a o i os
Es e ipo de con enido es ú il pa a compa i ideos de you ube, páginas web, aplicaciones web y
o o con enido público accesible desde una u l sin necesidad de subi ningún obje o a S3.
67
Figu a 45: Compa ición de links a o i os
El cí culo en que se compa en los links po de ec os es el cí culo PUBLIC po de ec o, ya que el
usua io no suele se el dueño de es e con enido y no hace al a es ingi lo a algún cí culo.
Después de la inse ción de la ila en la abla MMS_RESOURCE_TABLE, el pe il del usua io se
econs uye de o ma au omá ica desde el lado se ido , sin que haga al a que el clien e in oque
a la unción ebuildP o ile().
Compa ición de ecu sos: Se icios
Un se icio, además de una desc ipción y lis a de palab as cla e a pa i de es a necesi a más
pa áme os pa a es a comple amen e de inido, es os pa áme os son los denominados
pa áme os uncionales y no uncionales que se desc iben en el p oceso de c eación del se icio.
Po lo an o solo la desc ipción, el campo communi ies (el cí culo donde se compa i á) y la u l
del se icio, es án disponibles en el o mula io de compa ición, ya que el es o de pa áme os
pa a de ini el se icio es án de inidos desde la c eación. El campo desc ipción con end á la
desc ipción que se usó pa a c ea el se icio, y pe mi e ac ualiza la. La Figu a 46 mues a como
es es e o mula io de compa ición.
68
Figu a 46: Fo mula io de compa ición de se icios
El p oceso de compa ición es el mismo que ya se ha desc i o, desde el clien e se in oca
sha eResou ce() que añade una nue a ila a MMS_RESOURCE_TABLE y se econs uye el
pe il del usua io.
Los cambios en la desc ipción del se icio que se hagan, solo a ec an a las búsquedas y al pe il
del usua io al compa i el se icio, po que se inse an en MMS_RESOURCE_TABLE, de lo
con a io (al c ea o ac ualiza el se icio), solo es án en SERVICE_PROFILE_TABLE.
Compa ición de ecu sos: In e eses
El p oceso de compa i in e eses es el mismo que ya se ha is o pa a el es o de ecu sos, pe o
en es e caso el campo VALUE que inse a á en la abla MMS_RESOURCE_TABLE se á
INTEREST, ya que el alo de compa i un in e és es á en la desc ipción del mismo. Como
emos en la Figu a 47 el o mula io de compa ición solo incluye el campo desc ipción, los
in e eses son siemp e públicos y si en pa a ac ualiza u pe il.
Figu a 47: Fo mula io de compa ición de in e eses
La in ocación de sha eResou ce() con TYPE = “INTEREST” se p oduce desde el menú del
pe il de usua io en la pa e clien e de la aplicación, como se e en la Figu a 48.
69
Figu a 48: In ocación de añadi in e és desde el lado clien e.
3.2.1.7 Consul a el in en a io
El usua io end á dos in en a ios den o de la aplicación, el in en a io p opio y el de e ce os,
con los ecu sos que hayan sido compa idos con él.
La consul a del in en a io p opio se basa en in ocaciones a unciones de S3 pa a e el
in en a io de ecu sos lógicos (ca pe as y iche os), llamadas a la unción ge Se ices() pa a
ob ene los se icios c eados po el usua io, y a ge Sha edResou ces() pa a e los links a o i os
que has compa ido.
La consul a del in en a io de e ce os se basa po comple o en in ocaciones al back-end de la
aplicación, ya que odos los ecu sos de e ce os que han compa ido con igo, se encuen an en la
abla MMS_RESOURCE_TABLE con el campo OWNED=”NO”, po lo que hay que ealiza
llamadas consecu i as a ge Sha edResou ces().
3.2.1.8 Se icio de búsqueda
Las búsquedas son posibles g acias al campo KEYWORDS de la MMS_RESOURCE_TABLE,
ya que en él se encuen a el esul ado de la lema izacion de la desc ipción de los ecu sos
compa idos.
El se icio de búsqueda se puede ealiza de dos mane as, haciendo ull scan de la abla, lo que
es menos e icien e y cons uyendo una abla con el índice in e so y eco e esa abla.
70
Full scan: La búsqueda que se lanza con a la base de da os se e o nan los í ems que
con ienen odas las cla es que buscamos. Es o ep esen a una limi ación pe o simpli ica
el código a una sola consul a que es muy ápida, a pesa de que no ap o echamos el
índice au omá ico de SimpleDB, ya que la búsqueda se hace sob e la lis a de cla es, y no
sob e un elemen o único que sí se puede indexa .
Con índice in e so: Hacemos la búsqueda sob e la abla MMS_RESOURCE_INVERSE,
en la que los elemen os es án o denados po una de las palab as cla e y no po el nomb e
del obje o, es o es, los elemen os pueden apa ece epe idos, pe o la búsqueda es mucho
más ápida ya que podemos ap o echa el índice au omá ico de SimpleDB, y luego
o dena las espues as en unción del alo MMS_RANK del í em con más cla es en la
espues a. Con es a opción la abla MMS_RESOURCE_INVERSE debe ía ac ualiza se
cada cie o iempo.
3.2.1.9 Acceso a con enidos de e ce os
El acceso a con enido de e ce os sob e los esul ados de una búsqueda comp ende dos
escena ios: el usua io con pe miso al ecu so, y el usua io que no iene acceso al mismo, es o es,
que no pe enece a los cí culos en que se ha compa ido el ecu so.
El con enido de e ce os que se mues a al ealiza las búsquedas es á basado en el nomb e del
obje o en la abla MMS_RESOURCE_TABLE, que consis e en la conca enación del USER_ID
del dueño del ecu so con el campo VALUE, del que solo se mues a el nomb e del se icio al
inal de la URL que es el VALUE, pa a no mos a la u l especí ica de S3 que con iene
in o mación que el usua io no debe conoce , como el nomb e del bucke po de ec o.
Hay un caso especial de acceso a con enidos de e ce os, que ocu e cuando el con enido es a
compa ido en el cí culo Ma ke , es e caso se con empla en el siguien e apa ado.
Acceso a con enidos de e ce os con pe miso
Después de que un usua io pida acceso a un ecu so en pa icula median e la unción pickup()
sob e el con enido de uel o as una llamada a la unción sea ch(), el se ido comp ueba si el
usua io pe enece a algún cí culo en que el ecu so es é compa ido, en caso de que sea así el
ecu so se inclui á en la abla MMS_RESOURCE_TABLE con el alo OWNED = “NO” y
USER_ID= “Use id del usua io que ha ealizado el pickup() sob e el ecu so”. De o ma que
es e ecu so se inco po e al in en a io de e ce os del usua io que hace el pickup().
71
Figu a 49: Acceso a con enido de e ce os con pe miso
Acceso a con enidos de e ce os sin pe miso
El Resou ce Sha ing Cen e comp ueba si el usua io iene o no acceso al ecu so, basado en los
cí culos en los que es a compa ido, en el caso en que el usua io no enga acceso, el se icio le
pe mi i á solici a acceso a alguno de los cí culos en los que es a compa ido.
La aplicación en el lado clien e in oca en es e caso la unción ge Ci clesSha edResou ce() que
de uel e la lis a de cí culos en que es a compa ido un ecu so, y e o ece la opción de pedi
pe miso al dueño del ci culo pa a accede al mismo median e la unción eques Membe ship(),
que desde el clien e en ía un mail al dueño con un link que el dueño puede pulsa pa a pe mi i le
acceso al cí culo eque ido, como se e en la Figu a 50.
72
Figu a 50: Ven ana modal con los cí culos en que es a compa ido un ecu so.
En la Figu a 51 se puede e el p oceso comple o.
Figu a 51: Acceso a un ecu so sin pe miso
73
Desca ga de con enidos una ez accedes a ellos
Una ez accedes a un con enido de e ce os, si es os son iche os o con enidos mul imedia
puedes desca ga los di ec amen e in ocando la API de S3, y si es un link a o i o puedes accede
di ec amen e a la u l.
3.2.1.10 Uso del ma ke place
El Resou ce Sha ing Cen e p opo ciona la posibilidad de ende los ecu sos que compa es, la
o ma de hace es o es compa iéndolo en un cí culo llamado “MARKET”.
Cuando un usua io compa e una ca pe a o se icio en es e cí culo, es obliga o io añadi el
a ibu o p ecio, como se e en la Figu a 52.
Figu a 52: Fo mula io de compa ición en cí culo ma ke
Pa a la in ocación de sha eSe ice() el nomb e del ci culo Ma ke es eemplazado po el mismo
conca enado con una cadena alea o ia, pa a que cada cí culo Ma ke sea único.
Cuando un usua io hace pickup() sob e un ecu so compa ido en el cí culo Ma ke , se le in i a a
paga el p ecio median e la unción pay(), que incluye al usua io en ese cí culo Ma ke especí ico
y le añade el ecu so a su in en a io de e ce os, llama in e namen e a addUse Ci cle() y a
pickup(). En la Figu a 53 se mues a es e p oceso.
80
Figu a 57: My Resou ces: Files
Las ca pe as con un icono azul no es án compa idas, mien as que las ca pe as con un icono
e de sí que lo es án.
Cuando pulsamos el bo ón sha e del menú con ex ual se nos ab i á la en ana modal de
compa ición (Figu a 58), en la que pod emos elegi en que cí culos compa i cada ecu so, y si
elegimos ma ke apa ece á una opción pa a pone el p ecio.
Figu a 58: Ven ana modal con o mula io de compa ición
81
3.3.2.5 My Resou ces: Fa ou i e Links
En es a sección de la página hay un bo ón pa a añadi el link a o i o, que ab i á una en ana
modal pa a inclui lo, y au omá icamen e la pagina lo inclui á en la abla de la de echa sin que
haga al a eca ga la (Figu a 59), en es a abla se mos a an como bo ones que al pulsa los e
ab en en o a pes aña el link a o i o.
Figu a 59: Links Fa o i os
El o mula io de compa ición de la Figu a 60 es una en ana modal de compa ición solo
apa ecen los campos u l y desc ipción, po que el campo comuni ies es público po de ec o,
apa ece ocul o.
82
Figu a 60: Fo mula io de compa ición de Link Fa o i o
3.3.2.6 My Resou ces: Se ices
En es a is a end emos a la izquie da un bo ón pa a c ea un nue o se icio, y debajo bo ones
pa a los se icios ya c eados, cada ez que pulsemos un bo ón en el o mula io acío de la
de echa se nos mos a á la desc ipción del se icio.
El o mula io de la de echa, puede es a acío, lo que nos indica a que podemos c ea un nue o
se icio, y solo o ece á la opción de egis a lo, en un bo ón al inal del o mula io, una ez
egis ado, nos mos a a las opciones de i a la u l del se icio, compa i lo, deja de compa i
ac ualiza lo o bo a lo como se puede e en la Figu a 61.
83
Figu a 61: Fo mula io de al a de se icio
3.3.2.7 3 d Pa y Resou ces: Files
En es a pa e de la aplicación se puede e el in en a io de iche os que han compa ido con
noso os. En la pa e de la izquie da hay una abla con las ca pe as de dis in os usua ios que
enemos, solo podemos accede a ellas o bo a las. Una ez se accede a ellas se mues an como
en el in en a io de iche os p opios, pe o sin el menú con ex ual pe sonalizado, ya que esos
obje os no son ealmen e uyos, solo puedes desca ga los al pincha sob e ellos, como se e en
las Figu as 62 y 63.
84
Figu a 62: Ca pe as de e ce os I
Figu a 63: Ca pe as de e ce os II
3.3.2.8 3 d Pa y Resou ces: Se ices
La is a de los se icios de e ce os se mues a en la Figu a 64, es simila a la is a de us
p opios se icios, sal o que desde aquí no puedes c ea se icios nue os, ni puedes compa i los
85
que ya e han compa ido, ya que no son uyos. Solo puedes accede a ellos y bo a los, es o es,
elimina los de u in en a io de e ce os.
Figu a 64: In en a io de se icios de e ce os
3.3.2.9 My p o ile
La isión del pe il es á o ganizada de o ma uni o me con el es o de la página, es o es, a la
izquie da los bo ones con las uncionalidades que puedas ene , y a la de echa la in o mación que
mues an es as uncionalidades.
Es a pa e de la aplicación iene es uncionalidades:
Consul a o ac ualiza el pe il del usua io (Figu a 65): En la pa e de echa es án las 10
palab as cla e más impo an es que ep esen an el pe il jun o con el peso de cada una.
86
Figu a 65: Pe il del usua io
Consul a de cí culos de e ce os a los que se pe enece: Se ca ga en la pa e de echa una
abla con una lis a de cí culos a los que pe eneces.
Figu a 66: Cí culos de e ce os
Añadi un in e és (Figu a 67): Se mues a la en ana modal de compa ición, pe o sólo
con el campo de desc ipción, pa a que pongas un in e és que quie as que se ag egue a u
pe il.
87
Figu a 67: Añadi in e és (Fo mula io de compa ición)
3.3.2.10 Búsquedas
Las búsquedas se implemen an aplicando el algo i mo lema izado a la en ada que se in oduce
en el cuad o de búsqueda, y buscando esos lemas en la abla MMS_RESOURCE_TABLE, con la
espues a de esa búsqueda se gene a una abla en la que apa ecen los elemen os que se han
encon ado jun o con in o mación sob e su p ecio, un bo ón pa a pode e el ecu so si es e es
una ca pe a publica, y un bo ón pa a hace pick up del ecu so, es o es in oduci lo en u
in en a io de e ce os, como se mues a en la Figu a 68.
Figu a 68: Resul ados de una búsqueda
Al hace pick up de un con enido público, au omá icamen e se añade al in en a io p opio, con el
co espondien e mensaje de in o mación. Si el se icio es de pago, apa ece á una simulación del
pago (ya que no hay in e acción con paypal u o os se icios de pago) pa a pode ob ene el
con enido. Y si no pe eneces a los cí culos en el que se puede ob ene el ecu so, se e o ece á
la opción de pedi pe miso pa a accede a ese cí culo, según se mues a en la Figu a 69.
88
Figu a 69: Pedi pe miso pa a accede a un cí culo.
3.4 O os elemen os
En es a sección se desc iben o as uncionalidades del RSC que complemen an a lo ya desc i o.
3.4.1 Algo i mo MMS Rank
El MMS Rank es una apo ación o iginal del Resou ce Sha ing Cen e , es una medida en e la
no edad de un ecu so y la popula idad, que se usa pa a o dena los esul ados de las búsquedas.
Po analogía con el Page Rank de Google [64] se ha llamado MMS Rank
Mms_ ank = log (k1* (ma ca de iempo en milisegundos)) + log (k2 * con ado de pickup)
El c i e io escogido pa a asigna los alo es de k1 y de k2 ha sido no p io iza una a iable sob e
la o a. Se conside an el iempo y los pickups pa a de e mina la pa eja de cons an es k1 y k2 que
pe mi a iguala la impo ancia de las dos pa es de la ecuación.
89
Figu a 70: Cálculo de cons an es de MMS Rank. P opo ción en e escu a y popula idad
Como se e en la Figu a 70, con k1=1 y k2=4, la impo ancia del iempo es más impo an e an es
de los 1000 pickups, pe o después de los 10000 pickups el con enido es lo su icien emen e
popula pa a que los pickups engan más peso.
96
3) No maliza los pesos de los pe iles de usua ios: Es o no hace al a pa a los pe iles
simulados, ya que los pesos siemp e suma án 1, pe o los pe iles eales pueden se
usua ios nue os con menos, o más de 10 palab as.
4) Implemen ación del p oceso de clus e ing: En pseudocódigo
Fo “i” in USER_PROFILE_TABLE
Lis a.append(No maliza( eadUse (i)))
Nex
cl = KMeansClus e ing(lis a,mi unciondis ancia)
misclus e s=cl.ge clus e s( NUMERO)
En es e p oceso ambién se ealiza:
o La implemen ación de la unción dis ancia de inida con an e io idad,
o El cálculo in e no en la unción ge clus e s() del cen oide de cada clus e ,
como un pe il eó ico compues o po las palab as más popula es del clus e al
que ep esen a.
5) Ejecu a el p oceso de clus e ing pa a dis in os núme os de clus e s y calcula la mé ica
SSE en cada caso, de es a o ma se puede iden i ica el núme o óp imo de clus e s
necesa io, que se ep esen a en el codo de la g á ica de la Figu a 73.
Además de es o hay que asegu a se de que odos los usua ios engan al menos una
palab a en común con su cen oide, ya que en caso con a io hay que gene a más clus e s
y cen oides más pequeños, y que los clus e s que con ienen un solo pe il deben se
menos del 5% del o al.
97
Figu a 73: Calculo de SSE pa a dis in os núme os de clus e
Como se e en la Figu a 62 el núme o óp imo de clus e s es en e 20 y 25, es e cálculo se
ha ealizado pa a dis in os alo es del núme o de usua ios.
Y dando el siguien e esul ado de con ol de que no haya clus e s acíos, ni clus e s que
no engan palab as en común con su cen oide, es o es, que la dis ancia de los usua ios y
sus cen oides no sea mayo que 2, po nues a de inición de la dis ancia.
sses:[10834540.620368855, 4802554.054808634, 2959546.554473516,
2116794.84479742, 1653088.636397708, 1333936.1916187287, 1108745.7178465202,
945072.4200875383, 842581.4578284224, 741133.7106416145]
dis ancias >=2: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
acíos: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Pa a u u as ejecuciones con pe iles eales se usa an 25 clus e s pa a ep esen a los
pe iles y se usa án sus cen oides pa a ealiza las ecomendaciones.
98
El iche o ba ch ejecu a á el clus e ing sob e los pe iles eales y almacena á los
cen oides en la abla CENTROIDS de SimpleDB.
4.3.2.2 Recomendado in e ac i o
Es a pa e es á compues a po la in ocación del clien e de la unción ecommendMe() del
se ido .
Cuando un usua io hace login en el RSC, se in oca la unción ecommendMe(), que ealiza los
siguien es pasos:
1. Calcula la dis ancia del usua io ac ual con odos los cen oides pa a de e mina cuál es el
más ce cano.
2. Elige de o ma alea o ia una palab a del cen oide.
3. Realiza una búsqueda basada en esa palab a en la abla MMS_RESOURCE_TABLE.
4. Elige al aza un í em de la lis a de esul ados.
5. O ece como ecomendación el í em seleccionado.
4.4 API del módulo Anali ycs
En es a sección se desc iben los p incipales iche os y unciones con los que se ha abajado pa a
ealiza clus e ing sob e los pe iles de usua ios del RSC.
4.4.1 Adiciones a la lib e ía
A la lib e ía o iginal se le han añadido las siguien es uncionalidades pa a que se adap e al ipo
especí ico de da os del RSC [69].
En kmeans.py
HDge clus e s(sel , coun , max_i e a ions): Simila a la unción o iginal ge Clus e s,
pe o inco po ando un lími e a las i e aciones que se p oducen po cambios mínimos en
los cen oides. Además de es o, pa a educi la complejidad de la unción no se ecalculan
los cen oides cada ez que se asigna un pe il a un clus e .
HDassign_i em(sel , i em, o igin, o igin_cen oid, my_cen oids): Igual que la unción
assign_i em, pe o ges ionando ambién los cen oides y educiendo así la complejidad.
En u ils.py
HDcen oid(da a): Adap a la ges ión de los cen oides al ipo de da os del RSC.
99
Se ha c eado el nue o iche o:
HDdis ances.py: Con el cálculo de la dis ancia en e usua ios, y el cálculo de la mé ica
SSE. Con las siguien es unciones:
o HDdis I ems(p o ile1,p o ile2): De inición de la unción dis ancia en e usua ios.
o HDcompu eSSE(solu ion,numclus e s): Es a mé ica mide la cohesión de los
usua ios en un clus e y la sepa ación en e clus e s.
o HDcompu eSSE omCen oids(i ems,cen oids): Simila a la unción an e io ,
pe o midiendo las dis ancias en e cen oides.
4.4.2 Módulo ba ch
Las unciones que se de inen aho a es án de inidas en el iche o RealClus e ing.py
ge P o iles(): Conexión con SimpleDB y búsqueda de los pe iles.
dis Use s(pe il1,pe il2): Función dis ancia en e los pe iles.
gua daCen oides(lis aCen oides, imeS amp):T as el p oceso de clus e ing almacena los
cen oides en la abla CENTROIDS.
Main(): Realiza el p oceso de clus e ing de la lib e ía, con las unciones desc i as
an e io men e.
4.4.3 In e acción con el RSC
En el módulo Hello del RSC, hay una se ie de unciones esc i as en Py hon pa a ealiza la
consul a de los cen oides y o ece una ecomendación.
ge Keywo d(use _id): Compa a el pe il del usua ios con los pe iles almacenados en la
abla cen oides, pa a sabe a qué clus e pe enece, y o ece e una palab a al aza
pe enecien e a es clus e .
ge RecomendedKeywo d(): Es a unción llama a la an e io , pasándole como pa áme o
el use _id del usua io ac ual pa a busca su pe il.
En el módulo clien e se ha de inido la unción:
ecommendOne(): Que ealiza una llamada AJAX a ge RecomendedKeywo d() pa a
cons ui dinámicamen e en el clien e una abla con la ecomendación, y las opciones de
e lo y hace pick up.
100
4.4.4 P uebas de la solución
Pa a hace p uebas de la solución escogida se han c eado los siguien es iche os, pa a gene a
usua ios de o ma alea o ia, y hace p uebas de clus e ing sob e ellos. Los iche os son los
siguien es:
HDExample.py: Fiche o con las unciones necesa ias pa a ealiza el p oceso de
clus e ing y calcula la mé ica SSE pa a alida el núme o de clus e s con el que se
ealiza á es e p oceso.
HDexample - Only Use s.py: En es e iche o se encuen an las unciones necesa ias pa a
gene a pe iles de usua ios ic icios sob e los que hace p uebas.
HDCen oidesCe canos_new.py: En es e iche o se encuen an las unciones necesa ias
pa a las comp obaciones de que los cen oides es án bien elegidos, es o es, que los
usua ios ienen al menos una palab a en común con el cen oide y no hay más de un 5%
de clus e s de un solo elemen o.
4.5 Modelo de da os
En es a sección se desc ibi án los ipos de da os que hay en las bases de da os, la o ma en que se
elacionan y las condiciones que deben cumpli los mismos.
4.5.1 Dominio CENTROIDS
Tipo de campo
Nomb e del campo
Comen a io
Nomb e del obje o
Clus e _id
A ibu o
P o ile
Lis a de (cla e,peso)
Donde clus e _id= Ma ca de iempo de la úl ima ejecución del clus e ing + clus e _numbe
Clus e _numbe es un nume o de 1 a N (donde N= núme o de clus e s)
En cada ejecución es a able es bo ada y ellenada.
101
4.6 Cambios en la lib e ía
Pa a soluciona dis in os p oblemas pa a los que la lib e ía clus e 1.2.2 no es aba p epa ada se
han ealizado los siguien es cambios:
- Se ha educido la complejidad compu acional pe mi iendo aho a en la
implemen ación de K-Means el cálculo edundan e del cen oide cada ez que se
asigna un pe il a un clus e .
- Se ha limi ado el núme o de i e aciones que ealiza el algo i mo K-Means limi ando
ambién de es a o ma el iempo de compu ación.
- La lib e ía no es aba diseñada pa a el p oblema de la al a dimensionalidad que
p esen an los pe iles de usua io del RSC ya que 1000 palab as son 1000
dimensiones.
- Pa a calcula los cen oides la lib e ía usaba la mediana, que implica una o denación
median e el algo i mo quickso pe o pa a los da os del RSC ambién se puede usa la
media de los da os, educiendo la complejidad compu acional.
4.6.1 Reducción de la complejidad
En la implemen ación de la lib e ía clus e 1.2.2, al ealiza clus e ing con el algo i mo
K-Means se ecalculan los cen oides cada ez que se asigna un í em a un clus e , ya que
iene que ecalcula cual es el cen oide más ce cano, suponiendo un g an aumen o en la
complejidad compu acional, es o se ha esuel o eniendo p e calculados en un dicciona io
o mado po la composición de clus e s y sus cen oides que pe mi e aho a ese cálculo
del cen oide al que se llama la mayo ía de las eces. Como se e en la Figu a 74 la
complejidad se ha educido de o den ) a o den(n)
Figu a 74: Reducción de la complejidad compu acional
102
4.6.2 Op imización del iempo de compu ación
Pa a educi el iempo de compu ación del algo i mo K-Means al igual que o as
implemen aciones como la de la lib e ía SciKi Lea n [70] se ha limi ado el núme o de i e aciones
en las que el algo i mo K-Means sigue ecalculando los elemen os de cada clus e , ya que a pa i
de las 10 i e aciones como se e en la Figu a 75 los cambios en la mé ica SSE son mínimos y no
a ec an a la solución.
Figu a 75: Va iación de la mé ica SSE en e a núme o de i e aciones
4.6.3 P oblema de la al a dimensionalidad
Debido a la al a dimensionalidad de los pe iles del RSC, se han enido que ede ini las
unciones de cálculo de cen oides y la unción dis ancia pa a que puedan maneja es os da os
más complejos que los da os pa a los que es aba p epa ada la lib e ía.
4.6.4 Validación del uso de la media en luga de la mediana
Pa a op imiza el iempo de ejecución del p oceso de clus e ing se calcula el cen oide como la
media de los elemen os del clus e en luga de como la mediana, la dis ibución de las palab as
103
en los pe iles del RSC pe mi e es o, como se puede e en la Figu a 76 en la que se mues a que
el cálculo de la mé ica SSE es p ác icamen e igual pa a el p oceso con mediana y con media.
Figu a 76: Compa ación del SSE calculado usando la media y la mediana
104
105
5 Resul ados
Los esul ados p esen ados mues an la consecución de los obje i os plan eados, se ha log ado
ealiza un se icio web escalable o ien ado a la compa ición y a un uso masi o que es á
desplegada en Amazon siendo comple amen e uncional. A pa e de es o se ha desa ollado
ambién un es udio sob e el clus e ing de al a dimensionalidad que de i a á en la p esen ación de
un a ículo académico sob e la es imación del amaño de los se s de da os pa a ealiza clus e ing
iable sob e ellos.
5.1 Se icio Resou ce Sha ing Cen e
Se ha implemen ado un se icio web o ien ado a la compa ición de ecu sos, ya sean g a ui os o
de pago, como se e en la Figu a 77
Figu a 77: Recu sos compa idos g a ui os y de pago
Los ecu sos a compa i pueden se de a ios ipos, an o ecu sos lógicos ( iche os, ca pe as),
como ísicos (imp eso as compa idas, coche con u l de blablaca ).
112
Du an e el es udio del clus e ing pa a big da a se ha comp obado que se llega un pun o en el que
el núme o de usua ios es an g ande que deja de a ec a la can idad de usua ios, es o es, se puede
usa un núme o meno de usua ios y ex apola los esul ados sob e ellos a oda la población.
Siendo c1 un conjun o de cen oides con un núme o de elemen os n1 y c2 o o conjun o de
cen oides con un núme o de elemen os n2, la dis ancia en e c1 y c2 se de ine como:
Es a dis ancia iende a ce o cuando el núme o de da os con los que se ob ienen los cen oides
aumen a como se e en la igu a 85, po lo que no hay necesidad de ealiza el p oceso de
clus e ing pa a un núme o muy g ande de da os, sino que hay que ealiza lo pa a el nume o N en
el que deja de aumen a es a dis ancia.
Figu a 85: Calculo de dis ancias en e cen oides
Es e es udio sob e el ag upamien o ha dado luga a un a ículo sob e el amaño del conjun o de
da os pa a ealiza clus e ing iable sob e el mismo (An e ec i e co ese size es ima ion o K-
clus e ing algo i hms and la ge high dimensional da ase s), que p e endemos en ia a la e is a
So jou nal [71]
A con inuación se mues a el abs ac del mismo:
113
“Big Da a pose new compu a ional challenges o unde s anding huge olumes o he e ogeneous
da a. Tha is, in ecen yea s high da a a e applica ions ha e become mo e and mo e popula .
Many cybe -physical sys ems, including he In e ne o Things (IoT) applica ions, ha e s a ed
gene a ing huge amoun o da a, om he e ogeneous sou ces, a i ing a a high speed and
cha ac e ized by high dimensionali y ea u e. High dimensionali y in oduces spu ious
co ela ions, noise accumula ion, and compu a ional cos s di icul o a o d. These unique
ea u es imply ha s a is ical p ocedu es should be designed o adap ed aking in o accoun he
a o emen ioned issues. High dimensionali y p oblems a e mo e sensi i e, in e ms o
compu a ional cos s, o he g ow h o he size o da ase s pa icula ly p oduced by he la ge_scale
IoT applica ions. This o en causes ha non-lineal da a mining p ocedu es a e di ec ly disca ded.
Howe e , e en linea p ocedu es such as K-Means clus e ing, become una o dable when huge
da ase s a e aced. In his pape , we p esen an s a egy o sol ing clus e ing p oblems o big
and high dimensional da ase s, by sizing a co ese (sub-sampled da ase ), in o de o sa e
compu a ional cos s and a o d he p oblem in a easonable ime. The mo i a ion o his pape is
he lack o me hods o es ima ing a co ec sample size ha can be used o clus e ing big and
high dimensional da ase s.”
114
115
6 Conclusiones y líneas u u as de abajo
En es e abajo se ha desa ollado una aplicación en la nube o ien ada a la compa ición de
ecu sos, an o lógicos, como ísicos. Es a aplicación se ha desa ollado den o del p oyec o de
I+D+i, SITAC: Social In e ne o Things – Apps by and o he C owd ITEA 2 11020, y se ha
c eado una pla a o ma pa a acili a la coope ación de usua ios median e un modelo inspi ado en
las edes sociales, y que o ece un se icio web o ien ado al in e cambio y compa ición de
con enido, que además o ece ecomendaciones de con enido basadas en las p e e encias de los
usua ios.
Como consecuencia del abajo ealizado he llegado a las siguien es conclusiones:
G acias a la e olución del in e ne de las cosas y a las ecnologías en la nube disponibles
se pueden desa olla aplicaciones web basadas en el almacenamien o y compa ición de
ecu sos o ien ados al big da a, e icien es y con un cos e ajus ado, como queda p obado
con es e abajo.
Du an e el desa ollo del RSC he comp obado que el modelo PAAS de desa ollo y
despliegue de se icios en la nube es el más adecuado a las aplicaciones big da a
undamen almen e po su capacidad de elas icidad (p o isión/desp o isión de ecu sos en
unción del á ico en an e).
Pa a aho a cos es el diseño de aplicaciones big da a en la nube se debe minimiza el
á ico salien e de los se ido es, posibili ando el acceso a los ecu sos de
almacenamien o di ec amen e desde los clien es. Es o pe mi e e i a la sa u ación de los
se ido es a la ez que educe el cos e del se icio, ya que no solo se gas a menos CPU
sino menos á ico salien e de los se ido es, que es un ecu so ca o.
Du an e el desa ollo de la aplicación he llegado a la conclusión de que de ca a a ealiza
un se icio web escalable es mejo implemen a lo usando un lenguaje asínc ono como
Node.js que Py hon ya que g acias a la uncionalidad del callback Node.js es más
escalable al pode pe mi i que se puedan lanza odas las llamadas y con inua con la
ejecución sin que es a se de enga espe ando las espues as.
Du an e el desa ollo del módulo Analy ics he comp obado que el uso del lenguaje de
una pe sona media se puede clasi ica en 25 g upos sin que haya p oblemas de al a de
ep esen ación de las pe sonas en es os g upos. Es a clasi icación es á elacionada con el
uso que hacemos los humanos del lenguaje, modelado en base a las 300 palab as que de
media se usan con más ecuencia de un o al de no más de 1000. P ueba de ello además
116
son los abajos analizados en el capí ulo 4 donde se es udian a ículos de di ulgación que
alidan es as conclusiones.
Como líneas de abajo u u o es e p oyec o c eo in e esan e p opone las siguien es:
Mejo a el modelo de edes sociales, aumen a la ges ión de los cí culos pe mi iendo la
c eación de cí culos nue os y pode elaciona se di ec amen e con usua ios (en ez de
cí culos de dos pe sonas) al igual que se hace con los amigos en o as edes sociales.
Pa a hace el se icio más ag adable a nue os usua ios pod ía ealiza se una ges ión de
pe iles más compleja, y ambién más pa ecida a los modelos de edes sociales, donde se
puede pone una o o del usua io o comen a una b e e au obiog a ía cuyas palab as
cla es o masen a pasa pa e de u pe il.
Una mejo a que ha ía al se icio más compe i i o se ía la opción de compa i además de
us p opios iche os y ca pe as, pode compa i ambién ca pe as en Google D i e
aunque pa a accede a las mismas hab ía que ene pe miso de Google.
O a mejo a que aumen a ía el alo del se icio se ía la gene ación de un clien e de la
aplicación pa a Windows, pa a And oid y pa a Ios, al igual que ocu e con D opbox y
pe mi i ía una inclusión de la aplicación mucho mayo .
117
Re e encias
1
S. Da a and V. López, "El desequilib io socioeconómico consecuen e de la indus ia de In e ne de
las Cosas," Jou nal Poli écnico G ancolombiano Pun o de Vis a, 2016.
2
V. López and e. al, "Big+Open Da a: some applica ions o a Sma ci y”," in P oceedings o he 3 h
Con e ence on P og ess in In o ma ics and Compu ing, Nanjing, 2015.
3
P. Mell and T. G ance, "The NIST De ini ion o Cloud," Na ional Ins i u e o S anda ds and Technology
Special Publica ion 800-145, p. 7, 2011.
4
Amazon Web Se ices, Inc. o sus emp esas a iliadas., "Amazon Web Se ice," Amazon, 2016.
[Online]. A ailable: h ps://aws.amazon.com/es/wha -is-aws/.
5
Google, "Google cloud Pla o m," [Online]. A ailable: h ps://cloud.google.com/.
6
Mic oso , "Mic oso Azu e," Mic oso , [Online]. A ailable: h ps://azu e.mic oso .com/es-
es/o e iew/wha -is-azu e/.
7
RedHa , "Openshi Online," Red Ha , [Online]. A ailable: h ps://www.openshi .com/web-
hos ing/index.h ml?sc_cid=701600000011p9xAAA&gclid=Cj0KEQjwosK4BRCYhsngx4_SybcBEiQAowa
CJWbAVKCg1jcXZHqDeNkk- HH2KW OC6V8J8wGLgmmEIaAjbk8P8HAQ.
8
"Gene al Py hon FAQ," Py hon So wa e Founda ion, 7 May 2016. [Online]. A ailable:
h ps://docs.py hon.o g/2/ aq/gene al.h ml#wha -is-py hon. [Accessed 05 May 2016].
9
"His o y and License," Py hon So a e Founda ion, 07 May 2016. [Online]. A ailable:
h ps://docs.py hon.o g/2/license.h ml.
10
T. Pe e s, "PEP Zen in Py hon," 2004. [Online]. A ailable: h ps://www.py hon.o g/de /peps/pep-
0020/.
11
"AWS SDK o Py hon," Amazon Web Se ices, 2016. [Online]. A ailable:
h p://aws.amazon.com/es/sdk- o -py hon/.
12
A. Ronache , "Flask (A Py hon mic o amewo k)," 2016. [Online]. A ailable:
h p:// lask.pocoo.o g/docs/0.10/ o ewo d/#wha -does-mic o-mean.
13
D. Flanagan, Ja asc ip : The de ini e guide, O'Reilly Media, Inc., 2006.
118
14
C. Se e ance, "Ja aSc ip : Designing a Language in 10 Days," IEEE Compu e Socie y, ol. 45, no. 02,
pp. 7-8, 2012.
15
M. And eessen and B. Eich, "INNOVATORS OF THE NET: BRENDAN EICH AND JAVASCRIPT," Ne scape,
1998. [Online]. A ailable:
h ps://web.a chi e.o g/web/20080208124612/h p://wp.ne scape.com/comp od/columns/ ech isi
on/inno a o s_be.h ml.
16
campusMVP, "ECMASc ip 6 es ya un es ánda ce ado," Campus MVP, 19 Junio 2015. [Online].
A ailable: h p://www.campusm p.es/ ecu sos/pos /ECMASc ip -6-es-ya-un-es anda -ce ado.aspx.
17
D. Flanagan, in Ja aSc ip : The De ini i e Guide (5 h ed.), O'Reilly & Associa es, 2006, p. 16.
18
Mozilla De elope Ne wo k and indi idual con ibu o s., "Ja aSc ip da a ypes and da a s uc u es,"
Mozilla, 20 Ma ch 2016. [Online]. A ailable: h ps://de elope .mozilla.o g/en-
US/docs/Web/Ja aSc ip /Da a_s uc u es.
19
D. He man, "E ec i e Ja asc ip ," Addison-Wesley, 2013, p. 83.
20
Amazon Web Se ices, Inc, "AWS SDK o Ja aSc ip in he B owse ," Amazon Web Se ices, Inc,
2016. [Online]. A ailable: h ps://aws.amazon.com/es/sdk- o -b owse /.
21
A. Handy, "Node.js pushes Ja aSc ip o he se e -side," 24 June 2011. [Online]. A ailable:
h p://sd imes.com/node-js-pushes-ja asc ip - o- he-se e -side/.
22
R. Dahl, "Joyen and node," Google G oups, 09 No embe 2010. [Online]. A ailable:
h ps://g oups.google.com/ o um/#! opic/nodejs/lWo0MbHZ6Tc.
23
R. Dahl, "Po ing Node o Windows Wi h Mic oso ’s Help," Node.js Founda ion, 23 June 2011.
[Online]. A ailable: h ps://nodejs.o g/en/blog/unca ego ized/po ing-node- o-windows-wi h-
mic oso s-help/.
24
P. Teixei a, P o essional Node.js: Building Ja asc ip Based Scalable So wa e, John Wiley and Sons.
25
Linux Founda ion, "Node.js Founda ion Ad ances Communi y Collabo a ion, Announces New
Membe s and Ra i ied Technical Go e nance," Linux Founda ion, 16 June 2015. [Online]. A ailable:
h p://www.linux ounda ion.o g/news-media/announcemen s/2015/06/nodejs- ounda ion-
ad ances-communi y-collabo a ion-announces-new.
26
Node.js Founda ion, "Node.js Founda ion Combines Node.js and io.js In o Single Codebase in New
Release," Node.js Founda ion, 14 Sep embe 2015. [Online]. A ailable:
h ps://nodejs.o g/en/blog/announcemen s/ ounda ion- 4-announce/.
119
27
"Node.js w/1M concu en connec ions!," [Online]. A ailable:
h p://blog.caus ik.com/2012/08/19/node-js-w1m-concu en -connec ions/.
28
Node.js ounda ion, "Abou Node.js," Node.js ounda ion, [Online]. A ailable:
h ps://nodejs.o g/en/abou /.
29
"Exp ess, In aes uc u a web ápida, minimalis a y lexible pa a Node.js," Node.js, [Online].
A ailable: h p://exp essjs.com/es/.
30
"U ilización de mo o es de plan illa con Exp ess," Node.js, [Online]. A ailable:
h p://exp essjs.com/es/guide/using- empla e-engines.h ml.
31
Amazon Web Se ices, "AWS Sdk pa a Ja aSc ip en Node.js," Amazon Web Se ices, [Online].
A ailable: h ps://aws.amazon.com/es/sdk- o -node-js/.
32
C. Ullman, "Wha is Ajax?," in Beginning Ajax, Wiley Publishing Inc, 2007, p. 498.
33
J. J. Ga e , "Ajax: A New App oach o Web Applica ions," Adap a i e Pa h, 18 Feb ua y 2005.
[Online]. A ailable: h p://adap i epa h.o g/ideas/ajax-new-app oach-web-applica ions/.
34
"Remo e sc ip ing wi h ja asc ip ," do oid, 13 Augus 2002. [Online]. A ailable:
h p://web.a chi e.o g/web/20080403223512/h p://www.do oid.com/ iew.php?id=13.
35
D. C ock o d, "Douglas C ock o d: The JSON Saga," [Online]. A ailable:
h ps://www.you ube.com/wa ch? =-C-JoyNuQJs.
36
Ecma In e na ional, "Final d a o he TC39 “The JSON Da a In e change Fo ma ” s anda d," 2013.
[Online]. A ailable: h p://www.ecma-in e na ional.o g/publica ions/ iles/ECMA-ST/ECMA-404.pd .
37
M. O o, "Boo s ap om Twi e ," Twi e , Inc, 19 Augus 2011. [Online]. A ailable:
h ps://blog. wi e .com/2011/boo s ap- om- wi e .
38
M. O o, "Boo s ap 3.3.0 eleased," 29 Oc obe 2014. [Online]. A ailable:
h p://blog.ge boo s ap.com/2014/10/29/boo s ap-3-3-0- eleased/.
39
"Apache JMe e ," Apache So wa e Founda ion, [Online]. A ailable: h p://jme e .apache.o g/.
40
R. Ba anco F agoso, "¿Qué es Big Da a?," 18 June 2012. [Online]. A ailable:
h ps://www.ibm.com/de elope wo ks/ssa/local/im/que-es-big-da a/.
41
A. Ma ín, S. Cha ez, N. Rod íguez, A. Valenzuela and M. Mu azzo, "Bases de da os NoSql en cloud
compu ing," Ap il 2013. [Online]. A ailable:
h p://sedici.unlp.edu.a /bi s eam/handle/10915/27121/Bases+de+Da os+NoSql+en+Cloud+Comp
120
u ing.pd ?sequence=1.
42
R. Hech and S. Jablonsky, "NoSQL E alua ion a use case o ien ed su ey," in In e na ional
Con e ence on Cloud and Se ice Compu ing., 2011.
43
M. B. Bianchi Widde , "Els bene icis de l'ús de ecnologies NOSQL," Facul a d’In o mà ica de
Ba celona, Ba celona, 2012.
44
A. K. Puja i, Da a Mining Techinques, Uni e si ies P ess, 2001.
45
S. Chak aba i, M. Es e , U. Fayyad, J. Geh ke, J. Han, S. Mo ishi a, G. Pia e sky-Shapi o and W.
Wang, "Da a Mining Cu iculum: A P oposal," 2006.
46
M. Es e , H.-P. K iegel, J. Sande and X. Xu, "A Densi y-Based Algo i hm o Disco e ing Clus e s in
La ge Spa ial Da abases wi h Noise," P oceedings o he Second In e na ional Con e ence on
Knowledge Disco e y and Da a Mining (KDD-96), pp. 226-231, 1996.
47
O. Maimon and L. Rokach, "Clus e ing me hods," in Da a mining and knowledge disco e y
handbook., Sp inge , 2005, pp. 321-352.
48
R. Sibson, "SLINK: an op imally e icien algo i hm o he single-link clus e me hod," The Compu e
Jou nal, pp. 30-34, 1973.
49
"An e icien algo i hm o a comple e link me hod," The Compu e Jou nal, pp. 364-366, 1977.
50
M. Mahajan, P. Nimbho ka and K. Va ada ajan, "The Plana k-Means P oblem is NP-Ha d," in
WALCOM: Algo i hms and Compu a ion, ol. 5431, Sp inge Be lin Heidelbe g, 2009, pp. 274-285.
51
"Applica ions o weigh ed Vo onoi diag ams and andomiza ion o a iance-based k-clus e ing," in
SCG '94 P oceedings o he en h annual symposium on Compu a ional geome y, New Yo k, ACM,
1994, pp. 332-339.
52
D. MacKay, "Chap e 20. An Example In e ence Task: Clus e ing," in In o ma ion Theo y, In e ence
and Lea ning Algo i hms, Camb idge Uni e si y P ess, 2003, p. 284–292.
53
D. Ma in, "How can we choose a "good" K o K-means clus e ing?," Quo a, 06 Decembe 2013.
[Online]. A ailable: h ps://www.quo a.com/How-can-we-choose-a-good-K- o -K-means-clus e ing.
54
J. B. Lo ins, "De elopmen o a S emming Algo i hm," Mechanical T ansla ion and Compu a ional
Linguis ics, ol. 11, no. 1, 2, pp. 22,31, 1968.
55
M. Po e , "Po e S emme ," [Online]. A ailable:
h p:// a a us.o g/~ma in/Po e S emme /index.h ml.
121
56
M. Po e , "Snowball," [Online]. A ailable: h p://snowball. a a us.o g/.
57
M. Po e , "Spanish s emming algo i hm," [Online]. A ailable:
h p://snowball. a a us.o g/algo i hms/spanish/s emme .h ml.
58
O. Founda ion, "Open ID Connec ," OpenID Founda ion, [Online]. A ailable:
h p://openid.ne /connec /.
59
D. Ha d , "RFC 6749 The OAu h 2.0 Au ho iza ion F amewo k," Mic oso , Oc obe 2012. [Online].
A ailable: h ps:// ools.ie .o g/h ml/ c6749.
60
O. C. Wo kg oup, "OAu h Co e 1.0," 4 Decembe 2007. [Online]. A ailable:
h p://oau h.ne /co e/1.0/.
61
A. Ke ckho s, "La c yp og aphie mili ai ," Jou nal des sciences mili ai es, ol. IX, pp. 5-83, 1883.
62
P. Ragone, "A spanish s emme / Un lema izado de español," [Online]. A ailable: h p://s emme -
es.sou ce o ge.ne /.
63
K. Mi o sky. [Online]. A ailable: h ps://js iddle.ne /KyleMi /X9 gY/. [Accessed 2015].
64
L. Page, "Me hod o node anking in a linked da abase". Pa en US6285999 B1, 4 Sep embe 2001.
65
M. Albe , 2014. [Online]. A ailable: h ps://pypi.py hon.o g/pypi/clus e /1.2.2.
66
M. Da ies, "Vocabula y Range and Tex Co e age:Insigh s om he Fo hcoming Rou ledge
F equency Dic iona y o Spanish," Selec ed P oceedings o he 7 h Hispanic Linguis ics Symposium,
pp. 106-115, 2005.
67
A. A guelles, Ma ch 2005. [Online]. A ailable: h p://how- o-lea n-any-
language.com/ o um/ o um_pos s.asp?TID=267&PN=0&TPN=1.
68
"h p:// ac oides.com.a /pos /3031124497/usamos-solo-unas-300-palab as," [Online].
69
J. J. Ga cia A anda and J. Ramos Diaz, "HD-Py hon-Clus e ," [Online]. A ailable:
h ps://gi hub.com/jja anda13/HD-Py hon-clus e .
70
"sklea n.clus e .KMeans," [Online]. A ailable: h p://sciki -
lea n.o g/s able/modules/gene a ed/sklea n.clus e .KMeans.h ml.
71
"So Jou nal," [Online]. A ailable: h p://www.idesca .ca /so /.
128
#asi no, no obliga a hace i e aciones, lo hago segun dice el
algo i mo
#pe o si llego a i e aciones pa o, si e mino an es de llega , mejo
while i ems_mo ed is T ue:
i ems_mo ed = False
p in "i e a ing",i e a ion
s = ime. ime()
s =da e ime.da e ime. om imes amp( s).s ime('%Y-%m-%d
%H:%M:%S')
p in s
i e a ion=i e a ion+1
#compu a ion o cen oids
my_cen oids={} # new!!
o clus e in sel .__clus e s:# new!!
one_cen oid=HDcen oid(clus e )# new!!
my_cen oids[one_cen oid]=clus e # new!!
#now we scan he N i ems wi hou ecalcula ion o cen oids.
The e o e, i is linea
o clus e in sel .__clus e s:
o cen oid_aux, clus e _aux in my_cen oids.i e i ems():
i clus e _aux == clus e :
cen oid_clus e =cen oid_aux
b eak;
o i em in clus e :
es = sel .HDassign_i em(i em,
clus e ,cen oid_clus e ,my_cen oids)#modi ied!!
i i ems_mo ed is False:
i ems_mo ed = es
i (i e a ion == max_i e a ions):
i ems_mo ed = False
e u n sel .__clus e s
Da os especí icos del RSC y al a dimensionalidad
Pa a adap a los da os del RSC a la lib e ía de clus e ing se ha de inido una unción dis ancia
especí ica:
de HDdis I ems(p o ile1,p o ile2):
#Dis ance unc ion, his dis ance be ween wo p o iles is based on:
#Fo each keywo d o use A, i he keywo d is no p esen in use B ,
hen he dis ance o his keywo d is he weigh in he use A.
#I he keywo d exis s in bo h use s, he weigh s a e compa ed and he
dis ance is he absolu e di e ence
len1=len(p o ile1)/2
len2=len(p o ile2)/2
o al_len=len1+len2 # his alue usually is 20
ac o _len=20/ o al_len # his only wo k i he p o ile has less han 10
keys
dis ance = 0.0
ma ked=[0]*20;
129
o i in ange(len1):
ound=False
o j in ange(len2):
i p o ile1[i*2]==p o ile2[j*2]:
dis ance+=abs(p o ile1[i*2+1]-p o ile2[j*2+1]);
ound=T ue;
ma ked[j*2]=1;
b eak;
i ound==False:
dis ance+=p o ile1[i*2+1];
o i in ange(len2):
i ma ked[i*2]==1:
con inue;
dis ance+=p o ile2[i*2+1]
dis ance=dis ance* ac o _len
e u n dis ance
Y unciones pa a el cálculo de la mé ica SSE:
de HDcompu eSSE(solu ion,numclus e s):
#This me ic measu e he cohesion o use s in o a clus e and he
sepa a ion among clus e s a he same ime
pa ial_solu ion=0
o al_solu ion=0
dis =0
o i in ange(numclus e s):
pa ial_solu ion=0
o j in solu ion[i]:
dis =HDdis I ems(u il.HDcen oid(solu ion[i]),j)
pa ial_solu ion+=dis *dis
o al_solu ion+=pa ial_solu ion
e u n o al_solu ion
de HDcompu eSSE omCen oids(i ems,cen oids):
#This me ic measu e he cohesion o use s in o a clus e and he
sepa a ion among clus e s a he same ime
sse=0
dis =0
p in
o i in i ems:
# o each i em de e mine he bes cen oid
dis _cen oid=100000
o j in cen oids:
dis _cen oid_aux=HDdis I ems(i,j)
i dis _cen oid_aux< dis _cen oid:
cen oid=j
dis _cen oid=dis _cen oid_aux
# dis _cen oid is he dis om use o i s assigned cen oid (which
is j)
#p in "d:", dis _cen oid
sse+=dis _cen oid*dis _cen oid
e u n sse
130
Además se ha cambiado el cálculo del cen oide, el o iginal e a:
de cen oid(da a, me hod=median):
" e u ns he cen al ec o o a lis o ec o s"
ou = []
o i in ange(len(da a[0])):
ou .append(me hod([x[i] o x in da a]))
e u n uple(ou )
Y la nue a e sión es:
de HDcen oid(da a):
dic _wo ds={}
dic _weigh ={}
wo ds_pe _use =10 #10 wo ds pe use . This alue is no used.
num_use s_clus e =len(da a)# len(da a) is he numbe o use s (use =i em)
o i in ange (num_use s_clus e ):
wo ds_pe _use =len(da a[i])/2 #each p o ile ha e 10 pai s o keywo d,
weigh
o j in ange (wo ds_pe _use ):
wo d=(da a[i])[j*2]
i (dic _wo ds.has_key(wo d)) :
dic _wo ds[wo d]+=1
dic _weigh [wo d]+=da a[i][2*j+1]
else :
dic _wo ds[wo d]=1
dic _weigh [wo d]=da a[i][2*j+1]
#l is a o de ed lis o he keywo ds, wi h he sum o he weigh o e e y
popula keywo d
l=dic _wo ds.i ems()
l.so (key=lambda x:10000000-x[1])
wo ds_pe _cen oid=min(10,len(l))
ou =[0]*wo ds_pe _cen oid*2
cen oid_ o al_weigh =0
o i in ange (wo ds_pe _cen oid):
upla=l[i] # wo d, sum o weigh s
ou [i*2]= upla[0]
ou [i*2+1]=dic _weigh [ upla[0]]/ upla[1]
cen oid_ o al_weigh +=ou [i*2+1]
#no maliza ion o he cen oid weigh
o i in ange(wo ds_pe _cen oid):
ou [i*2+1]=ou [i*2+1]/cen oid_ o al_weigh
e u n uple(ou )
131
Anexo 3: In eg ación de la au en icación delegada.
En es a sección se explica á el p oceso necesa io pa a in eg a el mé odo de au en icación
delegada en el se icio:
Pa a comple a la au en icación delegada hay que implemen a el bo ón de acceso den o de la
aplicación, que en ega á un oken, con el que se pod á en a de ini i amen e.
En el caso del RSC es e bo ón o ma á pa e de un o mula io que con end á los da os de
au en icación con Google, que al submi i , llama á a la ges ión de acceso del se ido con el
oken de Google.
< o m ac ion="/hello_google" id="googlesignin" me hod="POST" class=" o m-
signin" ole=" o m" s yle="display:none">
<bu on class="b n b n-lg b n-dange b n-block" ype="submi ">Google
Sign</bu on>
<inpu id="guse " name="guse "></inpu >
<inpu id="gpass" name="gpass"></inpu >
<inpu id="id_ oken" name="id_ oken"></inpu >
</ o m>
Luego se incluyen las unciones que se ejecu an al ca ga la página. La p ime a es la
iden i icación de la aplicación en Google, pa a que Google pueda esponde e con el oken de
acceso.
a s a App = unc ion() {
gapi.load('au h2', unc ion(){
// Re ie e he single on o he GoogleAu h lib a y and se up he
clien .
au h2 = gapi.au h2.ini ({
clien _id: '',
cookiepolicy: 'single_hos _o igin',
// Reques scopes in addi ion o 'p o ile' and 'email'
//scope: 'addi ional_scope'
});
signOu ();
a achSignin(documen .ge Elemen ById('bo ongoogle'));
});
};
unc ion a achSignin(elemen ) {
console.log(elemen .id);
au h2.a achClickHandle (elemen , {},
unc ion(googleUse ) {
onSuccess(googleUse );
}, unc ion(e o ) {
ale (JSON.s ingi y(e o , unde ined, 2));
});
}
132
Y luego se añaden las unciones que ges ionan el uncionamien o del bo ón de au en icación con
Google.
unc ion onSuccess(googleUse ) {
console.log('Logged in as: ' +
googleUse .ge BasicP o ile().ge Name());
a p o ile = googleUse .ge BasicP o ile();
console.log("ID: " + p o ile.ge Id()); // Don' send his di ec ly o
you se e !
console.log("Name: " + p o ile.ge Name());
console.log("Image URL: " + p o ile.ge ImageU l());
console.log("Email: " + p o ile.ge Email());
// The ID oken you need o pass o you backend:
a id_ oken = googleUse .ge Au hResponse().id_ oken;
console.log("ID Token: " + id_ oken);
documen .ge Elemen ById("guse "). alue=p o ile.ge Email();
documen .ge Elemen ById("gpass"). alue="1234";
documen .ge Elemen ById("id_ oken"). alue=id_ oken;
documen .ge Elemen ById("googlesignin").submi ();
//logueado= ue;
}
unc ion onFailu e(e o ) {
console.log(e o );
}
unc ion ende Bu on() {
gapi.signin2. ende ('my-signin2', {
'scope': 'h ps://www.googleapis.com/au h/plus.login',
'wid h': 200,
'heigh ': 50,
'long i le': ue,
' heme': 'da k',
'onsuccess': onSuccess,
'on ailu e': onFailu e
});
}
unc ion signOu () {
a au h2 = gapi.au h2.ge Au hIns ance();
au h2.signOu (). hen( unc ion () {
console.log('Use signed ou .');
});}
En la Figu a 88 se mues a el bo ón in eg ado en la aplicación:
133
Figu a 86: Página de login con acceso median e u cuen a de Google
134
135
Anexo 4: P uebas de ca ga con Apache JMe e
En es e apa ado se desc iben las p uebas de ca ga ealizadas con la he amien a Apache JMe e ,
pa a es ablece el alo en el que el dispa ado de elas icidad de Elas ic Beans alk empeza á a
ac ua y a c ea nue as ins ancias de la máquina en la que es a ca gado el código.
1 Pe iciones
En es e apa ado se desc iben las ope aciones que se usa án pa a hace las p uebas de ca ga.
1.1 Una ope ación de lec u a
Lec u a de una ila de la abla USER_PROFILE_TABLE.
URL: h p://mms-en -node.elas icbeans alk.com/nodemodule/ge P o ile
Mé odo: POST
A ibu os: use _id=use _id_demo, op_n= 10
1.2 N ope aciones de lec u a 1 ope ación de esc i u a
Ab i cu so en MMS_RESOURCE_TABLE lee N ilas, econs ui el pe il y esc ibi lo en
USER_PROFILE_TABLE
URL: h p://mms-en -node.elas icbeans alk.com /nodemodule/ge RebuildP o ile
Mé odo: POST
A ibu os: use _id=use _id_demo
Es e es el escena io más in e esan e po que in oluc a búsquedas en una abla de N ilas y una
esc i u a. Que es pa ecido al caso de uso más común del RSC en el que un usua io ealiza una
búsqueda, en la que se leen N ilas, y se escoge una de ellas pa a inco po a la al in en a io de
e ce os.
1.3 Una Esc i u a
URL: h p://mms-en -node.elas icbeans alk.com/nodemodule/c ea eSe ice
use _id=use _id_demo
136
se ice_u l= h p://blabla.com
se ice_name= p ueba
unc ional_pa ams=[]
non_ unc ional_pa ams=[]
1.4 Un Bo ado
h p://mms-en -node.elas icbeans alk.com/nodemodule/dele eSe ice
use _id=use _id_demo
se ice_u l= h p://blabla.com
se ice_name:”p ueba”
2. Es a egia pa a los es s
Tipos de ins ancia: single o au oscaling
Inicialmen e pa a medi el endimien o de una máquina se hacen las p uebas con una single
ins ance, una ez se alcance el lími e podemos de ini el alo umb al del dispa ado de
au oescalado de Elas ic Beans alk.
3. Pa áme os de au o escalado
Pa áme os gene ales:
137
Figu a 87: Pa áme os gene ales de au o escalado
Pa a hace las mediciones nos basa emos en la medida de la la encia, que nos indica á el consumo de
CPU de la aplicación. Es o se e en la Figu a 90.
Figu a 88: Medida pa a el uso del dispa ado de au oescalado
El es o de pa áme os se mues an en la Figu a 91.
144
Figu a 96: P ueba de ca ga de 1 usua io, N lec u as 1 esc i u a
Ca ga de 100 usua ios
Jme e : la encia =280, endimien o=5100 pe iciones/min
Medición en Amazon Elas ic Beans alk: 184ms
145
Figu a 97: P ueba de ca ga de 100 usua ios, N lec u as 1 esc i u a
Ca ga de 200 usua ios
Jme e : la encia = llega a alcanza los 7 segundos, endimien o= alcanza la 5000 pe iciones/min y
se dec emen a has alas 1800 pe iciones/min
Medición en Amazon Elas ic Beans alk: 5 segundos
146
Figu a 98: P ueba de ca ga de 200 usua ios, N lec u as 1 esc i u a
147
Anexo 5:Desc ipción de código
En es a sección se desc ibe y mues a el código de algunas de las unciones más impo an es.
Lema izado
El algo i mo lema izado desc i o en el iche o s emme .js es el siguien e:
unc ion is_ owel(c) {
e u n (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c ==
'á' || c == 'é' ||
c == 'í' || c == 'ó' || c == 'ú');
}
a s a = 0;
unc ion ge Nex VowelPos(wo d, s a ) {
len = wo d.leng h;//s len(wo d);
o (i = s a ; i < len; i++){
i (is_ owel(wo d.cha A (i))) { e u n i;}
}
e u n len;
}
a s a = 0;
unc ion ge Nex Consonan Pos(wo d, s a ) {
len = wo d.leng h;//s len($wo d);
o (i = s a ; i < len; i++){
i (!is_ owel(wo d.cha A (i))) { e u n i;}
}
e u n len;
}
unc ion endsin(wo d, su ix) {
i (wo d.leng h < su ix.leng h) e u n alse;
e u n (wo d.subs (wo d.leng h-su ix.leng h,wo d.leng h)==su ix);
}
unc ion endsinA (wo d, su ixes) {
o (i=0;i<su ixes.leng h;i++){
su =su ixes[i];
i (endsin(wo d,su )) { e u n su ;}
}
e u n '';
}
unc ion emo eAccen (wo d) {
especiales = new A ay('á','é','í','ó','ú');
no males = new A ay('a','e','i','o','u');
a i = 0;
a j = 0;
while(i<wo d.leng h){
o (j=0;j<especiales.leng h;j++){
148
wo d = wo d. eplace(especiales[j],no males[j]);
}
i++;
}
e u n wo d
}
unc ion s emm(wo d) {
a 1 = 0; a 2 = 0; a = 0;
a debug = documen .ge Elemen ById('in e medio');
a len = wo d.leng h;
i (len <= 2) { e u n wo d;}
wo d = wo d. oLowe Case();
1 = 2 = = len;
//R1 es la egion despues de la p ime a consonan e que sigue a una ocal,
o es la egion nula al inal de la palab a si no exis e esa consonan e.
o (i = 0; ((i < (len-1)) && ( 1 == len)); i++) {
i ((is_ owel(wo d.cha A (i))) && (!(is_ owel(wo d.cha A (i+1))))) {
1 = i+2;
}
}
//R2 es la egion despues de la p ime a consonan e que sigue a una ocal
en R1, o es la egion nula al inal de la palab a si no exis e esa
conosonan e.
o (i = 1; ((i < (len -1)) && ( 2 == len)); i++) {
i ((is_ owel(wo d.cha A (i))) && (!(is_ owel(wo d.cha A (i+1))))) {
2 = i+2;
}
}
i (len > 3) {
i (!(is_ owel(wo d.cha A (1)))) {
// Si la segunda le a es una consonan e, RV es la egion despues de
la siguien e ocal.
= ge Nex VowelPos(wo d, 2) +1;
} else i ((is_ owel(wo d.cha A (0))) && (is_ owel(wo d.cha A (1)))) {
// O si las p ime as dos le as son ocales, RV es la egion despues
de la siguien e consonan e.
= ge Nex Consonan Pos(wo d, 2) + 1;
} else {
//En o o caso (el caso consonan e- ocal), RV es la egion despues de
la e ce a le a. Pe o RV es el inal de la palab a si no puedes encon a
esas posiciones.
= 3;
}
}
//Aho a mismo es oy suponiendo que 1, 2 y nunca son nega i os (si lo
uesen coge ian el subs desde el inal de la cadena).
a 1_ x = wo d.subs ( 1, wo d.leng h); //$ 1_ x = subs ($wo d,$ 1);
a 2_ x = wo d.subs ( 2, wo d.leng h); //$ 2_ x = subs ($wo d,$ 2);
a _ x = wo d.subs ( , wo d.leng h); //$ _ x = subs ($wo d,$ );
149
a wo d_o ig = wo d;
//Paso 0: P onomb e adjun o. // S ep 0: A ached p onoun
a p onoun_su = new A ay('me', 'se', 'sela', 'selo', 'selas', 'selos',
'la', 'le', 'lo', 'las', 'les', 'los', 'nos');
a p onoun_su _p e1 = new A ay('éndo', 'ándo', 'á ', 'é ', 'í ');
a p onoun_su _p e2 = new A ay('ando', 'iendo', 'a ', 'e ', 'i ');
a su = '';
a p e_su = '';
su = endsinA (wo d, p onoun_su );
i (su != '') {
p e_su = endsinA ( _ x .subs (0,( _ x .leng h-
su .leng h)),p onoun_su _p e1);
i (p e_su != '') {
wo d = emo eAccen (wo d.subs (0,(wo d.leng h-su .leng h)));
} else {
p e_su = endsinA ( _ x .subs (0,( _ x .leng h-
su .leng h)),p onoun_su _p e2);
i ((p e_su != '') ||
((endsin(wo d, 'yendo' )) &&
(wo d.subs (((wo d.leng h-su .leng h)-6),(((wo d.leng h-
su .leng h)-6)+1)) == 'u'))) {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));
}
}
}
i (wo d != wo d_o ig) {
1_ x = wo d.subs ( 1,wo d.leng h);
2_ x = wo d.subs ( 2,wo d.leng h);
_ x = wo d.subs ( ,wo d.leng h);
}
a wo d_a e 0 = wo d;
a a ay1 = new A ay('anza', 'anzas', 'ico', 'ica', 'icos', 'icas',
'ismo', 'ismos', 'able', 'ables', 'ible', 'ibles', 'is a', 'is as', 'oso',
'osa', 'osos', 'osas', 'amien o', 'amien os', 'imien o', 'imien os');
a a ay2 = new A ay('icado a', 'icado ', 'icación', 'icado as',
'icado es', 'icaciones', 'ican e', 'ican es', 'icancia', 'icancias', 'ado a',
'ado ', 'ación', 'ado as', 'ado es', 'aciones', 'an e', 'an es', 'ancia',
'ancias');
a a ay3 = new A ay('logía', 'logías');
a a ay4 = new A ay('ución', 'uciones');
a a ay5 = new A ay('encia', 'encias');
a a ay6 = new A ay('a i amen e', 'i amen e', 'osamen e', 'icamen e',
'adamen e');
a a ay7 = new A ay('amen e');
a a ay8 = new A ay('an emen e', 'ablemen e', 'iblemen e', 'men e');
a a ay9= new A ay('abilidad', 'abilidades', 'icidad', 'icidades',
'i idad', 'i idades', 'idad', 'idades');
a a ay10 = new A ay('a i a', 'a i o', 'a i as', 'a i os', 'i a',
'i o', 'i as', 'i os');
i ((su = endsinA ( 2_ x , a ay1)) != '') {
150
wo d = wo d.subs (0,(wo d.leng h-su .leng h));// subs ($wo d,0, -
s len($su ));
} else i ((su = endsinA ( 2_ x , a ay2)) != '') {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));// subs ($wo d,0, -
s len($su ));
} else i ((su = endsinA ( 2_ x , a ay3)) != '') {
//wo d = wo d.conca (wo d.subs (0,(wo d.leng h-su .leng h)),'log');
//$wo d = subs ($wo d,0, -s len($su )) . 'log';
wo d = wo d.subs (0,(wo d.leng h-su .leng h)) + 'log';
} else i ((su = endsinA ( 2_ x , a ay4)) != '') {
//wo d = wo d.conca (wo d.subs (0,(wo d.leng h-su .leng h)),'u');
//$wo d = subs ($wo d,0, -s len($su )) . 'u';
wo d = wo d.subs (0,(wo d.leng h-su .leng h)) + 'u';
} else i ((su = endsinA ( 2_ x , a ay5)) != '') {
//wo d = wo d.conca (wo d.subs (0,(wo d.leng h-su .leng h)),'en e');
//$wo d = subs ($wo d,0, -s len($su )) . 'en e';
wo d = wo d.subs (0,(wo d.leng h-su .leng h)) + 'en e';
} else i ((su = endsinA ( 2_ x , a ay6)) != '') {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));
} else i ((su = endsinA ( 1_ x , a ay7)) != '') {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));
} else i ((su = endsinA ( 2_ x , a ay8)) != '') {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));
} else i ((su = endsinA ( 2_ x , a ay9)) != '') {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));
} else i ((su = endsinA ( 2_ x , a ay10)) != '') {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));
}
i (wo d != wo d_a e 0) {
1_ x = wo d.subs ( 1,wo d.leng h); //$ 1_ x = subs ($wo d,$ 1);
2_ x = wo d.subs ( 2,wo d.leng h); //$ 2_ x = subs ($wo d,$ 2);
_ x = wo d.subs ( ,wo d.leng h); //$ _ x = subs ($wo d,$ );
}
a wo d_a e 1 = wo d;
a a ay11 = new A ay('ya', 'ye', 'yan', 'yen', 'ye on', 'yendo', 'yo',
'yó', 'yas', 'yes', 'yais', 'yamos');
i (wo d_a e 0 == wo d_a e 1) {
//Hacemos el paso 2a si no qui amos ninguna e minación en el paso 1.
i (((su = endsinA ( _ x , a ay11))!=
'')&&((wo d.subs (((wo d.leng h-su .leng h)-1),(((wo d.leng h-su .leng h)-
1)+1)))==('u'))) {
//((su = endsinA ( _ x , a a ay11 = new A ay('ya', 'ye', 'yan',
'yen', 'ye on', 'yendo', 'yo', 'yó', 'yas', 'yes', 'yais', 'yamos'))) != ''
&&
//(wo d.subs (((wo d.leng h-su .leng h)-1),(((wo d.leng h-su .leng h)-
1)+1)) == 'u' ) {//(subs ($wo d,-s len($su )-1,1) == 'u')) {
wo d = wo d.subs (0,(wo d.leng h-su .leng h));//$wo d =
subs ($wo d,0, -s len($su ));
}
i (wo d != wo d_a e 1) {
1_ x = wo d.subs ( 1,wo d.leng h); //$ 1_ x = subs ($wo d,$ 1);
2_ x = wo d.subs ( 2,wo d.leng h); //$ 2_ x = subs ($wo d,$ 2);
_ x = wo d.subs ( ,wo d.leng h); //$ _ x = subs ($wo d,$ );
151
}
a wo d_a e 2a = wo d;
// Hacemos el paso 2b si hicimos el paso 2a, pe o allo al qui a el
su ijo.
a a ay12 = new A ay('en', 'es', 'éis', 'emos');
a a ay13 = new A ay('a ían', 'a ías', 'a án', 'a ás', 'a íais',
'a ía', 'a éis', 'a íamos', 'a emos', 'a á', 'a é', 'e ían', 'e ías', 'e án',
'e ás', 'e íais', 'e ía', 'e éis', 'e íamos', 'e emos', 'e á', 'e é',
'i ían', 'i ías', 'i án', 'i ás', 'i íais', 'i ía', 'i éis', 'i íamos',
'i emos', 'i á', 'i é', 'aba', 'ada', 'ida', 'ía', 'a a', 'ie a', 'ad', 'ed',
'id', 'ase', 'iese', 'as e', 'is e', 'an', 'aban', 'ían', 'a an', 'ie an',
'asen', 'iesen', 'a on', 'ie on', 'ado', 'ido', 'ando', 'iendo', 'ió', 'a ',
'e ', 'i ', 'as', 'abas', 'adas', 'idas', 'ías', 'a as', 'ie as', 'ases',
'ieses', 'ís', 'áis', 'abais', 'íais', 'a ais', 'ie ais', ' aseis',
'ieseis', 'as eis', 'is eis', 'ados', 'idos', 'amos', 'ábamos', 'íamos',
'imos', 'á amos', 'ié amos', 'iésemos', 'ásemos');
i (wo d_a e 2a == wo d_a e 1) {
i ((su = endsinA ( _ x , a ay12)) != '') {
wo d = wo d.subs (0,(wo d.leng h-su .leng h)); //$wo d =
subs ($wo d,0, -s len($su ));
i (endsin(wo d, 'gu')) {
wo d = wo d.subs (0,wo d.leng h-1); //$wo d = subs ($wo d,0,-
1);
}
} else i ((su = endsinA ( _ x , a ay13)) != '') {
wo d = wo d.subs (0,wo d.leng h-su .leng h); //$wo d =
subs ($wo d,0, -s len($su ));
}
}
}
// El paso 3 lo hacemos siemp e.
a a ay14 = new A ay('os', 'a', 'o', 'á', 'í', 'ó');
a a ay15 = new A ay('e','é');
1_ x = wo d.subs ( 1,wo d.leng h); //$ 1_ x = subs ($wo d,$ 1);
2_ x = wo d.subs ( 2,wo d.leng h); //$ 2_ x = subs ($wo d,$ 2);
_ x = wo d.subs ( ,wo d.leng h); //$ _ x = subs ($wo d,$ );
i ((su = endsinA ( _ x , a ay14)) != '') {
wo d = wo d.subs (0,wo d.leng h-su .leng h);//$wo d = subs ($wo d,0,
-s len($su ));
} else i ((su = endsinA ( _ x , a ay15)) != '') {
wo d = wo d.subs (0,wo d.leng h-1); //$wo d = subs ($wo d,0,-1);
_ x = wo d.subs ( ,wo d.leng h);//$ _ x = subs ($wo d,$ );
i (endsin( _ x ,'u') && endsin(wo d,'gu')) {
wo d = wo d.subs (0,wo d.leng h-1);//$wo d = subs ($wo d,0,-1);
}
}
wo d = wo d. oUppe Case();
e u n emo eAccen (wo d);
}
unc ion s emme ( ase){
a nue a ase = "";
a j ase = new Objec ();
j ase = new A ay();
152
// ase = documen .ge Elemen ById('sha e_desc ip ion'). alue;
ase_aux = ase.spli ("");
o ( a i = 0; i < ase_aux.leng h; i++){
i (( ase_aux[i]==",")||( ase_aux[i]==".")){ ase_aux[i]="";}//Pasa a
mayusculas(a ec a mas a la uncion s emm).
}
ase = ase_aux.join("");
ase = ase.spli (" ");
// ase = ase. oUppe Case();
o ( a i = 0; i < ase.leng h; i++){
//nue a ase += s emm( ase[i]);
j ase[i] = s emm( ase[i]);
//documen .ge Elemen ById(' esul ').inne HTML = nue a ase;//Gua da
las nue as KEYWORDS en JSON.
}
//j ase = JSON.s ingi y(j ase);
//documen .ge Elemen ById(' esul ').inne HTML =j ase;
//qui a espacios blancos
//qui a s op wo ds. Hace p uebas luego con las que ienen acen os
a s opwo ds = ['a',
'un',
'una',
'unas',
'unos',
'uno',
'sob e',
'de',
' odo',
' ambién',
' as',
'o o',
'algún',
'alguno',
'alguna',
'algunos',
'algunas',
'se ',
'es',
'soy',
'e es',
'somos',
'sois',
'es o',
'es oy',
'es a',
'es amos',
'es ais',
'es an',
'como',
'en',
'pa a',
'a as',
'po que',
'po qué',
'es ado',
153
'es aba',
'an e',
'an es',
'siendo',
'ambos',
'pe o',
'po ',
'no',
'pode ',
'sal',
'al',
'puede',
'puedo',
'más',
'ya',
'le',
'o',
'me',
'has a',
'du an e',
'ni',
'ese',
'con a',
'eso',
'mí',
'mi',
'el',
'él',
'podemos',
'podeis',
'pueden',
' ui',
' ue',
' uimos',
' ue on',
'hace ',
'hago',
'hace',
'hacemos',
'haceis',
'hacen',
'cada',
' in',
'incluso',
'p ime o',
'desde',
'consegui ',
'consigo',
'consigue',
'consigues',
'conseguimos',
'consiguen',
'i ',
' oy',
' a',
' amos',
' ais',