计数词汇

本文解析《创世纪》中词频和词汇表构建,揭示不同词类型的数量,并计算特定词汇的百分比,介绍如何通过Python实现文本处理和词汇丰富度测量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,让我们以文本中出现的词和标点符号为单位算出文本从头到尾的长度。我们使用函数len获取长度,请看在《创世纪》中使用的例子:
在这里插入图片描述
《创世纪》有44764个词和标点符号或者叫“标识符”。一个标识符是表示一个我们想要放在一组对待的字符序列的术语。当我们计数文本中标识符的个数时,如to be or not to be 这句话,我们计数这些序列出现的次数。因此,我们的例句中出现了to和be各两次,or和not各一次。然而在例句中只有四个不同的词。《创世纪》中有多少不同的词?要用Python来回答这个问题,我们处理问题的方法将稍有改变,一个文本词汇表只是它用到的标识符的集合,因为在集合中所有重复的元素只算一个。Python中我们可以使用命令:set(text3)获得text3的词汇表。
在这里插入图片描述
用sorted()包裹起Python表达式set(text3),我们得到一个词汇项的排序表,这个表以各种标点符号开始,然后是以A开头的词汇。大写单词排在小写单词前面。我们通过求集合中项目的个数间接获得词汇表的大小。尽管小说中有44764个标识符,但只有2789个不同的词汇词类型。一个词类型是指一个词在文本中独一无二的出现形式或拼写。也就是说,这个词在词汇表中是惟一的。我们计数的2789个项目包括标点符号,所以我们把这些叫做唯一项目类型而不是词类型。

现在我们对文本词汇丰富度进行测量。下一个例子向我们展示了每个字平均被使用了16次
在这里插入图片描述
接下来,让我们专注于特定的词。计数一个词在文本中出现的次数,计算一个特定的词汇在文本中占据的百分比。
在这里插入图片描述

资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 四路20秒声光显示计分抢答器Multisim14仿真源文件+设计文档资料摘要 数字抢答器由主体电路与扩展电路组成。优先编码电路、锁存器、译码电路将参赛队的输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。关键字:开关阵列电路;触发锁存电路;解锁电路;编码电路;显示电路 一、设计目的 本设计是利用已学过的数电知识,设计的4人抢答器。(1)重温自己已学过的数电知识;(2)掌握数字集成电路的设计方法和原理;(3)通过完成该设计任务掌握实际问题的逻辑分析,学会对实际问题进行逻辑状态分配、化简;(4)掌握数字电路各部分电路与总体电路的设计、调试、模拟仿真方法。 二、整体设计 (一)设计任务与要求: 抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S0 ~ S3表示。 设置一个系统清除和抢答控制开关S,该开关由主持人控制。 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。 如果定时时间已到,无人抢答,本次抢答无效。 (二)设计原理与参考电路 抢答器的组成框图如下图所示。它主要由开关阵列电路、触发锁存电路、解锁电路、编码电路和显示电路等几部分组成。
1. Python的安装及编译 首先,需要在官网下载Python的安装包,根据操作系统选择合适的版本进行安装。 安装完成后,可以在终端或命令行中输入`python`,如果出现Python的版本号,则表示安装成功。 2. 创建一个语料库 语料库指的是用于自然语言处理的文本数据集合。可以使用Python内置的`open`函数来打开一个文本文件并读取其中的内容。 ```python with open('corpus.txt', 'r', encoding='utf-8') as f: corpus = f.read() ``` 上述代码将打开名为`corpus.txt`的文本文件,并将其中的内容读取到`corpus`变量中。 3. 计算文本词汇表,并统计单出现的次数 可以使用Python中的`collections`模块来统计频。 ```python import collections # 分 words = corpus.split() # 统计频 word_freq = collections.Counter(words) # 打印频最高的前10个单 print(word_freq.most_common(10)) ``` 上述代码将对语料库中的文本进行分,并使用`collections`模块中的`Counter`函数统计每个单出现的次数。最后,打印出现频率最高的前10个单。 4. 过滤文本 在自然语言处理中,常常需要对文本进行过滤,例如去除停用等。可以使用Python中的`nltk`模块来进行过滤。 ```python import nltk from nltk.corpus import stopwords # 下载停用 nltk.download('stopwords') # 过滤停用 filtered_words = [word for word in words if word.lower() not in stopwords.words('english')] # 统计频 filtered_word_freq = collections.Counter(filtered_words) # 打印频最高的前10个单 print(filtered_word_freq.most_common(10)) ``` 上述代码将使用`nltk`模块中的`stopwords`函数下载英文停用,并将文本中的停用过滤掉。最后,统计过滤后的频并打印出现频率最高的前10个单。 5. 按文体(两个以上)计数词汇 可以使用Python中的`nltk`模块中的`corpus`函数来读取不同文体的语料库,并分别对其进行统计。 ```python import nltk from nltk.corpus import gutenberg, brown # 读取Gutenberg语料库 gutenberg_words = gutenberg.words() gutenberg_word_freq = collections.Counter(gutenberg_words) # 读取Brown语料库 brown_words = brown.words() brown_word_freq = collections.Counter(brown_words) # 打印Gutenberg语料库中出现频率最高的前10个单 print(gutenberg_word_freq.most_common(10)) # 打印Brown语料库中出现频率最高的前10个单 print(brown_word_freq.most_common(10)) ``` 上述代码将分别读取Gutenberg语料库和Brown语料库,并统计每个文体中单的出现频率。最后,打印出现频率最高的前10个单。 6. 绘制情态动的条件频率分布图和分布表 可以使用Python中的`nltk`模块中的`ConditionalFreqDist`函数来计算情态动的条件频率分布,并使用`matplotlib`模块来绘制图表。 ```python import nltk from nltk.corpus import brown import matplotlib.pyplot as plt # 计算情态动的条件频率分布 cfd = nltk.ConditionalFreqDist((genre, word) for genre in brown.categories() for word in brown.words(categories=genre) if word in ['can', 'could', 'may', 'might', 'must', 'will']) # 绘制条件频率分布图 cfd.plot() # 绘制条件频率分布表 cfd.tabulate() ``` 上述代码将使用`nltk`模块中的`ConditionalFreqDist`函数计算情态动在不同文体中的条件频率分布,并使用`matplotlib`模块绘制图表。最后,使用`tabulate`函数打印条件频率分布表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值