{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#Classificação de artigos do MediaCloud usando GMM e DPGMM\n", "\n", "Neste Notebook vamos aplicar um classificador não supervisionado a uma coleção de artigos extraída do índice do MediaCloud, usando Dirichlet Process Gaussian Mixture models, do Scikit-Learn.\n", "http://scikit-learn.org/stable/auto_examples/mixture/plot_gmm.html#example-mixture-plot-gmm-py\n", "\n", "Vamos também explorar técnicas de Deep learning usando word2vec do pacote gensim:\n", "http://radimrehurek.com/gensim/models/word2vec.html\n", "\n", "uma explicação mais detalhada da metodologia do word2vec pode ser encontrada aqui:\n", "https://code.google.com/p/word2vec/\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import json\n", "import os\n", "import gensim\n", "import pymysql\n", "import nltk # para tokenização de sentenças\n", "from pymongo import MongoClient\n", "from string import punctuation, digits\n", "import bs4\n", "from sklearn import mixture\n", "import datetime\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Primeiro vamos definir uma função para busca no índice:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def sphinx_query(index_name, query=\"\", facet=None):\n", " \"\"\"\n", " Search Sphinx index using a simple match via SphinxQL\n", " :param index_name: Name of the index to search on\n", " :param query: String with the query expression\n", " :param facet: Attribute name to facet by. Must be a list\n", " :return: JSON (array of objects)\n", " \"\"\"\n", " try:\n", " assert index_name in ['mediacloud_articles', 'mediacloud_feeds', 'mediacloud_tweets']\n", " except AssertionError:\n", " return json.dumps({\"error\": \"Bad index name: {}\".format(index_name)})\n", " \n", "\n", " # Setup Sphinxsearch SphinxQL connection\n", " sphinx_conn = pymysql.connect(host='200.20.164.152', port=9306)\n", " cursor = sphinx_conn.cursor(pymysql.cursors.DictCursor)\n", "\n", " if facet is None:\n", " cursor.execute(\"SELECT * from \" + index_name + \" WHERE MATCH(%(query)s) \"\n", " \"LIMIT %(limit)s OPTION max_matches=%(limit)s\",\n", " {'query': query, 'limit': 100000})\n", " else:\n", " cursor.execute(\"SELECT * from \"+index_name+\" WHERE MATCH(%s) \" + \" \".join([\"FACET {}\".format(f) for f in facet]),\n", " (query,))\n", " results = cursor.fetchall()\n", " cursor.close()\n", " \n", " return json.dumps(results)\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2467 resultados retidos\n" ] } ], "source": [ "consulta = 'Marina silva'\n", "res = sphinx_query(\"mediacloud_articles\",'\"{}\" '.format(consulta))\n", "res = json.loads(res)\n", "# retemos apenas as entradas que contém sumários\n", "#filtramos também por datas\n", "data_ini = datetime.datetime(2014,8,10,0,0,0)\n", "data_fim = datetime.datetime(2014,8,28,0,0,0)\n", "res = [d for d in res if datetime.datetime.fromtimestamp(d['published'])> data_ini and datetime.datetime.fromtimestamp(d['published']) <= data_fim]\n", "print(\"{} resultados retidos\".format(len(res)))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[{'id': 944080,\n", " 'summary': '
\\n

Categoria: 

\\n
Eleições
\\n
\\n
\\n \\n \\n \\n

\"\"

\\n

Jornal GGN - Sai na próxima semana a decisão sobre quem o PSB lançará como candidato a presidente no lugar de Eduardo Campos, morto em acidente aéreo no último dia 13. Marina Silva é a favorita pelo recall que tem junto ao eleitorado desde a eleição de 2010.

\\n

Mas Marina, desde que ingressou no PSB, deixou claro que esse arranjo é provisório. Dura até que a Rede Sustentabilidade saia do papel. Diante do impasse sobre o futuro da chapa em 2014, fica a pergunta: será que o PSB vai conseguir impôr todas as suas condições à Marina e se consagrar como o partido representativo da terceira via no país, ou a figura Marina Silva vai se sobressair sobre o PSB? 

\\n

leia mais

',\n", " 'title': 'Marina Silva e PSB: quem engole quem?',\n", " 'published': 1408291270,\n", " 'db': '',\n", " 'link': 'http://jornalggn.com.br/noticia/marina-silva-e-psb-quem-engole-quem',\n", " '_id': '53f0a8d0dcccdd842bd1936c',\n", " 'collection': '',\n", " 'links': '{\"links\":[{\"href\":\"http:\\\\/\\\\/jornalggn.com.br\\\\/noticia\\\\/marina-silva-e-psb-quem-engole-quem\",\"type\":\"text\\\\/html\",\"rel\":\"alternate\"}]}',\n", " 'language': 'pt',\n", " '._id': '53f0a8d0dcccdd842bd1936c'},\n", " {'id': 985401,\n", " 'summary': '

Benedito Tadeu César* A campanha no rádio e na TV já começou há uma semana e Aécio Neves ainda não disse a que veio. Além de se apresentar ao eleitorado, não fez quase mais nada. Dá a impressão de estar paralisado diante do avanço de Marina Silva. Enquanto Aécio Neves apresenta-se com uma imagem de […]

\\n

The post E Aécio, vai descer do muro e disputar com Marina Silva? appeared first on Sul 21.

',\n", " 'title': 'E Aécio, vai descer do muro e disputar com Marina Silva?',\n", " 'published': 1409084608,\n", " 'db': '',\n", " 'link': 'http://www.sul21.com.br/jornal/e-aecio-vai-descer-do-muro-e-disputar-com-marina-silva/',\n", " '_id': '53fcc487dcccdd5969d2fd9c',\n", " 'collection': '',\n", " 'links': '{\"links\":[{\"href\":\"http:\\\\/\\\\/www.sul21.com.br\\\\/jornal\\\\/e-aecio-vai-descer-do-muro-e-disputar-com-marina-silva\\\\/\",\"type\":\"text\\\\/html\",\"rel\":\"alternate\"}]}',\n", " 'language': 'pt',\n", " '._id': '53fcc487dcccdd5969d2fd9c'},\n", " {'id': 931059,\n", " 'summary': 'O consultor político Vitor Oliveira e o cientista político Fábio Ostermann traçaram o deram entrevista ao InfoMoney e destacaram cenário para Marina Silva',\n", " 'title': '\"PSB caiu no colo de Marina Silva\"; mas será que ela tem a cara do partido?',\n", " 'published': 1408052040,\n", " 'db': '',\n", " 'link': 'http://www.infomoney.com.br//mercados/eleicoes/noticia/3515587/psb-caiu-colo-marina-silva-mas-sera-que-ela-tem',\n", " '_id': '53ed03b9dcccdd25bf76b41a',\n", " 'collection': '',\n", " 'links': '{\"links\":[{\"href\":\"http:\\\\/\\\\/www.infomoney.com.br\\\\/\\\\/mercados\\\\/eleicoes\\\\/noticia\\\\/3515587\\\\/psb-caiu-colo-marina-silva-mas-sera-que-ela-tem\",\"type\":\"text\\\\/html\",\"rel\":\"alternate\"}]}',\n", " 'language': 'pt',\n", " '._id': '53ed03b9dcccdd25bf76b41a'}]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res[:3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exportando a série Temporal" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/IPython/kernel/__main__.py:1: FutureWarning: TimeSeries is deprecated. Please use Series\n", " if __name__ == '__main__':\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ts = pd.TimeSeries(data=np.ones(len(res)),index=[datetime.datetime.fromtimestamp(d['published']) for d in res])\n", "#ts['Count']=1\n", "rts=ts.resample('h',how=\"sum\")\n", "rts.plot();\n", "#rts.to_csv('{}+filha;filho;renata;miguel_porhora_noticias.csv'.format(consulta))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vamos agora construir um corpus só com os sumários" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/bs4/__init__.py:166: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system (\"lxml\"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.\n", "\n", "To get rid of this warning, change this:\n", "\n", " BeautifulSoup([your markup])\n", "\n", "to this:\n", "\n", " BeautifulSoup([your markup], \"lxml\")\n", "\n", " markup_type=markup_type))\n" ] } ], "source": [ "docs = [bs4.BeautifulSoup(d['summary']).get_text() for d in res]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Antes de poder aplicar o word2vec, precisamos criar um banco de frases que são a matéria prima do word2vec. Vamos armazenar estas frases em um banco Mongodb para facilitar a iteração sobre as frases." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cada Documento dividido em frases se converte na seguinte lista:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[u' E AGORA MARINA SILVA ?',\n", " u'VICE NA CHAPA DE GERALDO ALCKMIN DIZ QUE \\xc9 MARINA QUEM PRECISA DO PSB\"ELA N\\xc3O PARTICIPA DE NADA NEM SABE O PRE\\xc7O DO ALUGUEL DE UM COMIT\\xca ELEITORAL\" - M\\xe1rcio Fran\\xe7a / PSB-SPO PSB de S\\xe3o Paulo n\\xe3o parece muito interessado na quest\\xe3o nacional do Partido, que tem de substituir Eduardo Campos, falecido em tr\\xe1gico acidente de avi\\xe3o ocorrido na \\xfaltima Quarta-Feira.',\n", " u\"Marina Silva, ao que tudo indica, ser\\xe1 a nova cabe\\xe7a de chapa do partido socialista, mas, as resist\\xeancias ao seu nome, e principalmente as condi\\xe7\\xf5es que j\\xe1 est\\xe3o sendo colocadas na mesa de negocia\\xe7\\xe3o para \\xa0que ela assuma a candidatura, est\\xe3o crescendo na medida em que o tempo passa, e os interesses eleitorais se sobrep\\xf5e ao impacto do acidente e perplexidade perante a perda do ex-governador e at\\xe9 ent\\xe3o candidato \\xe0 presid\\xeancia, Eduardo Campos.Coube ao membro do PSB de S\\xe3o Paulo, que \\xe9 o candidato a vice na chapa de Geraldo Alckmin (PSDB), colocar de forma bastante DURA e at\\xe9 agressiva, como Marina Silva DEVE se COMPORTAR de agora em diante.Segundo mat\\xe9ria de O Globo, M\\xe1rcio Fran\\xe7a, que \\xe9 o TESOUREIRO da Campanha presidencial do PSB, disse o seguinte:\\u2018Marina faz pol\\xedtica de um jeito que n\\xe3o \\xe9 o nosso\\u2019,'Agora \\xe9 o PSB que ter\\xe1 cr\\xe9dito por aceit\\xe1-la como candidata''\\xc9 o mundo real que tem de ser colocado para que ela fa\\xe7a sua escolha.\",\n", " u'Seria injusto coloc\\xe1-la como candidata sem que saiba.',\n", " u'Marina n\\xe3o era respons\\xe1vel por nada na campanha.',\n", " u\"Ela n\\xe3o sabe nem quanto custa o aluguel do comit\\xea'\\xa0'Ela tem de nos acolher e temos de acolh\\xea-la.\",\n", " u'Antes ela criou cr\\xe9dito, pois era a mais famosa.',\n", " u'Neste instante, criou o d\\xe9bito.',\n", " u'N\\xf3s \\xe9 que iremos acolh\\xea-la para ser candidata a presidente.',\n", " u\"Agora ela se torna nossa candidata para dirigir o pa\\xeds''Todos concordam que ela tem de ser a pessoa, em fun\\xe7\\xe3o da express\\xe3o de votos e do gesto generoso dela, que aceitou sair como vice.\",\n", " u'Mas para ser a candidata da coliga\\xe7\\xe3o ela tem de ter o discurso da coliga\\xe7\\xe3o, n\\xe3o da Rede.',\n", " u\"Como candidata, Marina fazia o que bem entendia'.ENT\\xc3O...As diferen\\xe7as entre MARINA SILVA/REDE e o PSB, que eram contornadas e minimizadas por Eduardo Campos, interessado nos poss\\xedveis votos que a ex-senadora e uma das lideran\\xe7as no campo do Meio-Ambiente, poderia lhe transferir, ficam agora mais expostas.\",\n", " u'Com pouca ou nenhuma sutileza, os l\\xedderes do PSB est\\xe3o dizendo para Marina que, a eles, n\\xe3o interessa ganhar a elei\\xe7\\xe3o e n\\xe3o assumir de fato o poder.O FUTURO de Marina Silva eleita, estaria assim selado.',\n", " u'Ela ser\\xe1 taxada de \"traidora dos compromissos assumidos\", ou ent\\xe3o ser\\xe1 rotulada como \"TUTELADA\".A POL\\xcdTICA continua desafiando a capacidade dos homens preverem o futuro.Postado por BONDeblog S. O.\\xe0s 08:49Rea\\xe7\\xf5es:\\xa0Nenhum coment\\xe1rio: Links para esta postagem Enviar por e-mailBlogThis!Compartilhar no TwitterCompartilhar no FacebookCompartilhar no OrkutCompartilhar com o PinterestMarcadores: AN\\xc1LISE POL\\xcdTICA, Eduardo Campos, elei\\xe7\\xe3o 2014, marina silva, PSB, REDE SUSTENTABILIDADE\\xa0Do 007BONDeblog.\\xa0 ']" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nltk.tokenize.sent_tokenize(docs[1])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#criando um banco com as frases:\n", "client = MongoClient()\n", "db = client.word2vec\n", "db.drop_collection('frases')\n", "\n", "frases = db.frases\n", "for n,doc in enumerate(docs):\n", " frases.insert({'doc': n, 'frases':nltk.tokenize.sent_tokenize(doc)})\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Agora vamos escrever um gerador que retorne uma frase de cada vez, como uma lista de tokens. mas antes vamos reduzir as palavras para minúsculas." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "sw = nltk.corpus.stopwords.words('portuguese') + list(punctuation) + ['r',u'não',u'é', u'à','quarta','feira', \n", " u'até', u'já', ')','(','\"','\\'','...', \n", " 'nesta', 'leia','quinta', 'foto',u'terça',\n", " 'dub','diz','dia',u'está','sexta', u'\\u2022', '']\n", "def get_sentences():\n", " for doc in frases.find({}):\n", " for f in doc['frases']:\n", " yield [w.strip().strip(punctuation).strip(digits).lower() for w in f.split() if w not in sw]\n", " " ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "-c:8: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal\n" ] } ], "source": [ "sentences = get_sentences()\n", "model = gensim.models.Word2Vec(sentences, min_count=15, size=5000, workers=8)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 5.23893279e-04, 1.79088038e-05, 1.05028019e-04,\n", " 2.29172118e-04, 2.95586302e-04, 7.58165203e-04,\n", " -5.76344319e-04, 2.38053588e-04, 5.28062810e-05,\n", " 1.92863081e-04, 5.85806207e-04, 7.97907705e-04,\n", " 9.24295513e-04, 8.21865979e-04, -9.21872561e-04,\n", " -9.73194081e-04, 2.61064735e-04, -7.43841345e-04,\n", " 3.51673807e-04, -3.75185453e-04, 8.89859628e-04,\n", " 6.00494270e-04, 6.72011229e-05, -1.55870031e-04,\n", " -1.72735075e-04, 4.95197164e-05, -6.47866807e-04,\n", " 9.84237646e-04, -6.03786204e-04, -8.39359200e-05,\n", " 2.75766390e-04, -1.89963670e-04, -5.39175526e-04,\n", " 5.62078203e-04, 1.19242177e-04, 2.42233567e-04,\n", " 7.56517285e-04, -6.19249622e-05, 2.87531933e-04,\n", " -9.46478627e-04, -1.06012034e-04, -5.92135708e-04,\n", " -3.77774268e-04, 2.74946186e-04, 3.78991885e-04,\n", " 1.86964171e-04, -7.96205422e-04, -3.42984742e-04,\n", " 4.47301900e-05, -5.60187618e-05, -6.73043716e-04,\n", " 8.87513044e-04, 5.59889922e-05, -4.94957087e-04,\n", " -4.20221884e-04, -4.25604056e-04, -2.97181454e-04,\n", " -9.36319528e-04, 2.97970750e-04, -7.75025750e-04,\n", " -5.46723837e-04, 4.66827158e-04, -9.53426468e-04,\n", " -7.10491207e-04, 9.51222144e-04, -9.72778653e-04,\n", " -4.83788550e-04, -1.42255609e-04, -9.21887113e-04,\n", " 3.70483322e-04, -6.99955039e-04, 5.11854596e-04,\n", " 3.92803049e-04, 7.62677169e-04, -9.29975242e-04,\n", " -2.17419336e-04, -5.55085717e-04, -8.71628814e-04,\n", " 1.87643469e-04, -1.73587803e-04, -9.73289774e-04,\n", " 1.63087359e-04, -2.43098024e-04, -2.15552544e-04,\n", " 3.71303759e-04, -6.09576644e-04, -7.31920183e-04,\n", " -6.11542084e-04, -7.44074408e-04, 2.18918158e-05,\n", " 4.49464191e-04, -3.86785629e-04, -5.92068711e-04,\n", " -3.84862622e-04, 8.57815554e-04, -3.78661673e-04,\n", " 4.16958967e-04, -9.89507171e-05, -6.98351068e-04,\n", " 9.51259572e-04, 9.57804907e-04, 5.80066815e-04,\n", " -5.89028059e-04, 9.40719503e-04, -4.29141044e-04,\n", " -2.08327911e-04, 7.55751040e-04, 2.69514567e-04,\n", " -5.46889823e-05, -9.61516111e-04, 7.81890878e-04,\n", " -4.69731385e-05, 3.19411833e-04, -9.29796253e-04,\n", " 1.92499283e-05, -6.21327723e-04, -6.04629931e-05,\n", " -4.94555978e-04, 4.71509906e-04, 9.83222621e-04,\n", " -2.58649059e-04, -9.96271265e-05, 1.59290881e-04,\n", " -3.03994195e-04, -6.25954242e-04, -3.51568335e-04,\n", " 5.74506936e-04, 8.57352919e-04, 5.89576259e-04,\n", " 4.20273573e-04, 9.21050785e-04, -1.77620877e-05,\n", " 9.89018357e-04, 8.74065794e-04, -6.86237618e-05,\n", " -2.15866865e-04, -9.74479597e-04, 7.10288587e-04,\n", " -5.35184634e-04, 5.59966611e-05, 5.84039954e-04,\n", " -2.49185279e-04, -2.92311946e-04, -2.59064924e-04,\n", " 4.24475322e-04, 8.64766935e-06, -8.80346401e-04,\n", " -4.65822290e-04, 1.46741237e-04, 3.56685021e-04,\n", " -9.26185690e-04, 8.34594131e-04, -1.06989930e-04,\n", " 5.44855080e-04, 3.64181236e-04, -3.47429042e-04,\n", " -3.72369832e-04, -2.97406397e-04, 2.06150420e-04,\n", " 5.87075949e-04, -6.64789637e-04, 4.28912084e-04,\n", " 8.58307991e-04, -1.75266177e-04, 8.79928120e-04,\n", " -1.89004364e-04, 8.81552769e-05, 6.36734185e-04,\n", " -9.68277920e-04, 3.11788055e-04, 7.57886912e-04,\n", " 9.34953569e-04, -2.47946911e-04, 1.53302171e-04,\n", " 5.97478996e-04, -2.53253616e-04, 2.29312325e-04,\n", " -7.50559208e-04, -4.87921934e-04, -4.14028909e-04,\n", " -5.06650948e-04, 2.76281789e-04, 6.19143364e-04,\n", " 7.88605132e-04, 4.47717117e-04, -2.03682648e-05,\n", " 6.34617638e-04, -7.54247303e-04, -7.52443273e-04,\n", " -8.73103854e-04, 6.21452127e-05, -5.08156954e-05,\n", " 8.97634774e-04, 2.89845339e-05, -2.17704364e-04,\n", " -7.50960491e-04, -3.41716484e-04, -7.68916681e-04,\n", " -6.71162736e-04, -3.69461253e-04, -7.34252390e-04,\n", " 6.76503187e-05, -5.32741135e-04, 9.02711647e-04,\n", " -7.41690514e-04, 6.65260712e-04, -2.43696741e-05,\n", " 2.43325630e-04, 8.59927793e-04, -2.57895910e-04,\n", " 4.33875772e-04, 9.13934127e-05, 3.34309239e-04,\n", " -5.05356642e-04, -5.71637764e-04, 8.73375568e-04,\n", " -6.22097927e-04, 6.62013423e-04, -5.84099791e-04,\n", " 5.39807836e-04, -7.19183154e-05, 3.56500794e-04,\n", " -7.26707804e-04, 2.51671969e-04, -4.75059729e-04,\n", " 8.18891858e-04, 3.77306096e-05, -2.10286249e-04,\n", " -1.71941210e-04, -6.33325311e-04, 5.15134052e-05,\n", " 9.20835766e-04, 5.67668234e-04, 9.32389812e-04,\n", " -5.80465596e-04, -8.78936728e-04, 4.44262143e-04,\n", " 9.24268854e-04, -9.29471804e-04, -8.20283021e-04,\n", " 4.29955369e-04, -9.25454151e-05, -3.76301381e-04,\n", " -1.21094738e-04, -1.83412179e-04, 9.85971186e-04,\n", " -1.77519105e-05, 3.61571438e-04, 3.76928831e-04,\n", " -1.78786038e-04, -2.99936946e-04, 7.58341455e-04,\n", " -3.24279790e-05, -5.54069178e-04, 5.28737786e-04,\n", " 7.65940640e-04, 6.73771370e-04, -2.17277229e-05,\n", " -4.08445223e-04, 9.27292043e-04, -5.20134403e-04,\n", " -5.85513306e-04, 9.91150737e-04, -1.41596436e-04,\n", " -2.82345078e-04, -4.37668175e-04, -4.01786150e-04,\n", " -9.28851659e-04, 6.12151169e-04, 3.84094601e-04,\n", " -7.67542049e-04, -4.04195773e-04, -3.72379145e-04,\n", " 5.57815583e-05, 1.37700437e-04, -7.71536434e-04,\n", " 9.28500551e-04, -1.35422393e-04, -5.94689453e-04,\n", " -8.93246965e-04, 4.39988158e-04, 9.60051548e-04,\n", " 5.05677774e-04, -2.02398496e-06, -5.64724207e-04,\n", " -1.56770577e-04, -8.34278471e-04, -4.16954572e-05,\n", " 4.45764803e-04, 4.32301138e-04, -1.40444768e-04,\n", " 2.33138242e-04, -1.95687408e-05, -3.13134078e-04,\n", " -7.02400401e-04, -9.13420052e-04, 4.98964218e-04,\n", " -1.78242539e-04, 5.99061023e-04, -1.87499798e-04,\n", " 9.51521331e-04, 5.02253941e-04, -4.60130395e-04,\n", " -6.74830109e-04, 6.50300295e-04, 8.95398378e-04,\n", " 7.52736523e-04, -3.91425972e-04, -2.90023454e-04,\n", " 6.16393227e-05, -4.96709137e-04, -9.10982606e-04,\n", " -6.82570215e-04, 5.81153261e-04, 4.12369496e-04,\n", " 1.97709815e-04, -4.03406564e-04, -1.53987843e-04,\n", " 2.78030522e-04, -7.57803849e-04, 7.15100730e-04,\n", " 3.98327364e-04, -6.57645229e-04, 4.42969293e-04,\n", " -6.36187091e-04, 3.97284195e-04, -3.45088425e-04,\n", " -8.83301138e-04, -2.70975634e-05, 7.64860131e-04,\n", " 9.16610763e-04, -2.77226733e-04, -5.52534591e-04,\n", " -6.84835482e-04, -1.52705179e-04, -9.98962205e-04,\n", " -8.81970336e-04, 9.07477457e-04, 6.10043295e-04,\n", " -5.49547607e-04, 8.18100001e-04, -7.89020560e-04,\n", " 8.99604929e-04, 1.23563630e-04, 8.10005586e-04,\n", " 8.55899649e-04, -6.92078320e-04, 1.28470303e-04,\n", " -5.44800947e-04, -5.56548475e-04, 1.34947986e-04,\n", " -8.84350666e-05, 1.23377511e-04, 1.39125681e-04,\n", " -1.62568744e-04, -6.62047474e-04, 1.61205855e-04,\n", " 7.51926505e-04, 7.42614211e-04, -6.69916742e-04,\n", " 6.60056074e-04, 6.82296522e-04, -3.86777101e-05,\n", " 4.98551643e-04, -8.56725208e-04, 9.79297445e-04,\n", " -9.39043239e-04, 6.05766720e-04, 9.36742174e-04,\n", " -4.48285828e-05, -2.58430191e-06, 5.39918721e-04,\n", " -6.87298074e-04, -2.62357120e-04, -7.20143493e-04,\n", " 5.34245453e-04, 3.47504014e-04, -2.39483561e-04,\n", " -1.36203147e-04, 5.24296542e-04, 6.23623782e-04,\n", " 6.83981867e-04, 3.60102073e-04, 7.88629521e-04,\n", " 3.73954172e-05, 2.83613976e-04, 9.56011121e-04,\n", " -4.20490484e-04, -8.93550168e-04, 1.39869153e-04,\n", " -7.27466424e-04, -7.85416923e-05, -9.52683389e-04,\n", " 4.28150583e-04, -6.06924819e-04, -6.13922894e-05,\n", " -4.66008532e-05, -4.36828850e-04, 9.91382753e-04,\n", " -8.36372026e-04, 2.50996032e-04, 6.27341506e-04,\n", " 4.80519637e-04, -5.15225111e-04, -2.59515018e-05,\n", " -7.26724684e-05, 6.44338259e-04, -8.07514414e-04,\n", " -4.85514465e-04, 8.33143888e-04, 2.44099763e-04,\n", " 9.16489866e-04, 3.61290586e-04, -8.98460741e-04,\n", " -7.64110591e-05, 8.33873579e-04, 2.70979392e-04,\n", " 2.74727732e-04, 8.81038723e-04, -2.99580657e-04,\n", " -5.83104615e-04, 8.34427658e-04, 4.80117276e-04,\n", " 4.02216741e-04, -2.33919855e-06, -3.39063816e-04,\n", " 8.23286304e-04, -8.95432895e-04, -6.38764584e-04,\n", " -7.72423009e-05, 8.48955475e-04, 9.04241984e-04,\n", " 8.41062225e-04, -8.43735761e-04, -7.57612404e-04,\n", " 4.77302208e-04, 5.93541132e-04, 6.76513766e-04,\n", " 1.78072776e-04, -9.80433542e-04, -4.56849288e-04,\n", " 7.61639327e-04, -6.93925365e-04, -8.19590699e-04,\n", " 2.85725575e-04, 5.88593655e-04, -5.20271307e-04,\n", " -8.20187212e-04, -1.48870779e-04, -8.99339269e-04,\n", " 4.22099460e-04, 5.21900365e-04, 2.90259981e-04,\n", " 9.28250956e-04, -8.33772006e-04, 5.06795419e-04,\n", " -7.68737693e-04, -6.88438362e-04, -3.12800839e-04,\n", " 7.91816914e-04, 8.99660110e-04, 1.62126657e-04,\n", " 3.47757712e-04, -6.20392209e-04, -8.70258838e-04,\n", " -2.48638098e-04, -8.81525164e-04, -5.96576720e-04,\n", " 5.59174747e-04, 4.15783783e-04, 8.44018999e-04,\n", " -5.61107125e-04, -7.13689253e-04, -1.83506912e-04,\n", " 4.80242947e-04, 3.25008819e-04, -1.31783003e-04,\n", " -1.61290984e-04, -2.74879967e-05, -4.42265067e-04,\n", " 3.29250965e-04, 4.85369383e-04, -4.99524700e-04,\n", " -4.78953516e-05, 2.25481654e-05, -1.31745182e-04,\n", " 4.52668290e-04, -8.37180822e-04, 8.05083429e-04,\n", " 5.02907787e-04, -2.42717491e-04, -3.92102462e-04,\n", " 2.84880487e-04, -2.18000336e-04, 5.99259103e-04,\n", " 1.74565284e-04, 8.87349248e-04, -8.62279092e-04,\n", " -8.13564868e-04, -8.49096919e-04], dtype=float32)" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model[u'campos']" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(u'pr\\xf3xima', 0.0489029735326767),\n", " (u'judici\\xe1rio', 0.04631877690553665),\n", " (u'nara', 0.04554399847984314),\n", " (u'psol', 0.04423150420188904),\n", " (u'voltar', 0.04336097091436386),\n", " (u'coletiva', 0.04289194196462631),\n", " (u'provocou', 0.0422094501554966),\n", " (u'ter\\xe7a', 0.041922423988580704),\n", " (u'eleitorado', 0.04177185148000717),\n", " (u'tend\\xeancia', 0.04028308391571045)]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.most_similar(positive=[u'eduardo', u'marina' ], negative=[u'aécio'], topn=10)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'eduardo'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.doesnt_match(['eduardo', 'marina', 'psb', 'avião', 'futebol'])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.016895555188071957" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.similarity('marina','psb')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "scatter(model.syn0[:,1],model.syn0[:,2]);" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3779" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(model.vocab)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ "model.table" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{u'': ,\n", " u')foto': ,\n", " u',': ,\n", " u'-': ,\n", " u'.': ,\n", " u'/': ,\n", " u'/02/2013)foto': ,\n", " u'/07)foto': ,\n", " u'/08).foto': ,\n", " u'/08)foto': ,\n", " u'/08/': ,\n", " u'/1/2014)foto': ,\n", " u'/10/2010)foto': ,\n", " u'/15/': ,\n", " u'/16/': ,\n", " u'/21/': ,\n", " u'/6)foto': ,\n", " u'/7)foto': ,\n", " u'/7/2007)foto': ,\n", " u'/8)foto': ,\n", " u'/8/2005)foto': ,\n", " u'/8/2014)foto': ,\n", " u':': ,\n", " u':00marcadores': ,\n", " u':30marcadores': ,\n", " u'a': ,\n", " u'abaixo': ,\n", " u'abalada': ,\n", " u'abandonou': ,\n", " u'abastecimento': ,\n", " u'abc': ,\n", " u'abdelmassih': ,\n", " u'aberta': ,\n", " u'abertas': ,\n", " u'aberto': ,\n", " u'abertura': ,\n", " u'abordagem': ,\n", " u'aborto': ,\n", " u'abre': ,\n", " u'abreu': ,\n", " u'abril': ,\n", " u'abrir': ,\n", " u'abriu': ,\n", " u'absoluta': ,\n", " u'absolutamente': ,\n", " u'acaba': ,\n", " u'acabar': ,\n", " u'acabou': ,\n", " u'academia': ,\n", " u'acad\\xeamico': ,\n", " u'aceitar': ,\n", " u'aceitou': ,\n", " u'acenam': ,\n", " u'acesse': ,\n", " u'acesso': ,\n", " u'acha': ,\n", " u'achar': ,\n", " u'acho': ,\n", " u'acidente': ,\n", " u'acidentes': ,\n", " u'acima': ,\n", " u'acm': ,\n", " u'acompanha': ,\n", " u'acompanhada': ,\n", " u'acompanham': ,\n", " u'acompanhar': ,\n", " u'acompanhe': ,\n", " u'acompanhou': ,\n", " u'acontece': ,\n", " u'acontecendo': ,\n", " u'acontecer': ,\n", " u'aconteceu': ,\n", " u'acordo': ,\n", " u'acordos': ,\n", " u'acredita': ,\n", " u'acreditam': ,\n", " u'acreditar': ,\n", " u'acredito': ,\n", " u'acrescentou': ,\n", " u'acumulado': ,\n", " u'acusado': ,\n", " u'acusados': ,\n", " u'acusa\\xe7\\xe3o': ,\n", " u'acusa\\xe7\\xf5es': ,\n", " u'acusou': ,\n", " u'administrativa': ,\n", " u'administrativo': ,\n", " u'administra\\xe7\\xe3o': ,\n", " u'admiradores': ,\n", " u'admite': ,\n", " u'adolescente': ,\n", " u'adolescentes': ,\n", " u'advers\\xe1ria': ,\n", " u'advers\\xe1rio': ,\n", " u'advers\\xe1rios': ,\n", " u'advogado': ,\n", " u'advogados': ,\n", " u'aeronave': ,\n", " u'aeron\\xe1utica': ,\n", " u'aeroporto': ,\n", " u'aeroportos': ,\n", " u'af': ,\n", " u'afetados': ,\n", " u'afinal': ,\n", " u'afirma': ,\n", " u'afirmando': ,\n", " u'afirmar': ,\n", " u'afirmou': ,\n", " u'afroreagge': ,\n", " u'agenda': ,\n", " u'agente': ,\n", " u'agentes': ,\n", " u'ago': ,\n", " u'agora': ,\n", " u'agosto': ,\n", " u'agricultura': ,\n", " u'agroneg\\xf3cio': ,\n", " u'agropecu\\xe1ria': ,\n", " u'aguarda': ,\n", " u'aguardam': ,\n", " u'ag\\xeancia': ,\n", " u'ag\\xeancias': ,\n", " u'aikawa/instituto': ,\n", " u'ainda': ,\n", " u'aires': ,\n", " u'ajuda': ,\n", " u'ajudar': ,\n", " u'ajudou': ,\n", " u'ajuste': ,\n", " u'ajustes': ,\n", " u'al': ,\n", " u'alagoas': ,\n", " u'alan': ,\n", " u'alberto': ,\n", " u'albuquerque': ,\n", " u'alcance': ,\n", " u'alcan\\xe7ar': ,\n", " u'alcan\\xe7ou': ,\n", " u'alckmin': ,\n", " u'aldeota': ,\n", " u'aldo': ,\n", " u'alegre': ,\n", " u'alegria': ,\n", " u'alemanha': ,\n", " u'alem\\xe3': ,\n", " u'alem\\xe3o': ,\n", " u'alencar': ,\n", " u'alerta': ,\n", " u'alexandre': ,\n", " u'alfredo': ,\n", " u'algo': ,\n", " u'algum': ,\n", " u'alguma': ,\n", " u'algumas': ,\n", " u'alguns': ,\n", " u'algu\\xe9m': ,\n", " u'ali': ,\n", " u'aliado': ,\n", " u'aliados': ,\n", " u'alian\\xe7a': ,\n", " u'alian\\xe7as': ,\n", " u'alice': ,\n", " u'alimenta\\xe7\\xe3o': ,\n", " u'alimentos': ,\n", " u'ali\\xe1s': ,\n", " u'all': ,\n", " u'almeida': ,\n", " u'aloizio': ,\n", " u'alta': ,\n", " u'altera\\xe7\\xf5es': ,\n", " u'alternativa': ,\n", " u'alternativas': ,\n", " u'alto': ,\n", " u'altos': ,\n", " u'altura': ,\n", " u'alunos': ,\n", " u'alves': ,\n", " u'alvo': ,\n", " u'al\\xe9m': ,\n", " u'amanh\\xe3': ,\n", " u'amaral': ,\n", " u'amaro': ,\n", " u'amazonasfoto': ,\n", " u'ambiental': ,\n", " u'ambientalista': ,\n", " u'ambiente': ,\n", " u'ambos': ,\n", " u'amea\\xe7a': ,\n", " u'americana': ,\n", " u'americano': ,\n", " u'americanos': ,\n", " u'amiga': ,\n", " u'amigo': ,\n", " u'amigos': ,\n", " u'amizade': ,\n", " u'amor': ,\n", " u'amorim': ,\n", " u'ampla': ,\n", " u'ampliar': ,\n", " u'amplia\\xe7\\xe3o': ,\n", " u'am\\xe9lia': ,\n", " u'am\\xe9rica': ,\n", " u'ana': ,\n", " u'anac': ,\n", " u'analisar': ,\n", " u'analista': ,\n", " u'analistas': ,\n", " u'anatel': ,\n", " u'and': ,\n", " u'anda': ,\n", " u'andar': ,\n", " u'andrade': ,\n", " u'andr\\xe9': ,\n", " u'animais': ,\n", " u'animal': ,\n", " u'anima\\xe7\\xe3o': ,\n", " u'anivers\\xe1rio': ,\n", " u'ano': ,\n", " u'anofoto': ,\n", " u'anos': ,\n", " u'ante': ,\n", " u'anterior': ,\n", " u'anteriores': ,\n", " u'anteriormente': ,\n", " u'antes': ,\n", " u'anthony': ,\n", " u'antigo': ,\n", " u'antonio': ,\n", " u'ant\\xf4nio': ,\n", " u'anual': ,\n", " u'anuncia': ,\n", " u'anunciada': ,\n", " u'anunciado': ,\n", " u'anunciar': ,\n", " u'anunciou': ,\n", " u'an\\xe1lise': ,\n", " u'an\\xfancio': ,\n", " u'ao': ,\n", " u'aos': ,\n", " u'aparece': ,\n", " u'aparecem': ,\n", " u'apareceu': ,\n", " u'aparelhos': ,\n", " u'apartamento': ,\n", " u'apenas': ,\n", " u'aperto': ,\n", " u'apesar': ,\n", " u'aplicativo': ,\n", " u'apoia': ,\n", " u'apoiar': ,\n", " u'apoio': ,\n", " u'apoios': ,\n", " u'apoiou': ,\n", " u'aponta': ,\n", " u'apontado': ,\n", " u'apontam': ,\n", " u'apontar': ,\n", " u'apontou': ,\n", " u'aposentadoria': ,\n", " u'aposta': ,\n", " u'appeared': ,\n", " u'apreens\\xe3o': ,\n", " u'apresenta': ,\n", " u'apresentada': ,\n", " u'apresentado': ,\n", " u'apresentadores': ,\n", " u'apresentando': ,\n", " u'apresentar': ,\n", " u'apresenta\\xe7\\xe3o': ,\n", " u'apresenta\\xe7\\xf5es': ,\n", " u'apresentou': ,\n", " u'aprovada': ,\n", " u'aprova\\xe7\\xe3o': ,\n", " u'aproveitou': ,\n", " u'aprovou': ,\n", " u'aproximadamente': ,\n", " u'aproxima\\xe7\\xe3o': ,\n", " u'apurar': ,\n", " u'apura\\xe7\\xe3o': ,\n", " u'ap\\xf3s': ,\n", " u'aquavi\\xe1rios': ,\n", " u'aqui': ,\n", " u'aquisi\\xe7\\xe3o': ,\n", " u'ar': ,\n", " u'aracaju': ,\n", " u'arag\\xe3o': ,\n", " u'arapiraca': ,\n", " u'ara\\xfajo': ,\n", " u'arcebispo': ,\n", " u'arcoplex': ,\n", " u'argentina': ,\n", " u'argentino': ,\n", " u'argumento': ,\n", " u'argumentou': ,\n", " u'arma': ,\n", " u'armado': ,\n", " u'armando': ,\n", " u'armas': ,\n", " u'arraes': ,\n", " u'arrecada\\xe7\\xe3o': ,\n", " u'arremeteu': ,\n", " u'arruda': ,\n", " u'arte': ,\n", " u'artes': ,\n", " u'articula\\xe7\\xe3o': ,\n", " u'artigo': ,\n", " u'artigos': ,\n", " u'artista': ,\n", " u'artistas': ,\n", " u'as': ,\n", " u'aspectos': ,\n", " u'assembleia': ,\n", " u'assessor': ,\n", " u'assessores': ,\n", " u'assessoria': ,\n", " u'assim': ,\n", " u'assinada': ,\n", " u'assinado': ,\n", " u'assis': ,\n", " u'assistente': ,\n", " u'assist\\xeancia': ,\n", " u'associados': ,\n", " u'associa\\xe7\\xe3o': ,\n", " u'assume': ,\n", " u'assumir': ,\n", " u'assumiu': ,\n", " u'assunto': ,\n", " u'assuntos': ,\n", " u'assun\\xe7\\xe3o': ,\n", " u'atacama': ,\n", " u'atacar': ,\n", " u'ataque': ,\n", " u'ataques': ,\n", " u'atende': ,\n", " u'atender': ,\n", " u'atendimento': ,\n", " u'aten\\xe7\\xe3o': ,\n", " u'atingir': ,\n", " u'atingiu': ,\n", " u'atitude': ,\n", " u'atividade': ,\n", " u'atividades': ,\n", " u'ativos': ,\n", " u'ato': ,\n", " u'ator': ,\n", " u'atos': ,\n", " u'atrair': ,\n", " u'atraso': ,\n", " u'atrav\\xe9s': ,\n", " u'atra\\xe7\\xf5es': ,\n", " u'atriz': ,\n", " u'atr\\xe1s': ,\n", " u'atuais': ,\n", " u'atual': ,\n", " u'atualmente': ,\n", " u'atuar': ,\n", " u'atua\\xe7\\xe3o': ,\n", " u'at\\xe9': ,\n", " u'audi\\xeancia': ,\n", " u'augusto': ,\n", " u'aula': ,\n", " u'aulas': ,\n", " u'aumenta': ,\n", " u'aumentar': ,\n", " u'aumento': ,\n", " u'aumentou': ,\n", " u'aus\\xeancia': ,\n", " u'autonomia': ,\n", " u'autor': ,\n", " u'autores': ,\n", " u'autoria': ,\n", " u'autoridade': ,\n", " u'autoridades': ,\n", " u'autoriza\\xe7\\xe3o': ,\n", " u'auxiliar': ,\n", " u'aux\\xedlio': ,\n", " u'av': ,\n", " u'avalia': ,\n", " u'avaliar': ,\n", " u'avalia\\xe7\\xe3o': ,\n", " u'avaliou': ,\n", " u'avan\\xe7o': ,\n", " u'avan\\xe7ou': ,\n", " u'avenida': ,\n", " u'aventura': ,\n", " u'avia\\xe7\\xe3o': ,\n", " u'avi\\xe3o': ,\n", " u'avi\\xf5es': ,\n", " u'av\\xf4': ,\n", " u'a\\xe7o': ,\n", " u'a\\xe7\\xe3o': ,\n", " u'a\\xe7\\xf5es': ,\n", " u'a\\xe7\\xfacar': ,\n", " u'a\\xe9cio': ,\n", " u'a\\xe9rea': ,\n", " u'a\\xe9reo': ,\n", " u'a\\xe9reos': ,\n", " u'a\\xed': ,\n", " u'b': ,\n", " u'bacia': ,\n", " u'bahia': ,\n", " u'baiana': ,\n", " u'baiano': ,\n", " u'bairro': ,\n", " u'bairros': ,\n", " u'baixa': ,\n", " u'baixo': ,\n", " u'baixos': ,\n", " u'balan\\xe7o': ,\n", " u'bancada': ,\n", " u'banco': ,\n", " u'bancos': ,\n", " u'band': ,\n", " u'banda': ,\n", " u'bandeira': ,\n", " u'bandeirantes': ,\n", " u'bandfoto': ,\n", " u'banqueiros': ,\n", " u'bar': ,\n", " u'barbosa': ,\n", " u'barra': ,\n", " u'barros': ,\n", " u'base': ,\n", " u'baseada': ,\n", " u'baseado': ,\n", " u'basta': ,\n", " u'bastante': ,\n", " u'bastidores': ,\n", " u'batalha': ,\n", " u'bate': ,\n", " u'bater': ,\n", " u'bateu': ,\n", " u'batista': ,\n", " u'bbc': ,\n", " u'bc': ,\n", " u'beb\\xea': ,\n", " u'beira': ,\n", " u'bela': ,\n", " u'beleza': ,\n", " u'belo': ,\n", " u'bem': ,\n", " u'benef\\xedcio': ,\n", " u'benef\\xedcios': ,\n", " u'benfica': ,\n", " u'bens': ,\n", " u'berlim': ,\n", " u'bernardo': ,\n", " u'beto': ,\n", " u'bezerra': ,\n", " u'bezerra/futura': ,\n", " u'bienal': ,\n", " u'bilh\\xe3o': ,\n", " u'bilh\\xf5es': ,\n", " u'bloco': ,\n", " u'blog': ,\n", " u'bndes': ,\n", " u'boa': ,\n", " u'boas': ,\n", " u'boatos': ,\n", " u'boca': ,\n", " u'bola': ,\n", " u'bolsa': ,\n", " u'bolsas': ,\n", " u'bom': ,\n", " u'bombeiros': ,\n", " u'bondeblog': ,\n", " u'bonner': ,\n", " u'bons': ,\n", " u'bordo': ,\n", " u'bovespa': ,\n", " u'br-': ,\n", " u'branca': ,\n", " u'branco': ,\n", " u'brancos': ,\n", " u'brasil': ,\n", " u'brasila\\xe9cio': ,\n", " u'brasilcandidato': ,\n", " u'brasilcartaz': ,\n", " u'brasileira': ,\n", " u'brasileiras': ,\n", " u'brasileiro': ,\n", " u'brasileiros': ,\n", " u'brasilhomem': ,\n", " u'bras\\xedlia': ,\n", " u'brazil': ,\n", " u'bra\\xe7o': ,\n", " u'briga': ,\n", " u'brito': ,\n", " u'brito/coliga\\xe7\\xe3o': ,\n", " u'brit\\xe2nico': ,\n", " u'brown': ,\n", " u'bruno': ,\n", " u'bruto': ,\n", " u'buenos': ,\n", " u'busca': ,\n", " u'buscando': ,\n", " u'buscar': ,\n", " u'by': ,\n", " u'b\\xe1sica': ,\n", " u'b\\xe1sico': ,\n", " u'c': ,\n", " u'cabe': ,\n", " u'cabe\\xe7a': ,\n", " u'cabe\\xe7alho': ,\n", " u'cabo': ,\n", " u'cada': ,\n", " u'cadastro': ,\n", " u'cadeia': ,\n", " u'caf\\xe9': ,\n", " u'cai': ,\n", " u'cair': ,\n", " u'caiu': ,\n", " u'caixa': ,\n", " u'caixa-preta': ,\n", " u'caixas': ,\n", " u'caix\\xe3o': ,\n", " u'cambial': ,\n", " u'camilo': ,\n", " u'caminha': ,\n", " u'caminhada': ,\n", " u'caminho': ,\n", " u'caminhos': ,\n", " u'caminh\\xe3o': ,\n", " u'caminh\\xf5es': ,\n", " u'campal': ,\n", " u'campanha': ,\n", " u'campanhas': ,\n", " u'campeonato': ,\n", " u'campo': ,\n", " u'campos': ,\n", " u'camposeduardo': ,\n", " u'camposfoto': ,\n", " u'canad\\xe1': ,\n", " u'canal': ,\n", " u'candidata': ,\n", " u'candidato': ,\n", " u'candidatos': ,\n", " u'candidatura': ,\n", " u'candidaturas': ,\n", " u'cantor': ,\n", " u'cantora': ,\n", " u'can\\xe7\\xf5es': ,\n", " u'capa': ,\n", " u'capacidade': ,\n", " u'capaz': ,\n", " u'capital': ,\n", " u'capit\\xe3o': ,\n", " u'cara': ,\n", " u'caracter\\xedsticas': ,\n", " u'caravana': ,\n", " u'cardoso': ,\n", " u'carga': ,\n", " u'cargo': ,\n", " u'cargos': ,\n", " u'carlos': ,\n", " u'carlos\\xe0s': ,\n", " u'caro': ,\n", " u'carolina': ,\n", " u'carreata': ,\n", " u'carrega': ,\n", " u'carregam': ,\n", " u'carreira': ,\n", " u'carro': ,\n", " u'carros': ,\n", " u'carta': ,\n", " u'cartaz': ,\n", " u'cartazes': ,\n", " u'carteira': ,\n", " u'cartel': ,\n", " u'cart\\xe3o': ,\n", " u'cart\\xf5es': ,\n", " u'carvalho': ,\n", " u'car\\xe1ter': ,\n", " u'casa': ,\n", " u'casal': ,\n", " u'casamento': ,\n", " u'casas': ,\n", " u'caso': ,\n", " u'casos': ,\n", " u'castro': ,\n", " u'catarina': ,\n", " u'categoria': ,\n", " u'caucaia': ,\n", " u'causa': ,\n", " u'causados': ,\n", " u'causas': ,\n", " u'causou': ,\n", " u'ca\\xedram': ,\n", " u'ce': ,\n", " u'cearense': ,\n", " u'cearenses': ,\n", " u'cear\\xe1': ,\n", " u'cec\\xedlia': ,\n", " u'cedo': ,\n", " u'celebrada': ,\n", " u'celular': ,\n", " u'celvio\\xe0s': ,\n", " u'cemit\\xe9rio': ,\n", " u'cena': ,\n", " u'cenas': ,\n", " u'cenipa': ,\n", " u'centenas': ,\n", " u'center': ,\n", " u'centerplex': ,\n", " u'cento': ,\n", " u'central': ,\n", " u'centro': ,\n", " u'centros': ,\n", " u'cen\\xe1rio': ,\n", " u'cen\\xe1rios': ,\n", " u'cerca': ,\n", " u'cerim\\xf4nia': ,\n", " u'certa': ,\n", " u'certame': ,\n", " u'certamente': ,\n", " u'certeza': ,\n", " u'certo': ,\n", " u'cessar-fogo': ,\n", " u'cessna': ,\n", " u'chama': ,\n", " u'chamada': ,\n", " u'chamado': ,\n", " u'chamar': ,\n", " u'chamou': ,\n", " u'chance': ,\n", " u'chances': ,\n", " u'chapa': ,\n", " u'chapafoto': ,\n", " u'chefe': ,\n", " u'chega': ,\n", " u'chegada': ,\n", " u'chegam': ,\n", " u'chegando': ,\n", " u'chegar': ,\n", " u'chegaram': ,\n", " u'chegou': ,\n", " u'cheio': ,\n", " u'chico': ,\n", " u'chile': ,\n", " u'china': ,\n", " u'choque': ,\n", " u'chuva': ,\n", " u'chuvas': ,\n", " u'ch\\xe3o': ,\n", " u'cia': ,\n", " u'ciclo': ,\n", " u'cid': ,\n", " u'cidadania': ,\n", " u'cidade': ,\n", " u'cidades': ,\n", " u'cidad\\xe3o': ,\n", " u'cidad\\xe3os': ,\n", " u'cientista': ,\n", " u'cientistas': ,\n", " u'cient\\xedfica': ,\n", " u'cima': ,\n", " u'cinco': ,\n", " u'cine': ,\n", " u'cinegrafista': ,\n", " u'cinema': ,\n", " u'citados': ,\n", " u'citation': ,\n", " u'citou': ,\n", " u'civil': ,\n", " u'civis': ,\n", " u'ci\\xeancia': ,\n", " u'ci\\xeancias': ,\n", " u'clara': ,\n", " u'claramente': ,\n", " u'claro': ,\n", " u'classe': ,\n", " u'cliente': ,\n", " u'clientes': ,\n", " u'clima': ,\n", " u'clique': ,\n", " u'clube': ,\n", " u'cl\\xe1udio': ,\n", " u'cl\\xe9lio': ,\n", " u'cni': ,\n", " u'cobertura': ,\n", " u'cobran\\xe7a': ,\n", " u'coca\\xedna': ,\n", " u'coelho': ,\n", " u'coelhofoto': ,\n", " u'coisa': ,\n", " u'coisas': ,\n", " u'colega': ,\n", " u'colegas': ,\n", " u'coletiva': ,\n", " u'coletivo': ,\n", " u'cole\\xe7\\xe3o': ,\n", " u'coligados': ,\n", " u'coliga\\xe7\\xe3o': ,\n", " u'colis\\xe3o': ,\n", " u'collor': ,\n", " u'colo': ,\n", " u'coloca': ,\n", " u'colocada': ,\n", " u'colocado': ,\n", " u'colocados': ,\n", " u'colocar': ,\n", " u'colocou': ,\n", " u'coluna': ,\n", " u'colunista': ,\n", " u'com': ,\n", " u'comandante': ,\n", " u'comando': ,\n", " u'comandou': ,\n", " u'combate': ,\n", " u'combater': ,\n", " u'comboio': ,\n", " u'comemora': ,\n", " u'comemorou': ,\n", " u'comentar': ,\n", " u'comentou': ,\n", " u'coment\\xe1rio': ,\n", " u'coment\\xe1rios': ,\n", " u'comerciais': ,\n", " u'comercial': ,\n", " u'come\\xe7a': ,\n", " u'come\\xe7am': ,\n", " u'come\\xe7ando': ,\n", " u'come\\xe7ar': ,\n", " u'come\\xe7aram': ,\n", " u'come\\xe7o': ,\n", " u'come\\xe7ou': ,\n", " u'comiss\\xe3o': ,\n", " u'comitiva': ,\n", " u'comit\\xea': ,\n", " u'como': ,\n", " u'como\\xe7\\xe3o': ,\n", " u'companheira': ,\n", " u'companheiro': ,\n", " u'companhia': ,\n", " u'companhias': ,\n", " u'compara\\xe7\\xe3o': ,\n", " u'competi\\xe7\\xe3o': ,\n", " u'compet\\xeancia': ,\n", " u'completa': ,\n", " u'completamente': ,\n", " u'completo': ,\n", " u'complexo': ,\n", " u'comportamento': ,\n", " u'composi\\xe7\\xe3o': ,\n", " u'composto': ,\n", " u'compra': ,\n", " u'comprar': ,\n", " u'compras': ,\n", " u'compromisso': ,\n", " u'compromissos': ,\n", " u'comum': ,\n", " u'comunicado': ,\n", " u'comunica\\xe7\\xe3o': ,\n", " u'comunidade': ,\n", " u'com\\xe9dia': ,\n", " u'com\\xe9rcio': ,\n", " u'concedeu': ,\n", " u'conceito': ,\n", " u'concentra\\xe7\\xe3o': ,\n", " u'concess\\xe3o': ,\n", " u'concluiu': ,\n", " u'conclus\\xe3o': ,\n", " u'concorre': ,\n", " u'concorrente': ,\n", " u'concorrentes': ,\n", " u'concorrer': ,\n", " u'concorr\\xeancia': ,\n", " u'concurso': ,\n", " u'condenado': ,\n", " u'condi\\xe7\\xe3o': ,\n", " u'condi\\xe7\\xf5es': ,\n", " u'condutor': ,\n", " u'condu\\xe7\\xe3o': ,\n", " u'confedera\\xe7\\xe3o': ,\n", " u'conferir': ,\n", " u'confian\\xe7a': ,\n", " u'confira': ,\n", " u'confirmada': ,\n", " u'confirmar': ,\n", " u'confirmaram': ,\n", " u'confirma\\xe7\\xe3o': ,\n", " u'confirmou': ,\n", " u'conflito': ,\n", " u'conflitos': ,\n", " u'conforme': ,\n", " u'conforta': ,\n", " u'confronto': ,\n", " u'confrontos': ,\n", " u'congresso': ,\n", " u'conhece': ,\n", " u'conhecer': ,\n", " u'conhecida': ,\n", " u'conhecido': ,\n", " u'conhecidos': ,\n", " u'conhecimento': ,\n", " u'conhecimentos': ,\n", " u'conjunto': ,\n", " u'conquistar': ,\n", " u'consci\\xeancia': ,\n", " u'consecutivo': ,\n", " u'consegue': ,\n", " u'conseguido': ,\n", " u'conseguir': ,\n", " u'conseguiram': ,\n", " u'conseguiu': ,\n", " u'conselho': ,\n", " u'conselhos': ,\n", " u'consenso': ,\n", " u'consequ\\xeancia': ,\n", " u'consequ\\xeancias': ,\n", " u'conservadores': ,\n", " u'considera': ,\n", " u'considerada': ,\n", " u'considerado': ,\n", " u'consideram': ,\n", " u'considerando': ,\n", " u'considerar': ,\n", " u'consigo': ,\n", " u'constitui\\xe7\\xe3o': ,\n", " u'construir': ,\n", " u'constru\\xe7\\xe3o': ,\n", " u'constru\\xeddo': ,\n", " u'consulta': ,\n", " u'consultoria': ,\n", " u'consumidor': ,\n", " u'consumidores': ,\n", " u'consumo': ,\n", " u'conta': ,\n", " u'contar': ,\n", " u'contar\\xe1': ,\n", " u'contas': ,\n", " u'contato': ,\n", " u'conter': ,\n", " u'contexto': ,\n", " u'conte\\xfado': ,\n", " u'continente': ,\n", " u'continua': ,\n", " u'continuam': ,\n", " u'continuar': ,\n", " u'continuar\\xe1': ,\n", " u'continue': ,\n", " u'continuidade': ,\n", " u'continuou': ,\n", " u'contou': ,\n", " u'contra': ,\n", " u'contradi\\xe7\\xf5es': ,\n", " u'contrapontopig': ,\n", " u'contrata\\xe7\\xe3o': ,\n", " u'contrato': ,\n", " u'contratos': ,\n", " u'contribui\\xe7\\xe3o': ,\n", " u'contributing': ,\n", " u'controlada': ,\n", " u'controlar': ,\n", " u'controle': ,\n", " u'contr\\xe1rio': ,\n", " u'contudo': ,\n", " u'conven\\xe7\\xe3o': ,\n", " u'conversa': ,\n", " u'conversar': ,\n", " u'conversas': ,\n", " u'conversou': ,\n", " u'convic\\xe7\\xe3o': ,\n", " u'convite': ,\n", " u'conviv\\xeancia': ,\n", " u'coordenador': ,\n", " u'coordenadora': ,\n", " u'coordenadores': ,\n", " u'coordena\\xe7\\xe3o': ,\n", " u'copa': ,\n", " u'cor': ,\n", " u'coragem': ,\n", " u'cora\\xe7\\xe3o': ,\n", " u'corinthians': ,\n", " u'coronel': ,\n", " u'corpo': ,\n", " u'corpos': ,\n", " u'corre': ,\n", " u'correio': ,\n", " u'correios': ,\n", " u'correligion\\xe1rios': ,\n", " u'corrente': ,\n", " u'corrida': ,\n", " u'corrup\\xe7\\xe3o': ,\n", " u'corte': ,\n", " u'cortejo': ,\n", " u'costa': ,\n", " u'costuma': ,\n", " u'cotado': ,\n", " u'cota\\xe7\\xf5es': ,\n", " u'couvert': ,\n", " u'cozinha': ,\n", " u'crato': ,\n", " u'credibilidade': ,\n", " u'cresce': ,\n", " u'crescendo': ,\n", " u'crescer': ,\n", " u'cresceu': ,\n", " u'crescimento': ,\n", " u'criada': ,\n", " u'criado': ,\n", " u'crian\\xe7a': ,\n", " u'crian\\xe7as': ,\n", " u'criar': ,\n", " u'cria\\xe7\\xe3o': ,\n", " u'crime': ,\n", " u'crimes': ,\n", " u'criou': ,\n", " u'crise': ,\n", " u'cristina': ,\n", " u'criticar': ,\n", " u'criticou': ,\n", " u'cruz': ,\n", " u'cruz/abr': ,\n", " u'cruz/abrlula': ,\n", " u'cruz/abrmarina': ,\n", " u'cr\\xe9dito': ,\n", " u'cr\\xedtica': ,\n", " u'cr\\xedticas': ,\n", " u'cr\\xf4nica': ,\n", " u'cuidar': ,\n", " u'cuja': ,\n", " u'cujo': ,\n", " u'culpa': ,\n", " u'cultura': ,\n", " u'culturais': ,\n", " u'cultural': ,\n", " u'cumpre': ,\n", " u'cumprimenta': ,\n", " u'cumprimento': ,\n", " u'cumprir': ,\n", " u'cumpriu': ,\n", " u'cunha': ,\n", " u'curitiba': ,\n", " u'curso': ,\n", " u'cursos': ,\n", " u'curto': ,\n", " u'custa': ,\n", " u'custo': ,\n", " u'custos': ,\n", " u'c\\xe1': ,\n", " u'c\\xe1lculo': ,\n", " u'c\\xe2mara': ,\n", " u'c\\xe2mbio': ,\n", " u'c\\xe2meras': ,\n", " u'c\\xe2ncer': ,\n", " u'c\\xe9u': ,\n", " u'c\\xedcero': ,\n", " u'c\\xf3digo': ,\n", " u'c\\xfapula': ,\n", " u'd': ,\n", " u'da': ,\n", " u'dada': ,\n", " u'dado': ,\n", " u'dados': ,\n", " u'dando': ,\n", " u'daniel': ,\n", " u'dantas': ,\n", " u'dan\\xe7a': ,\n", " u'daquele': ,\n", " u'daqueles': ,\n", " u'daqui': ,\n", " u'dar': ,\n", " u'dar\\xe1': ,\n", " u'das': ,\n", " u'data': ,\n", " u'datafolha': ,\n", " u'davi': ,\n", " u'david': ,\n", " u'da\\xed': ,\n", " u'de': ,\n", " u'debate': ,\n", " u'debater': ,\n", " u'debates': ,\n", " u'decidir': ,\n", " u'decidiu': ,\n", " u'decis\\xe3o': ,\n", " u'decis\\xf5es': ,\n", " u'declarado': ,\n", " u'declara\\xe7\\xe3o': ,\n", " u'declara\\xe7\\xf5es': ,\n", " u'declarou': ,\n", " u'decolou': ,\n", " u'defende': ,\n", " u'defender': ,\n", " u'defendeu': ,\n", " u'defesa': ,\n", " u'defici\\xeancia': ,\n", " u'define': ,\n", " u'definido': ,\n", " u'definir': ,\n", " u'definiu': ,\n", " u'defini\\xe7\\xe3o': ,\n", " u'deixa': ,\n", " u'deixam': ,\n", " u'deixando': ,\n", " u'deixar': ,\n", " u'deixaram': ,\n", " u'deixe': ,\n", " u'deixou': ,\n", " ...}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.vocab" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "##Criando Clusters de palavras usando o DPGMM" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "DPGMM(alpha=1.0, covariance_type='diag', init_params='wmc', min_covar=None,\n", " n_components=10, n_iter=5, params='wmc',\n", " random_state=, thresh=0.01,\n", " verbose=False)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dpgmm = mixture.DPGMM(n_components=10,n_iter=5, covariance_type='diag')\n", "dpgmm.fit(model.syn0)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dpgmm.converged_" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(dpgmm.predict(model.syn0));" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(10, 5000)\n" ] }, { "data": { "image/png": "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\nEdhOqwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print dpgmm.means_.shape\n", "plot(dpgmm.means_.T);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Agora com o GMM" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "GMM(covariance_type='diag', init_params='wmc', min_covar=0.001,\n", " n_components=3, n_init=1, n_iter=100, params='wmc', random_state=None,\n", " thresh=0.01)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gmm = mixture.GMM(n_components=3, covariance_type='diag')\n", "gmm.fit(model.syn0)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(3, 5000)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print gmm.means_.shape\n", "plot(gmm.means_.T);" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(gmm.predict(model.syn0));" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gmm.converged_" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "mixture.GMM?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Usando o SKlearn para extração de Features" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import print_function\n", "\n", "from pprint import pprint\n", "from time import time\n", "from sklearn.decomposition import TruncatedSVD\n", "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.feature_extraction.text import HashingVectorizer\n", "from sklearn.feature_extraction.text import TfidfTransformer\n", "from sklearn.pipeline import make_pipeline\n", "from sklearn.preprocessing import Normalizer\n", "from sklearn import metrics\n", "\n", "from sklearn.cluster import KMeans, MiniBatchKMeans\n" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "done in 29.694485s\n", "n_samples: 6615, n_features: 10000\n", "\n" ] } ], "source": [ "t0 = time()\n", "hasher = HashingVectorizer(n_features=10000,\n", " stop_words=sw, non_negative=True,\n", " norm=None, binary=False)\n", "vectorizer = make_pipeline(hasher, TfidfTransformer())\n", "\n", "X = vectorizer.fit_transform(docs)\n", "print(\"done in %fs\" % (time() - t0))\n", "print(\"n_samples: %d, n_features: %d\" % X.shape)\n", "print()" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "collapsed": false }, "outputs": [], "source": [ "n_clusters = 3\n", "dpgmm = mixture.DPGMM(covariance_type='diag')\n", "km = KMeans(n_clusters=n_clusters, init='k-means++', max_iter=100, n_init=1,\n", " verbose=True, n_jobs=8)\n", "#dpgmm.fit(X)" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Clustering sparse data with KMeans(copy_x=True, init='k-means++', max_iter=100, n_clusters=3, n_init=1,\n", " n_jobs=8, precompute_distances=True, random_state=None, tol=0.0001,\n", " verbose=True)\n", "done in 0.395s\n", "\n", "Top terms per cluster:\n", "Initialization complete\n", "Iteration 0, inertia 5680.000\n", "Iteration 1, inertia 5610.934\n", "Converged at iteration 1\n" ] } ], "source": [ "labels = range(X.shape[0]-1)\n", "print(\"Clustering sparse data with %s\" % km)\n", "t0 = time()\n", "km.fit(X)\n", "print(\"done in %0.3fs\" % (time() - t0))\n", "print()\n", "print(\"Top terms per cluster:\")\n", "order_centroids = km.cluster_centers_.argsort()[:, ::-1]\n" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "k_means_labels = km.labels_\n", "k_means_cluster_centers = km.cluster_centers_\n", "k_means_labels_unique = np.unique(k_means_labels)\n", "# KMeans\n", "colors = ['#4EACC5', '#FF9C34', '#4E9A06']\n", "for k, col in zip(range(n_clusters), colors):\n", " my_members = k_means_labels == k\n", " cluster_center = k_means_cluster_centers[k]\n", " #plot(X[my_members, 0], X[my_members, 1], 'w', markerfacecolor=col, marker='.')\n", " plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col, markeredgecolor='k', markersize=6)\n", "title('KMeans')\n", "#set_xticks(())\n", "#set_yticks(())\n", "pylab.text(-3.5, 1.8, 'inertia: %f' % (km.inertia_));" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": false }, "outputs": [], "source": [ "mixture.DPGMM?" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(6615, 10000)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.shape" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, ..., 1, 1, 1], dtype=int32)" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }