shouldz

IA - 1 Atividade: Categorização de palavras + Wikipedia

Jul 27th, 2022
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.26 KB | None | 0 0
  1. import spacy
  2. import wikipedia
  3.  
  4. wikipedia.set_lang("pt")
  5.  
  6. #Carregar interpretador
  7. nlp = spacy.load("pt_core_news_sm")
  8.  
  9. #Leitura do arquivo de entrada
  10. arquivo = open('texto.txt', 'r', encoding="utf-8")
  11. wiki = arquivo.readline().__str__().rstrip().lstrip()
  12.  
  13. #Verificar se a primeira linha contém wiki, para assim, realizar uma busca na wikipedia
  14. if wiki == "wiki":
  15.     termo = arquivo.readline()
  16.     wiki = wikipedia.page(termo)
  17.     doc = nlp(wiki.content)
  18. else:
  19.     arquivo.close()
  20.     arquivo = open('texto.txt', 'r', encoding="utf-8")
  21.     doc = nlp(arquivo.read())
  22.  
  23. #Variaveis de controle de quantidade dos termos
  24. lista = []
  25. c1 = c2 = c3 = c4 = c5 = c6 = c7 = c8 = c9 = c10 = c11 = c12 = c13 = c14 = c15 = c16 = c17 = 0
  26.  
  27. #Tratamento/formatação das palavras
  28. for token in doc:
  29.     if(token.pos_ == "NOUN"):
  30.         c1 += 1
  31.         lista.append(token.orth_ + "    - sendo este classificado como: [Substantivo]")
  32.     elif(token.pos_ == "ADP"):
  33.         c2 += 1
  34.         lista.append(token.orth_ + "    - sendo este classificado como: [Adesão]")
  35.     elif(token.pos_ == "VERB"):
  36.         c3 += 1
  37.         lista.append(token.orth_ + "    - sendo este classificado como: [Verbo]")
  38.     elif(token.pos_ == "CCONJ"):
  39.         c4 += 1
  40.         lista.append(token.orth_ + "    - sendo este classificado como: [Conjunção]")
  41.     elif (token.pos_ == "ADJ"):
  42.         c5 += 1
  43.         lista.append(token.orth_ + "    - sendo este classificado como: [Adjetivo]")
  44.     elif (token.pos_ == "DET"):
  45.         c6 += 1
  46.         lista.append(token.orth_ + "    - sendo este classificado como: [Determinante]")
  47.     elif (token.pos_ == "SCONJ"):
  48.         c7 += 1
  49.         lista.append(token.orth_ + "    - sendo este classificado como: [Conjunção subordinada]")
  50.     elif (token.pos_ == "AUX"):
  51.         c8 += 1
  52.         lista.append(token.orth_ + "    - sendo este classificado como: [Verbo Auxiliar]")
  53.     elif (token.pos_ == "PUNCT"):
  54.         c9 += 1
  55.         lista.append(token.orth_ + "    - sendo este classificado como: [Pontuação]")
  56.     elif (token.pos_ == "PROPN"):
  57.         c10 += 1
  58.         lista.append(token.orth_ + "    - sendo este classificado como: [Nome próprio]")
  59.     elif (token.pos_ == "ADV"):
  60.         c11 += 1
  61.         lista.append(token.orth_ + "    - sendo este classificado como: [Adverbio]")
  62.     elif (token.pos_ == "CCONJ"):
  63.         c12 += 1
  64.         lista.append(token.orth_ + "    - sendo este classificado como: [Conjunção Coordenativa]")
  65.     elif (token.pos_ == "INTJ"):
  66.         c13 += 1
  67.         lista.append(token.orth_ + "    - sendo este classificado como: [Interjeição]")
  68.     elif (token.pos_ == "PART"):
  69.         c14 += 1
  70.         lista.append(token.orth_ + "    - sendo este classificado como: [Particula]")
  71.     elif (token.pos_ == "PRON"):
  72.         c15 += 1
  73.         lista.append(token.orth_ + "    - sendo este classificado como: [Pronome]")
  74.     elif (token.pos_ == "SYM"):
  75.         c16 += 1
  76.         lista.append(token.orth_ + "    - sendo este classificado como: [Simbolo]")
  77.     else:
  78.         c17 += 1
  79.         lista.append(token.orth_ + token.pos_ + "Não identificado pela API Spacy")
  80.  
  81. #Preparação de saída do txt
  82. saida = open("log_palavras.txt", "w+", encoding="utf-8")
  83. saida.writelines("=====================================\n    Relatorio de analise textual"
  84.                  "\n=====================================\n")
  85. saida.writelines("\nTEXTO ENCONTRADO: ")
  86. saida.writelines(doc.__str__() + "\n")
  87. saida.writelines("\n===============================================\n    Lista de palavras entradas e categorizadas: "
  88.                  "\n===============================================\n")
  89. for x in lista:
  90.     saida.writelines(x + "\n")
  91.  
  92. saida.writelines(f"\n================================================================\n    Relação referente a "
  93.                  f"quantidade de termos em suas categorias:\n"
  94.                  f"================================================================\nSubstantivo: {c1}\n"
  95.                  f"Adesão: {c2}\nVerbos: {c3}\nConjunções: {c4}\nAdjetivo: {c5}\nDeterminante: {c6}\nConjunção subordinada: {c7}\n"
  96.                  f"Verbo Auxiliar: {c8}\nPontuação: {c9}\nNome próprio: {c10}\nAdverbio: {c11}\nConjunção Coordenativa: {c12}"
  97.                  f"\nInterjeição: {c13}\nParticula: {c14}\nPronome: {c15}\nSimbolo: {c16}\nNão identificado pela API Spacy: {c17}\nTotal de Palavras: {len(doc.__str__().split())}"
  98.                  f"\n============================================================")
  99. arquivo.close()
  100. saida.close()
  101.  
  102. #Preparação de saída do HTML
  103. dados = open("log_palavras.txt", "r", encoding="utf-8")
  104. x = dados.read()
  105.  
  106. html = open("atividade_IA.html", "w+", encoding="utf-8")
  107. html.write(f"<html>"
  108.            f"   <head>"
  109.            f"       <title> "
  110.            f"           IA Primeira Entrega\n \
  111.                    </title>"
  112.            f"   </head>"
  113.            f"       <body> "
  114.            f"           <p> ===================================== <br>    Relatorio de analise textual <br> ==="
  115.            f"================================== <br>"
  116.            f"           </p>"
  117.            f"           <p>  <br> TEXTO ENCONTRADO: {doc.__str__()}=============================================== <br> "
  118.            f"Lista de palavras entradas e categorizadas: "
  119.                  "<br> =============================================== <br>"
  120.            f"{lista}"
  121.            f"<br>================================================================<br>    "
  122.            f"Relação referente a quantidade de termos em suas categorias:<br>"
  123.            f"================================================================<br>Substantivo: {c1}<br>"
  124.            f"Adesão: {c2}<br>Verbos: {c3}<br>Conjunções: {c4}<br>Adjetivo: {c5}<br>Determinante: {c6}<br>Conjunção subordinada: {c7}<br>"
  125.            f"Verbo Auxiliar: {c8}<br>Pontuação: {c9}<br>Nome próprio: {c10}<br>Adverbio: {c11}<br>Conjunção Coordenativa: {c12}"
  126.            f"<br>Interjeição: {c13}<br>Particula: {c14}<br>Pronome: {c15}<br>Simbolo: {c16}<br>Não identificado pela API Spacy: {c17}<br>"
  127.            f"Total de Palavras: {len(doc.__str__().split())}<br>"
  128.            f"<br>============================================================"
  129.            f"           </p>"
  130.            f"       </body>"
  131.            f"</html>")
  132. html.close()
Add Comment
Please, Sign In to add comment