교정기 API

커뮤니티 그룹 보고서 초안,

이 문서에 대한 자세한 내용
이 버전:
https://webmachinelearning.github.io/proofreader-api
이슈 추적:
GitHub
편집자:
(Google)
(Google)

초록

proofreader API는 교정 작업을 돕기 위해 브라우저 또는 운영 체제에 내장된 언어 모델을 호출하는 고수준 인터페이스를 제공한다.

이 문서의 상태

이 명세는 웹 머신 러닝 커뮤니티 그룹에 의해 발행되었다. 이는 W3C 표준이 아니며 W3C 표준화 절차에 올라 있지도 않다. 다음에 유의하라. W3C 커뮤니티 기여자 라이선스 계약 (CLA)에 따라 제한된 옵트아웃 및 기타 조건이 적용된다. 다음에 대해 자세히 알아보기: W3C 커뮤니티 및 비즈니스 그룹.

1. 소개

현재는 설명 문서를 참조하라.

2. 의존성

이 API들은 머신 러닝 모델에 의해 구동될 것으로 예상되는 API 계열의 일부이며, 공통 API 표면 관용구와 명세 패턴을 공유한다. 현재 이러한 공유 부분에 대한 명세 텍스트는 Writing Assistance APIs § 5 Shared infrastructure에 있으며, 공통 개인정보 보호 및 보안 고려 사항은 Writing Assistance APIs § 6 Privacy considerationsWriting Assistance APIs § 7 Security considerations에서 논의된다. 이러한 API를 구현하려면 그 공유 인프라를 구현하고, 해당 개인정보 보호 및 보안 고려 사항을 준수해야 한다. 그러나 실제 writing assistance API를 구현하거나 노출할 필요는 없다. [WRITING-ASSISTANCE-APIS]

3. proofreader API

[Exposed=Window, SecureContext]
interface Proofreader {
    static Promise<Proofreader> create(optional ProofreaderCreateOptions options = {});
    static Promise<Availability> availability(optional ProofreaderCreateCoreOptions options = {});

    Promise<ProofreadResult> proofread(
        DOMString input,
        optional ProofreaderProofreadOptions options = {}
    );

    readonly attribute boolean includeCorrectionTypes;
    readonly attribute boolean includeCorrectionExplanations;

    readonly attribute FrozenArray<DOMString>? expectedInputLanguages;
    readonly attribute DOMString? correctionExplanationLanguage;
};

dictionary ProofreaderCreateCoreOptions {
    boolean includeCorrectionTypes = false;
    boolean includeCorrectionExplanations = false;

    sequence<DOMString> expectedInputLanguages;
    DOMString correctionExplanationLanguage;
};

dictionary ProofreaderCreateOptions : ProofreaderCreateCoreOptions {
    AbortSignal signal;
    CreateMonitorCallback monitor;
};

dictionary ProofreaderProofreadOptions {
    AbortSignal signal;
};

dictionary ProofreadResult {
    DOMString correctedInput;
    sequence<ProofreadCorrection> corrections;
};

dictionary ProofreadCorrection {
    unsigned long long startIndex;
    unsigned long long endIndex;
    DOMString correction;
    sequence<CorrectionType> types;
    DOMString explanation;
};

enum CorrectionType { "spelling", "punctuation", "capitalization", "grammar" };

3.1. 생성

정적 create(options) 메서드 단계는 다음과 같다.
  1. options, "Proofreader", proofreader 옵션 검증 및 정규화, proofreader 옵션 가용성 계산, proofreader 모델 다운로드, proofreader 모델 초기화, proofreader 객체 생성, 그리고 false가 주어졌을 때 AI 모델 객체 생성의 결과를 반환한다.

ProofreaderCreateCoreOptions options가 주어졌을 때, proofreader 옵션을 검증하고 정규화하려면 다음 단계를 수행한다. 이 단계들은 언어 태그를 정규화하고 중복 제거하기 위해 options를 제자리에서 변경하며, 어느 하나라도 유효하지 않으면 예외를 던진다.
  1. options 및 "expectedInputLanguages"가 주어졌을 때 언어 태그를 검증하고 정규화한다.

  2. options 및 "correctionExplanationLanguage"가 주어졌을 때 언어 태그를 검증하고 정규화한다.

ProofreaderCreateCoreOptions options가 주어졌을 때, proofreader 모델을 다운로드하려면:
  1. Assert: 이 단계들은 병렬로 실행되고 있다.

  2. options에 따라 사용자 에이전트가 텍스트를 교정하는 데 필요한 모든 것에 대한 다운로드 과정을 시작한다. 여기에는 기본 AI 모델, 특정 언어 또는 옵션 값을 위한 파인튜닝, 또는 기타 리소스가 포함될 수 있다.

  3. 다운로드 과정을 어떤 이유로든 시작할 수 없으면 false를 반환한다.

  4. true를 반환한다.

ProofreaderCreateOptions options가 주어졌을 때, proofreader 모델을 초기화하려면:
  1. Assert: 이 단계들은 병렬로 실행되고 있다.

  2. 사용자 에이전트의 교정 기능을 뒷받침하는 AI 모델에 필요한 초기화 작업을 수행한다.

    여기에는 모델을 메모리에 로드하거나, options로 표현된 다른 옵션을 지원하는 데 필요한 파인튜닝을 로드하는 것이 포함될 수 있다.

  3. 초기화가 그 밖의 이유로 실패했다면, DOMException 오류 정보를 반환한다. 이때 그 name은 "OperationError"이고, 그 details에는 적절한 세부 정보가 포함된다.

  4. null을 반환한다.

realm realmProofreaderCreateOptions options가 주어졌을 때, proofreader 객체를 생성하려면:
  1. Assert: 이 단계들은 realmsurrounding agentevent loop에서 실행되고 있다.

  2. realm에서 생성된 새 Proofreader 객체를 다음과 함께 반환한다.

    include correction types

    options["includeCorrectionTypes"]는 false를 기본값으로 함

    include correction explanations

    options["includeCorrectionExplanations"]는 false를 기본값으로 함

    expected input languages

    options["expectedInputLanguages"]가 비어 있지 않다면 그것이 주어졌을 때 frozen array를 생성한 결과, 그렇지 않으면 null

    correction explanation language

    options["correctionExplanationLanguage"]가 존재한다면 그것, 그렇지 않으면 null

3.2. 가용성

정적 availability(options) 메서드 단계는 다음과 같다.
  1. options, "Proofreader", proofreader 옵션 검증 및 정규화, 그리고 proofreader 옵션 가용성 계산이 주어졌을 때 AI 모델 가용성 계산의 결과를 반환한다.

ProofreaderCreateCoreOptions options가 주어졌을 때, proofreader 옵션 가용성을 계산하려면 다음 단계를 수행한다. 이 단계들은 Availability 값 또는 null을 반환하며, 언어 태그를 가장 잘 맞는 일치 항목으로 갱신하기 위해 options를 제자리에서 변경한다.
  1. Assert: 이 알고리즘은 병렬로 실행되고 있다.

  2. availabilityoptions["includeCorrectionTypes"], options["includeCorrectionExplanations"]가 주어졌을 때의 proofreader 비언어 옵션 가용성으로 둔다.

  3. doubleproofreader 언어 가용성 double로 둔다.

  4. double이 null이면 null을 반환한다.

  5. inputLanguageAvailabilityoptions["expectedInputLanguages"] 및 doubleinput languages가 주어졌을 때 언어 가용성 계산의 결과로 둔다.

  6. correctionExplanationLanguagesList를 « options["correctionExplanationLanguage"] »로 둔다.

  7. correctionExplanationLanguageAvailabilitycorrectionExplanationLanguagesListdoublecorrection explanation languages가 주어졌을 때 언어 가용성 계산의 결과로 둔다.

  8. options["correctionExplanationLanguage"]를 correctionExplanationLanguagesList[0]으로 설정한다.

  9. « availability, inputLanguageAvailability, correctionExplanationLanguageAvailability »가 주어졌을 때의 최소 가용성을 반환한다.

boolean includeCorrectionTypes 및 boolean includeCorrectionExplanations가 주어졌을 때의 proofreader 비언어 옵션 가용성은 다음 단계로 주어진다. 이 단계들은 Availability 값 또는 null을 반환한다.
  1. Assert: 이 알고리즘은 병렬로 실행되고 있다.

  2. 사용자 에이전트가 텍스트 교정을 지원할 수 있는지 판단하려고 시도하는 동안 어떤 오류가 있고, 사용자 에이전트가 그것을 일시적이라고 판단한다면(다시 질의하면 그러한 오류가 더 이상 발생하지 않을 수 있음), null을 반환한다.

  3. 사용자 에이전트가 includeCorrectionTypes가 설명하는 대로 correction types를 포함하거나 포함하지 않는 방식으로, 그리고 includeCorrectionExplanations가 설명하는 대로 correction explanations를 포함하거나 포함하지 않는 방식으로 텍스트 교정을 현재 지원한다면, "available"을 반환한다.

  4. 사용자 에이전트가 includeCorrectionTypesincludeCorrectionExplanations에 따라 텍스트 교정을 지원할 수 있을 것이라고 판단하지만, 이미 진행 중인 다운로드가 완료된 뒤에만 가능하다면, "downloading"을 반환한다.

  5. 사용자 에이전트가 includeCorrectionTypesincludeCorrectionExplanations에 따라 텍스트 교정을 지원할 수 있을 것이라고 판단하지만, 현재 진행 중이지 않은 다운로드를 수행한 뒤에만 가능하다면, "downloadable"을 반환한다.

  6. 그렇지 않으면 "unavailable"을 반환한다.

proofreader 언어 가용성 double은 다음 단계로 주어진다. 이 단계들은 language availabilities double 또는 null을 반환한다.
  1. Assert: 이 알고리즘은 병렬로 실행되고 있다.

  2. 사용자 에이전트가 텍스트 교정을 지원할 수 있는지 판단하려고 시도하는 동안 어떤 오류가 있고, 사용자 에이전트가 그것을 일시적이라고 판단한다면(다시 질의하면 그러한 오류가 더 이상 발생하지 않을 수 있음), null을 반환한다.

  3. 다음을 가진 language availabilities double을 반환한다:

    input languages

    그 언어로 작성된 텍스트를 교정한다는 목적이 주어졌을 때 language availabilities partition을 얻은 결과

    correction explanation languages

    그 언어로 교정 수정 사항에 대한 텍스트 설명을 생성한다는 목적이 주어졌을 때 language availabilities partition을 얻은 결과

오늘날의 소프트웨어에서 흔히 볼 수 있는 설정은 두 종류의 문어 중국어, 즉 "번체 중국어"와 "간체 중국어"를 지원하는 것이다. 사용자 에이전트가 다운로드 없이 번체 중국어로 작성된 텍스트 교정을 지원하고, 다운로드 후에는 간체 중국어를 지원한다고 가정해 보자.

이를 구현하는 한 가지 방법은 proofreader language availabilities double이 "zh-Hant"가 input languages["available"] 집합에 있고, "zh" 및 "zh-Hans"가 input languages["downloadable"] 집합에 있다고 반환하는 것이다. 이 반환값은 "zh"가 존재하도록 보장함으로써 language tag set completeness rules의 요구 사항을 따른다. "should" 수준 지침에 따라, 구현은 "zh"가 "zh-Hant"와 함께 available input languages 집합에 속하는 대신, "zh-Hans"와 함께 downloadable input languages 집합에 속한다고 결정했다.

LookupMatchingLocaleByBestFit 사용과 결합되면, 이는 availability()가 다음 답을 제공한다는 뜻이다:

function a(languageTag) {
  return Proofreader.availability({
    expectedInputLanguages: [languageTag]
  });
}

await a("zh") === "downloadable";
await a("zh-Hant") === "available";
await a("zh-Hans") === "downloadable";

await a("zh-TW") === "available";      // zh-TW는 zh-Hant에 가장 잘 맞음
await a("zh-HK") === "available";      // zh-HK는 zh-Hant에 가장 잘 맞음
await a("zh-CN") === "downloadable";   // zh-CN은 zh-Hans에 가장 잘 맞음

await a("zh-BR") === "downloadable";   // zh-BR은 zh에 가장 잘 맞음
await a("zh-Kana") === "downloadable"; // zh-Kana는 zh에 가장 잘 맞음

3.3. 언어 가용성

language availabilities partitionmap이며, 그 keys는 "downloading", "downloadable", 또는 "available"이고, 그 valuessets로, Unicode 정규화 locale identifiers를 나타내는 문자열들이다. [ECMA-402]

language availabilities double은 다음 items를 가진 struct이다:

언어 가용성을 확인하는 목적의 설명 purpose가 주어졌을 때, language availabilities partition을 얻으려면:
  1. partition을 «[ "available" → 빈 set, "downloading" → 빈 set, "downloadable" → 빈 set ]»로 둔다.

  2. 사용자 에이전트가 purpose현재 지원하는 각 인간 언어 languageTag에 대해, 이것은 Unicode 정규화 locale identifier로 표현되며, For each:

    1. languageTagpartition["available"]에 추가한다.

  3. 사용자 에이전트가 purpose지원할 수 있을 것이라고 판단하지만, 이미 진행 중인 다운로드를 완료한 뒤에만 가능한 각 인간 언어 languageTag에 대해, 이것은 Unicode 정규화 locale identifier로 표현되며 For each:

    1. languageTagpartition["downloading"]에 추가한다.

  4. 사용자 에이전트가 purpose지원할 수 있을 것이라고 판단하지만, 현재 진행 중이지 않은 다운로드를 수행한 뒤에만 가능한 각 인간 언어 languageTag에 대해, 이것은 Unicode 정규화 locale identifier로 표현되며 For each:

    1. languageTagpartition["downloadable"]에 추가한다.

  5. Assert: partition["available"], partition["downloading"], 및 partition["downloadable"]은 서로소이다.

  6. partition["available"], partition["downloading"], 및 partition["downloadable"]의 union이 language tag set completeness rules를 충족하지 않으면:

    1. missingLanguageTags를 그 union이 language tag set completeness rules를 충족하기 위해 필요한 누락된 언어 태그들의 set으로 둔다.

    2. missingLanguageTags의 각 languageTag에 대해 For each:

    3. languageTag를 세 집합 중 하나에 추가한다. 어느 집합에 추가할지는 구현 정의이며, "가장 좋은 fallback languages"를 함께 유지한다는 측면에서 LookupMatchingLocaleByBestFit와 유사한 고려 사항에 따라 안내되어야 한다.

    4. partition을 반환한다.

문자열들의 ordered set requestedLanguageslanguage availabilities partition partition이 주어졌을 때, 언어 가용성을 계산하려면 다음 단계를 수행한다. 이 단계들은 Availability 값을 반환하며, 언어 태그를 가장 잘 맞는 일치 항목으로 갱신하기 위해 requestedLanguages를 제자리에서 변경한다.
  1. availability를 "available"로 둔다.

  2. requestedLanguages의 각 language에 대해 For each:

    1. unavailable을 true로 둔다.

    2. « "available", "downloading", "downloadable" »의 각 availabilityToCheck에 대해 For each:

    3. languagesWithThisAvailabilitypartition[availabilityToCheck]로 둔다.

    4. bestMatchLookupMatchingLocaleByBestFit(languagesWithThisAvailability, « language »)로 둔다.

    5. bestMatch가 undefined가 아니면:

      1. requestedLanguages에서 languagebestMatch.[[locale]]로 교체한다.

      2. availabilityavailabilityavailabilityToCheck가 주어졌을 때의 최소 가용성으로 설정한다.

      3. unavailable을 false로 설정한다.

      4. Break.

    6. unavailable이 true이면 "unavailable"을 반환한다.

  3. availability를 반환한다.

