精华内容
下载资源
问答
  • 7.19 文本词频统计

    2019-10-01 23:35:07
    目录 7.19 文本词频统计 一、 纯英文文本词频统计 问题分析: 实现代码 输出结果: 二、纯中文文本词频统计 问题分析 实现代码 输出结果: ...

    7.19 文本词频统计

    一、 纯英文文本词频统计

    • 英文文本:Hamet 分析词频
    http://www.chenyoude.com/预科班/hamlet.txt

    问题分析:

    • 文本去噪及归一化
    • 使用字典表达词频

    实现代码

    # 读取文件
    t = open(r'C:\Users\青柠\Desktop\预科\第六天\factory','r').read()
    # 将读取文件小写化并以空格分割
    t = t.lower().split(' ')
    
    word = {} # 使用字典存储读入的数据
    for i in t:
        if i not in word:
            word[i] = 1
        else:
            word[i] +=1
    
    # 使用函数取出单词出现的次数 方便排序
    def func(i):
        return i[1]
    list = list(word.items()) # 将字典转化为元组(元组可排序)
    list.sort(key = func) # 将函数取出来的次数进行初始排序
    list.reverse() # 反转,降序排列
    
    for i in list[0:10]: # 规格化输出
        print(f'{i[0]:^7}{i[1]^5}')

    输出结果:

    the  786
    and  593
    of   522
    to   505
     a   381
    my   370
    in   325
    you  319
     i   294
    his  238

    二、纯中文文本词频统计

    • 中文文本:《三国演义》 分析人物
    http://www.chenyoude.com/预科班/threekingdoms.html

    问题分析

    • 中文文本分词
    • 使用字典表达词频

    实现代码

    # 使用结巴库进行中文文本断句
    import jieba
    t = open(r'C:\Users\青柠\Desktop\预科\第六天\sanguo','r',encoding='utf-8').read()
    t = jieba.lcut(t)
    
    word = {}
    for i in t:
        # 进行文本去噪,不需要打印的去除
        if len(i) == 1:
            continue
        if i in {"将军", "却说", "荆州", "二人", "不可", "不能", "如此", "商议"}:
            continue
        if '曰' in i:
            continue
        if i in word:
            word[i] += 1
        else:
            word[i] = 1
    
    def func(i):
        return i[1]
    list = list(word.items())
    list.sort(key=func)
    list.reverse()
    for i in list[0:10]:
        print(i[0],i[1])

    输出结果:

    曹操 953
    孔明 836
    玄德 585
    关公 510
    丞相 491
    张飞 358
    如何 338
    主公 331
    军士 317
    吕布 300

    转载于:https://www.cnblogs.com/dadazunzhe/p/11213474.html

    展开全文
  • python文本词频统计

    2021-03-17 21:35:27
    英文文本词频统计 以大仲马的《基督山伯爵》英文版为例。 中文文本词频统计 以我吃西红柿的《吞噬星空》中文版为例。

    英文文本词频统计

    以大仲马的《基督山伯爵》和莎士比亚的《哈姆雷特》英文版为例。

    中文文本词频统计

    以我吃西红柿的《吞噬星空》和罗贯中的《三国演义》中文版为例。

    # testPython.py
    
    # 引入jieba库
    import jieba 
    
    def getText(textName, type):	
    	fp = open(textName, 'r', encoding='utf-8')
    	text = fp.read()
    	
    	if ("en" == type):
    		text = text.lower()
    		# '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~'
    		# ',<>.?;:"[\\]/{}|=+-_()*&^%$#@!~`'
    		for tempChar in ',<>.?;:"[\\]/{}|=+-_()*&^%$#@!~`':
    			text.replace(tempChar, " ")
    
    	# 无法对中文字符进行过滤
    		
    	fp.close()
    	
    	return text
    
    def getTextCount(text, type):
    	# 定义字典类型(集合类型)统计
    	counts = {}
    
    	if "en" == type:
    		# 以空格做分隔符,对单词文本做处理,获取独立单词
    		words = text.split()
    		# 对单词做统计处理
    		for word in words:
    			counts[word] = counts.get(word, 0) + 1
    	else:
    		# 使用jieba库处理中文文本
    		words = jieba.lcut(text)
    	
    		# 对单词做统计处理
    		for word in words:
    			if 1 == len(word):
    				continue    #对中文特殊字符做过滤
    			elif "诸葛亮" == word[0:3] or "孔明" == word[0:2]:
    				temp = "孔明"
    			elif "玄德" == word[0:2]:
    				temp = "刘备"
    			elif "丞相" == word[0:2]:
    				temp = "曹操"
    			elif "关公" == word[0:2] or "云长" == word[0:2]:
    				temp = "关羽"
    			else:
    				temp = word
    			
    			counts[temp] = counts.get(temp, 0) + 1
    
    	# 将字典转换成列表,做排序操作
    	lsCnt = list(counts.items())
    
    	# 以计数做比较基础,降序排列
    	lsCnt.sort(key = lambda word:word[1], reverse = True)
    
    	return lsCnt
    
    
    
    def main():
    	# 获取英文文本所有单词文本
    	#text = getText("The Count of Monte Cristo.txt", "en")
    	#text = getText("hamlet.txt", "en")
    
    	# 获取中文本所有单词文本
    	#text = getText("吞噬星空.txt", "cn")
    	text = getText("三国演义.txt", "cn")
    
    	# 对英文单词文本做处理,然后统计单词
    	#lsCnt = getTextCount(text, "en")
    
    	# 对中文单词文本做处理,然后统计单词
    	lsCnt = getTextCount(text, "cn")
    
    	# 输出打印文本单词中频繁出现的单词和计数
    	for i in range(20):
    		word, cnt = lsCnt[i]
    		print("{0:<10}{1:>5}".format(word, cnt))
    
    main()
    
    展开全文
  • 在学习了组合数据类型和文件操作之后就可以做出下面的文本词频统计的小程序了:1. 下面是英文文本的词频统计,统计了作者的一篇英文论文#文本词频统计:英文文本def gettext():#从文件中获取文本text = open("target...

    在学习了组合数据类型和文件操作之后就可以做出下面的文本词频统计的小程序了:

    1. 下面是英文文本的词频统计,统计了作者的一篇英文论文

    #文本词频统计:英文文本

    def gettext():

    #从文件中获取文本

    text = open("target.txt","r").read()

    #将文本中的所有大写字母转换为小写字母

    text = text.lower()

    #替换文本中的所有特殊符号为空格

    for c in '!"#$%^&*()_+-=@[]{}|\?/<>,.:;~·`、“”‘’':

    text = text.replace(c," ")

    #返回文本

    return text

    #获取处理好的文本

    txt = gettext()

    #将处理好的文本切分成列表

    words = txt.split()

    #定义空字典

    count = {}

    #遍历列表,统计词出现的次数

    for word in words:

    count[word] = count.get(word,0)+1

    #将统计好的字典转换成列表类型,以便进行排序

    items = list(count.items())

    #将列表按照count中键值的从大到小的顺序进行排序

    items.sort(key = lambda x:x[1], reverse = True)

    #输出结果,前十位最高频词汇

    for i in range(10):

    #从items[i]中一次返回单词和单词的词频

    word, count = items[i]

    print("#{0:<10}{1:>5}".format(word,count))

    #输出:

    #the 39

    #to 38

    #conflict 27

    #and 27

    #of 20

    #it 19

    #a 15

    #is 15

    #we 14

    #in 13

    可见作者的英文水平仅限于助词、介词和连词了【雾】

    2. 下面是中文文本的词频统计,统计了作者的一篇中文论文

    #文本词频统计:中文文本

    import jieba

    #定义文件读取函数

    def gettext():

    text = open("目标文件.txt","r").read()

    text = text.lower()

    for ch in '~!@#¥%……&*()——+=-·{}【】、‘;:“|?>

    text.replace(ch, " ")

    return text

    #使用jieba分词处理得到词库

    words = jieba.lcut(gettext())

    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(10):

    word, count = items[i]

    a = 20 - len(word)*2

    b = str(count)

    a = a - len(b)

    ch = " "*a

    print("#{0}{1}{2}".format(word, ch, count))

    #输出:

    #自己 128

    #职业 120

    #工作 79

    #企业 78

    #人力 76

    #资源管理 74

    #个人 62

    #就业 60

    #管理 54

    #能够 54

    最后需要注意的是,文本文件要放在项目的源文件夹中才能读取到

    8702bd70430d663c26748aa83b5fe7c2.png

    展开全文
  • 昨日有个中文词频统计的需求, 百度一番后, 发现一大堆标题党文章, 讲的与内容严重不符, 这里就简单记录下自己实现的流程吧!与英文单词的词频统计不同, 中文的难点在于如何分词, 不过好在有许多优秀的现成库供调用,...

    昨日有个中文词频统计的需求, 百度一番后, 发现一大堆标题党文章, 讲的与内容严重不符, 这里就简单记录下自己实现的流程吧!

    与英文单词的词频统计不同, 中文的难点在于如何分词, 不过好在有许多优秀的现成库供调用,这里就使用了 ansj_seg 插件.

    首先添加依赖:

    下载jar

    访问  最好下载最新版 ansj_seg/

    同时下载 需要和ansj_seg 配套..配套关系可以看jar包中的maven依赖,一般最新的ansj配最新的nlp-lang不会有错。

    导入到eclipse ,开始你的程序吧

    maven

    org.ansj

    ansj_seg

    5.1.1

    基本用法为:

    string str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!" ;

    system.out.println(toanalysis.parse(str));

    欢迎/v,使用/v,ansj/en,_,seg/en,,,(,ansj/en,中文/nz,分词/n,),在/p,这里/r,如果/c,你/r,遇到/v,什么/r,问题/n,都/d,可以/v,联系/v,我/r,./m,我/r,一定/d,尽我所能/l,./m,帮助/v,大家/r,./m,ansj/en,_,seg/en,更快/d,,,更/d,准/a,,,更/d,自由/a,!

    下面就贴上代码:

    public static void wordfrequency() throws ioexception {

    map map = new hashmap<>();

    string article = getstring();

    string result = toanalysis.parse(article).tostringwithoutnature();

    string[] words = result.split(",");

    for(string word: words){

    string str = word.trim();

    // 过滤空白字符

    if (str.equals(""))

    continue;

    // 过滤一些高频率的符号

    else if(str.matches("[)|(|.|,|。|+|-|“|”|:|?|\\s]"))

    continue;

    // 此处过滤长度为1的str

    else if (str.length() < 2)

    continue;

    if (!map.containskey(word)){

    map.put(word, 1);

    } else {

    int n = map.get(word);

    map.put(word, ++n);

    }

    }

    iterator> iterator = map.entryset().iterator();

    while (iterator.hasnext()){

    map.entry entry = iterator.next();

    system.out.println(entry.getkey() + ": " + entry.getvalue());

    }

    list> list = new arraylist<>();

    map.entry entry;

    while ((entry = getmax(map)) != null){

    list.add(entry);

    }

    system.out.println(arrays.tostring(list.toarray()));

    }

    /**

    * 找出map中value最大的entry, 返回此entry, 并在map删除此entry

    * @param map

    * @return

    */

    public static map.entry getmax(map map){

    if (map.size() == 0){

    return null;

    }

    map.entry maxentry = null;

    boolean flag = false;

    iterator> iterator = map.entryset().iterator();

    while (iterator.hasnext()){

    map.entry entry = iterator.next();

    if (!flag){

    maxentry = entry;

    flag = true;

    }

    if (entry.getvalue() > maxentry.getvalue()){

    maxentry = entry;

    }

    }

    map.remove(maxentry.getkey());

    return maxentry;

    }

    /**

    * 从文件中读取待分割的文章素材.

    * 文件内容来自简书热门文章: https://www.jianshu.com/p/5b37403f6ba6

    * @return

    * @throws ioexception

    */

    public static string getstring() throws ioexception {

    fileinputstream inputstream = new fileinputstream(new file("/home/as_/ideaprojects/springmaven/article-txt"));

    bufferedreader reader = new bufferedreader(new inputstreamreader(inputstream));

    stringbuilder strbuilder = new stringbuilder();

    string line;

    while((line = reader.readline()) != null){

    strbuilder.append(line);

    }

    reader.close();

    inputstream.close();

    return strbuilder.tostring();

    }

    最后依旧附上图片:

    7d61f0ac5f073aa7ffd0d7fd1c4c6c67.png

    如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

    展开全文
  • 文本词频统计的文本

    2018-09-25 09:41:26
    该资源是《Python文本词频统计的编码问题-MOOC嵩天》的文本词频统计的文本。包内包含三国演义中文版TXT和哈姆雷特英文版TXT。
  • 1、统计英文单词,# 1.准备utf-8编码的文本文件file(已在文件夹中定义了 一个名叫“head.txt.rtf”文本文件,详情请见截图)def getTxt(): #3对文本预处理(包括)txt = open('head.txt.rtf').read() #2.通过文件读取...
  • Python语言程序设计实例10: 文本词频统计嵩 天北京理工大学"文本词频统计"问题分析CC BY-NC-SA 4.0 嵩天问题分析文本词频统计- 需求 :一篇文章,...英文文本 中文文本问题分析文本词频统计- 英文文本:Hamet 分析...
  • 中文文本词频统计需要用到第三方库:jieba; jieba库是优秀的中文分词第三方库,需要额外安装; jieba库分词依靠中文词库,确定汉字之间的关联概率; jieba库分词有三种模式: 1、精确模式:把文本精确的切分开,不...
  • 文本词频统计

    2020-08-20 22:00:25
    词频统计 在很多情况下我们会遇到这样的问题·,给你一篇文章,让你统计其中多次出现的词语。这就是词频统计问题。当然不我们的文本可以是英文、可以是中文、也可以是其他国家的文字。首先我们来分析这个问题的IPO:...
  • Python实例10:文本词频统计6.6.1 问题分析在英文中文中,出现哪些词,出现多少次?6.6.2 hamlet英文词频统计CalHamletV1.py6.6.3 三国演义人物出场统计CalThreeKingdomsV1.pyCalThreeKingdomsV2.py# CalHamletV1.py...
  • Python文本词频统计

    千次阅读 2018-04-09 18:59:35
    背景信息本文实现英文文本词频统计,功能与Mapreduce中的wordcount是类似的。本文主要是为之后词向量训练做准备工作。本地实现词频统计函数,输入一个文本文件,最终以dict的形式返回词频统计信息。说明:如果输入为...
  • 在学习了组合数据类型和文件操作之后就可以做出下面的文本词频统计的小程序了: 1. 下面是英文文本的词频统计,统计了作者的一篇英文论文 #文本词频统计:英文文本 def gettext(): #从文件中获取文本 text = ...
  • 文本词频统计 英文文本以空格或标点符号分隔词语,获得单词并统计数量相当容易 中文字符之间没有天然的分隔符,需要对中文文本进行分词,需要使用jieba函数 Hamlet英文词频统计——>英文词频统计的实例 创建...
  • Python之文本词频统计

    千次阅读 2019-01-20 19:57:40
    本人近期学习了一下关于利用Python统计统计中英文文本词频的应用,故记录一下。 在一篇中英文文本中,有些词总会重复出现,此次要做的工作就是分别统计中英文文本中的词频,英文文本以哈姆雷特剧本为文本,中文文本...
  • 【C语言】中文文本文件之词频统计

    千次阅读 2019-03-05 19:55:31
    中文文本文件之词频统计
  • Python-文本词频统计

    千次阅读 2019-10-04 22:41:47
    文本准备 英文文本(hamlet分析词频)... 中文文本(三国演义 分析人物):https://python123.io/resources/pye/threekingdoms.txt Hamlet英文词频统计 #CalHamletV1.py #获取文本内容并去噪及归一化 def getText()...
  • Python实例10:文本词频统计 6.6.1 问题分析 在英文中文中,出现哪些词,出现多少次? 6.6.2 hamlet英文词频统计 CalHamletV1.py 6.6.3 三国演义人物出场统计 CalThreeKingdomsV1.py CalThreeKingdomsV2.py # ...
  • __MACOSX/__MACOSX/._THULAC_lite_java_v1__MACOSX/THULAC_lite_java_v1/__MACOSX/THULAC_lite_java_v1/._.classpath__MACOSX/THULAC_lite_java_v1/._.DS_Store__MACOSX/THULAC_lite_java_v1/._.project__MACOSX/THU...
  • 哈姆雷特英文三国演义中文哈姆雷特英文词频分析def getText():txt=open("hamlet.txt","r").read()#打开文本,输入具体的文本路径txt=txt.lower()#将文本中所有的英文字符变成小写for ch in '!"#$%&()*+,-./;:<...
  • 模块介绍安装:pip install jieba 即可jieba库,主要用于中文文本内容的分词,它有3种分词方法:1. 精确模式, 试图将句子最精确地切开,适合文本分析:2. 全模式,把句子中所有的可以成词的词语都扫描出来,速度非常...
  • 中文文本挖掘中,对海量文本进行准确分词是其中至关重要一步。当前的Python语言下存在多种开源文本分析包,其中jieba这个包能够提供相对高效的分词方案。结合jieba代码和一些相关资料,基本得知jieba是基于Trie...
  • 昨日有个中文词频统计的需求, 百度一番后, 发现一大堆标题党文章, 讲的与内容严重不符, 这里就简单记录下自己实现的流程吧!与英文单词的词频统计不同, 中文的难点在于如何分词, 不过好在有许多优秀的现成库供调用,...
  • 本文主要从中文文本分词、词频统计、词云绘制方面介绍Python中文文本分词的使用。会使用到的中文文本处理包包括:wordcloud,jieba,re(正则表达式),collections。1 准备工作导入相关的包,读取相关数据。#导入包...
  • 最近特别喜欢用Pig,拥有能满足大部分需求的内置函数(built-in functions),支持自定义函数(user defined functions,UDF),能load 纯文本、avro等格式数据;illustrate看pig执行步骤的结果,describe看alias的...
  • 以下是关于小说的中文词频统计这里有三个文件,分别为novel.txt、punctuation.txt、meaningless.txt。这三个是小说文本、特殊符号和无意义词Python代码统计词频如下:import jieba # jieba中文分词库# 从文件读入...
  • 一、结巴中文分词涉及到的算法包括:(1)基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况...结巴中文分词支持的三种分词模式包括:(1)精确模式:试图将句子最精确地切开,适合文本分析;(2)全模式...
  • 同一个单词会存在大小写的不同形式,但计数却不能区分大小写,于是可以通过 string.lower() 将字母编程小写,排除原文大小写差异对词频统计的干扰。 英文单词的分隔可以是空格、标点符号或特殊符号,为统一分隔方式...
  • jieba和文本词频统计

    2019-04-03 22:58:00
    (2)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合; (3)对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。 结巴中文分词支持的三种分词模式包括: (1)...
  • 标题:jieba库和文本词频统计; 内容: A.jieba库:一个强大的中文分词的第三方库: 包括精确模式,全模式,搜索引擎模式; 1.jieba.lcut(s) 2.jieba.lcut(s,cut_all=True) 3jieba.lcut_for_search(s) B....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 471
精华内容 188
关键字:

中文文本词频统计