利用python来建立hamlet词云

一.简单介绍

本次词云使用了python的三个模块,分别是re,wordcloud,matplotlib,这四个模块可以自行下载配置,当然了中间可能也会出现错误,请各位批评指正。

二.实现原理

1、准备好hamlet文件,后面使用re模块打开,re用来分词(针对于hamlet文件源)
2、把分词好的数据传给 wordcloud中的WordCloud方法 ,生成词云图
3、使用 matplotlib 进行图片的显示,或者保存成图片

三.对代码进行解读说明

import re
import wordcloud
import matplotlib.pyplot as plt
1. 这三个import所导入的模块就是我们构建词云所需要的模块
txt = open("D:\浏览器下载\hamlet.txt", "r", encoding='utf-8').read()
txt = txt.lower()
expect = '[,.;!()?*,。;::、!《》()]'
txt_date = re.sub(expect, '', txt)
words = txt_date.split()
2. 这里进行一些基础操作,首先是利用open()和read()方法打开文件并进行操作,随后使用lower()方法将所有大写字母转化为小写字母,最后使用re模块中的sub()和split()方法进行替换和分词处理
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1

3. 将分词完后的文章利用for循环进行遍历,将遍历的词语存入字典counts中,在使用if else语句判断字典中是否出现相同的词语,如果出现则加1,get()方法的作用是:在返回指定键的值,如果键不在字典中返回 default 设置的默认值
for ch in {'not','with','for','be','as','what','him','the', 'and','to','that','this','of', 'you', 'an','we','it', 'my','me', 'in','your','he','is','his','but'}:
    del (counts[ch])
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
4.因为需要删除一些介词,所以在这里也是使用for循环和字典中的del()方法来进行删除操作,再继续使用items()方法以列表的形式返回一个视图对象,sort()方法就是从高往低来进行排列,而lambda()就属于是一个匿名函数,让其按照字典的key值所对应的value值来进行排序
list1 = []
for i in range(10):
    word, count = items[i]
    print('{0}:{1}'.format(word, count))
    list1.append(word)
T = ','.join(list1)
print(T)    
wc = wordcloud.WordCloud(width = 3000, height = 2000,random_state = False ,background_color = 'white')
wc.generate(T)
plt.imshow(wc)
plt.axis('off')
plt.show()

5.使用for循环按照词语的出现频率来进行输出,使用join()方法生成字符串,在使用wordcloud中generate()方法生成词云,在使用matplotlib模块中的show()方法显示词云。

最后放上全部代码

import re
import wordcloud
import matplotlib.pyplot as plt
# 字频统计
# 1.打开文件
txt = open("D:\浏览器下载\hamlet.txt", "r", encoding='utf-8').read()
# 2.将所有大写字母转化为小写字母
txt = txt.lower()
# 3.去除所有的特殊字符
expect = '[,.;!()?*,。;::、!《》()]'
txt_date = re.sub(expect, '', txt)
# 4.对文本分词
words = txt_date.split()
# 5.出现频率
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1
# 6.剔除冠词(the,and,of,a,to,be)
list1 = []
for ch in {'not','with','for','be','as','what','him','the', 'and','to','that','this','of', 'you', 'an','we','it', 'my','me', 'in','your','he','is','his','but'}:
    del (counts[ch])
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(10):
    word, count = items[i]
    print('{0}:{1}'.format(word, count))
    list1.append(word)
