https://github.com/nopdan/gosmq
昙花赛码器 - 最快的赛码器(对码表类输入方案针对指定文本进行评估)。
https://github.com/nopdan/gosmq
go ime
Last synced: 5 months ago
JSON representation
昙花赛码器 - 最快的赛码器(对码表类输入方案针对指定文本进行评估)。
- Host: GitHub
- URL: https://github.com/nopdan/gosmq
- Owner: nopdan
- License: gpl-3.0
- Created: 2021-08-01T03:53:07.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-31T04:48:00.000Z (about 2 years ago)
- Last Synced: 2024-06-21T14:22:40.786Z (almost 2 years ago)
- Topics: go, ime
- Language: Go
- Homepage:
- Size: 2.61 MB
- Stars: 16
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README

### 昙花赛码器 - 最快的赛码器
[](https://github.com/nopdan/gosmq/stargazers)
[](https://github.com/nopdan/gosmq/network/members)
[](https://github.com/nopdan/gosmq/releases)
[](https://github.com/nopdan/gosmq/actions/workflows/build.yml)


在 [assets](./assets) 文件夹下查看预览图。
## 本赛码器专用格式
`字词 tab 真实输入码 tab 重码顺序`
> 首选的 1 可以省略。
## **用法**
### `server` 命令
执行`.\smq.exe server`,启动`server`模式,自动打开浏览器。
`server`模式只会读取 `text` 文件夹下的文本和 `dict` 文件夹下的码表。
手动放码表要注意格式,推荐从剪贴板添加码表,具体操作步骤为:
1. 粘贴码表
2. 选择对应格式,并设置起顶码长等选项
3. 点击赛码
跑一次赛码会自动保存转换后的码表到 dict 文件夹内。
> 剪贴板需要浏览器授予权限
### `convert` 命令转换格式
使用 `.\smq.exe convert` 命令转换格式。
支持格式:_极速赛码表(jisu|js)_、_多多|rime(duoduo|dd|rime)_、_极点|小小(jidian|jd|xiaoxiao|xx)_、_冰凌(bingling|bl)_
### 主命令参数解释
#### 文本和码表
`-i` 和 `-t` 用法一样
examples:
`-i 文件1 -i 文件2` 载入两个码表
`-i 文件夹1 -i 文件夹2` 载入文件夹 1 和文件夹 2 内所有码表
`-i 文件1 -i 文件夹1` 载入文件 1 和文件夹 1 内所有码表
> 载入多个文本,不保证输出结果有序。
#### 匹配算法
默认贪心匹配,按照词长进行匹配,与码表中的顺序无关,相同词选择**码长较短**的。
指定 `--stable`,按照码表顺序匹配,相同词选择**靠前**的。
指定 `--single` 或 `-s`,单字模式,只取码表中的单字,同一个字**码长较短**的。
#### 输出详细数据
- `--split`: 输出分词数据
- `--stat`: 输出词条数据
- `--json`: 输出 json 数据
`--verbose` 或 `-v` 输出所有数据,可以追加 `--json=false` 关闭其中某项。
#### 合并多文本的结果
使用 `--merge` 或 `-m` 合并多文本的结果,这时**输出分词结果**不再生效。
#### _关于匹配逻辑_
若某个字符码表中匹配不到
默认情况:
- 是标点符号
- 根据内置的符号表继续匹配
- 不是标点符号:编码设置为 `######`
- 是汉字:记为缺字
指定 `--clean` 或 `-c`: 跳过该字符
## Benchmark
> 配置:windows 10, i7-9750H(6c12t), 8g\*2 2666Mhz
> 以下采用码表《091 点儿 2023 春》,词条数 214338
```powershell
.\smq.exe -i .\dict\091点儿2023春.txt -t .\text\心情决定事情.txt
.\smq.exe -i .\dict\091点儿2023春.txt -t .\text\红楼梦原著.txt
.\smq.exe -i .\dict\091点儿2023春.txt -t .\text\《庆余年》.txt
.\smq.exe -i .\dict\091点儿2023春.txt -t .\text\那些热血飞扬的日子(整理版).txt
.\smq.exe -i .\dict\091点儿2023春.txt -t .\text\极品全能高手_花都大少.txt
```
| 文本 | 文本字数 | 耗时 |
| ------------------ | -------: | ----: |
| 心情决定事情 | 96253 | 120ms |
| 红楼梦原著 | 872209 | 130ms |
| 《庆余年》 | 3464055 | 195ms |
| 那些热血飞扬的日子 | 16485176 | 440ms |
| 极品全能高手 | 24910973 | 610ms |
> 以下采用码表《红辣椒五笔码表》,词条数 8896705
```powershell
.\smq.exe -i .\dict\红辣椒五笔码表880万多多格式.txt -t .\text\心情决定事情.txt
.\smq.exe -i .\dict\红辣椒五笔码表880万多多格式.txt -t .\text\极品全能高手_花都大少.txt
载入码表: 红辣椒五笔码表880万多多格式
```
| 文本 | 文本字数 | 耗时 |
| ------------ | -------: | ---: |
| 心情决定事情 | 96253 | 8.6s |
| 极品全能高手 | 24910973 | 9.6s |
> 多文件测试
```powershell
# 使用 --merge 合并所有文本结果
.\smq.exe -i .\dict\091点儿2023春.txt -t .\super\data\ --merge
# 载入码表: 091点儿2023春
# 共载入 26078 个文本,总字数 192108228,总耗时:5.9521118s
```
> 输出详情测试
```powershell
.\smq.exe -i .\dict\091点儿2023春.txt -t .\text\极品全能高手_花都大少.txt -v
# cost time: 1.2575731s
```
## 编译
> 用到的工具链:`bun`, `go 1.22.0+`
### 编译前端
```sh
cd frontend
bun install
bun run build
cd ..
```
### 编译主程序
```sh
go mod tidy
go build
```