如何计算单词出现的次数?

如何计算单词出现的次数?

如何计算 tex 文件中单词出现的次数?我这样做的原因是为了更容易识别我在文本中使用过多的单词。目前我在 bash 中使用以下一行代码。

cat *.tex | sed 's/[[:space:]|[:punct:]]\+/\n/g' | sort | uniq -c | sort -n

它的作用是,输出所有带有 的 .tex 文件cat,使用 用换行符替换空格和标点符号sedsort输出,计算唯一的单词,然后sort在 输出数字后再次计算uniq -c

我对这种方法的一个问题是,原本属于一个单词但被空格分开的单词会被分开计算。例如“New York”,您会得到 k 个 New 和 n 个 York,并且还会混合出现其他的 New 和 York。

编辑:当然,另一个问题是,如何识别词形变化,例如变格和动词变位?但这可能超出了一行代码的范围,或者有人知道如何应对吗?

编辑2:正如 Hendrik 和 Joseph 指出的那样,这并不是真正与 TeX 相关的,但也许有人会觉得它有用:)

答案1

关于运行 latex,然后dvi2tty在输出.dvi文件上使用,不能说太多。这将更好地处理宏扩展。因此,我建议:

dvi2tty 00.dvi | sed  's/[[:space:]|[:punct:]|[:digit:]]\+/\n/g' | sed '/^$/d' | tr "A-Z" "a-z" | sort | uniq -c | sort -nr | sed "/ 1 /d" 

它和你的管道类似,不同之处在于

  • 它将数字视为分隔符。
  • 它忽略空格
  • 它消除了空行
  • 它会消除仅出现一次的单词。

相关内容