lematize uma coluna inteira usando a função lambda
Sep 09 2020
Tenho esse código testado para uma frase e quero convertê-lo para que possa lematizar uma coluna inteira onde cada linha consiste em palavras sem pontuação como: deportivas calcetin hombres deportivas shoes
import wordnet, nltk
nltk.download('wordnet')
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet
import pandas as pd
df = pd.read_excel(r'C:\Test2\test.xlsx')
# Init the Wordnet Lemmatizer
lemmatizer = WordNetLemmatizer()
sentence = 'FINAL_KEYWORDS'
def get_wordnet_pos(word):
"""Map POS tag to first character lemmatize() accepts"""
tag = nltk.pos_tag([word])[0][1][0].upper()
tag_dict = {"J": wordnet.ADJ,
"N": wordnet.NOUN,
"V": wordnet.VERB,
"R": wordnet.ADV}
return tag_dict.get(tag, wordnet.NOUN)
#Lemmatize a Sentence with the appropriate POS tag
sentence = "The striped bats are hanging on their feet for best"
print([lemmatizer.lemmatize(w, get_wordnet_pos(w)) for w in nltk.word_tokenize(sentence)])
Vamos supor que o nome da coluna seja df ['palavras-chave'], você pode me ajudar a usar uma função lambda para lematizar a coluna inteira como eu lematizo a frase acima?
Muito obrigado antecipadamente
Respostas
AvivYaniv Sep 09 2020 at 16:41
Aqui está:
- Use
applypara aplicar nas frases da coluna - Use a expressão lambda que obtém um
sentencecomo entrada e aplica a função que você escreveu, de forma semelhante a como você usou na instrução de impressão
Como palavras-chave lematizadas:
# Lemmatize a Sentence with the appropriate POS tag
df['keywords'] = df['keywords'].apply(lambda sentence: [lemmatizer.lemmatize(w, get_wordnet_pos(w)) for w in nltk.word_tokenize(sentence)])
Como uma frase lematizada ( joinpalavras-chave usando ''):
# Lemmatize a Sentence with the appropriate POS tag
df['keywords'] = df['keywords'].apply(lambda sentence: ' '.join([lemmatizer.lemmatize(w, get_wordnet_pos(w)) for w in nltk.word_tokenize(sentence)]))
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino