Newsgroup: it.comp.ia
Titolo: altro sondaggio per "sinergIA"

Visto l'interesse suscitato per "sinergIA"
propongo un altro sondaggio!
sperando che la cosa non vi disturbi. :-)
[Premessa]
il progetto sinergIA e' un'idea che mi e' venuta in mente per
avvicinare il maggior numero di programmatori
nel modo piu' semplice possibile con il minor sforzo possibile
nello sviluppo comune di un massiccio progetto NLP (sul genere NLU/NLP)
-
NLU= Natural Language Understanding= comprensione del linguaggio naturale
NLP= Natural Language Processing= elaborazione del linguaggio naturale
[Quesito del sondaggio per chi e' interessato al progetto]
SI= preferisco partecipare al progetto usando come linguaggio di sviluppo
      un meta-linguaggio simil-Basic adatto allo scopo (VEDI IN FONDO AL POST),
       con la possibilita' di convertire (Nota Bene: che e' un programma da fare...)
         tutto nel mio linguaggio di sviluppo preferito
       **i membri del progetto possono vedere il codice sorgente dei miei moduli.
NO= preferisco continuare a scrivere nel mio linguaggio di sviluppo
      e fornire un .exe che verra' utilizzato dal progetto MAIN
      **nessuno puo' vedere il codice sorgente dei miei moduli.
N.B. questo sondaggio serve per decidere in via preliminare
come passare alla seconda fase del progetto, cioe':
---> le regole per partecipare la progetto SinergIA
Se volete fate pure i vostri commenti
e come minimo rispondete con un SI o con un NO,
non fate crocette sul questionario... ;-)
grazie a tutti
saluti
Davide
===========================================================
ESEMPIO di codice scritto con linguaggio: ( 
http://www.aristar.com/
 )
DIALECT STANDARD v.1.14  by Aristar ---> è gratuito per uso personale
il codice non e' completamente funzionante, e' solo per farvi vedere
===========================================================
e' un meta-linguaggio simil-Basic che sarebbe ideale per il progetto SinergIA
ha la possibilita di generare .exe (stand-alone)
e permette il caricamento di moduli esterni binari con la funzione import "xxx"
l'ho gia' usato per fare una prova, e' molto bello e facile da programmare.
-------------------------------
# PROGRAM v.0.1
-------------------------------
// ------ variabili globali
import "gui"
inizio = true
dizionario = []
ret = chr$(13) + chr$(10)
// ------ definizione della form
w = gui.window("PROGRAM version 0.1", [160, 120, 160+320, 120+240], \
               {CloseBox:true, MinBox:true, resizable:false, maxbox:false})
b1 = gui.button(w, "FINE", [249, 185, 309, 210])
eb1 = gui.Edit(w, "", [4, 160, 310, 180])
eb2 = gui.Note(w, "", [4, 5, 310, 154], {Vscroll:true, ReadOnly:false, border:false})
// ------ definizione eventi della form
id = w.systemHotKey(13, {})
w.OnHotKey = func(id) program(eb1.text); eb1.text = ""; endfunc
w.OnClose = func() return true; endfunc
b1.onclick = func() w.close() endfunc
eb2.Onrclick = func() logout("","") endfunc
eb2.OnFocus = func() logout("","") endfunc
eb1.OnFocus = func(); if inizio then inizio=program("Ciao!"); endif; endfunc
// ------ funzioni varie input/output
logout = func(a,risp)
   if risp <> "" then eb2.text = eb2.text + a + "> " + risp + ret; endif
   eb2.Selection = [len(eb2.text), len(eb2.text)]
   eb1.focused = true
endfunc
// ------ funzioni per l'analisi del testo
scompone    = func(x)   return split(x," ",true)  endfunc
num_entries = func(x)   return len(x)            endfunc
add_record  = func(y,x) return add_entry(y,x)   endfunc
add_entry   = func(y,x) return x ~ [y]         endfunc
entry       = func(y,x) return x[y]           endfunc
ins_entry   = func(z,y,x) return x[1 -> (z-1)] ~ [y] ~ x[z -> -1] endfunc
del_entry   = func(z,x)   return x[1 -> (z-1)] ~ x[(z+1) -> -1]  endfunc
get_entry   = func(da,ad,x) return x[da -> ad]                  endfunc
set_entry   = func(z,y,x); x[z] = y; return x;                 endfunc
string_list = func(x)   return join(x," ")                    endfunc
last_entry = func(x,y,k)
  local carpos = 0, z = len(x)
  while z > 0
    carpos = pos(y, RIGHT$(entry(z, x), 1))
    IF carpos > 0 THEN carpos = z; break; endif
    z = z - 1
  endwhile
  If carpos > 0 then return entry(carpos, x) else return k endif
endfunc
remove_item = func(x,chars)
  local z = len(x)
  while z > 0
     if len(x[z]) = 1 then
        if pos(chars,x[z]) > 0 then x = del_entry(z,x); endif
     endif
     z = z - 1
  endwhile
  return x
endfunc
exp_chars = func(x,chars,prima,dopo,check)
  local r3, repx
  r3 = regex("["+chars+"]")
  repx = r3.replace(x, prima + "\0" + dopo)
  return repx
