AnalyzerText icon indicating copy to clipboard operation
AnalyzerText copied to clipboard

Analyzer text

Latest Stable Version PHP from Travis config Build Status Coverage Status Scrutinizer Code Quality StyleCI License

Анализатор текста

Инструмент для анализа произвольного текста и получения из него максимум информации

Текс

Текс в приложени представляется в виде объектна-итератора и соответственно ячейкой итератора является объект слова.

$text = '...'; // некоторый текст
$text_obj = new \AnalyzeText\Text($text);
// @var $word \AnalyzeText\Text\Word
$word = $text_obj->current();

Получив слово можно получить как его оригинальную форму так и форму в нижнем регистре для анализа.

Текст на входе ожидается в кодировке UTF-8

Анализаторы

Для анализа можно использовать предустановленные анализаторы передавая им объект текса.

  • Frequency - подсчитывает частоту появления слова в тексте и процентное отнашение частоту появления к самому популярному слову.

Фильтры

Набор фильтров для чистки текста содержащие более чем 3000 слов в библиотеке.

  • Adverb - наречия
  • Interjection - междометья
  • Particle - частицы
  • Preposition - предлоги
  • Pronoun - местоимения
  • Union - союзы
  • Informative - информационные слова(фильтрует все описынные выше)

Использование

Пример реализации анализа естественности текста для SEO оптимизации.

$frequency = new Frequency();
$frequency->setText(new Text($text));

// анализируем весь список слов
$graph = array_slice(array_merge_recursive($frequency->getFrequency(), $frequency->getPercent()), 0, 20);

// фильтруем и получаем только информационные слова
$frequency->applyFilters()->Informative();
$graph_filter = array_slice(array_merge_recursive($frequency->getFrequency(), $frequency->getPercent()), 0, 20);

Производительность

Для анализа производительности использовался следующий код

$i = $ii = 1000;
$start = microtime(1);
while ($i--) {
    $frequency = new Frequency();
    $frequency->setText(new Text($text))->applyFilters()->Informative();
    $frequency->getFrequency();
    $frequency->getPercent();
}
echo (microtime(1) - $start) / $ii;

Для теста взят текст в 15190 символов, 2707 слов.

Результат: ~0.29 c.

Лицензия

Этот пакет находится под лицензией MIT. Смотрите полную лицензию в файле: LICENSE