文件

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

这个示例展示了如何将文件中的文本存储为字符串数组,根据单词的频率对它们进行排序,绘制结果,并收集在文件中找到的单词的基本统计信息。

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

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

也可以看看

||||||||||

相关的话题