2011-01-28 2 views
8

Я хотел конкретную реализацию, такую, что пользователь обеспечивает блок текста, как:Extract Соответствующие Tag/Ключевые слова из текстового блока

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

То, что я хочу сделать, это автоматически выберет соответствующие ключевые слова и создать теги/ключевые слова, следовательно, для указанной выше части текста, соответствующие метки должны быть: MySQL, PHP, JSON, JQuery, контроль версий, OOP, web2 .0, javascript

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

ответ

2

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

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

+0

Спасибо за ссылку, я ищу что-то вроде этого. Я пробовал YQL, но почему-то не распознал много терминов. Нашел этот сайт под названием Zemanta, который является добрым, я планирую использовать и то, и другое. – sgomez

+0

это самая удивительная вещь, которую я нашел в интернете примерно через 5 лет ...... спасибо – AMB

0

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

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

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

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

+1

Спасибо за ваш ответ. Можете ли вы порекомендовать клиентам реализацию? Я хочу, когда пользователь заполняет блок текста, он должен извлечь из него соответствующие теги. – sgomez

16

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

+0

Спасибо Даррен. Это наивно, но очень исчерпывающе, можете ли вы порекомендовать реализацию, т. Е. Использовать тип preg_replace или какой-то эффективный скрипт соответствия? – sgomez

+0

Отлично! Спасибо за реализацию. – sgomez

+0

Ответит ли это на ваш вопрос? –

5

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

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

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

  • www.nactem.ac.uk/программное обеспечение/Termine/# форма
  • www.alchemyapi.com/api/keyword/
Смежные вопросы