очень наивный метод заключается в удалении общего stopwords из текста, оставив вас с более значимыми словами, такими как «Стандарты», «JSON» и т. Д. Тем не менее, вы все равно получите много шума, так что вы можете рассмотреть такую услугу, как OpenCalais, которая может провести довольно сложный анализ вашего текста ,
Update:
Хорошо, ссылка в моем предыдущем ответе указал на реализации, но вы просили один так просто один здесь:
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
в этом Gist.
Запуск выше на вашем примере текст получается следующий массив:
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, и, вероятно, намного чище (хотя это может быть медленным для клиента.)
Спасибо за ссылку, я ищу что-то вроде этого. Я пробовал YQL, но почему-то не распознал много терминов. Нашел этот сайт под названием Zemanta, который является добрым, я планирую использовать и то, и другое. – sgomez
это самая удивительная вещь, которую я нашел в интернете примерно через 5 лет ...... спасибо – AMB