2011-03-27 25 views
5

Necesito construir un diccionario php, que encontrará la palabra raíz de una palabra. Ej. buscar "autos", dirá "Cars es plural of car" O "took", es "el tiempo pasado de toma"encontrar la palabra raíz de una palabra

Estoy considerando usar Wordnet, pero parece complicado.

¿Alguna sugerencia? m desesperado

Atentamente;

+1

Esto es muy amplio . ¿De qué aspecto de la construcción del diccionario es su pregunta? Usar un servicio externo puede ser una buena opción, ya que es probable que se vuelva * muy * complicado hasta que tenga una solución funcional. –

+0

Sí, también estoy considerando un servicio de terceros como Google Translate y Yahoo Translate. Pero eso sería lento porque se solicita a Google cada vez y de nuevo a mí. y tiene una limitación por pedido por día, como 5000 solicitudes por día. Estoy mirando a PSpell y a Enchant, esperando que esto pueda ayudarme. –

Respuesta

1

Bueno, aquí es una extensión que hace palabra derivada (que creo que esto es todo lo que quiere): http://pecl.php.net/package/stem

No hace ningún análisis gramatical de la obra, sin embargo.

Aquí es PHP-única versión: http://www.chuggnutt.com/stemmer.php

+0

¡Gracias FractalizeR! ¡Eso es lo que quiero!Después de mirar el letalizador, creo que una base de datos de todas las palabras y su relación (por ejemplo, tomar, tomar-> tomar, tomar-> tomar, ratones-> ratón, automóviles-> automóvil, ...) sería más rápido para porque simplemente busca en las bases de datos. ¿algún consejo? –

+0

Dada la palabra "vuela", la respuesta de Porterstemmer es "fli" y dado "tomado", porterStemmer me da "tomado" ... Parece que funciona correctamente para el caso regular, pero no para el caso irregular –

5

Bueno, ya despalilladora sugerido no funciona correctamente para usted, usted puede elegir algunos, que se adapte mejor a partir de aquí:

http://snowball.tartarus.org/

Aquí también es una biblioteca interesante: http://sourceforge.net/projects/nlp/

También enlaces a preguntas similares en StackOverflow:

NLP programming tools using PHP?

Text mining with PHP

UPDATE: How do I do word Stemming or Lemmatization?

http://www.reddit.com/r/programming/comments/8e5d3/how_do_i_programatically_do_stemming_eg_eating_to/

http://www.nltk.org/

Wordnet lematizador: http://wordnet.princeton.edu/wordnet/download/

+0

¡Gracias FratalizeR! Creo que mi problema es con lemmatizer. Stemmer no puede ayudarme. Necesita un diccionario para que esto funcione en caso irregular. Por ejemplo, vuela -> vuela, toma -> toma, ratones -> ratón. Solo el chequeo del diccionario puede interpretar esto correctamente –

+0

Ok, agregué algunos más enlaces para usted. –

0

Puede probar la API gratuita de Lemmatizer aquí: http://twinword.com/lemmatizer.php

Desplácese hacia abajo para encontrar el punto final Lemmatizer.

Esto le permitirá obtener "perros" para "perro", "habilidades" para "habilidad".

Si se pasa en un POST o GET parámetro llamado "texto" con una cadena como "caminado plantas":

// These code snippets use an open-source library. http://unirest.io/php 
$response = Unirest\Request::post("[ENDPOINT URL]", 
    array(
    "X-Mashape-Key" => "[API KEY]", 
    "Content-Type" => "application/x-www-form-urlencoded", 
    "Accept" => "application/json" 
), 
    array(
    "text" => "walked plants" 
) 
); 

obtiene una respuesta como esta:

{ 
    "lemma": { 
    "plant": 1, 
    "walk": 1 
    }, 
    "result_code": "200", 
    "result_msg": "Success" 
} 
Cuestiones relacionadas