/** * Make article from nominative not strict words and runs check again * @param Article $article * @return string[] */ protected function heuristicsCheck(Article $article) { $nominativeArticle = ''; foreach ($article->words as $word) { if (!$word->variants[0]['strict'] && !$word->checkGrammeme(MystemConst::OTHER_VULGARISM, 0)) { $nominativeArticle .= ' ' . $word; } } if ($nominativeArticle === '') { return array(); } $newArticle = new Article($nominativeArticle); $words = $newArticle->checkBadWords(false); $result = array(); foreach ($words as $original => $word) { foreach ($article->words as $originalWord) { if ($original === $originalWord->normalized()) { $result[$originalWord->original] = $word; break; } } } return $result; }