NLP usando NLTK tomar la unión entre la lista tokenizada y el archivo csv

mast_dict = pd.read_csv('C:/Users/ZAM/Desktop/LoughranMcDonald_MasterDictionary_2018.csv')
stop_words = set(stopwords.words('english')) 
#print(stopwords.words('english'))

filtered_text = []
with open('C:/Users/ZAM/Downloads/HEURO/file0.txt') as fin:
    tokens = word_tokenize(fin.read()) 
for r in words:  
    if not r in stop_words:  
        filtered_text.append(r)
filtered_text = [''.join(c for c in s if c not in string.punctuation) for s in filtered_text]
filtered_text = [x for x in filtered_text if not (x.isdigit())]
print(filtered_text)
Output
['BEGIN', 'PRIVACYENHANCED', 'MESSAGE', 'ProcType', '2001MICCLEAR', 'OriginatorName', 'webmasterwwwsecgov', 'OriginatorKeyAsymmetric', 'MFgwCgYEVQgBAQICAf8DSgAwRwJAW2sNKK9AVtBzYZmr6aGjlWyK3XmZv3dTINen', 'TWSM7vrzLADbmYQaionwg5sDW3P6oaM5D3tdezXMm7z1TBtwIDAQAB', 'MICInfo', 'RSAMD5RSA', 'RHiO0hkbOslk2iB2eQM8lSgcXyjFKRha0FtFBz3xsf7Z6kKaWhrhStjKFZUvWZf', 'eDg67b8ZljTBWxC8ybQfg', ...]

El mast_dict variable contiene alrededor de 86K palabras en inglés con puntajes positivos, puntuaciones negativas, puntajes de polaridad, etc. Quiero hacer una articulación entre el filtered_textlista que contiene palabras tokenizadas como se muestra en mast_dict archivo CSV para que pueda obtener las puntuaciones de las palabras tokenizadas en filtered_text lista.

Avísame. ¡Gracias!

Pregunta hecha hace 3 años, 4 meses, 28 días - Por syntaxsculptor


2 Respuestas:

  • Para asociar las palabras tokenizadas en la lista filtered_text con las puntuaciones del archivo CSV mast_dict, puedes seguir los siguientes pasos:

    • Primero, carga el archivo CSV `mast_dict` en un DataFrame de pandas.
    • Recorre la lista `filtered_text` y para cada palabra verifica si se encuentra en el DataFrame cargado previamente y, en caso afirmativo, obtén las puntuaciones correspondientes.
    • Puedes almacenar las palabras con sus puntuaciones en un diccionario para que puedas acceder fácilmente a ellas.

    Aquí te dejo un ejemplo de cómo podrías hacerlo:

    python
    import pandas as pd
    from nltk.corpus import stopwords
    from nltk.tokenize import word_tokenize
    import string
    
    

    Cargar el archivo CSV en un DataFrame

    mast_dict = pd.read_csv('C:/Users/ZAM/Desktop/LoughranMcDonald_MasterDictionary_2018.csv')

    Tokenizar el archivo de texto

    stop_words = set(stopwords.words('english')) filtered_text = [] with open('C:/Users/ZAM/Downloads/HEURO/file0.txt') as fin: tokens = word_tokenize(fin.read()) for word in tokens: if word.lower() not in stop_words and word.isalpha(): filtered_text.append(word.lower())

    Crear un diccionario para almacenar las palabras y sus puntuaciones

    word_scores = {} for word in filtered_text: if word in mast_dict['Word'].values: row = mast_dict[mast_dict['Word'] == word] word_scores[word] = {'Positive': row['Positive'].values[0], 'Negative': row['Negative'].values[0]}

    Imprimir las palabras y sus puntuaciones

    for word, score in word_scores.items(): print(f'{word}: Positive = {score["Positive"]}, Negative = {score["Negative"]}')

    Este código te permitirá asociar las palabras tokenizadas en filtered_text con sus puntuaciones del archivo CSV mast_dict. Puedes adaptarlo según tus necesidades específicas. ¡Espero que te sea útil!

    Respondida el Dec 18, 2020 a las 14:15 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para unir la lista tokenizada (filtered_text) con el archivo CSV (mast_dict) y obtener las puntuaciones de las palabras tokenizadas, puedes usar el siguiente código:

    python
    import pandas as pd
    
    

    Leer el archivo CSV

    mast_dict = pd.read_csv('C:/Users/ZAM/Desktop/LoughranMcDonald_MasterDictionary_2018.csv')

    Obtener la lista de palabras del archivo CSV

    mast_dict_words = list(mast_dict['Word'].values)

    Crear un conjunto de palabras del archivo CSV

    mast_dict_set = set(mast_dict_words)

    Crear un conjunto de palabras de la lista tokenizada

    filtered_text_set = set(filtered_text)

    Obtener la intersección de los dos conjuntos (unión)

    intersection = filtered_text_set.intersection(mast_dict_set)

    Obtener las puntuaciones de las palabras en la intersección

    scores = [] for word in intersection: score = mast_dict[mast_dict['Word'] == word]['Positive Score'].values[0] scores.append(score)

    Imprimir las puntuaciones

    print(scores)

    Este código creará un conjunto de palabras del archivo CSV y un conjunto de palabras de la lista tokenizada. Luego, obtendrá la intersección de los dos conjuntos, que representa las palabras que aparecen en ambas listas. Finalmente, iterará sobre las palabras de la intersección y obtendrá sus puntuaciones del archivo CSV.

    Respondida el Dec 18, 2020 a las 14:28 - por Gemini

    Votos positivos: 0 | Votos negativos: 0