Conversione linguaggio naturale in function

di il
6 risposte

Conversione linguaggio naturale in function

Salve a tutti

Nelle applicazioni c# è diventato ormai una sorta di "standard" l'utilizzo delle function per filtrare i dati.
LINQ mette a disposizione ormai di tutte le ICollection i metodi Where(Func<bool>), Single(Func<bool>), ...

Sfruttando l'intelligenza artificiale (azure, aws, gcp, ...), è possibile convertire del testo (o un vocale) in una espressione lambda valida?

Supponiamo ad esempio di avere questo oggetto:


public class Cliente
{
   public int Id { get; set; }
   
   public string Nome { get; set; }
   
   public string CAP { get; set; }
   
   public string Provincia { get; set; }
   
   public decimal FidoConcesso { get; set; }
   
}

E che l'utente, nella barra di ricerca scriva "clienti di Milano con fido di almeno 1.000€".

Mi piacerebbe avere una libreria (o un servizio cloud) che, dandogli in pasto l'oggetto (o dei metadati) e la frase inserita dall'utente, restituisca qualcosa del tipo:

x => x.Provincia == "Milano" && x.FidoConcesso >= 1.000;
Sapete se ci sia qualcosa di già disponibile a cifre abbordabili?

6 Risposte

  • Re: Conversione linguaggio naturale in function

    @PiGi78, la domanda sorge spontanea:
    che cosa centra

    un'espressione linq, in forma di SORGENTE C#, usata in fase di implementazione dell'applicazione DAL PROGRAMMATORE,

    con

    l'applicazione COMPILATA ED IN ESECUZIONE usata dall'utente?
  • Re: Conversione linguaggio naturale in function

    Ciao

    come detto nel post, serve perchè l'utente nella barra di ricerca (testo libero) può cercare scrivendo in linguaggio naturale.

    Ovvio che se metto un campo con scritto "fido minimo" e l'utente mette "1000" allora non serve AI: scrivo la query nel codice e sono a posto.

    Vorrei però il contrario: non so per cosa cercherà il cliente a runtime. Lui scrive il criterio di ricerca (vedi esempio sopra) e il sistema propone i risultati chiesti

    Convertire il testo in query non è facile: interpretare il linguaggio, metterlo a confronto col model, creare l'albero di espressione, ...

    Tieni poi presente che ho semplificato molto nell'esempio, però nel caso reale ho diversi model e alcuni con anche 100 campi

    Ci fosse qualcosa di pronto non sarebbe male
  • Re: Conversione linguaggio naturale in function

    Convertire il testo in query non è facile: interpretare il linguaggio, metterlo a confronto col model, creare l'albero di espressione, ...
    Implementare un parserino per una grammatica semplice come quella delle espressioni (in questo caso di una clausola WHERE di una SELECT) e' un classico esercizio per casa da primo anno di universita'!
    Si fa una oretta. Qualcosina in piu' se uno non lo ha gia' fatto prima!
    Un po' piu' trucchettoso, ma ancora banale, la generazione di una query sintatticamente corretta partento da 100 possibili condizioni di cui solo una minima parte valorizzate.

    Non serve un'Intelligenza Artificiale
  • Re: Conversione linguaggio naturale in function

    X @PiGi78:
    Prova a dare un'occhiata a questo progetto in Python:
    https://github.com/FerreroJeremy/ln2sq

    e a:
    https://github.com/xiaojunxu/SQLNe
    https://github.com/salesforce/WikiSQ

    e a:
    https://opennmt.ne
  • Re: Conversione linguaggio naturale in function

    Grazie

    Sicuramente è un buon punto di partenza, però speravo di trovare query LINQ (expression tree) perchè così tenevo distinto frontend/biz dalla base dati.

    Ho visto però che alcuni tools ricevono una definizione di modello e tornano un JSON con il filtro.

    Proverò ad usarli passando la definizione del model, quindi convertire il JSON in expression tree

    Grazie ancora
  • Re: Conversione linguaggio naturale in function

    Di nulla, un saluto!
Devi accedere o registrarti per scrivere nel forum
6 risposte