endfunc
lookup = func(y,x)
  local c, b = 0
  for c = 1 to len(x)
    if x[c] = y then b=c; break; endif
  endfor
  return b
endfunc
// find.record$ (posiz AS INTEGER, chiave AS STRING, tabella AS STRING, tipo AS STRING, numcampo AS STRING)
find_record = func(posx,y,x)
  local z, b = 0
  for z = 1 to len(x)
      if y = entry(1,x[z]) then b=z; break; endif
  next z
  if b > 0 then return [b,x[b]] else return [0,[""]] endif
endfunc
#----------------------------------
#  risposta di programma
#----------------------------------
program = func(domanda)
  local risposta, parole, esito
  if inizio then
     risposta = domanda
  else
     if domanda <> "" then
        logout("User",domanda)
        domanda = exp_chars(domanda, "'", "", " ", false)
      // domanda = expand.char(domanda, Chr(34), " ", " ", true)
        domanda = exp_chars(domanda, ":;,?!.", " ", " ", false)
        parole = scompone(trim$(lower$(domanda)))
        esito = last_entry(parole, ".?!", ".")
        parole = remove_item(parole, "':;,?!.")
/*
        parole = corr.accenti(parole, "2", [4,5,7,8])   'corregge gli accenti
        tipi = categorie(parole, 3, [1,4,7,8])          'ritorna i tipi grammaticali
        blocchi = suddivide(parole, tipi, blocchiGr)    'ritorna i blocchi+blocchiGr
        relaz = find.rel(blocchi, blocchiGr, soggetto, dati, verbo)   'la struttura della frase
*/
        risposta = str$(parole) + " _ " + esito
     endif
  endif
  logout("computer",risposta);
  return false
endfunc
#----------------------------------
# INIZIO
#----------------------------------
logout("","")
gui.enter()
#----------------------------------
# FINE
#----------------------------------

Allora, dato che io sono per l'idea di un progetto open source sono
dispondibile a mstrare i sorgenti del programma.... :))
Per il resto è
tutto ok
Ciao,
Matteo
--------------------------------
Inviato via 
http://usenet.iol.it
 

Aaaaghh, chiedo venia non ho sufficentemente specificato simil-basic.
Vedo di rimediare.
Esempio di algoritmo impiegato, illustrato in simil-basic, a beneficio del NG (anche di chi non sà leggere un
listato o programmare, nello spirito del manifesto comp.AI):
procedura per cercare le parole che terminano in ONE
Procedura COntaGLI_ONE       /* scusate non ho resistito =:^))
      pattern="ONE"    /* dichiara il pattern da cercare
        NrOne=0      /* dichiara e azzera il contatore di ONE
        INIZIA il nastro         /* prepara la lettura dell prima parola
         ripeti sino a fine nastro
            PRENDI  una PAROLA
                  se la parola è più lunga di LUN(pattern) allora
                     se la parte destra di PAROLA,LUN(pattern)= pattern allora NrOne=NrOne+1
          fine ripeti
fine procedura
Questo intendevo, e l'unico co%%%one sono io, a non averlo speigato nel dettaglio.
Ciao!

No aspe... dovremmo quindi TUTTI imparare un nuovo linguaggio? Secondo me č
meglio utilizzare la programmazione modulare. Per quanto mi riguarda si
possono pubblicare i sorgenti (a meno che non se ne possano cavare fuori
moooolti soldi ^_^)
Dome
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PC Brain Official Web Site
http://digilander.iol.it/pcbrain
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 Secondo me č meglio utilizzare la programmazione modulare. 
Le due cose non si escludono.
Ciao R.
-- 
Inviato il gio 13 set 2001 22:26:55 CEST da 
fw01-e31.inferentia.net
[217.29.160.1]
http://www.neuromante.net/

 semi-formalizzate.
Azz... non ho capito.. e chi si occuperebbe di trasformare il tutto in un
linguaggio? E poi, in quale linguaggio?
Avevo capito (forse male), della creazione di uno pseudo linguaggio, con
allegato un programma in grado di convertire da PseudoLinguaggio al
linguaggio di programmazione vero e proprio (qualunque sia). Me lo sono
sognato vero? Ahi! Vedi quali sono gli effetti funesti della Cannabis? ;-)))


 non ho capito.. 
No sono io che non mi sono spiegato.
L'idea di Davide non mi pare buona, o meglio non mi pare una buona idea
lasciare solo quelle due alternative. Forse e' meglio decidere un solo
linguaggio gia' esistente, chesso' il c++, e mettere tra le cose da fare
il trovare il giusto modo di interfacciare quel linguaggio agli altri,
eventualmente, usati.
Mi pare invece buona l'idea di Maurizio Neri in questo thread che propone
di documentare i moduli fatti in uno pseudo linguaggio semi formalizzato.
Questa cosa e' tipica dell'IA e ci sono molti esempi in merito nel libro
di Norvig.
Ciao R.
-- 
Inviato il ven 14 set 2001 12:53:17 CEST da 
fw01-e31.inferentia.net
[217.29.160.1]
http://www.neuromante.net/