Home › Forums › Fórum Processamento de Linguagem Natural com spaCy e Python › Dependencia de Parsing de um par Verbo-substantivo
Tagged: Parsing de dependências 2
- This topic has 4 replies, 3 voices, and was last updated 2 years ago by
Jones Granatyr.
- AuthorPosts
- 9 de maio de 2022 at 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 at 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_chunksdo 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 at 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>
- This reply was modified 4 years ago by
Shin.
13 de maio de 2022 at 15:12 #34610CONSEGUI
9 de maio de 2024 at 09:49 #44750Qualquer outra dúvida é só avisar!
- This reply was modified 4 years ago by
- AuthorPosts
- You must be logged in to reply to this topic.
