une méthode très naïve est d'enlever commun stopwords du texte, vous laissant avec des mots plus significatifs comme 'Standards', 'JSON', etc. Vous aurez toujours beaucoup de bruit, donc vous pouvez envisager un service comme OpenCalais qui peut faire une analyse plutôt sophistiquée de votre texte .
Mise à jour:
D'accord, le lien dans ma réponse précédente a des mises en œuvre, mais vous avez demandé un si simple est ici:
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));
Vous pouvez le voir, et contenu de stop_word.txt
dans ce Gist.
exécution ci-dessus sur votre exemple de texte produit le tableau suivant:
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
)
Alors, comme je l'ai dit, cela est un peu naïf et pourrait utiliser plus d'optimisation (plus il est lent), mais il ne tire le plus mots-clés pertinents de votre texte. Vous devriez également faire quelques ajustements sur les mots d'arrêt.Capture des termes comme Web 2.0
sera très difficile, donc encore une fois je pense que vous feriez mieux d'utiliser un service sérieux comme OpenCalais qui peut comprendre un texte et retourner une liste d'entités et de références. DocumentCloud s'appuie sur ce service même pour recueillir des informations à partir de documents.
En outre, pour la mise en œuvre du côté client que vous pourriez faire à peu près la même chose avec JavaScript, et probablement beaucoup plus propre (bien qu'il puisse être lent pour le client.)
Merci pour le lien, je cherche quelque chose comme ça. J'ai essayé YQL mais de toute façon il n'a pas reconnu beaucoup de termes. J'ai trouvé ce site appelé Zemanta qui est plutôt bon, je prévois d'utiliser les deux et de fusionner mes résultats. – sgomez
c'est la chose la plus impressionnante que j'ai trouvé sur internet dans comme 5 ans ou plus ...... merci – AMB