es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo devolver el tipo de datos de objeto desde Chaquopy de Python a Android Studio?

Hola, estoy usando python Chaquopy en mi proyecto de Android Studio con el fin de construir un sistema de recomendación simple basado en contenidos. Tengo una función que debería devolver 5 listas de películas que se pueden recomendar al usuario. Pero el problema es que cuando devuelvo el resultado de python a Android Studio, solo se muestra una película.

Aquí está el código de python que básicamente tomo como referencia: https://www.youtube.com/watch?v=PlQZepYEppQ&list=LL&index=7

def get_recomendations(title, cosine_sim=cosine_sim):

idx = indices[title]

sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
sim_scores = sim_scores[1:5]
movie_indices = [i[0] for i in sim_scores]
recommendation = df2['title_x'].iloc[movie_indices]
return recommendation

Aquí está el código en Java en Android Studio:

    if(!Python.isStarted()){
    Python.start(new AndroidPlatform(this));
}
Python py= Python.getInstance();
final Python pyobj = Python.getInstance();

bttn1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      PyObject pyo = pyobj.getModule("main");
      PyObject obj = pyo.callAttr("get_recomendations",IN1.getText().toString());
        textView.setText(obj.toString());

    }
});

Aquí está la imagen de la aplicación en la que inserto el nombre de la película y la aplicación debería mostrar 5 recomendaciones de películas: https://i.stack.imgur.com/krXLt.png

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece haber un problema con la función de Python get_recomendations() que devuelve solo una película en lugar de 5 cuando se llama desde el proyecto de Android Studio con Chaquopy. La función de Python parece tomar el título de una película y devolver 5 películas recomendadas basadas en la similitud cosseno.

    Una posible solución es verificar el valor de la variable recommendation en el propio script de Python para asegurarse de que tenga 5 películas recomendadas. Si ese es el caso, entonces el problema puede estar en el código Java que llama a la función de Python.

    Otra solución posible es modificar la función de Python para devolver una lista de 5 películas en lugar de una serie de pandas, lo que puede estar causando el problema al pasarse al código Java. Esto se puede hacer cambiando la última línea de la función a:

    return recommendation.tolist()
    

    Esto convertirá la serie de pandas recommendation en una lista de cadenas, que se puede pasar al código Java con mayor facilidad.

    Además, puede ser útil imprimir el valor de recommendation en la función de Python para depurar cualquier problema potencial con las recomendaciones generadas.

    En general, parece que el problema probablemente esté en el código de Python o en la forma en que se llama en el código Java, en lugar de en Chaquopy en sí.

Comments are closed.