How can I make the file below do what you need in print?
import glob, os, codecs, sys, codecs
# =================================
# Metodos para Indexacao
# =================================
def tokenizacao(documento): # retorna list
return documento.split(" ")
def remover_repetidas(lista_palavras): # retorna list
# a funcao 'filter' serve para aplicar algum filtro
# em cada entrada de uma list
return sorted(filter(None,list(set(lista_palavras))))
def stopwords(lista_palavras, _stopwords): # retorna list
nova_lista = []
# para cada palavra do doc
for p in lista_palavras:
if p not in _stopwords:
nova_lista.append(p)
return nova_lista
def normalizacao(lista_palavras): # retorna list
nova_lista = []
simbolos = list('.,+/?:;!@#$%')
# transformou palavras para minusculas
for p in lista_palavras:
p = p.lower()
# procura e remove caracteres especiais
for s in simbolos:
if s in p:
p = p.replace(s,'')
nova_lista.append(p)
return nova_lista
def indexar(lista_palavras, arq, dic):
# para cada palavra na lista
# testa se ela existe no dicionario
# se existir, obtem a lista de docs e faz append
# se nao existir, cria uma nova entrada no dicionario
for p in lista_palavras:
## teste se existe no dicionario
if p in dic:
docs = dic[p]
docs.append(arq)
else:
dic[p] = [arq]
# =================================
# FUNCAO PRINCIPAL (inicio do app)
# =================================
def main():
print("== IMED-EDD | INDEXADOR DOCUMENTOS == ")
dic = dict() # dicionario vazio
pasta = "docs/*.txt"
## Carrega arquivo de stopwords em uma list
_stopwords = []
nome_arq = 'stopwords.txt'
arq = codecs.open(nome_arq, "r", "UTF-8") # abrir arquivo para leitura
linhas = arq.readlines()
for linha in linhas:
_stopwords.append(linha.replace('\n', '').strip().lower())
arq.close() # fechar arquivo
#########
# para cada arquivo txt em uma pasta, fazer:
for arq in glob.glob(pasta):
print("[Processando arquivo: {}]".format(arq))
documento = ''
# Abrir arquivo
f = codecs.open(arq, "r", "UTF-8-sig")
linhas = f.readlines()
for linha in linhas:
# remove espaços em branco no inicio e fim de cada linha lida
documento += linha.replace("\r\n", " ")
f.close()
## Executa as funcoes que representam as etapas da indexacao
nova_lista = tokenizacao(documento)
nova_lista = normalizacao(nova_lista)
nova_lista = remover_repetidas(nova_lista)
nova_lista = stopwords(nova_lista, _stopwords)
#print(nova_lista)
## Insere/Atualiza o dicionario com novos termos e documentos
indexar(nova_lista, arq, dic)
print("== Fim processamento ==")
# Imprime o indice invertido
for key in dic.keys():
print("{} => {}".format(key, dic[key]))
if __name__ == '__main__':
main()
I have this information:
Create a start menu that will contain the options:
------- INDEXING -------
- 4.1. Using OR Operator
- 4.2. Using AND operator
Details:
- In item 1: When creating the new document, prompt the user: filename (including txt extension) and request that content be typed.
- In item 2: Do not remove the document from the docs / folder and yes just delete entries present in the index; It should go through each document list of each term, removing the entry with the filename of each of them.
- In item 3: Read the .txt documents for indexing a folder called docs /, clearing the current index, if it already contains entries, before indexing.
- In item 4.1, an example search is: brazil deputy
- Show the list of documents that have any of these terms.
- In item 4.2, an example search is: Brazil AND deputy
- Show the list of documents that have both terms.
- Implement a way to intersect strings present in lists.
Search Google for: Python Intersection Lists
- In item 5: To display the index, simply use Python's print in the variable that represents the list of terms and documents: