es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error con las etiquetas de recuento (nltk) en la columna del marco de datos.

Extrayendo la definición de diferentes palabras en cada oración

texto = data[‘OmschrijvingSkillwithoutstopwords’].tolist()
textos etiquetados = pos_tagsents(map(word_tokenize, texto))
data[‘pos’] = pos_tagsents(data[‘OmschrijvingSkillwithoutstopwords’].apply(word_tokenize).tolist())
data[‘Nombres’] = data[‘pos’].apply(lambda row: [i[0] for i in row if i[1] == ‘NN’])
data[‘Verbos’] = data[‘pos’].apply(lambda row: [i[0] for i in row if i[1] == ‘VB’])
data[‘Adj’] = data[‘pos’].apply(lambda row: [i[0] for i in row if i[1] == ‘JJ’])
data[‘NOUN Plural’] = data[‘pos’].apply(lambda row: [i[0] for i in row if i[1] == ‘NNS’])
data[‘OmschrijvingSkillwithoutstopwords’] = data[‘OmschrijvingSkillwithoutstopwords’].astype(str)
data[‘OmschrijvingSkillwithoutstopwords’] = data[‘OmschrijvingSkillwithoutstopwords’].str.split(“t”, n=1, expand=True)

La salida es

0       [(beschikbaarheid, NN), (mili, NN)]
1                               [(par, NN)]
2                             [(opera, NN)]
3                              [(mili, NN)]
4                             [(opera, NN)]
                       ...
4696                             [(on, IN)]
4697                 [(veiligheidssys, NN)]
4698                                     []
4699                              [(a, DT)]
4700                              [(a, DT)]
Name: pos, Length: 4701, dtype: object

Quiero contar desde data['pos'] cuántos sustantivos, verbos, etc. tengo, por lo que quiero tener una salida:

('NN':3, 'DT':2)

Intenté el siguiente código:

Counter([j for i, j in pos_tag(word_tokenize(tagged_text))])

pero obtuve un error:

TypeError: 'function' object is not iterable

Tengo la idea de que debido a que tengo una lista, no puedo usar Counter.
Intenté convertir data['OmschrijvingSkillwithout_stopwords'] en un diccionario, pero no funcionó. ¿Alguien puede ayudarme a contar mis etiquetas para saber cuántas etiquetas tengo?

Gracias

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para contar las etiquetas en data['pos'], puedes usar la función Counter junto con una comprensión de lista anidada para extraer las etiquetas de la lista de tuplas en cada fila:

    from collections import Counter
    
    tag_counts = Counter(tag for row in data['pos'] for tag, _ in row)
    print(tag_counts)
    

    Esto mostrará la cantidad de etiquetas para todas las etiquetas en data['pos'], sin importar si son sustantivos, verbos, etc.

    Si solo quieres contar etiquetas específicas, puedes usar un enfoque similar pero filtrar las etiquetas que deseas:

    noun_counts = Counter(tag for row in data['pos'] for tag, _ in row if tag == 'NN')
    verb_counts = Counter(tag for row in data['pos'] for tag, _ in row if tag == 'VB')
    adj_counts = Counter(tag for row in data['pos'] for tag, _ in row if tag == 'JJ')
    noun_plural_counts = Counter(tag for row in data['pos'] for tag, _ in row if tag == 'NNS')
    print('Sustantivos:', noun_counts)
    print('Verbos:', verb_counts)
    print('Adjetivos:', adj_counts)
    print('Plurales de sustantivos:', noun_plural_counts)
    

    Esto mostrará la cantidad de cada una de las etiquetas especificadas.

Comments are closed.