精华内容
下载资源
问答
  • 2021-03-13 21:11:57
    import jieba
    txt = open("in.txt", "r", encoding='utf-8').read()
    words  = jieba.lcut(txt)
    counts = {}
    for word in words:
        if len(word) == 1:
            continue
        else:
            counts[word] = counts.get(word,0) + 1
    items = list(counts.items())
    items.sort(key=lambda x:x[1], reverse=True)
    for i in range(2000)://统计数量
        word, count = items[i]
        #print ("{0:<10}{1:>5}".format(word, count))
        t=open('count.txt', 'a',encoding='utf-8')
        t.write("{0:<10}{1:>5}".format(word, count)+"\n")

     

    更多相关内容
  • Python中文词频统计

    2018-03-28 19:43:47
    以下是关于小说的中文词频统计 这里有三个文件,分别为novel.txt、punctuation.txt、meaningless.txt。 这三个是小说文本、特殊符号和无意义词
  • 本篇文章主要介绍了python实现简单中文词频统计示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • python中文分词+词频统计

    千次阅读 2022-02-27 15:39:40
    提示:文章写完后,目录可以自动生成,如何生成可...分词并去停用词(此时可以直接利用python原有的函数进行词频统计) 4.输出分词并去停用词的有用的词到txt 5.函数调用 6.结果 ​ 总结 前言 ...

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    前言

    本文记录了一下Python在文本处理时的一些过程+代码

    一、文本导入

    我准备了一个名为abstract.txt的文本文件

    接着是在网上下载了stopword.txt(用于结巴分词时的停用词)

    有一些是自己觉得没有用加上去的 

    另外建立了自己的词典extraDict.txt

    准备工作做好了,就来看看怎么使用吧!

    二、使用步骤

    1.引入库

    代码如下:
     

    import jieba
    from jieba.analyse import extract_tags
    from sklearn.feature_extraction.text import TfidfVectorizer
     
    

    2.读入数据

    代码如下:

    jieba.load_userdict('extraDict.txt')  # 导入自己建立词典

    3.取出停用词表

    def stopwordlist():
        stopwords = [line.strip() for line in open('chinesestopwords.txt', encoding='UTF-8').readlines()]
        # ---停用词补充,视具体情况而定---
        i = 0
        for i in range(19):
            stopwords.append(str(10 + i))
        # ----------------------
    
        return stopwords

    4.分词并去停用词(此时可以直接利用python原有的函数进行词频统计)

    def seg_word(line):
        # seg=jieba.cut_for_search(line.strip())
        seg = jieba.cut(line.strip())
        temp = ""
        counts = {}
        wordstop = stopwordlist()
        for word in seg:
            if word not in wordstop:
                if word != ' ':
                    temp += word
                    temp += '\n'
                    counts[word] = counts.get(word, 0) + 1#统计每个词出现的次数
        return  temp #显示分词结果
        #return str(sorted(counts.items(), key=lambda x: x[1], reverse=True)[:20])  # 统计出现前二十最多的词及次数

    5. 输出分词并去停用词的有用的词到txt

    def output(inputfilename, outputfilename):
        inputfile = open(inputfilename, encoding='UTF-8', mode='r')
        outputfile = open(outputfilename, encoding='UTF-8', mode='w')
        for line in inputfile.readlines():
            line_seg = seg_word(line)
            outputfile.write(line_seg)
        inputfile.close()
        outputfile.close()
        return outputfile

    6.函数调用

    if __name__ == '__main__':
        print("__name__", __name__)
        inputfilename = 'abstract.txt'
        outputfilename = 'a1.txt'
        output(inputfilename, outputfilename)

    7.结果

     

    总结


    以上就是今天要讲的内容,本文仅仅简单介绍了python的中文分词及词频统计,欢迎指正!

    展开全文
  • python词频统计

    千次阅读 2022-03-13 21:40:21
    中文、英文词频统计。英文有空格或者标点符号分隔,中文单词之间缺少分词符,需要用分词函数

    1、Hamlet英文词频统计

    txt = open('hamlet.txt','r').read()
    
    # 将大写变小写,排除大小写差异的干扰
    txt = txt.lower()
    
    # 将文本中的特殊字符转化为空格,统一分割方式
    for ch in ',./?;:'"<>=+-[]{}!~%@()#':
        txt.replace(ch, ' ')     
    
    words = txt.split()    # 按空格分隔,列表形式返回
    counts = {}         #计数器
    for word in words:
        counts[word] = counts.get(word, 0) + 1
    
    # 按照词频从高到低排序
    counts = sorted(counts.items(), key = lambda x: x[1], reverse = True)
    
    for i in range(10):
        word, count = counts[i]
        print('{0:<10}:{0:>5}'.format(word,count)
    

    运行之后发现高频单词大多数是冠词、代词、连接词等语法型词汇,并不能代表文章含义
    建立一个排除词库encludes

    excludes = {'the','and','of','you','a','i','my','in'}
    txt = open('hamlet.txt', 'r').read()
    
    txt = txt.lower()    # 排除大小写干扰
    
    for ch in ',./?;:'"<>=+-[]{}!~%@()#':   # 统一分割字符
    	txt = txt.replace(ch, ' ') 
    
    words = txt.split()      # 按空格分词
    
    counts = {}        # 计数器
    for word in words:
    	counts[word] = counts.get(word, 0) + 1
    for word in excludes:
    	del counts[word]
    # 词频从高到低排序
    counts = sorted(counts.items(), key = lambda x:x[1],reverse = True)
    
    for i in range(10):
    	print('{:<10}:{:>5}'.format(counts[i][0],counts[i][1])
    

    2、python之jieba库

    1)重要的第三方中文分词函数库
    2)安装pip3 install jieba
    3)常用函数

    3、《三国演义》中文人物出场统计

    import jieba
    txt = open('三国演义.txt','r', encoding='utf-8').read()
    words = jieba.lcut(txt)      # 精确模式,返回列表类型
    
    counts = {}
    for word in words:
        if len(word) == 1:     # 排除单个字符分词的影响
            continue
        else:
            counts[word] = counts.get(word, 0) + 1
    # 按词频从高到低排序
    counts = sorted(counts.items(), key = lambda x: x[1], reverse = True)
    
    for i in range(5):
        word, count = counts[i]
        print('{:<10}{:>5}'.format(word, count))
    

    【代码改进】
    1、排除与人名无关的词汇
    2、同一个人有不同称谓

    encludes = {'将军','却说','荆州','二人','不可','不能','如此'}
    import jieba
    txt = open('三国演义.txt','r', encoding='utf-8').read()
    
    words = jiaba.lcut(s)   # 精确模式分词,返回list
    
    counts = {}
    for word in words:
    	if len(word) == 1:   # 排除单字符
    		continue
    	# 将一人多称谓统一
    	elif word == '诸葛亮' or '孔明曰':
    		rword = '孔明'
    	elif word == '关公' or '云长':
    		rword = '关羽'
    	elif word == '玄德' or '玄德曰':
    		rword = '刘备'
    	elif word == '孟德' or '丞相':
    		rword = '曹操'
    	else:
    		rword = word
    	counts[rword] = counts.get(rword, 0) + 1
    
    # 排除与人名无关的词
    for word in excludes:
    	del counts[word]
    #按词频排序
    counts = sorted(counts.items(), key = lambda x:x[1], reverse=True)
    
    for i in range(10):
    	print('{:<10}:{:>5}'.format(counts[i][0], counts[i][1]))
    
    展开全文
  • python实现中文词频统计

    千次阅读 多人点赞 2020-04-11 23:33:38
    本次代码基于用python实现英文词频统计,重复部分不再赘述。 jieba库的安装 具体参考如下链接的方法 Python安装jieba库的具体步骤 我把下载的文件解压到了桌面,如下是我的操作 注意事项 1.要注意与英文的区别,...

    本次代码基于用python实现英文词频统计,重复部分不再赘述。

    jieba库的安装

    具体参考如下链接的方法
    Python安装jieba库的具体步骤
    我把下载的文件解压到了桌面,如下是我的操作
    安装jieba的操作

    注意事项

    1.要注意与英文的区别,英文里要把标点替换成空格,中文里要把标点删去,而不是换成空格。为什么不用remove?因为remove只是换掉第一个出现的标点。所以还是采用replace。
    2.在对列表循环的过程中执行remove操作,会产生问题。所以,在去除单个字的词的时候,我们新建了一个列表。而不是在原列表中移除单个字的词。

    try_list = [1,2,1,1,3,4,1,21,1,1]
    for i in try_list:
      if i == 1:
        try_list.remove(i)
    print(try_list)
    #1并没有删完
    #[2, 3, 4, 21, 1, 1]
    

    若要进一步探究原因,可访问如下链接
    python中remove的一些坑

    实现代码

    import jieba
    #获得去除标点的文本
    def get_text(file_name):
      with open(file_name, 'r', encoding='utf-8') as fr:
        text = fr.read()
        #要删除的标点
        del_ch = ['《',',','》','\n','。','、',';','"',\
          ':',',','!','?',' ']
        for ch in del_ch:
          text = text.replace(ch,'')#这里无需替换成空格
        return text
    
    #文件名改为要分析的文件
    file_name = 'threekingdoms.txt'
    text = get_text(file_name)
    vlist = jieba.lcut(text)#调用jieba实现分词,返回列表
    
    res_dict = {}
    #进行词频统计
    for i in vlist:
      res_dict[i] = res_dict.get(i,0) + 1
    res_list = list(res_dict.items())
    #降序排序
    res_list.sort(key = lambda x:x[1], reverse = True)
    fin_res_list = []
    
    #去除单个字的词
    for item in res_list:
      if(len(item[0])>=2):
        fin_res_list.append(item)
    
    for i in range(100):
      word,count = fin_res_list[i]
      pstr = str(i+1) + ':'
      print(pstr, end=' ')
      print(word,count)
    

    另一个版本

    在最后的处理有所不同,这个主要是受老师的启发

    import jieba
    #获得去除标点的文本
    def get_text(file_name):
      with open(file_name, 'r', encoding='utf-8') as fr:
        text = fr.read()
        #要删除的标点
        del_ch = ['《',',','》','\n','。','、',';','"',\
          ':',',','!','?',' ']
        for ch in del_ch:
          text = text.replace(ch,'')#这里无需替换成空格
        return text
    
    #文件名改为要分析的文件
    file_name = 'threekingdoms.txt'
    text = get_text(file_name)
    vlist = jieba.lcut(text)#调用jieba实现分词,返回列表
    
    res_dict = {}
    exclude = ['却说','不能','如何','左右','二人','不可',\
      '荆州','如此','商议','主公','军士']
    #进行词频统计
    for i in vlist:
      if len(i)<=1:
        continue
      elif i in exclude:
        continue
      elif i == '玄德曰':
        ri = '玄德'
      elif i == '孔明曰':
        ri = '诸葛亮'
      elif i == '孔明':
        ri = '诸葛亮'
      else:
        ri = i
      res_dict[ri] = res_dict.get(ri,0) + 1
    res_list = list(res_dict.items())
    #降序排序
    res_list.sort(key = lambda x:x[1], reverse = True)
     
    
    for i in range(10):
      word,count = res_list[i]
      pstr = str(i+1) + ':'
      print(pstr, end=' ')
      print(word,count)
    
    展开全文
  • Python词频统计

    2021-03-06 23:27:49
    英文文本词频统计统计英文词频分为两步:文本去噪及归一化使用字典表达词频#CalHamletV1.pydef getText():txt = open("hamlet.txt","r").read()txt = txt.lower()for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_...
  • Python中英文词频统计

    千次阅读 2022-04-10 09:39:28
    Python中英文词频统计的简单使用方法
  • Python——词频统计

    千次阅读 2021-08-25 20:54:05
    Python——词频统计
  • Python】三国演义词频统计,wordcloud实现,内含有词频统计和实现词云的两份代码,还有三国演义的文本文档,感谢下载
  • 今天捣鼓了一下午,搞出了一个词频统计的程序,敲了三四十行代码,还是十分有成就感。本着输出是为了更好的理解知识的初心,我来谈谈我是怎么写的,用的那些方法。毕竟是刚接触的小白,很有地方走了弯路,用的可能...
  • 只需要统计Ascii码,汉字不需考虑 空格,水平制表符,换行符,均算字符 统计文件的单词总数,单词:以英文字母开头,跟上字母数字符号,单词以分隔符分割,不区分大小写。 英文字母: A-Z,a-z 字母数字符号:A-Z, ...
  • python词频统计并按词频排序

    千次阅读 2021-11-07 16:00:37
    python词频统计 这篇博客用来记录一下自己学习用python词频统计的过程 #一、英文词频统计,所用文本《THE CATCHER IN THE RYE 》(麦田里的守望者) 涉及的第三方库及其在程序中的用途如下: import string #去除...
  • python-中文分词词频统计

    万次阅读 多人点赞 2019-05-29 15:19:08
    本文主要内容是进行一次中文词频统计。涉及内容包括多种模式下的分词比较和分词词性功能展示。 本次使用的是python的jieba库。该库可在命令提示符下,直接输入pip install jieba进行安装。 Jieba库常用的分词模式...
  • python词频统计

    2022-03-20 16:50:27
    python统计文本文件词频
  • #Hamlet词频统计 def getText(): txt = open("hamlet",'r').read() txt = txt.lower() #大写字母转换小写 for word in '~!@#$%^&*()_+-={}[],./:";<>?': txt = txt.replace(word," ")#把多余符号转换...
  • python统计词频

    2020-12-05 16:33:51
    ") return None f1.close() return bvffer (2)缓冲区字符串分割成带有词频的字典 def process_buffer(bvffer): if bvffer: word_freq = {} # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_...
  • Python进行词频统计

    千次阅读 2020-04-04 00:15:35
    英文文本词频统计 def getText(): txt = open("hamlet.txt","r").read()#读取文件 txt = txt.lower() #把文本全部变为小写 for ch in '|"#$%&^()*+,-./:;<>=?@[]\\_‘{}~':#把特殊字符变为空格 txt = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,089
精华内容 2,435
关键字:

python中文词频统计