Pregunta

Estoy tratando de escribir un programa para encontrar similitudes entre dos documentos, y como estoy usando solo inglés, decidí usar wordnet, pero no puedo encontrar una manera de vincular wordnet con php, no puedo encontrar ninguna api de wordnet dephp.

Vi en el foro que alguien dijo (Spudley) que llamó a wordnet desde php (usando la función shell_exec ()), Clase de tesauro o API para PHP [editado]

Realmente me gustaría saber un método usado o algún código de ejemplo, quizás un tutorial para comenzar a usar wordnet con php.

muchas gracias

¿Fue útil?

Solución

La extensión PHP a la que está vinculada desde el sitio de WordNet es muy antigua y desactualizada; afirma que funciona con PHP4, por lo que no creo que se haya examinado en años.

No hay otras API disponibles para WordNet-> PHP, así que desarrollé mi propia solución.

WordNet se puede ejecutar desde la línea de comandos, por lo que la función shell_exec() de PHP puede leer la salida.

Si ejecuta WordNet desde la línea de comandos (cd al directorio de Wordnet, luego solo wn) sin ningún parámetro, le mostrará una lista de posibles funciones que Wordnet admite.

Aún en la línea de comandos, si luego prueba una / algunas de esas funciones, verá cómo Wordnet genera sus resultados. Por ejemplo, si desea sinónimos para la palabra 'estrella', puede probar la función -synsn:

wn star -synsn

Esto producirá un resultado que se parece un poco a esto:

Sinónimos / hiperónimos (ordenados por frecuencia estimada) del sustantivo estrella

8 sentidos de la estrella

Sentir 1 estrella => cuerpo celeste, cuerpo celeste

Sense 2 as, adepto, campeón, sensación, maven, mavin, virtuoso, genio, hotshot, estrella, superestrella, genio, genio, mago, mago => experto

Sense 3 estrellas => cuerpo celeste, cuerpo celeste

Sentido 4 estrellas => figura plana, figura bidimensional

Sentido 5 estrellas, director, líder => actor, histrion, jugador, thespian, role player

Cabeza de cartel de Sense 6, estrella => intérprete, artista escénico

Sentido 7 asterisco, estrella => carácter, grafema, símbolo gráfico

Sense topología de 8 estrellas, estrella => topología, topología de red

En PHP, puede leer este mismo resultado usando la función shell_exec().

$result = shell_exec('/path/to/wn '.$word.' -synsn');

Ahora $result debería contener el bloque de texto citado anteriormente.

En este punto, debe realizar una codificación adecuada. Deberá tomar ese bloque de texto y analizarlo para obtener los datos que desee.

Aquí es donde se pone complicado. Debido a que los datos se presentan en un formato diseñado para ser leído por un humano y no por un programa, es complicado analizarlos con precisión.

Es importante tener en cuenta que las diferentes opciones de búsqueda presentan su resultado de manera ligeramente diferente. Y, algunos de los resultados que se devuelven pueden ser algo esotéricos. Terminé escribiendo un sistema de ponderación para calificar los resultados, pero era bastante específico para mis necesidades, por lo que deberá experimentar con él para crear su propio sistema.

Espero que sea de ayuda suficiente. :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top