3.4. Proofreader 클래스

모든 Proofreaderinclude correction type을 가지며, 이는 boolean이거나 false를 기본값으로 하며, 생성 중에 설정된다.

모든 Proofreaderinclude correction explanations를 가지며, 이는 boolean이거나 false를 기본값으로 하며, 생성 중에 설정된다.

모든 Proofreaderexpected input languages를 가지며, 이는 FrozenArray<DOMString> 또는 null이고, 생성 중에 설정된다.

모든 Proofreadercorrection explanation language를 가지며, 이는 string 또는 null이고, 생성 중에 설정된다.


includeCorrectionTypes getter 단계는 thisinclude correction types를 반환하는 것이다.

type getter 단계는 thisinclude correction explanations를 반환하는 것이다.

expectedInputLanguages getter 단계는 thisexpected input languages를 반환하는 것이다.

correctionExplanationLanguage getter 단계는 thiscorrection explanation language를 반환하는 것이다.


proofread(input, options) 메서드 단계는 다음과 같다.
  1. operation을 인수 chunkProduced, done, error, 및 stopProducing을 받고, thisinclude correction types, thisinclude correction explanations, thiscorrection explanation language, chunkProduced, done, error, 및 stopProducing가 주어졌을 때 input을 교정하는 알고리즘 단계로 둔다.

  2. 집계된 AI 모델 결과를 얻은 결과를 반환한다. 이때 this, options, 및 operation이 주어진다.

measureInputUsage(input, options) 메서드 단계는 다음과 같다.
  1. measureUsage를 인수 stopMeasuring을 받고, input, thisinclude correction types, thisinclude correction explanations, thiscorrection explanation language, 및 stopMeasuring가 주어졌을 때 proofreader 입력 사용량을 측정한 결과를 반환하는 알고리즘 단계로 둔다.

  2. AI 모델 입력 사용량을 측정한 결과를 반환한다. 이때 this, options, 및 measureUsage가 주어진다.

3.5. 교정

3.5.1. 알고리즘

다음이 주어졌을 때 proofread하려면:

다음 단계를 수행한다:

  1. Assert: 이 알고리즘은 병렬로 실행되고 있다.

  2. requestedinput, includeCorrectionTypes, correctionExplanationLanguage, correctionExplanationLanguage, 및 stopProducing가 주어졌을 때 proofreader 입력 사용량 측정의 결과로 둔다.

  3. requested가 null이면 반환한다.

  4. requestederror information이면:

    1. requested가 주어졌을 때 error를 수행한다.

    2. 반환한다.

  5. Assert: requested는 숫자이다.

  6. 다음 지침의 제약을 받는 구현 정의 방식으로, input을 교정된 텍스트인 string correctedInput과, input에서 correctedInput을 형성하기 위해 이루어진 모든 수정 사항을 자세히 나타내는 ProofreadCorrection corrections를 가진 ProofreadResult로 교정하는 과정을 시작한다.

    input이 빈 문자열이거나, 그 밖에 교정 가능한 내용이 없는 경우(예: 공백 문자 또는 제어 문자만 포함하는 경우), 그 결과 교정된 텍스트는 빈 문자열이어야 한다. 이러한 경우에는 includeCorrectionTypes, includeCorrectionExplanations, 및 correctionExplanationLanguage가 무시되어야 한다.

    교정은 includeCorrectionTypesincludeCorrectionExplanations가 제공하는 지침을 따라야 한다.

    교정 과정은 § 4 개인정보 보호 고려 사항§ 5 보안 고려 사항의 지침, 특히 Writing Assistance APIs § 6.4 User inputWriting Assistance APIs § 7.2 Runtime shared resources를 포함하되 이에 한정되지 않는 지침을 따라야 한다.

    correctionExplanationLanguage가 null이 아니면, 교정은 그 언어로 되어야 한다. 그렇지 않으면 input의 언어로 되어야 한다. input이 여러 언어를 포함하거나, input의 언어를 감지할 수 없다면, correction explanation language는 구현 정의이거나, 구현은 § 3.5.4 오류의 지침에 따라 이를 오류로 처리할 수 있다.

    구현자는 결과가 input에 의해 유도된 임의 출력이 아니라 실제로 input의 교정 결과가 되도록 최대한 노력해야 한다.

    예를 들어, input이 "what is capital of France"인 경우, 이 질문에 답하는 것, 예를 들어 "Paris is the capital of France."를 출력하는 것은 올바르지 않다. 더 올바른 출력은 예를 들어 "What is the capital of France?"가 될 것이다.

    1. 교정 데이터의 다음 청크가 생성되거나, 교정 과정이 완료되거나, stopProducing 호출 결과가 true가 될 때까지 기다린다.

    2. 그러한 청크가 성공적으로 생성되면:

    3. 이를 string chunk로 표현한다.

    4. chunk가 주어졌을 때 chunkProduced를 수행한다.

    5. 그렇지 않고, 교정 과정이 완료되었다면:

    6. done을 수행한다.

    7. Break.

    8. 그렇지 않고, stopProducing이 true를 반환한다면 break한다.

    9. 그렇지 않고, 교정 중에 오류가 발생했다면:

    10. 그 오류를 § 3.5.4 오류의 지침에 따라 error information errorInfo로 표현한다.

    11. errorInfo가 주어졌을 때 error를 수행한다.

    12. Break.

3.5.2. 사용량

다음이 주어졌을 때 proofreader 입력 사용량을 측정하려면:

다음 단계를 수행한다:

  1. Assert: 이 알고리즘은 병렬로 실행되고 있다.

  2. inputToModelinput, includeCorrectionTypes, includeCorrectionExplanations, 및 correctionExplanationLanguage가 주어졌을 때 proofread하기 위해 기저 모델에 보내질 구현 정의 문자열로 둔다.

    이 과정에서 stopMeasuring이 true를 반환하기 시작하면 null을 반환한다.

    이 과정에서 오류가 발생하면, § 3.5.4 오류의 지침에 따라 적절한 DOMException 오류 정보를 반환한다.

  3. inputToModel이 기저 모델에 주어졌을 때 이를 표현하는 데 필요한 입력 사용량을 반환한다. 정확한 계산 절차는 다음 제약의 대상인 구현 정의이다.

    반환된 입력 사용량은 음수가 아니고 유한해야 한다. 교정 과정에 사용량 할당량이 없다면 0이어야 한다. 그렇지 않으면 양수여야 하며 inputToModel길이에 대략 비례해야 한다.

    이는 언어 모델 토큰화 방식에서 input을 표현하는 데 필요한 토큰 수일 수 있고, 또는 input길이일 수도 있다. 또한 모델에 제공하는 데 필요한 접두사 또는 접미사의 사용량도 계산하는 이러한 방식들의 변형일 수도 있다.

    이 과정에서 stopMeasuring이 true를 반환하기 시작하면 대신 null을 반환한다.

    이 과정에서 오류가 발생하면, § 3.5.4 오류의 지침에 따라 적절한 DOMException 오류 정보를 대신 반환한다.

3.5.3. 옵션

proofread 알고리즘의 세부 사항은 구현 정의인데, 이는 AI 모델에 의해 구동될 것으로 예상되기 때문이다. 그러나 웹 개발자가 includeCorrectionTypesincludeCorrectionExplanations 플래그를 통해 제어할 수 있도록 의도되어 있다.

이 절은 proofread 구현이 교정 과정을 안내하기 위해 각 boolean 플래그를 어떻게 사용해야 하는지에 대한 규범적 지침을 제공한다.

includeCorrectionTypes
의미
"true"

교정 결과는 수정 사항 목록을 포함해야 하며, 여기서 각 ProofreadCorrectionstartIndex부터 endIndex까지의 범위로 정의되고, CorrectionType 열거형에 따라 수정된 오류의 유형을 설명해야 한다.

"false"

교정 결과는 수정 사항 목록을 포함해야 하며, 여기서 각 ProofreadCorrectionstartIndex부터 endIndex까지의 범위로 정의되고, 수정된 오류의 유형을 제공하지 않는다.

includeCorrectionExplanations
의미
"true"

교정 결과는 수정 사항 목록을 포함해야 하며, 여기서 각 ProofreadCorrectionstartIndex부터 endIndex까지의 범위로 정의되고, 수정된 오류에 대한 텍스트 설명을 제공해야 한다.

"false"

교정 결과는 수정 사항 목록을 포함해야 하며, 여기서 각 ProofreadCorrectionstartIndex부터 endIndex까지의 범위로 정의되고, 수정된 오류에 대한 텍스트 설명을 제공하지 않는다.

모든 "should" 수준 지침과 마찬가지로, 사용자 에이전트가 이를 완벽하게 따르지 않을 수 있다. 특히 모든 수정 사항에 correction types를 제공하는 경우, 언어 모델이 완벽하게 따르지 않을 수 있음이 예상된다.

3.5.4. 오류

교정이 실패하면, 다음과 같은 가능한 이유가 웹 개발자에게 노출될 수 있다. 이 표는 가능한 DOMException names와 구현이 이를 사용해야 하는 경우를 나열한다:

DOMException name 시나리오
"NotAllowedError"

사용자 선택 또는 사용자 에이전트 정책에 의해 교정이 비활성화되어 있다.

"NotSupportedError"

교정할 입력 또는 제공될 맥락이 사용자 에이전트가 지원하지 않는 언어였거나, create() 호출에서 제대로 제공되지 않았다.

proofreading correction explanation language가 사용자 에이전트가 지원하지 않는 언어가 되었거나 (예: 사용자 에이전트가 그 출력 언어에 대해 충분한 품질 관리 테스트를 수행하지 않았기 때문), create() 호출에서 제대로 제공되지 않았다.

includeCorrectionExplanations가 true로 설정되었고, correctionExplanationLanguage 옵션이 설정되지 않았으며, 입력 텍스트의 언어를 결정할 수 없어서 사용자 에이전트가 좋은 correction explanation language 기본값을 사용할 수 없었다.

"UnknownError"

사용자 에이전트가 교정할 수 없고 동시에 § 4 개인정보 보호 고려 사항 또는 § 5 보안 고려 사항에 주어진 요구 사항을 충족할 수 없다고 판단하는 경우를 포함한 모든 다른 시나리오. 또는 사용자 에이전트가 실패 이유를 공개하지 않는 것을 선호하는 경우.

이 표는 proofreader API가 노출할 수 있는 예외의 전체 목록을 제공하지 않는다. 특정 구현 정의 단계에서 발생할 수 있는 것들만 포함한다.

3.6. 권한 정책 통합

proofreader API에 대한 접근은 policy-controlled feature "proofreader" 뒤에서 제어되며, 이는 'self'기본 허용 목록을 가진다.

4. 개인정보 보호 고려 사항

translator 및 language detector API의 개인정보 보호 고려 사항에 대한 논의는 Writing Assistance APIs § 6 Privacy considerations를 참조하라. 그 텍스트는 § 2 의존성에서 언급한 것처럼 같은 인프라를 공유하는 모든 API에 적용되도록 작성되었다.

