python词频统计(re和jieba模块的使用),获取词频TOP50的词组

参考

https://www.jianshu.com/p/28718ba04bc9?from=groupmessage
https://blog.csdn.net/qq_32392597/article/details/96147620

爬虫内容

在这里插入图片描述
对应于
在这里插入图片描述

代码

# -*- coding: utf-8 -*-
# import requests
import re
from bs4 import BeautifulSoup
from  urllib.request import urlopen
import collections # 词频统计库
import jieba # 解霸分词

# 获取网页内容
soup = BeautifulSoup(urlopen('http://www.gov.cn/zhengce/2020-02/05/content_5474884.htm'),'lxml')

for data in soup.select('.pages_content'):
    # 不转换成str会报错:TypeError: expected string or bytes-like object
    data = str(data)

    # 文本获取
    pattern = re.compile(r'<p style=\"text-indent.*?12pt;\">(.*?)</p>',re.S)
    content=re.findall(pattern,data)
    str = ''.join(str(i) for i in content)

    # 文本预处理
    pattern2 = re.compile(u'\t|\n|“|>|<|”|)|(|\.|-|:|;|\)|\(|\?|"|[span]') # 定义正则表达式匹配模式
    string_data = re.sub(pattern2, '', str) # 将符合模式的字符去除

    # 文本分词
    seg_list_exact = jieba.cut(string_data, cut_all = False) # 精确模式分词
    object_list = []
    remove_words = [u'的', u',',u'和', u'是', u'随着', u'对于', u'对',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',
                    u'通常',u'如果',u'我们',u'需要'] # 自定义去除词库

    for word in seg_list_exact: # 循环读出每个分词
        if word not in remove_words: # 如果不在去除词库中
            object_list.append(word) # 分词追加到列表

    # 词频统计
    word_counts = collections.Counter(object_list) # 对分词做词频统计
    word_counts_top50 = word_counts.most_common(50) # 获取前50最高频的词
    print (word_counts_top50) # 输出检查

输出结果

在这里插入图片描述

Python中进行词频统计分类,通常是指对一段文本中的词汇进行频率统计,并根据某些标准(如频率高低、特定类别等)进行分类的过程。这一过程可以分为几个步骤: 1. 文本预处理:包括去除标点符号、数字、停用词(如“的”、“和”等常用但不具有实际意义的词),以及进行词干提取(Stemming)或词形还原(Lemmatization)等。 2. 分词:将处理后的文本分割成单词或词组,这一步骤在英文中较为简单,但对于中文等语言则需要特殊的分词技术。 3. 词频统计统计每个单词在文本中出现的次数,通常使用字典(dict)来存储单词和对应的频率。 4. 分类:根据词频统计结果进行分类。这可以基于多种标准,例如设定一个频率阈值,将高于阈值的词归为高频词,低于阈值的词归为低频词;或者根据业务需求将词汇按照主题、领域等标准分类。 下面是一个简单的Python代码示例,实现了基本的词频统计: ```python import jieba from collections import Counter # 示例文本 text = "自然语言处理是计算机科学、人工智能、语言学领域研究语言信息的处理问题。" # 使用jieba进行中文分词 words = jieba.lcut(text) # 统计词频 word_counts = Counter(words) # 输出词频统计结果 print(word_counts) # 根据词频结果分类(示例:取出前三个高频词) top_three_words = word_counts.most_common(3) print(top_three_words) ``` 在实际应用中,你可能需要根据具体的文本内容和分类需求调整预处理步骤和分类标准。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值