当前位置: 首页 > news >正文

【NLP】自动化计算文本文件TTR的bash脚本

自动化计算文本文件TTR的bash脚本

简介

这是一个可以计算文本文件TTR的bash脚本,文件名为:calculate_TTR.sh。它会接收一个文件名作为参数,并输出总单词数、特异单词数和TTR

TTR是什么

TTR(Type-Token Ratio)是用来衡量文章复杂程度的,计算方法很简单,就是一篇文章中用了多少单词(种类,去重后的)比上总共的单词数量。

TTR=UniqueTotalTTR=\frac{Unique}{Total}TTR=TotalUnique

如果TTR越大就认为这篇文章的复杂性越高。

脚本代码

#!/bin/bash# 读取文件
filename="$1"
if [ ! -f "$filename" ]; thenecho "文件不存在或无法读取!"exit 1
fi# 去除标点符号和空格,只保留单词
words=$(cat "$filename" | tr -cs '[:alnum:]' '[\n*]' | tr '[:upper:]' '[:lower:]')# 计算总单词数量和不同单词数量
total_words=$(echo "$words" | wc -w)
unique_words=$(echo "$words" | sort | uniq | wc -w)
# -w或--words 只显示词数。
# -l或--lines 显示行数。# 计算TTR
ttr=$(echo "scale=4; $unique_words/$total_words" | bc)
# -c或--bytes或--chars 只显示Bytes数。# 输出结果
echo "Total: $total_words"
echo "Unique: $unique_words"
echo "TTR: $ttr"

非脚本程序

这可以帮助理解脚本程序:

cat pubmed-a.txt |tr -cs "[:alnum:]" "\n" |tr [:upper:] [:lower:] >pubmed.a.pure.txt
wc pubmed.a.pure.txt
sort pubmed.a.pure.txt |uniq |wc

这是一些代码片段的具体作用:

  1. cat pubmed-a.txt: 显示文件pubmed-a.txt的内容。
  2. tr -cs "[:alnum:]" "\n":使用tr命令将pubmed-a.txt中的非字母数字字符替换为换行符,保留字母数字字符。
  3. tr [:upper:] [:lower:]:使用tr命令将pubmed-a.txt中的大写字母转换为小写字母。
  4. > pubmed.a.pure.txt:将上一条命令的输出结果重定向到pubmed.a.pure.txt文件中。
  5. wc pubmed.a.pure.txt:统计pubmed.a.pure.txt文件中的行数、单词数和字符数。
  6. sort pubmed.a.pure.txt | uniq | wc:将pubmed.a.pure.txt文件中的内容按字典序排序,去重后再统计行数、单词数和字符数。

这些命令的目的是将pubmed-a.txt文件中的文本处理成纯文本格式,并统计其中的单词数、行数和字符数。其中,排序和去重操作可以用来查看pubmed-a.txt文件中不同单词的数量。

计算代码

chmod 777 calculate_TTR.sh
./calculate_TTR.sh BROWN_A.txt
./calculate_TTR.sh pubmed-a.txt

结果

image-20230303152440054

d-a.txt


## 结果[外链图片转存中...(img-nhbxYC5u-1677841449710)]
http://www.lryc.cn/news/27174.html

相关文章:

  • 蓝桥杯单片机组省赛十二届第一场(关于矩阵,温度ds18b20,时间ds1302的学习,以及继电器等外设的综合利用)
  • Ubuntu 新人上手 Microk8s 指南
  • 初阶C语言——实用调试技巧【详解】
  • Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)
  • js拷贝数组对象:浅拷贝深拷贝
  • 【C++】string类的使用
  • 微服务架构简介
  • 【Spring源码】AOP的开端:核心对象创建的准备工作
  • 新号涨粉22w,搞笑博主再次爆火,小红书近期创作趋势是什么?
  • 【C++】30h速成C++从入门到精通(内存管理、函数/类模板)
  • 自动驾驶决策概况
  • 金山轻维表项目进展自动通知
  • 基于上下文分析的 Python 实时 API 推荐
  • 软件测试-接口测试-代码实现接口测试
  • 中村成洋《垃圾回收的算法与实现》PDF 读书笔记
  • docker 网络模式
  • 数据库开发(一文概括mysql基本知识)
  • 【JVM】详解Java内存区域和分配
  • JAVA开发(史上最完整追本溯源JAVA历史、发展和学习)
  • Qt 防止程序退出
  • 【校验码 - 循环冗余校验码CRC】
  • 【Rust】一文讲透Rust中的PartialEq和Eq
  • Vulnhub靶场----9、DC-9
  • 使用Containerd搭建K8s集群【v1.25】
  • NMT - 构建双语概率词典(Probabilistic dictionaries)
  • 《ChatGPT是怎样炼成的》
  • Streaming System是第一章翻译
  • abap MODIFY常用语法解析
  • [媒体分流直播]媒体直播和传统直播的区别,以及媒体直播的特点
  • 打地鼠游戏-第14届蓝桥杯STEMA测评Scratch真题精选