5. 보안 고려 사항

translator 및 language detector API의 보안 고려 사항에 대한 논의는 Writing Assistance APIs § 7 Security considerations를 참조하라. 그 텍스트는 § 2 의존성에서 언급한 것처럼 같은 인프라를 공유하는 모든 API에 적용되도록 작성되었다.

적합성

문서 규약

적합성 요구 사항은 서술적 주장과 RFC 2119 용어의 조합으로 표현된다. 이 문서의 규범적 부분에 있는 핵심 단어 “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, 및 “OPTIONAL”은 RFC 2119에 설명된 대로 해석되어야 한다. 그러나 가독성을 위해 이 명세에서는 이러한 단어들이 모두 대문자로 나타나지는 않는다.

이 명세의 모든 텍스트는 규범적이다. 단, 명시적으로 비규범으로 표시된 절, 예제 및 참고는 예외이다. [RFC2119]

이 명세의 예제는 “for example”이라는 단어로 소개되거나 규범적 텍스트와 구분되도록 class="example"으로 표시된다. 다음과 같다:

이는 정보성 예제의 한 예이다.

정보성 참고는 “Note”라는 단어로 시작하며 규범적 텍스트와 구분되도록 class="note"로 표시된다. 다음과 같다:

Note, 이는 정보성 참고이다.

색인

이 명세에서 정의된 용어

참조로 정의된 용어

참조 문헌

규범적 참조 문헌

[DOM]
Anne van Kesteren. DOM Standard. Living Standard. URL: https://dom.spec.whatwg.org/
[ECMA-402]
ECMAScript Internationalization API Specification. URL: https://tc39.es/ecma402/
[ECMASCRIPT]
ECMAScript Language Specification. URL: https://tc39.es/ecma262/multipage/
[HTML]
Anne van Kesteren; et al. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. Living Standard. URL: https://infra.spec.whatwg.org/
[PERMISSIONS-POLICY-1]
Ian Clelland. Permissions Policy. URL: https://w3c.github.io/webappsec-permissions-policy/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. Living Standard. URL: https://webidl.spec.whatwg.org/
[WRITING-ASSISTANCE-APIS]
Writing Assistance APIs. Draft Community Group Report. URL: https://webmachinelearning.github.io/writing-assistance-apis/

IDL 색인

[Exposed=Window, SecureContext]
interface Proofreader {
    static Promise<Proofreader> create(optional ProofreaderCreateOptions options = {});
    static Promise<Availability> availability(optional ProofreaderCreateCoreOptions options = {});

    Promise<ProofreadResult> proofread(
        DOMString input,
        optional ProofreaderProofreadOptions options = {}
    );

    readonly attribute boolean includeCorrectionTypes;
    readonly attribute boolean includeCorrectionExplanations;

    readonly attribute FrozenArray<DOMString>? expectedInputLanguages;
    readonly attribute DOMString? correctionExplanationLanguage;
};

dictionary ProofreaderCreateCoreOptions {
    boolean includeCorrectionTypes = false;
    boolean includeCorrectionExplanations = false;

    sequence<DOMString> expectedInputLanguages;
    DOMString correctionExplanationLanguage;
};

dictionary ProofreaderCreateOptions : ProofreaderCreateCoreOptions {
    AbortSignal signal;
    CreateMonitorCallback monitor;
};

dictionary ProofreaderProofreadOptions {
    AbortSignal signal;
};

dictionary ProofreadResult {
    DOMString correctedInput;
    sequence<ProofreadCorrection> corrections;
};

dictionary ProofreadCorrection {
    unsigned long long startIndex;
    unsigned long long endIndex;
    DOMString correction;
    sequence<CorrectionType> types;
    DOMString explanation;
};

enum CorrectionType { "spelling", "punctuation", "capitalization", "grammar" };