fahadkalil

indexacao_alunos_2021

Nov 19th, 2020 (edited)
1,565
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.65 KB | None | 0 0
  1. ## Definindo as funções necessárias para o processo de INDEXACAO
  2.  
  3. import glob, os, codecs, sys
  4.  
  5. dic = dict()
  6.  
  7. stopwords = []
  8. nome_arq = 'stopwords.txt'
  9.  
  10. arq = codecs.open(nome_arq, "r", "UTF-8")
  11. linhas = arq.readlines()
  12. for linha in linhas:    
  13.     stopwords.append(linha.replace('\n', '').strip().lower())
  14. arq.close()
  15.  
  16. def indexacao(doc, arq):
  17.     # doc: list | arq: str (nome do arquivo)
  18.     for palavra in doc:
  19.         if palavra in dic:
  20.             lista_docs = dic[palavra]
  21.             lista_docs.append(arq)
  22.         else:
  23.             dic[palavra] = [arq]
  24.    
  25.  
  26. def tokenizacao(doc_inicial):
  27.   return doc_inicial.split(' ') # lista de palavras
  28.  
  29. def substitui_especiais(token):
  30.   return token.replace('á', 'a')
  31.  
  32. def remove_pontuacao(token):
  33.   novo_token = ''
  34.   pontuacoes = '!()[]{};:\'\"\,<>.?@#%^&*_~'
  35.  
  36.   for char in token:
  37.     if char not in pontuacoes:
  38.       novo_token = novo_token + char
  39.  
  40.   return novo_token
  41.  
  42. # como remover pontuações, caracteres especiais, case-sensitive? [normalizacao]
  43. def normalizacao(lista): # retornar uma list
  44.   nova_lista = []
  45.  
  46.   for palavra in lista:
  47.       if palavra != '':          
  48.           nova_lista.append(remove_pontuacao(palavra.lower()))
  49.    
  50.   return nova_lista  
  51.  
  52. def remove_stopwords(lista):
  53.     nova_lista = []
  54.  
  55.     for token in lista:
  56.         if token.lower() not in stopwords:
  57.             nova_lista.append(token)
  58.  
  59.     return nova_lista
  60.  
  61.  
  62. def remove_repetidas(lista):    
  63.     ## usar a estrutura de Conjunto (set)
  64.     return list(set(lista))
  65.  
  66. ##
  67. ## Passar por todos os arquivos
  68. ##
  69. for arq in glob.glob("docs/*.txt"):
  70.     print("[{}]".format(arq))
  71.     docTemporario = ''
  72.    
  73.     # Abrir arquivo
  74.     f = codecs.open(arq, "r", "UTF-8")
  75.     linhas = f.readlines()
  76.  
  77.     for linha in linhas:
  78.         # remove espaços em branco no inicio e fim de cada linha lida
  79.         docTemporario += linha.replace('\r\n',' ')
  80.     f.close()
  81.  
  82.     docTemporario = tokenizacao(docTemporario)
  83.     docTemporario = remove_stopwords(docTemporario)
  84.     #docTemporario = remove_pontuacao(docTemporario)
  85.     #docTemporario = substitui_especiais(docTemporario)
  86.     docTemporario = normalizacao(docTemporario)    
  87.     docTemporario = remove_repetidas(docTemporario)
  88.    
  89.    
  90.     # chamar as demais etapas
  91.  
  92.     print(sorted(docTemporario))
  93.    
  94.     indexacao(docTemporario, arq)        
  95.     print()
  96.  
  97. ## USANDO O ÍNDICE (invertido)
  98.    
  99. #print("BUSCAR PELA PALAVRA 'polícia':")
  100. #print(dic['polícia'])
  101.  
  102. #print("BUSCAR PELA PALAVRA 'furadeira':")
  103. #print(dic['furadeira'])
  104.  
  105. print( list( set(dic['bosch']) & set(dic['furadeira'])) ) # busca booleana usando AND
  106.  
  107. ########
  108.  
Add Comment
Please, Sign In to add comment