跳至內容
Astera Technology

核對摘錄答案是否來自同一連續片段

找到同一連續來源片段才算原文摘錄,不接拼湊分散字詞。

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

訂明本例驗收任務

假設摘錄答案須為來源一段完全相同的連續文字,大小寫及標點都計,答案不可空白。找到時列首次出現的零起點及不含終點位置。隔開詞語拼成一句看似合理,也不是本例摘錄。

  1. 保存確切來源及候選
  2. 查找未改連續片段
  3. 列位置或並非摘錄

改述可能另有用途,但不符合此摘錄準則。

使用已填個案

原創假設輸入及確切答案鍵
個案已提供輸入預期結構化結果判斷及原因
確切連續文字{"source":"Collect after review, never before review.","answer":"after review"}{"extractive":true,"start":8,"end":20}位置八至十九正是候選字樣。
把隔開字詞拼接{"source":"Collect after review, never before review.","answer":"Collect before review"}{"extractive":false,"start":null,"end":null}那些字並非來源同一連續片段。
候選空白{"source":"Collect after review.","answer":""}{"extractive":false,"start":null,"end":null}本要求明訂答案不可空白。
下載可編輯 CSV ↓

逐步處理 empty-extract 個案,須得到甚麼結果?原因是甚麼?

查看參考答案

{"extractive":false,"start":null,"end":null}。本要求明訂答案不可空白。

執行完整本機驗算

另存為 .mjs,以 Node.js 執行;只驗提供的個案
import assert from 'node:assert/strict';

function evaluate(x){
 if(!x.answer.length)return {extractive:false,start:null,end:null};const start=x.source.indexOf(x.answer);
 return {extractive:start>=0,start:start>=0?start:null,end:start>=0?start+x.answer.length:null};
}

const cases = [
  {
    "id": "exact-span",
    "input": {
      "source": "Collect after review, never before review.",
      "answer": "after review"
    },
    "expected": {
      "extractive": true,
      "start": 8,
      "end": 20
    }
  },
  {
    "id": "mosaic-claim",
    "input": {
      "source": "Collect after review, never before review.",
      "answer": "Collect before review"
    },
    "expected": {
      "extractive": false,
      "start": null,
      "end": null
    }
  },
  {
    "id": "empty-extract",
    "input": {
      "source": "Collect after review.",
      "answer": ""
    },
    "expected": {
      "extractive": false,
      "start": null,
      "end": null
    }
  }
];
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)}));
下載可執行例子 ↓

只在要求原文摘錄時用此檢查。找到片段不代表答中問題、資料現行或可披露。

相關資源