Skip to content

Instantly share code, notes, and snippets.

@biamuniz
Last active October 15, 2023 01:08
Show Gist options
  • Save biamuniz/f285a75622f7b693a3f9b8480de8b6e2 to your computer and use it in GitHub Desktop.
Save biamuniz/f285a75622f7b693a3f9b8480de8b6e2 to your computer and use it in GitHub Desktop.
Reconhecimentp de entidades nos títulos da Folha de S. Paulo
import pandas as pd
import spacy
materias_unique = pd.read_csv("data/materias_true.csv", sep = ",")
nlp = spacy.load('pt_core_news_md')
def extrair_entidades_pos(texto):
doc = nlp(texto)
entidades = [(ent.text, ent.label_) for ent in doc.ents]
pos_tags = [(token.text, token.pos_) for token in doc]
return entidades, pos_tags
# Aplicar a função aos títulos e obter as entidades e POS tagging em colunas separadas
materias_unique[['entidades', 'pos_tags']] = materias_unique['titulos'].apply(extrair_entidades_pos).apply(pd.Series)
materias_unique.columns
def extrair_entidades_pos(texto):
doc = nlp(texto)
entidades = [(ent.text, ent.label_) for ent in doc.ents]
pos_tags = [(token.text, token.pos_) for token in doc]
return entidades, pos_tags
# Aplicar a função aos títulos e obter as entidades e POS tagging em colunas separadas
materias_unique[['entidades', 'pos_tags']] = materias_unique['titulos'].apply(extrair_entidades_pos).apply(pd.Series)
# Explodir as listas das colunas entidades e pos_tags
materias_unique = materias_unique.explode('entidades').explode('pos_tags')
# Separar as colunas entidades e pos_tags em colunas individuais
materias_unique[['entidade', 'tipo_entidade']] = materias_unique['entidades'].apply(pd.Series)
materias_unique[['palavra', 'classe_gramatical']] = materias_unique['pos_tags'].apply(pd.Series)
# Remover as colunas entidades e pos_tags
materias_unique = materias_unique.drop(['entidades', 'pos_tags'], axis=1)
# Exibir o DataFrame com as colunas no formato tidy
print(materias_unique)
materias_unique.to_csv("data/05_materias_pos_tagging_wide.csv", encoding="utf-8", sep=";")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment