分析与字符串数组文本数据

这个示例展示了如何将文件中的文本存储为字符串数组,按单词的频率排序,绘制结果,以及收集文件中找到的单词的基本统计信息。

导入文本文件到字符串数组

阅读莎士比亚十四行诗的文本fileread函数。fileread返回文本作为1 * 100266字符向量。

十四行诗= fileread ('sonnets.txt');十四行诗(1时35)抵达
ANS =“莎士比亚十四行诗”

属性将文本转换为字符串函数。然后,把它分解上使用换行符splitlines函数。十四行诗变为2625×1字符串数组,其中每个串包含从诗一行。显示器的第一五线十四行诗.

十四行诗=字符串(十四行诗);十四行诗= splitlines(十四行诗);十四行诗(1:5)
ANS =5X1线"十四行诗""威廉·莎士比亚"" "

清洁字符串数组

要计算的字的频率在十四行诗首先通过去除空字符串和标点符号清洁。然后重塑成包含单个单词作为元素的字符串数组。

零个字符删除字符串(“”)从字符串数组。比较的每个元素十四行诗“”,空字符串。在R2017a开始,你可以创建字符串,包括空字符串,使用双引号。TF是包含一个真值的地方的逻辑矢量十四行诗包含一个零字符的字符串。索引十四行诗TF并删除所有字符串零个字符。

TF =(十四行诗==“”);十四行诗(TF) = [];十四行诗(1:10)
ANS =10 x1字符串由威廉·莎士比亚《十四行诗》“”“我”“从美丽的生物,我们渴望增长,”“因此美丽的玫瑰可能永远不会死,”“但随着成熟应该随着时间流逝,”“他的他的记忆交给娇嫩的后嗣:“”但你承包你的明亮的眼睛,”“喂花光的火焰定情,燃料,”“饥荒丰富所在,”

用空格字符替换一些标点符号。例如,替换句点、逗号和分号。保留撇号,因为它们可能是十四行诗中某些单词的一部分,比如轻的.

p = ("."“?”“啊!”“”“;”“:”];十四行诗=取代(p,十四行诗”“);十四行诗(1:10)
ANS =10 x1字符串由威廉·莎士比亚《十四行诗》“”“我”“从美丽的生物,我们渴望增加”“因此美丽的玫瑰可能永远不会死”“但随着成熟应该随着时间流逝”“他的他的记忆交给娇嫩的后嗣”“但是你承包你的明亮的眼睛”“喂花光的火焰定情,燃料”“饥荒丰富所在”

从每个元件剥离的前缘和后空格字符十四行诗.

十四行诗=带材(十四行诗);十四行诗(1:10)
ANS =10 x1字符串“十四行诗”,“莎士比亚”,“我”,“从最美丽的生物,我们希望增加”,“以便美的玫瑰永远不会死”,“但作为较成熟的应时间死亡”“他温柔的继承人可能会承担他的记忆”,“但你签约,你自己明亮的眼睛”,‘Feed'st你的光的火焰与自我实质性的燃料’,‘制作一片丰谎言’

分裂十四行诗元素为单个单词的字符串数组。你可以使用分裂的函数,在空白字符的字符串数组的分割元素,或在分隔符所指定。然而,分裂要求字符串数组中的每个元素都必须能被等数的新字符串整除。的元素十四行诗具有不同数量的空格,因此不能被相同数量的字符串分割。使用分裂在功能十四行诗,写一个for循环的呼叫分裂一次一个元素。

创建空字符串数组sonnetWords使用字符串函数。for循环是分裂的每个元素写十四行诗使用分裂函数。连接输出分裂sonnetWords.的每个元素sonnetWords一个单词是从哪来的十四行诗.

sonnetWords =串(0);对于I = 1:长度(十四行诗)sonnetWords = [sonnetWords;分裂(十四行诗(I))];结束sonnetWords(1:10)
ANS =10 x1字符串“THE”,“十四行诗”“由”“威廉”,“莎士比亚”,“我”,“从”,“公平”,“生物”,“我们”

基于频率排序词

找到独特的单词sonnetWords.指望他们和排序根据它们的频率。

要将仅按大小写不同的单词计数为相同的单词,请进行转换sonnetWords为小写。例如,算作同一个单词。使用。查找唯一的单词独特函数。然后,计算的次数出现的每个唯一字使用histcounts函数。

sonnetWords =低(sonnetWords);(话说,~,idx) =独特(sonnetWords);numOccurrences = histcounts (idx元素个数(字));

把单词分类sonnetWords按出现次数,从多到少常见。

[rankOfOccurrences,rankIndex] =排序(numOccurrences,“降序”);wordsByFrequency =字(rankIndex);

情节词频

从多到少的常用词画出单词的出现在十四行诗。齐普夫定律指出,单词的出现在大段文字的分布遵循幂律分布。

双对数(rankOfOccurrences);xlabel(单词排名(从最常见到最不常见));ylabel(出现的数量);

显示在十四行诗十种最常见的词。

wordsByFrequency(1:10)
ANS =10 x1字符串“和”“的”“到”“我”“的”“我”“中”“那”,“你”,“你”

收集表基本情况

计算每个单词出现的总次数sonnetWords.计算出现的次数占总字数的百分比,并计算从最常见到最不常见的累计百分比。将单词和它们的基本统计信息写在表格中。

numOccurrences = numOccurrences(rankIndex);numOccurrences = numOccurrences';NUMWORDS =长度(sonnetWords);T =表;T.Words = 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 “以” “我的” 371 2.0947 9.6324 “的” 370 2.0891 11.722的 “i” 341 1.9254 13.647 “在” 321 1.8124 15.459 409 2.3093 7.5377“即” 320 1.8068 17.266 “你” 280 1.5809 18.847 “你” 233 1.3156 20.163

十四行诗中最常见的词,时,发生490次。总之,十个最常见的单词占文本的20.163%。

也可以看看

||||||||||

相关的话题