栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

jieba分词库加词频统计

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jieba分词库加词频统计

        对象上个历史课老师竟然让用jieba进行分词然后找关系。学历史的文科生哎,老师就一个人装逼。嗯——,于是自己写了这段代码。让她们用。初来乍到,不是很好,凑活能用。


 首先导入用到的库:

 jieba库安装网上一大堆。自行解决吧(pip不是很好,尝试官网下载,或者清华的源)

import requests
from bs4 import BeautifulSoup
import jieba
# jieba.set_dictionary("./dict.txt")
# jieba.initialize()
import re

 这是装逼获取ip地址的:

def get_ip():
    try:
        header = {
            'User-Agent': '这里要填写'
        }
        responds = requests.get('http://ip111.cn/', headers=header)
        soup = BeautifulSoup(responds.content.decode(), 'lxml')
        ip = soup.find('div', class_='card-body').text.replace('n', '').replace('这是您访问国内网站所使用的IP', '').replace(' ', '')
        pattern = re.compile(r'[^u4e00-u9fa5]')
        ip = re.sub('[u4e00-u9fa5]', '', ip)
        responds1 = requests.get(f'https://www.ip138.com/iplookup.asp?ip={ip}&action=2', headers=header)
        soup1 = BeautifulSoup(responds1.content.decode('gb2312'), 'lxml')
        soup1 =str(soup1)
        soup1 = re.findall('ASN归属地":".*?"', soup1)[0].replace('ASN归属地":"', '').replace('"', '')
        print(f'欢迎来自{soup1}的朋友!')
    except:
        pass

 实际效果:

                                        欢迎来自**********的朋友!

 接下来是分词:  

def cut():
    global list1
    str1=''
    for i in range(len(list1)):
        str1=str1+list1[i]+' '
    print(str1)
    print('--------------------------- 分词结束!---------------------------------')
def input_user():
    global list1
    global choose_user
    sstr="end"
    text_input=""
    print('#   输入文本  单击回车后输入end再次单击回车  这样用来表示输入结束   #')
    print('请输入:')
    for line in iter(input,sstr):
        text_input+= line+"n"
    text=re.sub(r'[W]','',text_input).replace('n','')
    list1=list(jieba.cut(text,cut_all=False))
    choose_user=input('请选择操作(输入对应数字点击回车):1.分词  2.词频统计  3.分词加词频统计 4.退出n请输入:')

 最后是词频统计,除去相同的词,去掉单个的字进行统计:

def frequency():
    list2=[]
    for w in range(5):
        for i in list1:
            try:
                a = i[1]
            except:
                list1.remove(i)

    for s in list1:
        if s not in list2:
            list2.append(s)
    from collections import Counter
    wordcount = Counter(list1)
    finall_list = list(wordcount.most_common(len(list2)))
    for e in finall_list:
        print(str(e).replace('(', '').replace(')', '').replace(',', ':').replace("'", ''))
    print('--------------------------- 词频统计结束!---------------------------------')

 完整代码,注意浏览器代理要自己填!!!!

import requests
from bs4 import BeautifulSoup
import jieba
# jieba.set_dictionary("./dict.txt")
# jieba.initialize()
import re
list1=[]
choose_user=4
def get_ip():
    try:
        header = {
            'User-Agent': '这里要填写'
        }
        responds = requests.get('http://ip111.cn/', headers=header)
        soup = BeautifulSoup(responds.content.decode(), 'lxml')
        ip = soup.find('div', class_='card-body').text.replace('n', '').replace('这是您访问国内网站所使用的IP', '').replace(' ', '')
        pattern = re.compile(r'[^u4e00-u9fa5]')
        ip = re.sub('[u4e00-u9fa5]', '', ip)
        responds1 = requests.get(f'https://www.ip138.com/iplookup.asp?ip={ip}&action=2', headers=header)
        soup1 = BeautifulSoup(responds1.content.decode('gb2312'), 'lxml')
        soup1 =str(soup1)
        soup1 = re.findall('ASN归属地":".*?"', soup1)[0].replace('ASN归属地":"', '').replace('"', '')
        print(f'欢迎来自{soup1}的朋友!')
    except:
        pass
def cut():
    global list1
    str1=''
    for i in range(len(list1)):
        str1=str1+list1[i]+' '
    print(str1)
    print('--------------------------- 分词结束!---------------------------------')
def frequency():
    list2=[]
    for w in range(5):
        for i in list1:
            try:
                a = i[1]
            except:
                list1.remove(i)

    for s in list1:
        if s not in list2:
            list2.append(s)
    from collections import Counter
    wordcount = Counter(list1)
    finall_list = list(wordcount.most_common(len(list2)))
    for e in finall_list:
        print(str(e).replace('(', '').replace(')', '').replace(',', ':').replace("'", ''))
    print('--------------------------- 词频统计结束!---------------------------------')
def input_user():
    global list1
    global choose_user
    sstr="end"
    text_input=""
    print('#   输入文本  单击回车后输入end再次单击回车  这样用来表示输入结束   #')
    print('请输入:')
    for line in iter(input,sstr):
        text_input+= line+"n"
    text=re.sub(r'[W]','',text_input).replace('n','')
    list1=list(jieba.cut(text,cut_all=False))
    choose_user=input('请选择操作(输入对应数字点击回车):1.分词  2.词频统计  3.分词加词频统计 4.退出n请输入:')
get_ip()
input_user()
while choose_user!='4':
    if choose_user=='1':
        cut()
    elif choose_user=='2':
        frequency()
    elif choose_user=='3':
        cut()
        frequency()
    else:
        print('输入错误,请重新输入')
    choose_user=input('请选择操作(输入对应数字点击回车):1.分词  2.词频统计  3.分词加词频统计 4.退出n请输入:')
print('感谢使用!')
input('Press Enter to exit...')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号