2011-06-19 32 views
6

estoy instalando WordNet en MySQL desde http://www.semantilog.org/wn2sql.htmlCreación de un diccionario simple usando WordNet

me gustaría mostrar los datos en la misma forma que la página web de Princeton: http://wordnetweb.princeton.edu/perl/webwn?s=car

¿Cómo iba a consultar la base de datos para ¿Haz eso? Estoy usando PHP.

+1

debe comenzar, – Ibu

+0

@hakre Creo que una buena manera de comenzar es la forma en que lo hace princeton pero. No necesito mostrar Sysnet (relaciones semánticas, etc.). – Chad

Respuesta

11

Por lo que he deducido de la documentación en el sitio web, parece que necesita consultar tres tablas.

En primer lugar se consulta la palabra mesa con el fin de conseguir que es wordno, un número único de cada palabra tiene. Se vería algo como esto.

//assuming you've connected to your MySQL db 
$word=$_GET['s']; //This variable stores the value given through url 
if (ctype_alpha($word)){ // If it's alphabetical 
    $word_clean=mysql_real_escape_string($word); //Sanitize it for MySQL 
}else{ 
    //Not a valid word, error handle 
    exit(); 
} 
$query='SELECT wordno FROM word WHERE lemma=`$word_clean` LIMIT 1'; 
$result=mysql_query($query); 

A continuación, tenemos que consultar la sentido mesa con el fin de obtener la synsetno, which'll salida de los diferentes sentidos de la palabra. Ej: puede (sustantivo) y puede (verbo), cada uno tiene un número único que es el synsetno

La consulta MySQL será algo a lo largo de las líneas de:

$query='SELECT synsetno FROM sense WHERE wordno=`$wordno`'; 

Para cada resultado que se obtiene a partir de esa consulta, deberá consultar la tabla de synset para obtener la definición de cada sentido. Can (sustantivo) y can (verbo) tienen diferentes definiciones. La consulta para cada synsetno.

$query='SELECT definition FROM synset WHERE synsetno=`$synset`'; 

Y listo! Tienes un buen diccionario. Sin embargo, es una molestia para la CPU tener que consultar tres tablas, cada una con una tonelada de registros.

+0

Esto es suficiente para comenzar. ¡Gracias! – Chad

+0

¿Puede decirme cómo obtener oraciones de ejemplo para una palabra? – SexyBeast

+0

puede usar un join 'SELECT * FROM palabra JOIN sense en sense.wordno = word.wordno JOIN synset en sense.synsetno = synset.synsetno WHERE word.lemma LIKE 'wheel' ORDER BY' sense' .tagcnt' DESC' – astroanu

Cuestiones relacionadas