字典类型及操作
字典的定义
{<键1>:<值1>,<键2>:<值3>}
我们在之前的的集合中说声明一个空集合要使用set(),而不是直接用{}这是因为,如果使用{}默认为集合
字典的处理函数及方法
注意keys()和values()返回的是一种字典的key类型,这些类型是可以用for in的方式做遍历,但是不能当做列表类型来操作
这里要注意的是:如果我们使用get()找键时没有找到,那就返回第二个设置的参数,否则返回值
# 定义空字典d d={} # 向d新增2个键值对元素 d[0]=1 d[1]=2 # 修改第2个元素 d[1]=3 # 判断字符"c"是否是d的键 "c" in d # 计算d的长度 len(d) # 清空d d.clear()
Jieba库的使用
jieba分词的原理
文本词频统计—英文
该怎么做呢? 这里要分中文文本 和 英文文本
https://python123.io/resources/pye/hamlet.txt
中文文本:《三国演义》 分析人物
https://python123.io/resources/pye/threekingdoms.txt
这段代码的作用是读取一个名为“hamlet.txt”的文本文件,将其转换为小写字母,并将文本中的特殊字符替换为空格。然后,将文本中的单词分割,并统计每个单词出现的次数。最后,按照单词出现次数从高到低的顺序,输出出现次数最多的前10个单词及其出现次数。
-
遍历
items
列表的前10个元素,将每个元素的第一个值(即单词)和第二个值(即出现次数)输出到屏幕上。其中,{0:<10}
表示输出第一个值(即单词)时左对齐占用10个字符的位置,{1:>5}
表示输出第二个值(即出现次数)时右对齐占用5个字符的位置。
文本词频统计–中文
import jieba
txt = open("threekingdoms.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(15):
word, count = items[i]
print ("{0:<10}{1:>5}".format(word, count))
这段代码的作用是读取一个名为“threekingdoms.txt”的文本文件,使用结巴分词库将文本中的中文分词,并统计每个词语出现的次数。最后,按照词语出现次数从高到低的顺序,输出出现次数最多的前15个词语及其出现次数。
-
打开名为“threekingdoms.txt”的文本文件,并将文件内容读取到变量
txt
中。注意需要指定文件编码为utf-8
。 -
遍历列表
words
中的每个词语,如果该词语的长度为1,则跳过该词语;否则,将该词语的出现次数加1,并保存到字典counts
中。 -
遍历
items
列表的前15个元素,将每个元素的第一个值(即词语)和第二个值(即出现次数)输出到屏幕上。其中,{0:<10}
表示输出第一个值(即词语)时左对齐占用10个字符的位置,{1:>5}
表示输出第二个值(即出现次数)时右对齐占用5个字符的位置。
import jieba
excludes = {"将军","却说","荆州","二人","不可","不能","如此"}
txt = open("threekingdoms.txt", "r", encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1:
continue
elif word == "诸葛亮" or word == "孔明曰":
rword = "孔明"
elif word == "关公" or word == "云长":
rword = "关羽"
elif word == "玄德" or word == "玄德曰":
rword = "刘备"
elif word == "孟德" or word == "丞相":
rword = "曹操"
else:
rword = word
counts[rword] = counts.get(rword,0) + 1
for word in excludes:
del counts[word]
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
word, count = items[i]
中文文本分词
使用字典表达词频
这段代码的功能是读取《三国演义》文本文件,使用jieba分词库对文本进行分词,并统计关键词出现的频率。在统计关键词的过程中,对一些关键词进行了简化和替换,如“孔明曰”简化为“孔明”,“玄德曰”简化为“刘备”,“丞相”替换为“曹操”。
- 读取《三国演义》文本文件,使用jieba分词库对文本进行分词。
- 统计分词结果中各个关键词出现的频率,将结果存储在字典counts中。
- 对一些关键词进行简化和替换,如“孔明曰”简化为“孔明”,“玄德曰”简化为“刘备”,“丞相”替换为“曹操”。
- 删除一些无意义的关键词,如“将军”、“却说”、“荆州”、“二人”、“不可”、“不能”、“如此”。
- 将counts转换为列表items,并按照出现频率从高到低排序。
- 选取出现频率最高的前10个关键词,并输出结果。
原文地址:https://blog.csdn.net/weixin_64612659/article/details/129821830
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_26308.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!