这个示例展示了如何将文件中的文本存储为字符串数组,根据单词的频率对它们进行排序,绘制结果,并收集在文件中找到的单词的基本统计信息。
朗读莎士比亚十四行诗的文本fileread
函数。fileread
将文本返回为1×100266个字符向量。
十四行诗= fileread ('sonnets.txt');十四行诗(1时35)抵达
ans ='威廉·莎士比亚的十四行诗'
属性将文本转换为字符串细绳
函数。然后,使用使用的换行符将其拆分裂缝
函数。十四行诗
成为一个2625×1的字符串数组,其中每个字符串包含一行来自诗歌。显示前五行十四行诗
.
十四行诗=字符串(十四行诗);十四行诗= splitlines(十四行诗);十四行诗(1:5)
ans =.5x1字符串数组莎士比亚十四行诗" "" "" "" ""
计算单词的频率十四行诗
,首先通过删除空字符串和标点符号来清洁它。然后将其重新塑造成一个字符串数组,其中包含单个单词作为元素。
用零字符删除字符串(“
)来自字符串数组。比较每个元素十四行诗
到“
,空字符串。从R2017A开始,您可以使用双引号创建字符串,包括空字符串。TF.
是一个逻辑矢量,其中包含真正的值十四行诗
包含一个零字符的字符串。索引十四行诗
和TF.
并删除具有零个字符的所有字符串。
(十四行诗==“);十四行诗(TF) = [];十四行诗(1:10)
ans =.10x1字符串数组由威廉·莎士比亚《十四行诗》“”“我”“从美丽的生物,我们渴望增长,”“因此美丽的玫瑰可能永远不会死,”“但随着成熟应该随着时间流逝,”“他的他的记忆交给娇嫩的后嗣:“”但你承包你的明亮的眼睛,”“喂花光的火焰定情,燃料,”使富足的地方陷入饥荒
用空格字符替换一些标点符号。例如,替换句点、逗号和分号。保留撇号,因为它们可能是十四行诗中某些单词的一部分,比如灯.
p = (“。”那“?”那“啊!”那”、“那“;那“:”];十四行诗=取代(p,十四行诗" ");十四行诗(1:10)
ans =.10x1字符串数组由威廉·莎士比亚《十四行诗》“”“我”“从美丽的生物,我们渴望增加”“因此美丽的玫瑰可能永远不会死”“但随着成熟应该随着时间流逝”“他的他的记忆交给娇嫩的后嗣”“但是你承包你的明亮的眼睛”“喂花光的火焰定情,燃料”“饥荒富足的地方"
来自每个元素的剥离领先和尾随空间字符十四行诗
.
Sonnets = Strip(Sonnets);十四行诗(1:10)
ans =.10x1字符串数组“Sonnets”由William Shakespeare“”我“来自最公平的生物,我们渴望增加”“从而从而玫瑰可能永远不会死”,但随着时间的推移应该是时候“他的温柔继承人可能会忍受他的记忆”“你签约自己的明亮的眼睛“”饲料的萤火虫与自我大量的燃料“”“在丰富的地方制作了饥荒”
分裂十四行诗
进入一个字符串数组,该数组的元素是单个单词。你可以使用分裂
函数以在空格字符或指定的分隔符上拆分字符串数组的元素。然而,分裂
要求字符串数组的每个元素必须能被整除成相同数量的新字符串。的元素十四行诗
有不同数量的空格,因此不能被分割成相同数量的字符串。使用分裂
功能十四行诗
,写一个呼叫的循环分裂
每次只处理一个元素。
创建空字符串数组十四文
使用字符串
函数。写一个拆分每个元素的循环十四行诗
使用分裂
函数。将输出连接到分裂
到十四文
.的每个元素十四文
是一个单独的词十四行诗
.
sonnetwords = strings(0);为了i = 1:length(sonnets) sonnetWords = [sonnetWords;分割(十四行诗(i)));结尾Sonnetwords(1:10)
ans =.10x1字符串数组“”十四圈“”“威廉”“莎士比亚”“我”来自“最公平的”“生物”“我们”
找出唯一的单词十四文
.计算它们并根据其频率对其进行排序。
若要计算仅因大小写不同而不同的单词,则转换为相同的单词十四文
小写。例如,这
和这
算作同一个词。找到独特的单词使用独特的
函数。然后,计算使用唯一单词发生的次数histcounts
函数。
sonnetWords =低(sonnetWords);(话说,~,idx) =独特(sonnetWords);numOccurrences = histcounts (idx元素个数(字));
把单词分类十四文
按次数,从最小到最不共同。
[Rankofoccurrences,RankIndex] =排序(numoccurrences,“下降”);WordsByFrequency =单词(RankIndex);
从最常见的单词绘制十四行诗中的单词的发生。ZIPF的法律指出,大型身体文本中的单词发生的分配遵循权律分布。
loglog(Rankofoccurrences);Xlabel(“单词的排名(从最常见到最不常见)”);ylabel(出现的数量);
在SONNET中显示十个最常见的单词。
PlayByFrequency(1:10)
ans =.10x1字符串数组“和”“”“”“我”“”我“在”“”“”你“中”你“
计算每个单词的总发生总数十四文
.计算出现的次数占总字数的百分比,并计算从最常见到最不常见的累计百分比。将单词和基本的统计数据写在一张表格中。
numoccurrences = numoccurrences(秩index);numoccurrences = numoccurrenct';numwords = length(sonnetword);t =表;T.Words = WordsBy频道;t.numoccurrences = numoccurrences;t.percentoftext = numoccurrences / numwords * 100.0;t.cumulationPercentext = Cumsum(Numoccurrences)/ numwords * 100.0;
显示十个最常见的单词的统计信息。
T(1:10,:)
ans =10×4表单词numoccurrences百分比累计uculative perstextext ______ ________________“和”490 2.7666 2.7666“The 436 2.4617 5.2284”至“409 2.3093 7.5377”我的“3724”I“341 1.9254 13.647”在“321 1.8124 15.459“那个”320 1.8068 17.266“Thy”280 1.5809 18.847“你”233 1.3156 20.163
十四行诗中最常见的词,和,发生490次。其中十个最常见的词汇占20.163%的文本。
histcounts
|加入
|较低的
|取代
|排序
|分裂
|裂缝
|细绳
|带
|表格
|独特的