Dependencia de Parsing de um par Verbo-substantivo

Home Fóruns Fórum Processamento de Linguagem Natural com spaCy e Python Dependencia de Parsing de um par Verbo-substantivo

Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #34561
    Shin
    Participante

      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?

      #34591
      Denny Ceccon
      Moderador

        Olá 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 atributo dep_ 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.

        #34603
        Shin
        Participante

          Humm… 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 1 ano, 11 meses atrás por Shin.
          #34610
          Shin
          Participante

            CONSEGUI

          Visualizando 4 posts - 1 até 4 (de 4 do total)
          • Você deve fazer login para responder a este tópico.