Pues eso… aquí te dejo el código de una clase (Frases) para analizar un texto usando la API de Google Cloud Natural Language y un par de proyectos para usar esa clase. Los proyectos son para una aplicación de consola y para dispositivos usando .NET MAUI. Todo el código está para C#.
No te voy a explicar mucho por aquí, salvo lo indicado en el siguiente párrafo, pero te dejo todo el código fuente (para C#) en este repositorio de GitHub. También incluyo algunas explicaciones y problemas que he tenido para usar la clase en el proyecto para .NET MAUI (no muchos, pero…)
Algunos trucos en el código de .NET MAUI
Un par de cosas que siempre suelo poner en los proyectos para .NET MAUI, porque no tienen la misma funcionalidad que con Xamarin.Forms, son:
Definir el tamaño de la ventana para Windows, ya que en .NET MAUI la ventana se muestra enorme y no recuerda el tamaño último. Esto lo hago en el constructor de la clase App.
Hacer que el control Frame se vea al completo (no se corte por la parte inferior). Esto lo consigo si en el StackLayout usado después del Frame se le deja un margin mínimo de 2.
Además, he añadido el código para simular un Expander ver figura 1). Este expander lo utilizo para mostrar u ocultar la lista de textos de prueba.
Otra cosa interesante es usar un objeto Task (usar otro proceso) cuando se pulsa en el botón de analizar, con idea que se muestre el texto mientras está analizando el texto y no se quede «congelada» la ventana.
Este es el código del evento Clicked del botón de analizar:
privateasyncvoid BtnAnalizar_Clicked(object sender, EventArgs e)
{
txtResultado.Text = "";
string tmp = txtTexto.Text;
if (string.IsNullOrEmpty(tmp))
{
MostrarAviso("Por favor indica el texto a analizar de al menos 3 caracteres", esError: true);
txtTexto.Focus();
return;
}
text = tmp;
HabilitarBotones(false);
awaitTask.Run(() =>
{
MostrarAviso("Analizando el texto...", esError: false);
frase = Frases.Add(text);
BtnMostrar2.Dispatcher.Dispatch(() =>
{
// Inicialmente mostrar todo sin tokens
BtnMostrar2_Clicked(null, null);
});
QuitarAviso();
});
HabilitarBotones(true);
En los métodos llamados desde Task.Run se tienen en cuenta el Dispatcher de los controles que se modifican, con idea de que no den problemas al hacerlo entre hilos diferentes.
Este es el código de los métodos QuitarAviso y MostrarAviso que modifican una etiqueta y un StackLayout.
Aquí tienes un par de capturas de la app para .NET MAUI en funcionamiento, en la figura 1 está funcionando en Windows (usando el expander), en la figura 2 antes de poner el expander y en la figura 3 en un móvil con Android (antes de poner el expander), en iPhone no me funciona (tampoco el resto de los proyectos que tenía, así que, no he podido hacer captura).
Te recomiendo que leas el post anterior para ver cómo crear un cliente de Google Cloud Natural Language y poder usarlo en estos proyectos, en ese post indico que el código es para Visual Basic, pero los pasos a seguir son los mismos para Visual Basic que para C#.
Con esas API podrás analizar textos (también en español) y ver las palabras que la forman (tokens), su estructura sintáctica, etc.
Nota: Para usar este código tendrás que crearte una cuenta en Google Cloud, generar una «key» para usarla y poco más, todos los pasos están explicados en este enlace (el código de ejemplo es para C#, pero te servirá.
Pasos para crear un proyecto usando dotnet (cli):
– Abre una ventana de consola (o terminal) – Posicionarse en la carpeta donde crear el proyecto – Crear el proyecto dotnet new console -n <nombre-proyecto> dotnet new console -lang VB -n <nombre-proyecto> – Cambiar al directorio del proyecto cd <nombre-proyecto> – Añadir el paquete de Google Cloud Natural Language API dotnet add package Google.Cloud.Language.V1 – Copiar el fichero key.json con las claves y permisos – Ver estos pasos para crearla: https://codelabs.developers.google.com/codelabs/cloud-natural-language-csharp#3 – En IAM, añadir la cuenta creada (incluida en el fichero key.json) en +OTORGAR ACCESO Solo estará la principal y/o las otras añadidas – Si se ha usado otra cuenta, estará en IAM>Cuentas de Servicio – Modificar Program.cs (o Program.vb) para usar el código que accede a la API de Natural Language – Ejecutar el código dotnet run
Notas: – Debes crear una variable de entorno en Windows, (lo puedes hacer desde la misma consola) indicando el path donde estará el fichero key.json. – Lo que yo hago es copiar ese fichero en la carpeta del ejecutable y la variable de entorno la defino de esta forma: set GOOGLE_APPLICATION_CREDENTIALS=key.json – Puedes modificar el fichero del proyecto y añadir lo siguiente: