共用方式為


Evaluations - List

取得已驗證訂用帳戶的評估清單。

GET {endpoint}/speechtotext/evaluations?api-version=2024-11-15
GET {endpoint}/speechtotext/evaluations?skip={skip}&top={top}&filter={filter}&api-version=2024-11-15

URI 參數

名稱 位於 必要 類型 Description
endpoint
path True

string

支援的認知服務端點(通訊協定和主機名,例如:https://westus.api.cognitive.microsoft.com)。

api-version
query True

string

要求的 API 版本。

filter
query

string

用於選取可用評估子集的篩選表達式。

        - Supported properties: displayName, description, createdDateTime, lastActionDateTime, status and locale.

        - Operators:

          - eq, ne are supported for all properties.

          - gt, ge, lt, le are supported for createdDateTime and lastActionDateTime.

          - and, or, not are supported.

        - Example:

          filter=displayName eq 'My evaluation'
skip
query

integer

int32

將會略過的數據集數目。

top
query

integer

int32

略過之後將包含的數據集數目。

要求標頭

名稱 必要 類型 Description
Ocp-Apim-Subscription-Key True

string

在這裡提供您的認知服務帳戶金鑰。

回應

名稱 類型 Description
200 OK

PaginatedEvaluations

還行

標題

Retry-After: integer

Other Status Codes

Error

發生錯誤。

安全性

Ocp-Apim-Subscription-Key

在這裡提供您的認知服務帳戶金鑰。

類型: apiKey
位於: header

範例

Get all evaluations
Get all evaluations with where status is equal to 'Running'

Get all evaluations

範例要求

GET {endpoint}/speechtotext/evaluations?skip=0&top=2&api-version=2024-11-15

範例回覆

{
  "values": [
    {
      "displayName": "Evalution of one model against another model",
      "description": "The description of the evaluation",
      "self": "https://westus.api.cognitive.microsoft.com/speechtotext/evaluations/a55a327b-c866-40b3-a08d-9c0945738633?api-version=2024-11-15",
      "createdDateTime": "2019-01-07T11:34:12Z",
      "lastActionDateTime": "2019-01-07T11:36:07Z",
      "model1": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/models/base/8a043172-65b7-4cf3-a8b5-4449efa5a0f1?api-version=2024-11-15"
      },
      "model2": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/models/827712a5-f942-4997-91c3-7c6cde35600b?api-version=2024-11-15"
      },
      "dataset": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/datasets/9d5f4100-5f8e-4dd6-bd83-9bbbf50d57f1?api-version=2024-11-15"
      },
      "transcription1": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/transcriptions/ba7ea6f5-3065-40b7-b49a-a90f48584683?api-version=2024-11-15"
      },
      "transcription2": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/transcriptions/ad86d0c9-af6d-4d14-a621-c60d7d65b74f?api-version=2024-11-15"
      },
      "links": {
        "files": "https://westus.api.cognitive.microsoft.com/speechtotext/evaluations/00000000-0000-0000-0000-000000000000/files?api-version=2024-11-15"
      },
      "locale": "en-US",
      "properties": {
        "wordErrorRate1": 0.065,
        "sentenceErrorRate1": 0.375,
        "tokenErrorRate1": 0.125,
        "sentenceCount1": 8,
        "wordCount1": 46,
        "correctWordCount1": 43,
        "wordSubstitutionCount1": 3,
        "wordDeletionCount1": 0,
        "wordInsertionCount1": 0,
        "tokenCount1": 48,
        "correctTokenCount1": 42,
        "tokenSubstitutionCount1": 6,
        "tokenDeletionCount1": 0,
        "tokenInsertionCount1": 0,
        "tokenErrors1": {
          "punctuation": {
            "numberOfEdits": 2,
            "percentageOfAllEdits": 0.66
          },
          "capitalization": {
            "numberOfEdits": 1,
            "percentageOfAllEdits": 0.33
          }
        },
        "wordErrorRate2": 0.065,
        "sentenceErrorRate2": 0.375,
        "tokenErrorRate2": 0.125,
        "sentenceCount2": 8,
        "wordCount2": 46,
        "correctWordCount2": 43,
        "wordSubstitutionCount2": 3,
        "wordDeletionCount2": 0,
        "wordInsertionCount2": 0,
        "tokenCount2": 48,
        "correctTokenCount2": 42,
        "tokenSubstitutionCount2": 6,
        "tokenDeletionCount2": 0,
        "tokenInsertionCount2": 0,
        "tokenErrors2": {
          "punctuation": {
            "numberOfEdits": 208,
            "percentageOfAllEdits": 1.22
          },
          "capitalization": {
            "numberOfEdits": 126,
            "percentageOfAllEdits": 0.74
          },
          "inverseTextNormalization": {
            "numberOfEdits": 409,
            "percentageOfAllEdits": 2.4
          },
          "lexical": {
            "numberOfEdits": 16284,
            "percentageOfAllEdits": 95.41
          },
          "others": {
            "numberOfEdits": 41,
            "percentageOfAllEdits": 0.24
          }
        }
      },
      "status": "Succeeded"
    },
    {
      "displayName": "Evalution of one model against another model",
      "description": "The description of the evaluation",
      "self": "https://westus.api.cognitive.microsoft.com/speechtotext/evaluations/daaa45a7-38f0-4918-87d2-bf55fec32ac5?api-version=2024-11-15",
      "createdDateTime": "2019-01-07T11:34:12Z",
      "lastActionDateTime": "2019-01-07T11:36:07Z",
      "model1": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/models/base/8a043172-65b7-4cf3-a8b5-4449efa5a0f1?api-version=2024-11-15"
      },
      "model2": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/models/827712a5-f942-4997-91c3-7c6cde35600b?api-version=2024-11-15"
      },
      "dataset": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/datasets/9d5f4100-5f8e-4dd6-bd83-9bbbf50d57f1?api-version=2024-11-15"
      },
      "transcription1": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/transcriptions/ba7ea6f5-3065-40b7-b49a-a90f48584683?api-version=2024-11-15"
      },
      "transcription2": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/transcriptions/ad86d0c9-af6d-4d14-a621-c60d7d65b74f?api-version=2024-11-15"
      },
      "links": {
        "files": "https://westus.api.cognitive.microsoft.com/speechtotext/evaluations/00000000-0000-0000-0000-000000000000/files?api-version=2024-11-15"
      },
      "locale": "en-US",
      "properties": {
        "wordErrorRate1": 0.065,
        "sentenceErrorRate1": 0.375,
        "tokenErrorRate1": 0.125,
        "sentenceCount1": 8,
        "wordCount1": 46,
        "correctWordCount1": 43,
        "wordSubstitutionCount1": 3,
        "wordDeletionCount1": 0,
        "wordInsertionCount1": 0,
        "tokenCount1": 48,
        "correctTokenCount1": 42,
        "tokenSubstitutionCount1": 6,
        "tokenDeletionCount1": 0,
        "tokenInsertionCount1": 0,
        "tokenErrors1": {
          "punctuation": {
            "numberOfEdits": 2,
            "percentageOfAllEdits": 0.66
          },
          "capitalization": {
            "numberOfEdits": 1,
            "percentageOfAllEdits": 0.33
          }
        },
        "wordErrorRate2": 0.065,
        "sentenceErrorRate2": 0.375,
        "tokenErrorRate2": 0.125,
        "sentenceCount2": 8,
        "wordCount2": 46,
        "correctWordCount2": 43,
        "wordSubstitutionCount2": 3,
        "wordDeletionCount2": 0,
        "wordInsertionCount2": 0,
        "tokenCount2": 48,
        "correctTokenCount2": 42,
        "tokenSubstitutionCount2": 6,
        "tokenDeletionCount2": 0,
        "tokenInsertionCount2": 0,
        "tokenErrors2": {
          "punctuation": {
            "numberOfEdits": 208,
            "percentageOfAllEdits": 1.22
          },
          "capitalization": {
            "numberOfEdits": 126,
            "percentageOfAllEdits": 0.74
          },
          "inverseTextNormalization": {
            "numberOfEdits": 409,
            "percentageOfAllEdits": 2.4
          },
          "lexical": {
            "numberOfEdits": 16284,
            "percentageOfAllEdits": 95.41
          },
          "others": {
            "numberOfEdits": 41,
            "percentageOfAllEdits": 0.24
          }
        }
      },
      "status": "Succeeded"
    }
  ],
  "@nextLink": "https://westus.api.cognitive.microsoft.com/speechtotext/evaluations/1c50ce42-6ab7-454f-8c39-54a752d1a5b6/files?skip=2&top=2&api-version=2024-11-15"
}

Get all evaluations with where status is equal to 'Running'

範例要求

GET {endpoint}/speechtotext/evaluations?skip=0&top=2&filter=status%20eq%20'Running'&api-version=2024-11-15

範例回覆

{
  "values": [
    {
      "displayName": "Evalution of one model against another model",
      "self": "https://westus.api.cognitive.microsoft.com/speechtotext/evaluations/f85a328c-c866-40b3-a08d-9c0945738633?api-version=2024-11-15",
      "createdDateTime": "2019-01-07T11:34:12Z",
      "lastActionDateTime": "2019-01-07T11:36:07Z",
      "model1": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/models/base/8a043172-65b7-4cf3-a8b5-4449efa5a0f1?api-version=2024-11-15"
      },
      "model2": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/models/827712a5-f942-4997-91c3-7c6cde35600b?api-version=2024-11-15"
      },
      "dataset": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/datasets/9d5f4100-5f8e-4dd6-bd83-9bbbf50d57f1?api-version=2024-11-15"
      },
      "transcription1": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/transcriptions/ba7ea6f5-3065-40b7-b49a-a90f48584683?api-version=2024-11-15"
      },
      "transcription2": {
        "self": "https://westus.api.cognitive.microsoft.com/speechtotext/transcriptions/ad86d0c9-af6d-4d14-a621-c60d7d65b74f?api-version=2024-11-15"
      },
      "links": {
        "files": "https://westus.api.cognitive.microsoft.com/speechtotext/evaluations/00000000-0000-0000-0000-000000000000/files?api-version=2024-11-15"
      },
      "locale": "en-US",
      "properties": {
        "wordErrorRate1": 0.89,
        "sentenceErrorRate1": 0.375,
        "tokenErrorRate1": 0.125,
        "sentenceCount1": 8,
        "wordCount1": 46,
        "correctWordCount1": 43,
        "wordSubstitutionCount1": 3,
        "wordDeletionCount1": 0,
        "wordInsertionCount1": 0,
        "tokenCount1": 48,
        "correctTokenCount1": 42,
        "tokenSubstitutionCount1": 6,
        "tokenDeletionCount1": 0,
        "tokenInsertionCount1": 0,
        "wordErrorRate2": 0.98,
        "sentenceErrorRate2": 0.375,
        "tokenErrorRate2": 0.125,
        "sentenceCount2": 8,
        "wordCount2": 46,
        "correctWordCount2": 43,
        "wordSubstitutionCount2": 3,
        "wordDeletionCount2": 0,
        "wordInsertionCount2": 0,
        "tokenCount2": 48,
        "correctTokenCount2": 42,
        "tokenSubstitutionCount2": 6,
        "tokenDeletionCount2": 0,
        "tokenInsertionCount2": 0
      },
      "status": "Succeeded"
    }
  ]
}

定義

名稱 Description
DetailedErrorCode

DetailedErrorCode

EditsSummary

EditsSummary

EntityError

EntityError

EntityReference

EntityReference

Error

錯誤

ErrorCode

ErrorCode

Evaluation

評估

EvaluationLinks

EvaluationLinks

EvaluationProperties

EvaluationProperties

InnerError

InnerError

PaginatedEvaluations

PaginatedEvaluations

Status

地位

TokenErrorDetails

TokenErrorDetails

DetailedErrorCode

DetailedErrorCode

名稱 類型 Description
AudioLengthLimitExceeded

string

音訊檔案超過允許的持續時間上限。

BadChannelConfiguration

string

數據中的音訊通道、組態或應用程式的需求不符。

DataImportFailed

string

數據匯入失敗。

DeleteNotAllowed

string

不允許刪除。

DeployNotAllowed

string

不允許部署。

DeployingFailedModel

string

部署失敗的模型。

EmptyAudioFile

string

音訊檔案是空的。

EmptyRequest

string

空白要求。

EndpointCannotBeDefault

string

端點不可為預設值。

EndpointLoggingNotSupported

string

不支援端點記錄。

EndpointNotUpdatable

string

端點無法更新。

EndpointWithoutLogging

string

沒有記錄的端點。

ExceededNumberOfRecordingsUris

string

超過錄製 URI 的數目。

FailedDataset

string

失敗的數據集。

Forbidden

string

禁止。

InUseViolation

string

在使用違規中。

InaccessibleCustomerStorage

string

無法存取的客戶記憶體。

InvalidAdaptationMapping

string

無效的適應對應。

InvalidAudioFormat

string

不支援輸入音訊的格式。

InvalidBaseModel

string

基底模型無效。

InvalidCallbackUri

string

無效的回呼 URI。

InvalidChannelSpecification

string

不支援在轉譯要求中選取通道(例如,未選取 0 或 1)。

InvalidChannels

string

無效的通道。

InvalidCollection

string

無效的集合。

InvalidDataset

string

無效的數據集。

InvalidDocument

string

無效的檔。

InvalidDocumentBatch

string

檔批次無效。

InvalidLocale

string

地區設定無效。

InvalidLogDate

string

無效的記錄日期。

InvalidLogEndTime

string

無效的記錄結束時間。

InvalidLogId

string

無效的記錄標識碼。

InvalidLogStartTime

string

無效的記錄開始時間。

InvalidModel

string

無效的模型。

InvalidModelUri

string

無效的模型 URI。

InvalidParameter

string

無效的參數。

InvalidParameterValue

string

無效的參數值。

InvalidPayload

string

無效的承載。

InvalidPermissions

string

許可權無效。

InvalidPrerequisite

string

無效的必要條件。

InvalidProductId

string

無效的產品標識碼。

InvalidProject

string

無效的專案。

InvalidProjectKind

string

無效的項目種類。

InvalidRecordingsUri

string

無效的錄製 URI。

InvalidRequestBodyFormat

string

要求本文格式無效。

InvalidSasValidityDuration

string

無效的 sas 有效性持續時間。

InvalidSkipTokenForLogs

string

記錄的略過令牌無效。

InvalidSourceAzureResourceId

string

來源 Azure 資源標識碼無效。

InvalidSubscription

string

無效的訂用帳戶。

InvalidTest

string

無效的測試。

InvalidTimeToLive

string

存留時間無效。

InvalidTopForLogs

string

記錄的頂端無效。

InvalidTranscription

string

無效的轉譯。

InvalidWebHookEventKind

string

無效的 Web 攔截事件種類。

MissingInputRecords

string

遺漏輸入記錄。

ModelCopyAuthorizationExpired

string

過期的 ModelCopyAuthorization。

ModelDeploymentNotCompleteState

string

模型部署未完成狀態。

ModelDeprecated

string

模型已被取代。

ModelExists

string

模型存在。

ModelMismatch

string

模型不符。

ModelNotDeployable

string

模型不可部署。

ModelVersionIncorrect

string

模型版本不正確。

MultipleLanguagesIdentified

string

語言識別可辨識多種語言。 無法判斷任何佔主導地位的語言。

NoLanguageIdentified

string

語言識別無法辨識任何語言。

NoUtf8WithBom

string

沒有 utf8 與 bom。

OnlyOneOfUrlsOrContainerOrDataset

string

只有一個 URL 或容器或數據集。

ProjectGenderMismatch

string

專案性別不符。

QuotaViolation

string

配額違規。

SingleDefaultEndpoint

string

單一預設端點。

SkuLimitsExist

string

Sku 限制存在。

SubscriptionNotFound

string

找不到訂用帳戶。

UnexpectedError

string

未預期的錯誤。

UnsupportedClassBasedAdaptation

string

不支援的類別型調整。

UnsupportedDelta

string

不支持的差異。

UnsupportedDynamicConfiguration

string

不支援的動態設定。

UnsupportedFilter

string

不支援的篩選。

UnsupportedLanguageCode

string

不支援的語言代碼。

UnsupportedOrderBy

string

不支援的順序依據。

UnsupportedPagination

string

不支援的分頁。

UnsupportedTimeRange

string

不支援的時間範圍。

EditsSummary

EditsSummary

名稱 類型 Description
numberOfEdits

integer

與人類轉譯相比,所辨識轉譯之指定類型錯誤的選擇性編輯數目。

percentageOfAllEdits

number

與人工轉譯相比,所辨識轉譯指定類型錯誤的選擇性編輯百分比。

EntityError

EntityError

名稱 類型 Description
code

string

此錯誤的程序代碼。

message

string

此錯誤的訊息。

EntityReference

EntityReference

名稱 類型 Description
self

string

參考實體的位置。

Error

錯誤

名稱 類型 Description
code

ErrorCode

ErrorCode
高階錯誤碼。

details

Error[]

有關錯誤和/或預期原則的其他支持詳細數據。

innerError

InnerError

InnerError
符合認知服務 API 指導方針的新內部錯誤格式,可在 https://microsoft.sharepoint.com/%3Aw%3A/t/CognitiveServicesPMO/EUoytcrjuJdKpeOKIK_QRC8BPtUYQpKBi8JsWyeDMRsWlQ?e=CPq8ow取得。 這包括必要的屬性 ErrorCode、訊息和選擇性屬性目標、details(索引鍵值組)、內部錯誤(這可以是巢狀的)。

message

string

高階錯誤訊息。

target

string

錯誤的來源。 例如,如果檔無效,則會是「檔」或「文件標識碼」。

ErrorCode

ErrorCode

名稱 類型 Description
Conflict

string

表示衝突錯誤碼。

Forbidden

string

表示禁止的錯誤碼。

InternalCommunicationFailed

string

表示內部通訊失敗的錯誤碼。

InternalServerError

string

表示內部伺服器錯誤碼。

InvalidArgument

string

表示無效的自變數錯誤碼。

InvalidRequest

string

表示無效的要求錯誤碼。

NotAllowed

string

表示不允許的錯誤碼。

NotFound

string

表示找不到的錯誤碼。

PipelineError

string

表示管線錯誤碼。

ServiceUnavailable

string

表示服務無法使用的錯誤碼。

TooManyRequests

string

表示太多要求錯誤碼。

Unauthorized

string

表示未經授權的錯誤碼。

UnprocessableEntity

string

表示無法處理的實體錯誤碼。

UnsupportedMediaType

string

表示不支援的媒體類型錯誤碼。

Evaluation

評估

名稱 類型 Description
createdDateTime

string

物件建立時的時間戳。 時間戳會編碼為 ISO 8601 日期和時間格式(“YYYY-MM-DDThh:mm:ssZ”,請參閱 https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations)。

customProperties

object

此實體的自定義屬性。 允許的索引鍵長度上限為 64 個字元,允許的最大值長度為 256 個字元,允許的項目計數為 10。

dataset

EntityReference

EntityReference

description

string

物件的描述。

displayName

string

對象的顯示名稱。

lastActionDateTime

string

輸入目前狀態時的時間戳。 時間戳會編碼為 ISO 8601 日期和時間格式(“YYYY-MM-DDThh:mm:ssZ”,請參閱 https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations)。

links

EvaluationLinks

EvaluationLinks

locale

string

自主數據的地區設定。

model1

EntityReference

EntityReference

model2

EntityReference

EntityReference

properties

EvaluationProperties

EvaluationProperties

self

string

此實體的位置。

status

Status

地位
描述 API 的目前狀態。

transcription1

EntityReference

EntityReference

transcription2

EntityReference

EntityReference

EvaluationLinks

名稱 類型 Description
files

string

取得此實體所有檔案的位置。 如需詳細資訊,請參閱作業「Evaluations_ListFiles」。

EvaluationProperties

EvaluationProperties

名稱 類型 Description
correctTokenCount1

integer

model1 可正確辨識令牌的選擇性數目。

