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

这个例子展示了如何用它们的频率存储文本从一个文件作为字符串数组排序的话,绘制的结果,收集的话基本统计文件中找到。

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

阅读莎士比亚与十四行诗文本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%。

另请参阅

||||||||||

相关话题