这个例子展示了如何用它们的频率存储文本从一个文件作为字符串数组排序的话,绘制的结果,收集的话基本统计文件中找到。
阅读莎士比亚与十四行诗文本FILEREAD
函数。FILEREAD
以1×100266字符向量的形式返回文本。
十四行诗= FILEREAD(“sonnets.txt”);十四行诗(1:35)
莎士比亚十四行诗
将文本转换为使用字符串字符串
函数。然后,在换行符上使用splitlines
函数。十四行诗
成为一个2625×1的字符串数组,其中每个字符串包含诗歌中的一行。的前五行十四行诗
。
十四行诗=串(十四行诗);十四行诗= splitlines(十四行诗);十四行诗(1:5)
ans =5 x1字符串“十四行诗”“”“莎士比亚”“”“”
计算单词的频率十四行诗
,首先清除空字符串和标点符号。然后将其重塑为一个字符串数组,其中包含作为元素的单个单词。
删除带有零字符的字符串(”“
)从字符串数组。比较的每个元素十四行诗
来”“
,空字符串。从R2017a开始,可以使用双引号创建字符串,包括空字符串。特遣部队
一个逻辑向量在哪里包含一个真值十四行诗
包含零个字符的字符串。索引十四行诗
与特遣部队
并删除所有零字符的字符串。
TF =(十四行诗==”“);十四行诗(TF)= [];十四行诗(1:10)
ans =10×串“十四行诗”,“莎士比亚”“我”“从我们要求公平的生物”,“以便美的玫瑰永远不会死”,“但作为较成熟的应时间死亡”,“他温柔的继承人可能会承担他的记忆”‘但你,以你自己的明眸’,‘Feed'st你的光的火焰与自我实质性的燃料’,‘制作一片丰谎言’
替换空格字符一些标点符号。例如,替换句号,逗号,和分号。保持引号,因为它们可以在十四行诗一些词的部分,如光的。
P = [“”,“?”,“!”,”、“,”;“,”:“]。十四行诗=替换(十四行诗,P,“”);十四行诗(1:10)
ans =10×串“十四行诗”,“莎士比亚”,“我”,“从最美丽的生物,我们希望增加”,“以便美的玫瑰永远不会死”,“但作为较成熟的应时间死亡”“他温柔的继承人可能会承担他的记忆”,“但你签约,你自己明亮的眼睛“” Feed'st你的光的火焰与自我实质性的燃料“”制作一片丰谎言“
的每个元素中去掉前导和后尾随空格字符十四行诗
。
十四行诗=地带(十四行诗);十四行诗(1:10)
ans =10×串由威廉·莎士比亚《十四行诗》“”“我”“从美丽的生物,我们渴望增加”“因此美丽的玫瑰可能永远不会死”“但随着成熟应该随着时间流逝”“他的他的记忆交给娇嫩的后嗣”“但是你承包你的明亮的眼睛”“喂花光的火焰定情,燃料”“饥荒丰富所在”
分裂十四行诗
成一个字符串数组,其元素是单独的词。您可以使用分裂
函数根据指定的空格字符或分隔符拆分字符串数组的元素。然而,分裂
需要一个字符串数组中的每个元素必须是划分成相等数目的新的字符串。的元素十四行诗
有位不同的数字,因此不能分割成字符串的人数相等。要使用分裂
函数十四行诗
,编写一个for循环来调用分裂
上一次一个元件。
创建空字符串数组sonnetWords
使用字符串
函数。编写一个for循环来分割的每个元素十四行诗
使用分裂
函数。从串联输出分裂
到sonnetWords
。中的每个元素sonnetWords
从一个单词十四行诗
。
sonnetWords =字符串(0);为i = 1:长度(十四行诗)十四行诗=[十四行诗;分割(十四行诗(i)));结束sonnetWords (1:10)
ans =10×串"威廉" "莎士比亚"的"十四行诗" "我" "来自"最美的" "生物" "我们"
查找唯一字sonnetWords
。计算它们的数量并根据它们的频率进行排序。
要计算,只有大小写不同的同一个词的话,转换sonnetWords
小写。例如,的
和的
算同一个词。查找使用唯一字独特的
函数。然后,计算每个唯一单词使用histcounts
函数。
sonnetWords =低级(sonnetWords);[即,〜,IDX] =唯一的(sonnetWords);numOccurrences = histcounts(IDX,numel(字));
在排序的话sonnetWords
按出现的次数,从最常见到最不常见。
[rankOfOccurrences, rankIndex] =排序(numOccurrences,“下”);wordsByFrequency =单词(rankIndex);
把十四行诗中出现的词从最常见的到最不常见的都画出来。Zipf定律指出,大型正文中出现的单词的分布遵循幂律分布。
重对数(rankOfOccurrences);包含(“字的秩(最多到最少常见)”);ylabel (“发生次数”);
列出十四行诗中最常见的十个单词。
wordsByFrequency (1:10)
ans =10×串”和“”“”“”“””“我”“在”“,”“你”“你”
计算中每个单词出现的总数sonnetWords
。计算出现次数为单词的总数量的百分比,并计算从最多到最少常见的累积百分比。为他们写的字和基本统计数据表。
numOccurrences = numOccurrences (rankIndex);numOccurrences = numOccurrences ';numWords =长度(sonnetWords);T =表;T。话说= wordsByFrequency;T。NumOccurrences = NumOccurrences;T。PercentOfText = numOccurrences / numWords * 100.0; T.CumulativePercentOfText = cumsum(numOccurrences) / numWords * 100.0;
显示十个最常见单词的统计信息。
T (1:10,:)
ANS =10×4表单词NumOccurrences PercentOfText _________________ _______________________ CumulativePercentOfText ______ * * *”和“490年2.7666 - 2.7666”“436年2.4617 - 5.2284”“409年2.3093 - 7.5377”我的“371年2.0947 - 9.6324”,“370年2.0891 - 11.722“我”341年1.9254 - 13.647”,“1.8124 - 15.459 321”,“320年1.8068 - 17.266”你的“280 233 1.3156 - 20.163 1.5809 - 18.847“你”
在十四行诗中最常见的词,和,出现490次。这十个最常见的单词占了全文的20.163%。
histcounts
|加入
|降低
|更换
|分类
|分裂
|splitlines
|字符串
|跳闸
|表
|独特的