Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como criar um gerador de palavras aleatórias da língua portuguesa utilizando Python?

+1 voto
1,023 visitas
perguntada Abr 1, 2017 em Ciência da Computação por Daniel Bemerguy (11 pontos)  
Compartilhe
comentou Abr 2, 2017 por danielcajueiro (5,251 pontos)  
editado Abr 2, 2017 por danielcajueiro
Você quer gerar palavras aleatoriamente? "Palavras" mesmo? Ou frases? Por que estou perguntando isso? Que eu saiba não existe regras para gerar palavras. Você poderia tentar fazer probilisticamente, mas existe muita chance de aparecer palavras que não existem. Se você quiser fazer isso, primeiro você precisaria dividir as palavras em caracteres e contar as probabilidades dessas letras aparecerem juntas. De fato, isso ficaria melhor com sílabas, mas você precisaria aprender a dividir as sílabas. Finalizando, qual a utilidade de gerar palavras aleatoriamente quando vc pode pegar um dicionário digital (word net por exemplo) e sortear as palavras dele?
comentou Abr 2, 2017 por Daniel Bemerguy (11 pontos)  

Eu queria sortear palavras mesmo, foi um desafio que me propus a fazer para testar alguns módulos novos. O jeito que estou tentando fazer é realizar web scraping de um site. Outra forma seria pegar uma base de dados de um dicionário e sortear as palavras dele, o problema está em conseguir a base de dados.

1 Resposta

+1 voto
respondida Abr 5, 2017 por Daniel Bemerguy (11 pontos)  
editado Abr 5, 2017 por Daniel Bemerguy

Consegui fazer utilizando web scraping com o módulo BeautifulSoup. Foi o único jeito que consegui fazer, mas se alguém tiver um método melhor ou algum jeito de otimizar esse código, sugestões serão muito bem vindas! :)
O site que usei para realizar o web scraping foi: http://www.palabrasaleatorias.com/

import re
import urllib.request
from bs4 import*

url = "http://www.palabrasaleatorias.com/"

idioma_palavras = input('''
Escolha uma das opções de idioma abaixo:

1 - Português
2 - Inglês
3 - Italiano
4 - Francês
5 - Espanhol

Digite a opção escolhida:''')

if idioma_palavras == '1':
    idioma = 'palavras-aleatorias'
elif idioma_palavras == '2':
    idioma = 'random-words'
elif idioma_palavras == '3':
    idioma = 'parole-casuali'
elif idioma_palavras == '4':
    idioma = 'mots-aleatoires'
elif idioma_palavras == '5':
    idioma = 'index'

n_palavras = input("\nDigite quantas palavras você quer que sejam geradas:")
while int(n_palavras) > 10: #Coloquei essa restrição apenas pq o site não deixava gerar mais de 10 palavras
    print('No máximo 10 palavras podem ser geradas. Escolha um valor menor.')
    n_palavras = input("\nDigite quantas palavras você quer que sejam geradas:")

url = url + idioma + ".php?fs=" +  n_palavras

teste = urllib.request.urlopen(url).read()
data = teste.decode('utf-8') #Precisa de decodificação para que os acentos apareçam
soup = BeautifulSoup(data, "html.parser")

data1 = soup.find_all('div') #Encontra todas as tags <div> </div> e mostra em formato de lista
words = data1[1:] # pega somente os elemntos da lista que contém as palavras geradas

for i in range(0,int(n_palavras)):
    string = str(words[i]) #O contador vai passar por toda a lista e converter seus elementos em string
    m = re.search('<div style="font-size:3em; color:#6200C5;">', string)
    end = m.end()
    n = re.search('</div>', string)
    start = n.start()
    palavra = string[end:start]
    print(palavra)
comentou Abr 8, 2017 por danielcajueiro (5,251 pontos)  
Ficou legal! Parabens! De fato, outro modulo muito bom para o scrapy é o Scrapy: https://scrapy.org/

De fato, para fazer esse tipo de coisa, você só precisa por exemplo de uma base de palavras. Existem vários livros digitalizados em língua portuguesa em formato txt ou html que você pode usar: http://www.dominiopublico.gov.br/pesquisa/PesquisaObraForm.jsp

Um exercício interessante é encontrar as palavras com duas letras, três letras, quatro letras.... mais usadas em língua portuguesa. Você também pode gerar as palavras de acordo com a probabilidade de ocorrência.
...