correctTokenCount2

integer

model2 可正確辨識令牌的選擇性數目。

correctWordCount1

integer

model1 正確辨識的字數。

correctWordCount2

integer

model2 正確辨識的字數。

error

EntityError

EntityError

sentenceCount1

integer

model1 所處理的句子數目。

sentenceCount2

integer

model2 所處理的句子數目。

sentenceErrorRate1

number

model1 辨識的句子錯誤率。

sentenceErrorRate2

number

使用model2辨識的句子錯誤率。

tokenCount1

integer

model1 所處理的令牌選擇性數目。

tokenCount2

integer

model2 的選擇性已處理令牌數目。

tokenDeletionCount1

integer

依model1的選擇性辨識令牌數目,這是刪除的。

tokenDeletionCount2

integer

依model2的選擇性辨識令牌數目,這是刪除的。

tokenErrorRate1

number

使用model1辨識的選擇性標記錯誤率。

tokenErrorRate2

number

使用model2辨識的選擇性令牌錯誤率。

tokenErrors1

TokenErrorDetails

TokenErrorDetails

tokenErrors2

TokenErrorDetails

TokenErrorDetails

tokenInsertionCount1

integer

插入的model1選擇性辨識令牌數目。

tokenInsertionCount2

integer

插入的model2選擇性辨識令牌數目。

tokenSubstitutionCount1

integer

model1 所辨識令牌的選擇性數目,也就是替代專案。

tokenSubstitutionCount2

integer

依model2的選擇性辨識令牌數目,這是替代專案。

wordCount1

integer

model1 所處理的字數。

wordCount2

integer

model2 所處理的字數。

wordDeletionCount1

integer

model1 所辨識的字數,即刪除。

wordDeletionCount2

integer

依model2辨識的字數,這是刪除。

wordErrorRate1

number

model1 辨識的字組錯誤率。

wordErrorRate2

number

model2 辨識的字組錯誤率。

wordInsertionCount1

integer

插入的model1所辨識字數。

wordInsertionCount2

integer

插入的model2所辨識字數。

wordSubstitutionCount1

integer

model1 所辨識的字數,即替代字組。

wordSubstitutionCount2

integer

model2 所辨識的字數,也就是替代專案。

InnerError

InnerError

名稱 類型 Description
code

DetailedErrorCode

DetailedErrorCode
詳細的錯誤碼列舉。

details

object

有關錯誤和/或預期原則的其他支持詳細數據。

innerError

InnerError

InnerError
符合認知服務 API 指導方針的新內部錯誤格式,可在 https://microsoft.sharepoint.com/%3Aw%3A/t/CognitiveServicesPMO/EUoytcrjuJdKpeOKIK_QRC8BPtUYQpKBi8JsWyeDMRsWlQ?e=CPq8ow取得。 這包括必要的屬性 ErrorCode、訊息和選擇性屬性目標、details(索引鍵值組)、內部錯誤(這可以是巢狀的)。

message

string

高階錯誤訊息。

target

string

錯誤的來源。 例如,如果檔無效,則會是「檔」或「文件標識碼」。

PaginatedEvaluations

PaginatedEvaluations

名稱 類型 Description
@nextLink

string

如果有更多實體可用,則為下一組編頁結果的連結;否則為 null。

values

Evaluation[]

由傳遞的查詢參數 『skip』 和 『top』 或其預設值所限制的實體清單。

使用分頁和平行刪除實體逐一查看清單時,結果中會略過某些實體。 建議在用戶端上建置清單,並在擷取完整清單之後刪除。

Status

地位

名稱 類型 Description
Failed

string

長時間執行的作業失敗。

NotStarted

string

長時間執行的作業尚未啟動。

Running

string

長時間執行的作業目前正在處理中。

Succeeded

string

長時間執行的作業已順利完成。

TokenErrorDetails

TokenErrorDetails

名稱 類型 Description
capitalization

EditsSummary

EditsSummary

inverseTextNormalization

EditsSummary

EditsSummary

lexical

EditsSummary

EditsSummary

others

EditsSummary

EditsSummary

punctuation

EditsSummary

EditsSummary