Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

196
Visualizações
Calcular el promedio de palabras en la oración

En mi proyecto PHP, estoy tratando de calcular el promedio de palabras por oración.

Cuando ingreso algunas oraciones, todo funciona como debería.

Frase:

 "content": "Cassieres Werk zur der verbindet die des mit an."

Resultado:

 "wordsPerSentences": "9.0"

PERO , cuando ingreso solo una oración y sin punto final, el valor promedio es "0".

Contenido:

 "content": "Cassieres Werk zur der verbindet die des mit an"

Resultado:

 "wordsPerSentences": "0.0"

Además , el problema es que cuando ingreso 'punto final' y espacio , se agrega a la partitura o coma y espacio después de la palabra.

Contenido:

 "content": "Cassieres Werk zur der, verbindet die des mit an. "

Resultado:

 "wordsPerSentences": "10.0"

¿Cómo puedo cubrir esa condición entre otras?

EDITAR : estas condiciones se resuelven excepto en la que hay "coma" entre solo dos palabras en una oración, devuelve "1" y debería "2".

Mi código:

 $tokens = ',.;'; $sentences = []; $chunk = strtok(trim($text), $tokens); // Handle empty $text if (!is_string($chunk)) { return 0; } do { $sentences[] = $chunk; } while ($chunk = strtok($tokens)); $countWords = function (int $carry, string $item) { return $carry + count(array_filter(explode(' ', $item))); }; $totalWords = array_reduce($sentences, $countWords, 0); return $totalWords / count($sentences);
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Podrías usar str_word_count :

 echo str_word_count('Cassieres Werk zur der verbindet die des mit an.'); //9 echo str_word_count('Cassieres Werk zur der verbindet die des mit an. '); //9 echo str_word_count(' Cassieres Werk zur der verbindet die des mit an. '); //9 echo str_word_count(' Cassieres Werk zur der verbindet die des mit an. '); //9 echo str_word_count(' Cassieres Werk zur der verbindet die des mit an ');

Contará todas las palabras e ignorará los espacios de descanso/línea.

over 4 years ago · Santiago Trujillo Relatório

0

Puede usar str_word_count.

 echo str_word_count('Cassieres Werk zur der verbindet die des mit an.');
over 4 years ago · Santiago Trujillo Relatório

0

la siguiente función devolverá el número promedio de palabras por oración. Espero que esto resuelva tu problema.

 <?php /** * Average words per sentence * * Assumptions: * - Only space character is used to separate words. * - Only '?' and '.' are used to separate sentences. * - Special characters ',', ';', '-' are removed from text. * * @author Jawira Portugal * @license do whatever you want */ function str_average(string $text) { // Removing "not word" characters in $text $special = [',', ';', '-']; $text = str_replace($special, ' ', $text); $tokens = '.?'; $chunk = strtok(trim($text), $tokens); // Handle empty $text if (!is_string($chunk)) { return 0; } $sentences = []; do { $sentences[] = $chunk; } while ($chunk = strtok($tokens)); $countWords = function (int $carry, string $item) { return $carry + count(array_filter(explode(' ', $item))); }; $totalWords = array_reduce($sentences, $countWords, 0); return $totalWords / count($sentences); } echo str_average(''), PHP_EOL; // 0 echo str_average(' , '), PHP_EOL; // 0 echo str_average("Hello world, this is a test..."), PHP_EOL; // 6 echo str_average("Hello world? this is a test..."), PHP_EOL; // 3 echo str_average("Cassieres Werk zur der verbindet die des mit an."), PHP_EOL; // 9 echo str_average("Cassieres Werk zur der verbindet die des mit an"), PHP_EOL; // 9 echo str_average("Cassieres Werk zur der, verbindet die des mit an. "), PHP_EOL; // 9 echo str_average("...Hello world. foo bar baz? One two three four. "), PHP_EOL; // 3

EDITAR Reescribí la función para dividir oraciones con "." y "?".

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda