Очень наивный метод - удалить из текста общие стоп-слова , оставив вас с более значимыми словами, такими как «Стандарты», «JSON» и т. Д. Однако вы все равно получите много шума, поэтому Вы можете рассмотреть такую услугу, как OpenCalais , которая может сделать довольно сложный анализ вашего текста.
Обновление:
Хорошо, ссылка в моем предыдущем ответе указала на реализации, но вы попросили один, так что простой здесь:
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));
Вы можете видеть это и содержание stop_word.txt
в этом Суть .
Выполнение вышеприведенного примера вашего текста приводит к следующему массиву:
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
)
Итак, как я уже сказал, это несколько наивно и может потребовать большей оптимизации (плюс она медленная), но она вытягивает более релевантные ключевые слова из вашего текста. Вам также нужно будет немного подстроиться под стоп-слова. Захватывать такие термины, как Web 2.0
, будет очень сложно, поэтому, опять же, я думаю, вам было бы лучше использовать серьезный сервис, такой как OpenCalais, который может понимать текст и возвращать список сущностей и ссылок. DocumentCloud использует этот самый сервис для сбора информации из документов.
Кроме того, для реализации на стороне клиента вы можете сделать почти то же самое с JavaScript, и, возможно, намного чище (хотя это может быть медленным для клиента.)