Home › Fóruns › Fórum Processamento de Linguagem Natural com spaCy e Python › Dependencia de Parsing de um par Verbo-substantivo
Marcado: Parsing de dependências 2
- Este tópico contém 4 respostas, 3 vozes e foi atualizado pela última vez 9 meses, 1 semana atrás por
Jones Granatyr.
- AutorPosts
- 9 de maio de 2022 às 17:08 #34561
Na aula “Parsing de dependências 2” o professor ele ja direciona onde buscar a palavra. Gostaria de saber como fazer sem identificar.
Por exemplo : “Nomear chefes de departamento ou gerentes e atribuir ou delegar responsabilidades a eles” como faço para extrair o par verbo-substantivo?11 de maio de 2022 às 16:55 #34591Olá Shin,
A classe gramatical (verbo ou substantivo) você pode pegar do atributo
pos_
dos tokens, e se o token for um substantivo, pode verificar no atributodep_
se ele é um objeto; em caso afirmativo, pode associar o substantivo com o verbo que vem antes.Em inglês temos outras opções como o atributo
noun_chunks
do documento, que reconheceria por exemplo que “chefes de departamento” é uma coisa só, mas em português a biblioteca é mais limitada.12 de maio de 2022 às 17:45 #34603Humm… Eu que fiz a pergunta outra vez sobre remoção de pontuação.
voce pode ver se esta correto entao a maneira como estou fazendo? Gostaria de extrair o par verb- substantivo das frases
<task_df = pd.read_excel(r'C:\Users\arquiv\Task Ratings.xlsx') list_task_id = list(set(task_df['Task ID'])) nlp = spacy.load('en_core_web_sm') doc = nlp( u'use geospatial technology to develop soil sampling grids or identify sampling sites for testing characteristics such as nitrogen, phosphorus, or potassium content, ph, or micronutrients.') import string string.punctuation def remove_punctuation(Text): punctuationfree="".join([i for i in Text if i not in string.punctuation]) return punctuationfree #storing the puntuation free text task_df['clean_msg']= task_df ['Task'].apply(lambda x:remove_punctuation(x)) task_df.head() task_df['msg_lower']= task_df['clean_msg'].apply(lambda x: x.lower()) task_df['msg_lower'] for sent in doc.sents: print([w.text for w in sent if w.dep_ == 'ROOT' or w.dep_ == 'pobj'])
from nltk.stem import WordNetLemmatizer lemmatizer = WordNetLemmatizer()
def give_pairs(string_): doc = nlp(string_) flag = 0 pairs = [] for token in doc: # print(token.text, token.pos_, token.dep_) if token.pos_ == 'VERB' and flag == 0: flag = 1 xx = token.text if token.pos_ == 'NOUN' and token.dep_ == 'dobj' and flag == 1: pair = [] pair.append(lemmatizer.lemmatize(xx)) pair.append(lemmatizer.lemmatize(token.text)) pairs.append(pair) flag = 0 return pairs>
- Esta resposta foi modificada 2 anos, 9 meses atrás por
Shin.
13 de maio de 2022 às 15:12 #34610CONSEGUI
9 de maio de 2024 às 09:49 #44750Qualquer outra dúvida é só avisar!
- Esta resposta foi modificada 2 anos, 9 meses atrás por
- AutorPosts
- Você deve fazer login para responder a este tópico.