机器学习入门-贝叶斯统计语料库的词频.groupby() collections

本文介绍了一种使用Python和jieba分词库对中文语料库进行词频统计的方法,包括导入数据、分词、去除停用词、词频统计及排序等步骤,适用于文本挖掘和自然语言处理领域的研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1..groupby()[].agg(by={})

2. collections.de...(lambda:1)

统计的单词是语料库中所有的词, 对Dataframe统计单词词频,同时增加一列数据count,这里我们使用reset_index,sort_values(by = ['counts], ascending=False)

这里使用的数据是经过分词后的语料库里所有的数据,该数据已经去除了停用词,

第一步:载入语料库的数据

第二步:进行分词

第三步:载入停用词,对停用词数据进行序列化tolist(),然后去除分词后语料库中的停用词

第四步: 使用grouby()[].agg 进行词频统计,使用reset_index().sort_values根据新增的counts列进行排序操作

# 1.导入数据语料的新闻数据
df_data = pd.read_table('data/val.txt', names=['category', 'theme', 'URL', 'content'], encoding='utf-8')

# 2.对语料库进行分词操作
df_contents = df_data.content.values.tolist()

# list of list 结构
Jie_content = []
for df_content in df_contents:
    split_content = jieba.lcut(df_content)
    if len(split_content) > 1 and split_content != '\t\n':
        Jie_content.append(split_content)

# 3. 导入停止词的语料库, sep='\t'表示分隔符, quoting控制引号的常量, names=列名, index_col=False,不用第一列做为行的列名, encoding
stopwords = pd.read_csv('stopwords.txt', sep='\t', quoting=3, names=['stopwords'], index_col=False, encoding='utf-8')
print(stopwords.head())

# 对文本进行停止词的去除
def drop_stops(Jie_content, stopwords):
    clean_content = []
    all_words = []
    for j_content in Jie_content:
        line_clean = []
        for line in j_content:
            if line in stopwords:
                continue
            line_clean.append(line)
            all_words.append(line)
        clean_content.append(line_clean)

    return clean_content, all_words
# 将DateFrame的stopwords数据转换为list形式
stopwords = stopwords.stopwords.values.tolist()
clean_content, all_words = drop_stops(Jie_content, stopwords)
print(clean_content[0])

# 4 .对所有词统计词频,做一个字典,然后进行排序, 这里也可以使用collections实现

df_dict = pd.DataFrame({'content':clean_content})
all_words_pd = pd.DataFrame({'all_word':all_words})
all_words_pd = all_words_pd.groupby(by=['all_word'])['all_word'].agg({'count':np.size})
all_words_pd = all_words_pd.reset_index().sort_values(by=['count'], ascending=False)
print(all_words_pd.head())

 

转载于:https://www.cnblogs.com/my-love-is-python/p/10290242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值