Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Usando el NLP API para analizar sentimiento

12/28
Recursos

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Gente, en el foreach de los comentarios tendria que ser asi.

this.comentarios.forEach(function(comentario){
                                         scorePromedio += comentario.score;
                                      });

Algunos cambios para que funcione con las nuevas versiones:

  1. Hay que habilitar el servicio de Cloud Natural Language API.
  2. el score se obtiene así: const score = response.data.documentSentiment.score

Les comparto el código fuente ImageDetail.vue:

<template>
  <v-container>
    <v-layout xs12 pl-2>
      <v-flex xs12 sm6 md6 lg6>
        <v-card>
          <v-img
            :src="image.url"
            height="200px"
          ></v-img>
          <v-card-title>
            <div>
              <span class="grey--text">{{image.name}}</span>
              <v-chip> {{image.scorePromedio}}</v-chip>
              <br>
              <span>
                {{image.labels | separateLabels}} 
              </span>
            </div>
          </v-card-title>
        </v-card>
      </v-flex>
    </v-layout>
    <v-layout>
      <v-flex xs12>
        <v-text-field label="Que te parece esta foto"
          v-model="comentario">
        </v-text-field>
        <v-layout>
          <v-layout>
              <v-flex xs12 pt-5>
              <v-btn primary @click="enviarComentario">
                Enviar
              </v-btn>
            </v-flex>
          </v-layout>
          <v-flex xs12 pt-5>
            <h1>Otros comentarios</h1>
          </v-flex>
        </v-layout>
        <v-layout v-for="comentario in comentarios" v-bind:key="comentario.id">
          <v-flex xs12>
            <v-text-field
              :value="comentario.texto"
              :label="comentario.score +''"
              readonly
            ></v-text-field>

          </v-flex>
        </v-layout>
      </v-flex>
    </v-layout>
  </v-container>
</template>

<script>  
  import { firestore } from '@/main'
  import axios from 'axios'
  //import { storage } from '@/main'

  export default {
    name: 'ImageDetail',
    data() {
      return{
        apiKey: 'apiKeyDeSuCuentaDeGoogleCloud',
        id: this.$route.params.id,
        image: '',
        comentario: '',
        comentarios: []
      }      
    },
    methods:{
      enviarComentario: function(){
        const data={
          "document":{
            "type": "PLAIN_TEXT",
            "language":"ES",
            "content": this.comentario
          },
          "encodingType": "UTF8"
        }

        axios.post(`https://language.googleapis.com/v1/documents:analyzeSentiment?key=${this.apiKey}`, data)
        .then(response => {
          const score = response.data.documentSentiment.score
          let comentario = {
            imageId: this.id,
            texto: this.comentario,
            createdAt: (+new Date()),
            score: score
          }
          firestore.collection('comentarios').add(comentario).then(() =>{
            const length = this.comentarios.length
            let scorePromedio = 0
            this.comentarios.forEach(function(comentario){
              scorePromedio = scorePromedio + comentario.score
              
            })
            scorePromedio = scorePromedio / length
            firestore.collection('images').doc(this.id).set({
              scorePromedio : scorePromedio
            },{merge : true})
            this.comentario = ''
          })
        })        
        
      }
    },
    firestore(){
      return{
        image: firestore.collection('images').doc(this.id),
        comentarios: firestore.collection('comentarios').where("imageId", "==", this.id)
      }
    },
    filters: {
      separateLabels: function(value){
        return `${value[0]}, ${value[1]}, ${value[2]} , ${value[3]}, ${value[4]}`
      }
    }
  }
</script>```

API:

axios.post(`https://language.googleapis.com/v1/documents:analyzeSentiment?key=${this.apiKey}`)

Mis sentimientos acerca de este curso: la programación no está mal, lo que esta mal es tirar código sin entender el trasfondo y eso es lo que he visto en los vídeos hasta ahora, mucho código sin explicación. Adicional que las versiones ya no son las mismas, entonces las invocaciones tampoco (entre muchas otras cosas) y eso confunde y frustra un montón. Podrían subir los archivos de código y dedicar este tiempo que se gasta en lo vídeos tirando código explicándolo y explicando las funcionalidades.

Gente si quieren tener las imagenes ordenadas

firestore.collection('images').orderBy("createAt", "desc")

Como sería si quisiera extraer el texto y la imagen por separado ?

Recopilando información.

Viendo letras y letras y símbolos.