我有一个文本文件,每行存储一个句子,我想知道一个句子(该文件中的一行)平均有多少个单词。我怎样才能做到这一点?
另外,如何计算该文件中唯一单词的数量,以及两个这样的文件中常见唯一单词的数量?
提前致谢
答案1
wc file
将显示给定的行数、字数和字节数file
;字数与行数的比率将为您提供每行的平均字数。
要计算唯一单词的数量,请将文件分成每行一个单词(此处是由一个或多个空格分隔的任何内容),对其进行排序并计算唯一单词的数量:
tr -s ' ' '\n' < file | sort -u | wc -l
如果需要删除标点符号,则需要在排序之前过滤结果(例如用于tr
删除不需要的字符)。
要计算两个文件唯一的单词数,您可以使用comm
:
comm -3 <(tr -s ' ' '\n' < file1 | sort -u) <(tr -s ' ' '\n' < file2 | sort -u)
file1
将列出仅出现在或file2
但不会同时出现的单词。
comm -12 <(tr -s ' ' '\n' < file1 | sort -u) <(tr -s ' ' '\n' < file2 | sort -u)
将列出两个文件中出现的单词,通过管道wc -l
将其计数。
要计算多个文件中的唯一单词数,请先将它们连接起来,然后再将它们提供给tr
:
cat file1 file2 | tr -s ' ' '\n' | sort -u | wc -l
答案2
这样可以打印每行的平均字数:
wc input.txt | awk '{print $2 / $1}'
你的问题不明确,需要完善。不知道能不能真正解决你的问题。
答案3
使用以下方法计算单词数乐(以前称为 Perl_6)
raku -e 'my @a.=push($_.words.elems) for lines; say @a; put @a.sum; put @a.elems; put @a.sum / @a.elems;'
输入示例:
the
the of
the of and
the of and in
the of and in a
the of and in a is
the of and in a is that
the of and in a is that for
the of and in a is that for it
the of and in a is that for it as
示例输出:
[1 2 3 4 5 6 7 8 9 10]
55
10
5.5
上面是用 Raku(Perl 编程语言家族的成员)编写的答案。简而言之,lines
循环使用for
并加载到 Perl/Raku$_
主题变量中。@a
声明一个数组,并使用运算符 [ 的快捷方式]$_
将输入一次性添加到该数组上。推入数组的实际值是字数,因为每一行都被分解为 并用 进行计数。最后,使用、和-divided_by-生成输出以获得平均值。push
.=
@a = @a.push($_.words.elems)
@a
.words
.elems
sum
elems
sum
elems
要始终输出对象的完整机器表示,请使用put
。使用say
将提供 Raku 对象的更易于理解的摘要(在 99 个元素后截断)。
[ 为了计算唯一单词,有几种方法。请参阅unique
下面的链接。 ]