2
respostas

Outros tipos de texto

Olá,

Fiquei curioso pra saber se outras línguas, com um alfabeto diferente por exemplo chinês, japonês ou russo, o que eu precisaria pra extrair os caracteres mais comuns em um texto dessas línguas. O python suporta essas línguas ou teria que adicionar uma biblioteca nova?, mudar o tipo de UTF?

2 respostas

Também gostaria de saber.

Olá, Vitor Almeida e Williarde Souza,

Sou aprendiz de programação ainda, mas realizei um teste com o primeiro parágrafo da Wikipédia em japonês: https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC

Usei o mesmo código do exercício pelo notebook Colab. A contagem foi executada normalmente com o módulo collections. Este foi o resultado:

# Contador de letras
from collections import Counter

texto_1 = '''
  日本国(にほんこく、にっぽんこく、英: Japan)、または日本(にほん、にっぽん)は、東アジアに位置する民主制国家[1]。首都は東京都[注 3][2][3]。

  全長3500キロメートル以上にわたる国土は、主に日本列島[注 7]および千島列島・南西諸島・伊豆諸島・小笠原諸島などの弧状列島により構成され[3][4]、大部分が温帯に属するが、北部や島嶼部では亜寒帯や熱帯の地域がある[5][6]。
'''

quantidade_de_letras_1 = Counter(texto_1.lower())
total_1 = sum(quantidade_de_letras_1.values()) - quantidade_de_letras_1['\n']

print('Total de caracteres na 1º texto', total_1)
print("Quebra de linhas '%sn' foram omitidas no total de caracteres.\n"%(chr(92)))

for cada_letra in quantidade_de_letras_1:
  contagem = quantidade_de_letras_1[cada_letra]
  presenca = contagem / total_1 * 100
  if cada_letra == '\n':
    print(f"Caractere '%sn': {contagem} Frequência: {presenca:.2f}"%(chr(92)), end='')
    print('%')
  else:
    print(f"Caractere '{cada_letra}': {contagem} Frequência: {presenca:.2f}%")

Resultou em (não há espaço para exibir tudo):

Total de caracteres na 1º texto 200
Quebra de linhas '\n' foram omitidas no total de caracteres.

Caractere '\n': 4 Frequência: 2.00%
Caractere ' ': 7 Frequência: 3.50%
Caractere '日': 3 Frequência: 1.50%
Caractere '本': 3 Frequência: 1.50%
Caractere '国': 3 Frequência: 1.50%
Caractere '(': 2 Frequência: 1.00%
Caractere 'に': 9 Frequência: 4.50%
Caractere 'ほ': 2 Frequência: 1.00%
Caractere 'ん': 4 Frequência: 2.00%
Caractere 'こ': 2 Frequência: 1.00%
Caractere 'く': 2 Frequência: 1.00%
Caractere '、': 8 Frequência: 4.00%
Caractere 'っ': 2 Frequência: 1.00%
Caractere 'ぽ': 2 Frequência: 1.00%
Caractere '英': 1 Frequência: 0.50%
Caractere ':': 1 Frequência: 0.50%
Caractere 'j': 1 Frequência: 0.50%
Caractere 'a': 2 Frequência: 1.00%
Caractere 'p': 1 Frequência: 0.50%
Caractere 'n': 1 Frequência: 0.50%
Caractere ')': 2 Frequência: 1.00%
Caractere 'ま': 1 Frequência: 0.50%
Caractere 'た': 2 Frequência: 1.00%
Caractere 'は': 5 Frequência: 2.50%
Caractere '東': 2 Frequência: 1.00%
Caractere 'ア': 2 Frequência: 1.00%
Caractere 'ジ': 1 Frequência: 0.50%
Caractere '位': 1 Frequência: 0.50%
Caractere '置': 1 Frequência: 0.50%
Caractere 'す': 2 Frequência: 1.00%
Caractere 'る': 4 Frequência: 2.00%
Caractere '民': 1 Frequência: 0.50%
Caractere '主': 2 Frequência: 1.00%
Caractere '制': 1 Frequência: 0.50%
Caractere '家': 1 Frequência: 0.50%
Caractere '[': 9 Frequência: 4.50%
Caractere '1': 1 Frequência: 0.50%
Caractere ']': 9 Frequência: 4.50%
Caractere '。': 3 Frequência: 1.50%
Caractere '首': 1 Frequência: 0.50%
Caractere '都': 2 Frequência: 1.00%
Caractere '京': 1 Frequência: 0.50%
Caractere '注': 2 Frequência: 1.00%
Caractere '3': 4 Frequência: 2.00%
Caractere '2': 1 Frequência: 0.50%
Caractere '全': 1 Frequência: 0.50%
Caractere '長': 1 Frequência: 0.50%
Caractere '5': 2 Frequência: 1.00%
Caractere '0': 2 Frequência: 1.00%
Caractere 'キ': 1 Frequência: 0.50%
Caractere 'ロ': 1 Frequência: 0.50%
...

Continuando com a exibição dos caracteres mais comuns de um texto:

def letras_mais_comuns(texto, quantas_letras):
  quantidade_de_letras = Counter(texto.lower())
  quantidade_de_quebras = quantidade_de_letras['\n']

  total = sum(quantidade_de_letras.values()) - quantidade_de_quebras
  quantidade_de_letras = quantidade_de_letras.most_common(quantas_letras)
  print('Total de caracteres no texto', total)
  print("Número de quebra de linhas '%sn': "%(chr(92)), quantidade_de_quebras)
  print("Quebra de linhas '%sn' foram omitidas no total de caracteres.\n"%(chr(92)))

  for cada_letra, contagem in quantidade_de_letras:
    presenca = contagem / total * 100
    if cada_letra == '\n':
      print(f"Caractere '%sn': {contagem} Frequência: {presenca:.2f}"%(chr(92)), end='')
      print('%')
    else:
      print(f"Caractere '{cada_letra}': {contagem} Frequência: {presenca:.2f}%")

letras_mais_comuns(texto_1, 10)

Exibiu a proporção dos 10 mais comuns:

Total de caracteres no texto 200
Número de quebra de linhas '\n':  4
Quebra de linhas '\n' foram omitidas no total de caracteres.

Caractere 'に': 9 Frequência: 4.50%
Caractere '[': 9 Frequência: 4.50%
Caractere ']': 9 Frequência: 4.50%
Caractere '、': 8 Frequência: 4.00%
Caractere '島': 8 Frequência: 4.00%
Caractere ' ': 7 Frequência: 3.50%
Caractere 'は': 5 Frequência: 2.50%
Caractere '\n': 4 Frequência: 2.00%
Caractere 'ん': 4 Frequência: 2.00%
Caractere 'る': 4 Frequência: 2.00%