示例#1
0
def main():

    # Variables Generales...
    Errores = 0
    miLog = log.Log()
    GestorMongoDB = ta_MongoDB.MongoDB
    GestorSQLServer = ta_SQLServer.SQLServer
    GestorTwitter = ta_twitter.Twitter

    miLog.Salidaln(
        "Bienvenido al Manager de  carga PARCIAL de MBIT, Iniciando servicios..."
    )

    GestorMongoDB = ta_MongoDB.MongoDB()

    GestorTwitter = ta_twitter.Twitter(GestorMongoDB.m_db)
    GestorTwitter.BuscarNuevos()

    try:
        # Creación del -Gestor de SQL Server
        GestorSQLServer = ta_SQLServer.SQLServer()

    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR generando Gestor de SQL Server...")
        miLog.Salidaln(e.args)
        return -1

    try:
        #Una vez aseguradas las conexiones a BBDD, cargamos los Tweets en formato JSON
        GestorMongoDB.CargarJSON()

        # Creación del DataCleaner y Volcados a SQL Server
        DataCleaner = ta_DataCleaner.DataCleaner(GestorMongoDB.m_ListaJSON)

        DataCleaner.AnalisisTweetsParcial()

        GestorSQLServer.ParcialTwiteros(DataCleaner.m_ListaTwiteros)
        GestorSQLServer.ParcialTimeline(DataCleaner.m_ListaTimeline)

        # Marcamos los tweets ya cargados para reducir la carga de parciales desde Mongo Azure

        GestorMongoDB.CerrarJSONParcial(DataCleaner.m_ListaTimeline)
        GestorSQLServer.m_conSQL.close()

    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR No se ha podido generar DataCleaner ")
        miLog.Salidaln(e.args)

    if (Errores > 0):
        miLog.Salidaln("ERRORES DETECTADOS")
    else:
        miLog.Salidaln("Proceso finalizado con exito...")
示例#2
0
def main():
     
    # Variables Generales...
    Errores = 0   
    miLog = log.Log()
    GestorMongoDB = ta_MongoDB.MongoDB
    GestorSQLServer = ta_SQLServer.SQLServer
    miLog.Salidaln("Bienvenido al Manager MBIT, Iniciando servicios...")
   
        
    try:
        # Iniciamos el proceso...    
        # Creación del Gestor de MongoDB
        GestorMongoDB = ta_MongoDB.MongoDB()
        
    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR generando Gestor de MongoDB")
        
    try:
        # Creación del -Gestor de SQL Server
        GestorSQLServer = ta_SQLServer.SQLServer()
         
    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR generando Gestor de SQL Server..." + e.with_traceback)
        return -1
        
    try:
        #Una vez aseguradas las conexiones a BBDD, cargamos los Tweets en formato JSON
        GestorMongoDB.CargarJSON()
        
        # Creación del DataCleaner y Volcados a SQL Server
        DataCleaner = ta_DataCleaner.DataCleaner(GestorMongoDB.m_ListaJSON)
        
        DataCleaner.AnalisisTweets()
       
        GestorSQLServer.RegenerarTwiteros(DataCleaner.m_ListaTwiteros)
        GestorSQLServer.RegenerarTimeline(DataCleaner.m_ListaTimeline)
        
        GestorSQLServer.m_conSQL.close()
        
    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR No se ha podido generar DataCleaner ")
        
    
    if (Errores > 0 ):
        miLog.Salidaln("ERRORES DETECTADOS")
    else:
        miLog.Salidaln("Proceso finalizado con exito...")
