尝试使用 python 和 Google Colab 从数据框列中提取关键字

问题描述

长期读者,但如果可能的话,第一次发帖者迫切希望得到一些帮助。我的最后一年项目即将到期,但一个重大错误阻碍了我。仅就某些情况而言,我遵循 Salim Zubair 对音乐歌词 Sentiment Analysis on Billboard 100 进行情感分析的示例。

我已将自己的数据集汇总在一起,并尝试使用英国图表进行类似操作。我已经走了这么远,但在从我的“歌词”列中获取关键字时,仍然遇到了绊脚石。

我会将示例代码放在下面,这是我的数据框:

  Index  Artist      Song_Title      Record_label   Week_ID    Year Country Weeks_at_number_one Lyrics  Sentiment
0   1   Al Martino  "Here in My Heart"  Capitol   14/11/1952   1952 AMERICA      9  Here in my heart I'm alone,I'm so lonely\nHer...   0.055000

#Set the index of the dataframe to the WeekID. This sets us up to resample dataframe based on time
UK1s_df['Week_ID'] = pd.to_datetime(UK1s_df['Week_ID'],infer_datetime_format=True)
UK1s_df = UK1s_df.sort_values(by='Week_ID')
UK1s_df = UK1s_df.reset_index(drop=True)
#UK1s_df = UK1s_df.reset_index().set_index('Index')
UK1s_df = UK1s_df.set_index('Week_ID')

Resample daraframe lyrics by year. Get all the lyrics for every song for each year
lyrics_resample = UK1s_df['Lyrics'].resample('Y').sum()
lyrics_resample

#Use return_keywords function on lyrics_resample to get the top 20 keywords for each year
lyric_keywords = [return_keywords(x[1]) for x in lyrics_resample.items()]

lyric_keywords

它不断给我返回空数组,例如。 [[],[],[]]

调用上面的函数是:

    # Function to preprocess text
def preprocess(text):
    # Create Doc object
    doc = nlp(text,disable=['ner','parser'])
    # Generate lemmas
    lemmas = [token.lemma_ for token in doc]
    # Remove stopwords and non-alphabetic characters
    a_lemmas = [lemma for lemma in lemmas 
            if lemma.isalpha() and lemma not in stopwords]
    
    return ' '.join(a_lemmas)

#"""Extract Keywords from text"""
def return_keywords(texts):
    xkeywords = []
    values = keywords(text=preprocess(texts),split='\n',scores=True)
    for x in values[:10]:
        xkeywords.append(x[0])
    try:
        return xkeywords 
    except:
        return "no content"

现在我的智慧已经结束,截止日期已经过去,所以提前感谢任何可以提供帮助的人。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)