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

  • Este tópico contém 3 respostas, 2 vozes e foi atualizado pela última vez 1 ano atrás por Shin.
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
    Profile photo ofdennyDenny 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 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.