示例#3
0
def main():
    # Variables Generales...
    Errores = 0
    miLog = log.Log()
    m_DatosTwitter = ta_DataCleaner.DatosTwitter()
    GestorSQLServer = ta_SQLServer.SQLServer

    miLog.Salidaln(
        "Bienvenido al Manager de  Sentinel Business, Iniciando servicios ML2..."
    )
    Lista = []

    try:
        # Creación del -Gestor de SQL Server
        GestorSQLServer = ta_SQLServer.SQLServer()

    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR generando Gestor de SQL Server...")
        miLog.Salidaln(e.args)
        return -1

    try:

        GestorSQLServer.ListaTweetsSentinelBusiness(Lista)
        miLog.Salidaln("Cargendo Datos...")
        m_DatosTwitter.CargarDatos(GestorSQLServer.m_conSQL)

    except Exception as e:
        Errores += 1
        miLog.Salidaln(
            "ERROR No se ha podido generar Sentinel de Business... ")
        miLog.Salidaln(e.args)

    miLog.Salidaln("OK.")

    miLog.Salida("construyendo Features ML2 ...")
    m_DatosTwitter.build_features()
    miLog.Salidaln("OK...")

    miLog.Salida("Limpiando ML2 ...")
    m_DatosTwitter.Limpieza()
    miLog.Salida("OK ...")

    miLog.Salida("Tokenizando ...")
    m_DatosTwitter.Tokenizar()
    m_DatosTwitter.ConstruirPalabras()
    m_DatosTwitter.ContarPalabras()
    m_DatosTwitter.Separar()
    miLog.Salidaln("OK ...")

    #m_DatosTwitter.ConstruirMatrizEntrenamiento()

    miLog.Salida("Recuperando Negaciones ...")
    m_DatosTwitter.RecuperarNegaciones()
    miLog.Salidaln("OK ...")

    miLog.Salida("Construyendo modelo ...")
    ModeloDatos, Etiquetas = m_DatosTwitter.build_data_model()
    miLog.Salidaln("OK ...")

    miLog.Salidaln("Business ...")
    Prediccion_RF = pd.DataFrame
    Prediccion_NB = pd.DataFrame
    Prediccion_SV = pd.DataFrame
    Prediccion_SD = pd.DataFrame
    Prediccion_PE = pd.DataFrame

    try:
        Prediccion_RF = m_DatosTwitter.BusinessRandomForest()
        Prediccion_NB = m_DatosTwitter.BusinessNaiveBayes()
        Prediccion_SV = m_DatosTwitter.BusinessSVM()
        Prediccion_SD = m_DatosTwitter.BusinesDescensoGradiente()
        Prediccion_PE = m_DatosTwitter.BusinesPerceptron()

        Tamano = Prediccion_RF.size
        for i in range(0, Tamano):
            #miLog.Salidaln("--------------------------------")
            #miLog.Salidaln("idTweet : " + m_DatosTwitter.Datos_Procesados.loc[i, "idtweet"])
            #miLog.Salidaln("Texto   : " + m_DatosTwitter.Datos_Procesados.loc[i, "texto_original"])
            #miLog.Salidaln("RF      :" + Prediccion_RF[i])
            #miLog.Salidaln("NB      :" + Prediccion_NB[i])
            Resultado = 'neutro'

            pos = 0
            neg = 0
            neu = 0

            if (Prediccion_RF[i] == 'positivo'): pos += 1  # 44
            if (Prediccion_RF[i] == 'neutro'): neu += 1  # 70
            if (Prediccion_RF[i] == 'negativo'): neg += 1  # 70

            if (Prediccion_PE[i] == 'positivo'): pos += 1  # 10
            if (Prediccion_PE[i] == 'neutro'): neu += 1  # 70
            if (Prediccion_PE[i] == 'negativo'): neg += 1  # 70

            #if (Prediccion_NB[i] == 'positivo'): pos += 1 # 10
            #if (Prediccion_NB[i] == 'neutro'  ): neu += 1 # 67
            #if (Prediccion_NB[i] == 'negativo'): neg += 1 # 37

            if (Prediccion_SD[i] == 'positivo'): pos += 1  # 37
            if (Prediccion_SD[i] == 'neutro'): neu += 1  # 55
            if (Prediccion_SD[i] == 'negativo'): neg += 1  # 66

            if (Prediccion_SV[i] == 'positivo'): pos += 1  # 29
            if (Prediccion_SV[i] == 'neutro'): neu += 1  # 63
            if (Prediccion_SV[i] == 'negativo'): neg += 1  # 65

            Valor = max(pos, neu, neg)
            if (Valor == pos):
                Resultado = 'positivo'
            else:
                if (Valor == neg):
                    Resultado = 'negativo'
                else:
                    Resultado = 'neutro'
            #miLog.Salidaln("----->  :" + Resultado)

            GestorSQLServer.UpdateSentibelBusiness(
                m_DatosTwitter.Datos_Procesados.loc[i, "idtweet"], Resultado)

        miLog.Salidaln("OK ...")
    except:
        miLog.Salidaln("No Hay datos ...")

    if (Errores > 0):
        miLog.Salidaln("ERRORES DETECTADOS")
    else:
        miLog.Salidaln("Proceso finalizado con exito...")
