Leyendo por Internet nadie se pone de acuerdo en el número de palabras que hay en El Quijote, con el siguiente código vamos a comprobar:
- Número de palabras que hay en total aunque se repitan
- Número de palabras que hay sin que se repitan
- Palabras más frecuentes
Para contabilizar una palabra, hemos quitado signos de puntuación y las palabras que contienen una única letra (primer script) y las que son de dos letras o menos (segundo script).
Primer script quitando las palabras de una letra
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
cd ~ # Quitar signos de puntuación y similar $patron = '[^a-zA-Zá-úÁ-Úäöü`]' $total = "" $total = foreach($linea in gc .\el_quijote.txt -Encoding UTF8) { $partir = $linea.split(" ") -replace $patron, '' foreach($palabras in $partir) { # Palabra que tengan más de un carácter if($palabras.Length -gt 1) { $palabras } } } # Contar todas las palabras que tengan más de un carácter Write-Host "Total de palabras que tienen más de un carácter: " $total.Count # Contar las palabras agrupadas Write-Host "Total de palabras agrupadas:" ($total | Group-Object | Sort-Object Name -Descending -CaseSensitive).Count # 10 palabras más frecuentes Write-Host "5 palabras más frecuentes" $total | Group-Object | Sort-Object count -Descending -CaseSensitive | select -First 5 |

Segundo script quitando las palabras de dos letras o menos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
cd ~ # Quitar signos de puntuación y similar $patron = '[^a-zA-Zá-úÁ-Úäöü`]' $total = "" $total = foreach($linea in gc .\el_quijote.txt -Encoding UTF8) { $partir = $linea.split(" ") -replace $patron, '' foreach($palabras in $partir) { # Palabra que tengan más de dos caracteres if($palabras.Length -gt 2) { $palabras } } } # Contar todas las palabras que tengan más de dos caracteres Write-Host "Total de palabras que tienen más de dos caracteres: " $total.Count # Contar las palabras agrupadas Write-Host "Total de palabras agrupadas:" ($total | Group-Object | Sort-Object Name -Descending -CaseSensitive).Count # 10 palabras más frecuentes Write-Host "5 palabras más frecuentes" $total | Group-Object | Sort-Object count -Descending -CaseSensitive | select -First 5 |

Tercer script quitando las palabras de tres letras o menos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
cd ~ # Quitar signos de puntuación y similar $patron = '[^a-zA-Zá-úÁ-Úäöü`]' $total = "" $total = foreach($linea in gc .\el_quijote.txt -Encoding UTF8) { $partir = $linea.split(" ") -replace $patron, '' foreach($palabras in $partir) { # Palabra que tengan más de 3 caracteres if($palabras.Length -gt 3) { $palabras } } } # Contar todas las palabras que tengan más de 3 caracteres Write-Host "Total de palabras que tienen más de 3 caracteres: " $total.Count # Contar las palabras agrupadas Write-Host "Total de palabras agrupadas:" ($total | Group-Object | Sort-Object Name -Descending -CaseSensitive).Count # 10 palabras más frecuentes Write-Host "5 palabras más frecuentes" $total | Group-Object | Sort-Object count -Descending -CaseSensitive | select -First 5 |