T = ','.join(list1)
print(T)    
wc = wordcloud.WordCloud(width = 3000, height = 2000,random_state = False ,background_color = 'white')
wc.generate(T)
plt.imshow(wc)
plt.axis('off')
plt.show()

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 以下是使用Python进行《哈姆雷特》文本词频统计的示例代码: ```python # 导入必要的模块 import string # 打开文件并读取文本 with open('hamlet.txt', 'r') as f: text = f.read() # 将文本转换为小写 text = text.lower() # 删除标点符号 text = text.translate(str.maketrans('', '', string.punctuation)) # 将文本分割成单词 words = text.split() # 统计词频 word_counts = {} for word in words: if word in word_counts: word_counts[word] += 1 else: word_counts[word] = 1 # 输出前20个出现频率最高的单词和它们的出现次数 sorted_word_counts = sorted(word_counts.items(), key=lambda x: x[1], reverse=True) for i in range(20): print(sorted_word_counts[i][0], sorted_word_counts[i][1]) ``` 请将上述代码保存为文件`hamlet_word_count.py`,并将《哈姆雷特》的文本保存为文件`hamlet.txt`,放在同一个目录下。运行`hamlet_word_count.py`后,程序将会输出《哈姆雷特》中出现频率最高的前20个单词以及它们的出现次数。 ### 回答2: 《哈姆雷特》是莎士比亚的经典作品之一,也是世界文学史上的巨作之一。对于文学爱好者和语言学习者来说,了解这部作品的语言特点和词汇使用情况是非常有益的。而Python文本词频统计就能非常方便地实现这一目的。 我们可以使用Python中的一些库,如re、collections、matplotlib等,来完成文本处理和可视化。下面是一个基本的步骤: 1. 准备文本数据:下载《哈姆雷特》的文本文件,存储到本地。 2. 读取文本文件:使用Python的open()函数打开文本文件,并读取其中的内容,保存为字符串。 3. 数据清洗:使用re库进行数据清洗,去除文本中的标点符号、空格、数字等无关内容。 4. 划分词汇:使用Python的split()函数将文本分割为单词列表。 5. 统计词频:使用collections库中的Counter()函数统计每个单词出现的次数,并获取前10或前20个高频词。 6. 可视化处理:使用matplotlib库中的柱状图或词云等方式将高频词汇进行可视化处理,直观地展示文本中的重点词汇和语言特点。 通过以上步骤,便可以轻松地进行Python文本词频统计《哈姆雷特》。这样的分析和处理方式不仅可以帮助我们更深入地理解这部作品的语言风格和文学价值,也能够为我们学习Python和数据处理提供宝贵的实践机会。 ### 回答3: 哈姆雷特是莎士比亚的经典悲剧之一,是一部极具深度和内涵的作品。对于研究这些作品的学者和文艺爱好者而言,文本词频统计是非常有用的工具。Python是一种非常流行的编程语言,用于数据处理和分析,因此Python文本词频统计可以非常方便地实现。 在完成Python文本词频统计任务后,我们可以得出各个单词在哈姆雷特中出现的次数以及它们的排名。根据统计结果,我们可以对哈姆雷特作出更深入的了解。 为了实现Python文本词频统计,需要以下步骤: 第一步是读取哈姆雷特的文本数据。我们可以使用Python的读文件操作来读取文本文件。可以使用以下代码: ``` with open('hamlet.txt', 'r', encoding='utf-8') as f: data = f.read() ``` 第二步是对读取的文本进行清理和分词。我们需要删除文本中的标点符号、换行符和其他非字母字符,并将文本分为单词列表。可以使用以下代码: ``` import re # 清理文本数据 data = re.sub('[^a-zA-Z]', ' ', data) # 分词 words = data.lower().split() ``` 第三步是将单词列表转换为字典,其中单词是键,出现次数是值。可以使用以下代码: ``` freq = {} for word in words: freq[word] = freq.get(word, 0) + 1 ``` 最后,可以将字典按值排序并输出前k个单词。可以使用以下代码: ``` # 按值排序 freq_sorted = sorted(freq.items(), key=lambda x: x[1], reverse=True) # 输出前10个单词 for i in range(10): print(freq_sorted[i]) ``` 通过以上步骤,我们可以得出哈姆雷特文本中出现最频繁的单词。例如,在一个经过清理和分词的文本中,可以得到以下结果: ('the', 1160) ('and', 855) ('to', 785) ('of', 670) ('i', 574) ('a', 543) ('you', 527) ('my', 502) ('in', 496) ('ham', 483) 可以看到,“the”是哈姆雷特中出现最频繁的单词,出现了1160次。这种Python文本词频统计可以帮助我们深入了解文本,并在进一步的分析中提供重要的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值