Dicionários e tuplas

Terça, 2 de junho de 2020

Atenção: Esta tarefa não será corrigida manualmente, mas você deve tentar respondê-la genuinamente. Se tiver alguma dúvida se ela está ou não correta, procure os monitores. Tentativas de passar no teste automático sem responder as questões serão consideradas fraude.

Frequência de palavras

Descobrir informações sobre um texto pode ser importante quando se está tentando obter conhecimento sobre o seu conteúdo de forma automática. Uma análise que podemos fazer é descobrir a frequência de símbolos e palavras. As palavras mais frequentes provavelmente são os artigos, proposições e conectivos, então não vamos nos atentar apenas a elas. Essas palavras são chamadas de stop words e não a incluiremos na nossa contagem.

Neste exercício, você deve fazer um programa frequencia.py que, dado um arquivo de texto, conte a frequência com que elas aparecem no texto e descobra algumas palavras-chaves do texto. As palavras mais frequentes provavelmente dão uma boa ideia sobre o tópico principal do texto. No entanto, se o texto tratar de mais de um assunto, então palavras-chaves sobre o tópico secundário provavelmente não aparecerão tantas vezes.

Entrada

Uma linha contendo o caminho de um arquivo de texto e uma linha contendo stop words.

testes/texto3.in
a à ainda ao aos aqui as às assim cada clara claro com como da das de demais desta destes deve do dois dos e é em entanto entre estas existem geral já longo mais maneira melhor mesmo na não nas neste no nos nossa novas novo nunca o os ou outras outro para pela pelo pelos por qual quanto que se sempre seu sobre sua suas talvez todas todavia todo todos tudo um uma

Saída

Seu programa deve mostrar algumas informações sobre o texto:

  1. A primeira linha deve conter as três palavras mais frequentes, da mais à menos frequente.

  2. A segunda linha deve conter o número de palavras cuja frequência é maior ou igual à da última palavra do primeiro quartil, quando consideramos as palavra da mais à menos frequente. Para determinar o quartil, desconsidere palavras que se repetem 5 vezes ou menos.

  3. A terceira linha deve conter até três palavras mais frequentes entre aquelas que não foram incluídas na contagem da linha anterior.

Quando necessário, use a ordem lexicográfica das palavras para resolver empates.

queimadas fumaça amazônia
6
incêndio brasil focos

Sugestão de palavras

Imagine que você deve criar um sistema que, dadas duas palavras, sugere ao usuário qual será a próxima palavra. Essa escolha é baseada na probabilidade de que essas três palavras apareçam nessa ordem em um determinado texto.

Você deve fazer um programa sugestao.py que leia um arquivo contendo esse texto e guarde os dados necessários para realizar as sugestões de palavras. Depois, seu programa deve sugerir uma palavra para cada par que receber.

Entrada

  1. A primeira linha contém o caminho do arquivo de texto.
  2. Em seguida há a sequência de pares de palavras, um por linha.
testes/texto0.in
buraco negro
buracos negros
campo gravitacional
velocidade da
do buraco
deformações no
no centro
velocidade de

Saída

Para cada par de palavras da entrada, a frase sugerida com as três palavras, uma trio por linha.

buraco negro é
buracos negros não
campo gravitacional pode
velocidade da luz
do buraco negro
deformações no espaço-tempo
no centro da
velocidade de escape

Dicas

  • Faça programas para testar as funções de seu programa. Se achar conveniente, você criar um módulo separado para funções comuns. Sempre utilize o Git corretamente! A cada parte pequena função implementada e testada, faça um registro das alterações (commit). Isso ajuda você a se organizar além de registrar o histórico de seu desenvolvimento.

  • Faz parte da tarefa entender e resolver omissões do enunciado. Leia, interprete e entenda o que pede cada questão. Não tente adivinhar o que ela pede e nunca tente programar antes de entender o problema. Pode ser útil olhar para vários exemplos de entrada e saída para confirmar seu entendimento.

  • Neste exercício você deve utilizar, entre as estruturas de dados que já vimos, aquelas que forem mais adequadas ao problema. Se necessário, você pode utilizar funções prontas de Python para ordenação — mas não para outras subtarefas.

  • Caso você esteja tendo problemas com encoding no Windows é importante seguir esses passos para resolvê-los:

    1. Ao abrir um arquivo pelo código, coloque o enconding utf-8 como parâmetro: open(filename, 'r', encoding='utf-8').

    2. Caso você esteja usando o git Bash, ao abri-lo, digite export PYTHONIOENCODING=utf-8. Caso esteja usando o cmd, ao abri-lo, digite SET PYTHONIOENCODING=utf-8. Se tiver qualquer dúvida, chame um monitor.