Come classificare le lingue naturali in modo semplice [chiuso]

1

Come andresti sull'analisi di una frase del genere "Ho comprato due chili di bistecca dal supermercato Acme" in una struttura dati simile alla seguente rappresentazione JSON:

{
  item: {name: "steak", tags: "meat,beef" },
  quantity: { value: 2, unit: "kg"},
  source: "ACME Supermarket"
}

Sto cercando una panoramica concettuale di alto livello su dove iniziare, ad es. alcuni documenti o materiale introduttivo che non richiedono conoscenze a livello di dottorato. Per il contesto, questo fa parte dell'indagine preliminare per un tracker di spesa personale che sto progettando di costruire.

Per approfondire ulteriormente, sono interessato al riconoscimento di entità con nome di base e strategie di categorizzazione. Non ho un'educazione CS, quindi puoi tenerlo a mente quando rispondi :) Grazie in anticipo. Non interessato ai servizi web di terze parti, poiché si tratta di un esercizio di apprendimento e ha lo scopo di funzionare offline.

    
posta Okal Otieno 12.12.2013 - 21:10
fonte

1 risposta

1

La soluzione migliore è definire la propria sintassi che appare per essere un linguaggio naturale (o quasi naturale), anche se in realtà è molto più rigido.

Ad esempio, un'istruzione select SQL: SELECT <something> AS <foo> FROM <table> WHERE <something else> IS <a value> (nota che ho sostituito = con IS per creare il punto, ma che la maiuscola è non importante).

Nel tuo caso, sarebbe BOUGHT <quantity> OF <thing> FROM <location> . Quindi devi solo analizzare <quantity> , <thing> e <location> per abbinarli agli elementi noti.

switch (quantityString)
{
   case "a": 
   case "1": 
   case "a single": 
   case "one":
     return 1;
   case "a pair":
   case "2":
   case "two":
     return 2;
   ....
 }

Potresti anche inserire la prima variabile di parole, ma solo da un insieme selezionato di verbi conosciuti (il modo in cui SQL ha SELECT , DELETE , INSERT , ecc.). È possibile gestire i relativi derivati ("acquistati" o "acquistati") in modo simile.

Questo sarebbe un esempio di definizione di lingua specifica per il dominio come citato @ Robert-Harvey.

    
risposta data 12.12.2013 - 22:09
fonte

Leggi altre domande sui tag