Advertisement
fahadkalil

indexacao_09062020

Jun 9th, 2020
1,249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.38 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 token in doc:
  19.         if token in dic:
  20.             dic[token].append(arq)
  21.         else:
  22.             dic[token] = [arq]
  23.  
  24. def tokenizacao(doc_inicial):
  25.   return doc_inicial.split(' ')
  26.  
  27. def substitui_especiais(token):
  28.   return token.replace('á', 'a')
  29.  
  30. def remove_pontuacao(token):
  31.   novo_token = ''
  32.   pontuacoes = '!()[]{};:\'\"\,<>.?@#%^&*_~'
  33.  
  34.   for char in token:
  35.     if char not in pontuacoes:
  36.       novo_token = novo_token + char
  37.  
  38.   return novo_token
  39.  
  40. # como remover pontuações, caracteres especiais, case-sensitive? [normalizacao]
  41. def normalizacao(lista):
  42.   nova_lista = []
  43.   for token in lista:
  44.     if token == '':
  45.         continue
  46.     token = substitui_especiais(token)
  47.     token = remove_pontuacao(token)
  48.     token = token.lower()
  49.    
  50.     nova_lista.append(token)
  51.    
  52.   return nova_lista  
  53.  
  54. def remove_stopwords(lista):
  55.     nova_lista = []
  56.  
  57.     for token in lista:
  58.         if token.lower() not in stopwords:
  59.             nova_lista.append(token)
  60.  
  61.     return nova_lista
  62.  
  63.  
  64. def remove_repetidas(lista):
  65.     return list(set(lista))
  66.  
  67. for arq in glob.glob("docs/*.txt"):
  68.     print("[{}]".format(arq))
  69.     docTemporario = ''
  70.    
  71.     # Abrir arquivo
  72.     f = codecs.open(arq, "r", "UTF-8")
  73.     linhas = f.readlines()
  74.  
  75.     for linha in linhas:
  76.         # remove espaços em branco no inicio e fim de cada linha lida
  77.         docTemporario += linha.replace('\r\n',' ')
  78.     f.close()
  79.  
  80.     docTemporario = tokenizacao(docTemporario)
  81.     docTemporario = normalizacao(docTemporario)
  82.     docTemporario = remove_stopwords(docTemporario)
  83.     docTemporario = remove_repetidas(docTemporario)
  84.  
  85.     print(sorted(docTemporario))
  86.     indexacao(docTemporario, arq)        
  87.     print()
  88.    
  89. print(dic) # apresenta o indice invertido (representado como um dicionario)
  90.  
  91. print("BUSCAR PELA PALAVRA 'polícia':")
  92. print(dic['polícia'])
  93. print(dic['furadeira'])
  94.  
  95. print( set(dic['polícia']) & set(dic['furadeira'])) # busca booleana usando AND
  96.  
  97. ########
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement