跳至內容
Astera Technology

逐句配對兩種語言的標籤

按同事確認概念鍵配雙語句子,獨立排序不會交錯對應。

下載完整個案資料及參考答案 ↓

訂明本例驗收任務

假設雙語交接兩列文字各自排序,同事讀過意思後為每句提供概念鍵。按鍵把一英文與一中文配對;重複或欠對應便列錯,不按最近位置配。檢查只核對關係,不評翻譯好壞。

  1. 讀同事確認的概念鍵
  2. 數每語對應句數
  3. 列唯一配對及未定鍵

意思標籤未確認,先做雙語覆核。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
兩語次序不同{"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。
下載可編輯 CSV ↓

逐步處理 two-chinese-candidates 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"pairs":[],"errors":["pickup"]}。一對一要求沒有規則可自行選 Z1 或 Z2。

執行完整本機驗算

另存為 .mjs,以 Node.js 執行;只驗提供的個案
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)}));
下載可執行例子 ↓

正式個案把句子、鍵及編號一併保存。對鍵只測提供的配對關係;鍵正確也未證明句子內容正確。

相關資源