示例#4
0
def main():

    # Variables Generales...
    Errores = 0
    miLog = log.Log()
    GestorSQLServer = ta_SQLServer.SQLServer

    miLog.Salidaln(
        "Bienvenido al Manager de  Sentinel Microisoft, Iniciando servicios..."
    )
    Lista = []

    try:
        # Creación del -Gestor de SQL Server
        GestorSQLServer = ta_SQLServer.SQLServer()

    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR generando Gestor de SQL Server...")
        miLog.Salidaln(e.args)
        return -1

    try:

        GestorSQLServer.ListaTweetsMicrosoft(Lista)

    except Exception as e:
        Errores += 1
        miLog.Salidaln(
            "ERROR No se ha podido generar Sentinel de Microsoft... ")
        miLog.Salidaln(e.args)

    miLog.Salidaln("OK.")

    # Azure portal URL.
    base_url = 'https://westus.api.cognitive.microsoft.com/'
    # Your account key goes here.

    account_key = '02e7d87d5b704e2cbad6a6c796422fee'

    headers = {
        'Content-Type': 'application/json',
        'Ocp-Apim-Subscription-Key': account_key
    }

    # Instanciamos el Cliente Google

    miLog.Salidaln("Analizando Sentinel... " + str(len(Lista)) +
                   " elementos...")
    for Elemento in Lista:
        try:

            miLog.Salida("C")
            CadenaLimpia = Elemento.m_Texto
            CadenaLimpia = CadenaLimpia.replace("'", '-')
            CadenaLimpia = CadenaLimpia.replace('"', '-')

            miLog.Salida("\bA")
            TextoPorAnalizar = '{"documents":[{"id":"' + Elemento.m_idTweet + '","text":"' + CadenaLimpia + '"},]}'

            # Calculamos el Sentinel de Microsoft.
            miLog.Salida("\bS")
            Sentimiento_url = base_url + 'text/analytics/v2.0/sentiment'
            reqSentinel = Request(Sentimiento_url,
                                  TextoPorAnalizar.encode("utf-8"), headers)
            RespuestaSentinel = urlopen(reqSentinel)
            ResultadoSentinel = RespuestaSentinel.read()
            objSentinel = json.loads(ResultadoSentinel)
            AnalisisSentinel = objSentinel['documents'][0]
            Elemento.SentinelMicrosoft = AnalisisSentinel['score']

            # Detectamos las palabras clave.
            miLog.Salida("\bF")
            Frases_url = base_url + 'text/analytics/v2.0/keyPhrases'
            reqFrases = Request(Frases_url, TextoPorAnalizar.encode("utf-8"),
                                headers)
            RespuestaFrases = urlopen(reqFrases)
            ResultadoFrases = RespuestaFrases.read()
            objFrases = json.loads(ResultadoFrases)
            AnalisisFrases = objFrases['documents'][0]

            Elemento.m_Frases = str(AnalisisFrases['keyPhrases'])

            miLog.Salida("\b.")
        except:
            miLog.Salida("\bE")

    miLog.Salidaln("OK.")

    if (Errores == 0):
        GestorSQLServer.ActualizaSentinelMicrosoft(Lista)

    GestorSQLServer.m_conSQL.close()

    if (Errores > 0):
        miLog.Salidaln("ERRORES DETECTADOS")
    else:
        miLog.Salidaln("Proceso finalizado con exito...")
