Word Frequency

题目大意:写一段shell脚本来将一个文本文件中出现的单词的频度进行统计,并按照频度大小倒序输出。假设每行的单词都是由一个空格分隔的,并且假设任何两个单词的频度都不相同。比如文本为:

the day is sunny the the
the sunny is is

则输出为:

the 4
is 3
sunny 2
day 1

代码如下:

# Read from the file words.txt and output the word frequency list to stdout.
tr -s ' ' '\n' < words.txt  | sort | uniq -c | sort -nr | awk '{print $2, $1}'

解析:tr 用来将空格替换成"\n", -s选项会保证不会出现多余的换行,具体用法参见帮助手册。之后文本就变成了每个单词一行,如下所示:

the
day
is
sunny
the
the
the
sunny
is
is

再调用sort对单词进行排序,相同的单词则在相同的行,如下所示:

day
is
is
is
sunny
sunny
the
the
the
the


之后调用uniq 并用-c选项统计每个单词的频度,文本如下所示:

1 day
3 is
2 sunny
4 the

之后再调用sort 用-nr选项让文本根据数字倒序排列,文本如下所示:

4 the
3 is
2 sunny
1 day

之后再调用 awk将第一列和第二列互换一下达到最后目的,最终文本如下:

the 4
is 3
sunny 2
day 1

另解:最前面将每个单词放在一行上面也可以用sed来进行替换操作

sed -r 's/\s+/\n/g' words.txt  | sed '/^$/d' | sort | uniq -c | sort -nr | awk '{print $2, $1}'

第一次sed操作之后如果文本的某一行开头有空格,则转换后的文本会出现空行,所以可以通过第二个sed操作去除空行,其中第一个sed的-r选项表示采用扩展的正则表达式,以便支持\s以及+等符号。

Word frequency list of American English(美国英语词频列表)是一个将常用英语单词按照使用频率进行排序的列表。这个列表通常是通过收集和分析大量的书籍、文章、报纸、网站和其他文本资料得出的。 这个词频列表对于学习英语、赋予单词重要性以及构建自然语言处理系统都非常有用。它可以帮助学习者了解和记忆最常用的英语单词,并通过重复的使用来提高英语的流利程度。对于写作和口语表达而言,词频列表可以指导人们使用最流行和自然的语言表达。 词频列表还可以在自然语言处理任务中起到重要的作用。在机器翻译、语音识别、信息检索等任务中,词频是构建模型和算法的基础。通过了解哪些词汇最常见,我们可以更好地理解和处理英文输入,并增强自然语言处理系统的准确性和效率。 在构建这个词频列表时,研究人员通常会先选择一个大型的文本语料库,然后利用计算机程序对其中的单词进行统计和排序。这个过程包括去除标点符号、特殊字符并将单词转换为小写形式,以便于准确统计每个单词的出现次数。最终,研究人员将计算结果按照频率从高到低排列,形成词频列表。 值得注意的是,这个词频列表是动态的,随着语言的演变和时代的变迁,单词的使用频率也会发生变化。因此,研究人员会不断更新和修订这个列表,以保证其实用性和准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值