訂明本例驗收任務
假設雙語交接兩列文字各自排序,同事讀過意思後為每句提供概念鍵。按鍵把一英文與一中文配對;重複或欠對應便列錯,不按最近位置配。檢查只核對關係,不評翻譯好壞。
- 讀同事確認的概念鍵
- 數每語對應句數
- 列唯一配對及未定鍵
意思標籤未確認,先做雙語覆核。
使用已填個案
| 個案 | 已提供輸入 | 預期結構化結果 | 判斷及原因 |
|---|---|---|---|
| 兩語次序不同 | {"en":[{"id":"E1","key":"pickup"},{"id":"E2","key":"delivery"}],"zh":[{"id":"Z7","key":"delivery"},{"id":"Z8","key":"pickup"}]} | {"pairs":[{"key":"delivery","en":"E2","zh":"Z7"},{"key":"pickup","en":"E1","zh":"Z8"}],"errors":[]} | 按概念鍵配對,位置交叉但意思不交錯。 |
| 欠中文對應 | {"en":[{"id":"E1","key":"pickup"}],"zh":[]} | {"pairs":[],"errors":["pickup"]} | 欠另一語句子,不能列已配對。 |
| 兩個中文候選 | {"en":[{"id":"E1","key":"pickup"}],"zh":[{"id":"Z1","key":"pickup"},{"id":"Z2","key":"pickup"}]} | {"pairs":[],"errors":["pickup"]} | 一對一要求沒有規則可自行選 Z1 或 Z2。 |
逐步處理 two-chinese-candidates 個案,須得到甚麼結果?原因是甚麼?
查看參考答案
{"pairs":[],"errors":["pickup"]}。一對一要求沒有規則可自行選 Z1 或 Z2。
執行完整本機驗算
import assert from 'node:assert/strict';
function evaluate(x){
const keys=[...new Set([...x.en,...x.zh].map(s=>s.key))].sort(),pairs=[],errors=[];
for(const key of keys){const a=x.en.filter(s=>s.key===key),b=x.zh.filter(s=>s.key===key);if(a.length===1&&b.length===1)pairs.push({key,en:a[0].id,zh:b[0].id});else errors.push(key);}
return {pairs,errors};
}
const cases = [
{
"id": "independent-order",
"input": {
"en": [
{
"id": "E1",
"key": "pickup"
},
{
"id": "E2",
"key": "delivery"
}
],
"zh": [
{
"id": "Z7",
"key": "delivery"
},
{
"id": "Z8",
"key": "pickup"
}
]
},
"expected": {
"pairs": [
{
"key": "delivery",
"en": "E2",
"zh": "Z7"
},
{
"key": "pickup",
"en": "E1",
"zh": "Z8"
}
],
"errors": []
}
},
{
"id": "missing-chinese",
"input": {
"en": [
{
"id": "E1",
"key": "pickup"
}
],
"zh": []
},
"expected": {
"pairs": [],
"errors": [
"pickup"
]
}
},
{
"id": "two-chinese-candidates",
"input": {
"en": [
{
"id": "E1",
"key": "pickup"
}
],
"zh": [
{
"id": "Z1",
"key": "pickup"
},
{
"id": "Z2",
"key": "pickup"
}
]
},
"expected": {
"pairs": [],
"errors": [
"pickup"
]
}
}
];
for (const c of cases) assert.deepEqual(evaluate(c.input), c.expected, c.id);
console.log(JSON.stringify({checked:cases.length,caseIds:cases.map(c=>c.id)}));
正式個案把句子、鍵及編號一併保存。對鍵只測提供的配對關係;鍵正確也未證明句子內容正確。