#hci #text-entry #text-entry-benchmark

tet_rs

文本输入吞吐量(TET)的第三方Rust实现(参考 https://doi.org/10.1145/3290605.3300866)

5个不稳定版本

0.3.1 2021年4月21日
0.2.2 2021年4月21日
0.2.1 2021年4月21日
0.1.2 2021年4月18日
0.1.1 2021年3月27日

851 in 文本处理

MIT 协议

27KB
494

文本输入吞吐量

文本输入吞吐量(TET)是由Minguri等人引入的(参考 https://dl.acm.org/doi/fullHtml/10.1145/3290605.3300866),是基于香农信息论的无文本输入方法吞吐量指标。

此Crate是TET的第三方实现。

TL;DR

use tet_rs::TextEntryThroughput;

// A preset for English alphabet is provided.
// An explanation for other language texts is wrote on later.
let tet = TextEntryThroughput::alphabet_letter_distribution();

let presented_text = "my watch fell in the waterprevailing wind from the east";
let transcribed_text = "my wacch fell in waterpreviling wind on the east";
let s = std::time::Duration::from_secs(12); // 4 characters per second

let throughput = tet.calc(presented_text, transcribed_text, s).unwrap();
assert!((throughput - 12.954965333409255).abs() < 0.0001);

使用方法

获取分布

首先,准备一个字符分布以从源获取熵 H(X)

use tet_rs::{Frequencies, Distribution};

let mut frequency = Frequencies::new();

// get frequency of each character
let source = "large and appropriate text is recommended";
source.chars()
    .for_each(|c| {
        frequency.record(c.clone());
    });

// normalize frequency to get distribution
let distribution = Distribution::new(frequency);

计算TET

// now you can calculate TET! :+1:
let tet = TextEntryThroughput::new(distribution);

// Of course, you can use also multibyte characters
// ref. https://doc.rust-lang.net.cn/std/primitive.char.html
let (presented, transcribed) = ("うまぴょい", "うまぽい");
let s = std::time::Duration::from_secs(2); // 4 characters per minute

// Text Entry Throughput (bits/second)
let throughput = tet.calc(presented, transcribed, s).unwrap();

功能

serde1 功能允许您通过JSON保存和加载 FrequenciesDistribution

tet_rs = { version = "0.1", features = ["serde1"] }

依赖项

~175KB