示例#5
0
def main():

    # Variables Generales...
    Errores = 0
    miLog = log.Log()
    GestorSQLServer = ta_SQLServer.SQLServer

    miLog.Salidaln(
        "Bienvenido al Manager de  Sentinel Google, Iniciando servicios...")
    Lista = []

    try:
        # Creación del -Gestor de SQL Server
        GestorSQLServer = ta_SQLServer.SQLServer()

    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR generando Gestor de SQL Server...")
        miLog.Salidaln(e.args)
        return -1

    try:

        GestorSQLServer.ListaTweetsGoogle(Lista)

    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR No se ha podido generar Sentinel de Google... ")
        miLog.Salidaln(e.args)

    miLog.Salidaln("OK.")

    # Instanciamos el Cliente Google
    miLog.Salida("Instanciando idioma Google... ")

    miLog.Salidaln("OK")
    miLog.Salidaln("Analizando Sentinel... " + str(len(Lista)) +
                   " elementos...")
    for Elemento in Lista:
        try:
            language_client = language.Client()
            #miLog.Salida("C")
            CadenaLimpia = Elemento.m_Texto
            CadenaLimpia = CadenaLimpia.replace("'", '-')
            CadenaLimpia = CadenaLimpia.replace('"', '-')

            #miLog.Salida("\bG")
            documentGoogle = language_client.document_from_text(CadenaLimpia)
            #miLog.Salida("\bS")
            sentimentGoogle = documentGoogle.analyze_sentiment().sentiment

            #Elemento.m_SentinelGoogle = sentimentGoogle.score
            #Elemento.m_AccuracyGoogle = sentimentGoogle.magnitude
            GestorSQLServer.ActualizaSentinelGoogleTweet(
                Elemento.m_idTweet, sentimentGoogle.score,
                sentimentGoogle.magnitude)

        except:
            miLog.Salida("E")
            GestorSQLServer.ActualizaSentinelGoogleTweet(
                Elemento.m_idTweet, 0, 0)

    miLog.Salidaln("OK.")

    #GestorSQLServer.ActualizaSentinelGoogle(Lista)

    GestorSQLServer.m_conSQL.close()

    if (Errores > 0):
        miLog.Salidaln("ERRORES DETECTADOS")
    else:
        miLog.Salidaln("Proceso finalizado con exito...")
示例#6
0
def main():

    # Variables Generales...
    Errores = 0
    miLog = log.Log()
    GestorSQLServer = ta_SQLServer.SQLServer
    miConf = ta_ConfigManager.Configuracion()
    m_esBusiness = 0

    miLog.Salidaln(
        "Bienvenido al Manager de  esBusiness, Iniciando servicios...")
    Lista = []

    try:
        # Creación del -Gestor de SQL Server
        GestorSQLServer = ta_SQLServer.SQLServer()

    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR generando Gestor de SQL Server...")
        miLog.Salidaln(e.args)
        return -1

    try:
        GestorSQLServer.ListaTweetsBusiness(Lista)
    except Exception as e:
        Errores += 1
        miLog.Salidaln("ERROR No se ha podido generar EsBsuness... ")
        miLog.Salidaln(e.args)

    miLog.Salidaln("OK.")

    for Elemento in Lista:
        try:
            #miLog.Salida("B")
            Dato = {
                "Inputs": {
                    "input1": [{
                        'idTweet': "" + Elemento.m_idTweet + "",
                        'idUsuario': "" + Elemento.m_idUsuario + "",
                        'esBusiness': "",
                        'Texto': "" + Elemento.m_Texto + "",
                    }],
                },
                "GlobalParameters": {}
            }

            #miLog.Salida("\bC")
            body = str.encode(json.dumps(Dato))

            #miLog.Salida("\bW")
            url = 'https://europewest.services.azureml.net/subscriptions/561a3040473c45e9bec4ce3b0751236e/services/71a40c7296094c8a8014a6b39187a31e/execute?api-version=2.0&format=swagger'
            api_key = miConf.m_ML1_APIKey
            headers = {
                'Content-Type': 'application/json',
                'Authorization': ('Bearer ' + api_key)
            }

            #miLog.Salida("\bR")
            req = urllib.request.Request(url, body, headers)

            try:

                #miLog.Salida("\bA")
                response = urllib.request.urlopen(req)

                #miLog.Salida("\bB")
                result = response.read()
                Salida = json.loads(result)

                if (Salida["Results"]["output1"][0]["esBusiness"] == 'True'):
                    m_esBusiness = 1
                else:
                    m_esBusiness = 0

                GestorSQLServer.ActualizaEsBusiness(
                    Salida["Results"]["output1"][0]["idTweet"], m_esBusiness)

            except urllib.error.HTTPError as error:
                Errores += 1
                miLog.Salidaln("ERROR Web Service ML1 con status code: " +
                               str(error.code))
                miLog.Salidaln("Datos Request: " + str(Dato))
                miLog.Salidaln(error.info())
                miLog.Salidaln(
                    json.loads(error.read().decode("utf8", 'ignore')))

        except:
            miLog.Salida("E")