houlin222 2024-04-23 21:35 采纳率: 0%
浏览 4

英文文本进行分词代码报错

对数据进行清洗,得到了cleaned_text,形式如下:

img


想要对cleaned_text这一列的文本进行分词,之后探究整个文本里词频最高的前十五个单词,根据网上找的代码如下:

for cyber_type in df.cleaned_text.unique():
    top50_word = df[df.cleaned_text == cyber_type].str.split(expand=True).stack().value_counts()[:15]
    fig = px.bar(top50_word, color=top50_word.values, color_continuous_scale=px.colors.sequential.RdPu, custom_data=[top50_word.values])
    fig.update_traces(marker_color='red')
    fig.update_traces(hovertemplate='<b>Count: </b>%{customdata[0]}')
    fig.update_layout(title=f"Top 15 words for {cyber_type}",
                     template='simple_white',
                     hovermode='x unified')
    fig.show()


但是一直报错:

img

请问应该怎么修改?感谢各位,谢!

  • 写回答

6条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-23 21:35
    关注

    引自免费微信小程序:皆我百晓生

    看起来您在尝试从DataFrame中提取特定类型的cleaned_text并分析其包含的单词。然而,在您的代码中有一些小错误导致了这个AttributeError。这里是修复后的代码:

    首先,确保您的数据已经正确地进行了清洗,并且cleaned_text列确实存在。接下来,我们将遍历每种cyber_type,然后对相应的cleaned_text进行分词、计数并绘制条形图。

    import pandas as pd
    import plotly.express as px
    
    # 假设您的DataFrame名为df,且已经包含了清洗后的数据
    # df = ...
    
    # 定义一个函数来进行分词和计数
    def count_words(dfCyberType):
        word_counts = dfCyberType["cleaned_text"].str.split(expand=True).stack().value_counts()[:15]
        return word_counts
    
    # 对于每一种cyber_type,创建一个新的DataFrame并计算前15个最常出现的单词
    for cyber_type in df["cleaned_text"].unique():
        dfCyberType = df[df["cleaned_text"] == cyber_type]
        top50_word = count_words(dfCyberType)
    
        # 使用plotly express创建条形图
        fig = px.bar(top50_word, x=top50_word.index, y=top50_word.values,
                     title=f"Top 15 words for {cyber_type}", template="simple_white",
                     hover_name=top50_word.index, hover_data=["values"],
                     color_discrete_sequence=px.colors.sequential.RdPu)
        
        fig.update_traces(marker_color='red', hovertemplate="<b>Word: %{hovertext}</b><br><b>Count: </b>%{y}")
        fig.show()
    

    这段代码应该能解决您的问题。注意,我将str.split()方法应用到了dfCyberType["cleaned_text"]上,而不是整个DataFrame,这样就避免了引发错误的部分。同时,我还调整了px.bar中的参数,以便更好地显示结果。如果您的数据结构与示例有所不同,可能需要根据实际情况稍作调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月23日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见