un método muy ingenuo es eliminar común stopwords del texto, dejándolo con palabras más significativas como 'Estándares', 'JSON', etc. Sin embargo, todavía se escuchará mucho ruido, por lo que puede considerar un servicio como OpenCalais que puede hacer un análisis bastante sofisticado de su texto .
Actualización:
bien, el enlace en mi respuesta anterior se refirió a las implementaciones, pero pidió una manera muy simple está aquí:
function stopWords($text, $stopwords) {
// Remove line breaks and spaces from stopwords
$stopwords = array_map(function($x){return trim(strtolower($x));}, $stopwords);
// Replace all non-word chars with comma
$pattern = '/[0-9\W]/';
$text = preg_replace($pattern, ',', $text);
// Create an array from $text
$text_array = explode(",",$text);
// remove whitespace and lowercase words in $text
$text_array = array_map(function($x){return trim(strtolower($x));}, $text_array);
foreach ($text_array as $term) {
if (!in_array($term, $stopwords)) {
$keywords[] = $term;
}
};
return array_filter($keywords);
}
$stopwords = file('stop_words.txt');
$text = "Requirements - Working knowledge, on LAMP Environment using Linux, Apache 2, MySQL 5 and PHP 5, - Knowledge of Web 2.0 Standards - Comfortable with JSON - Hands on Experience on working with Frameworks, Zend, OOPs - Cross Browser Javascripting, JQuery etc. - Knowledge of Version Control Software such as sub-version will be preferable.";
print_r(stopWords($text, $stopwords));
Se puede ver esto, y el contenido de stop_word.txt
en este Gist.
Ejecución de la anterior en su ejemplo de texto produce la siguiente matriz:
Array
(
[0] => requirements
[4] => linux
[6] => apache
[10] => mysql
[13] => php
[25] => json
[28] => frameworks
[30] => zend
[34] => browser
[35] => javascripting
[37] => jquery
[38] => etc
[42] => software
[43] => preferable
)
Así que, como he dicho, esto es algo ingenuo y podría usar más de optimización (además de que es lento) pero sí saque el mayor palabras clave relevantes de su texto. También necesitarías afinar las palabras stop.Capturar términos como Web 2.0
será muy difícil, así que, de nuevo, creo que sería mejor utilizar un servicio serio como OpenCalais que pueda entender un texto y devolver una lista de entidades y referencias. DocumentCloud se basa en este mismo servicio para recopilar información de los documentos.
Además, para la aplicación del lado del cliente se podría hacer más o menos lo mismo con JavaScript, y probablemente mucho más limpio (aunque podría ser lento para el cliente.)
Gracias por el enlace, yo estoy buscando algo como esto. Intenté YQL pero de alguna manera no reconoció muchos términos. Encontré este sitio llamado Zemanta, que es bastante bueno, estoy planeando usar ambos y fusionar mis resultados. – sgomez
esto es lo más increíble que he encontrado en Internet en aproximadamente 5 años más o menos ... gracias – AMB