Извлечение релевантных тегов / ключевых слов из текстового блока

Мне нужна конкретная реализация, так что пользователь предоставляет блок текста, например:

«Требования – Рабочие знания в среде LAMP с использованием Linux, Apache 2, MySQL 5 и PHP 5, – Знание стандартов Web 2.0 – Удобно с JSON – Практический опыт работы с Framework, Zend, OOPs – Cross Browser Javascripting, JQuery и т. Д. – Знание программного обеспечения контроля версий, такого как под-версия, будет предпочтительным ».

То, что я хочу сделать, – это автоматически выбирать релевантные ключевые слова и создавать теги / ключевые слова, поэтому для вышеуказанного фрагмента текста соответствующие теги должны быть: mysql, php, json, jquery, управление версиями, oop, web2.0, javascript

Как я могу это сделать в PHP / Javascript и т. Д.? Головной убор был бы действительно полезен.

Related of "Извлечение релевантных тегов / ключевых слов из текстового блока"

Очень наивный метод состоит в том, чтобы удалить общие тексты из текста, оставив вам более значимые слова, такие как «Стандарты», «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 в этом 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 и, вероятно, намного чище (хотя для клиента это может быть медленным).

Я сделал быстрый обзор этого сегодня утром, и к моему удивлению тот, который лучше всего работает с моей тестовой фразой, был написан на PHP

То, что выглядело как самый профессиональный, совершилось ужасно: viewer.opencalais.com

Другие, которые были в порядке, были (не уверены, на каком языке они написаны)

Это непросто сделать, потому что для этого требуется некая нечеткая логика. Вы должны использовать экстрактор Yahoo Term YQL

Проверьте это: link

В зависимости от того, хотите ли вы показывать ключевые слова / теги клиента или хотите извлечь ключевые слова / теги из блока текста, выполните дальнейшие вычисления с ними.

Если вам нужно только показать их, то обработка клиентов будет прекрасной. Если вам нужны они для дальнейших вычислений, используйте для этого обработку серверов.

Я могу порекомендовать реализацию javascript clientside, если вы можете предоставить более подробную информацию. Если вы хотите в целом «знать» ключевые слова, то требуется какое-то умное решение

Если у вас есть список ключевых слов, вы можете использовать регулярные выражения для извлечения данных