Инструмент для анализа произвольного текста и получения из него максимум информации
Текс в приложени представляется в виде объектна-итератора и соответственно ячейкой итератора является объект слова.
$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