Text edits report
The report is a JSON object with these properties:
counts | An array of records according to the groupby parameter: With Global, there will be a single record. With ByUser there will be 1 record per user, etc. | object[] |
locales | A dictionary with all locales(src and trg properties) appearing in this report together with the print name. | object |
users | A dictionary with all users appearing in this report (uid property) together with id, name, company id and company name. | object |
documents | A dictionary with all documents referenced in this report (did property) together with id, name, company id and company name. | object |
parameters | Enumerates the parameters used for creating the report, see their description here: resources/segments/textedits | object |
Each element in counts aggregates edit details as per the groupby and aggregationMode parameters when creating the report:
texts | Total number of texts edited. | int |
edits | Total number of edits. | int |
Edit distance | Edit distances are calculated with the Levenshtein algoritm. See an example of how it is calculated here: Text edits example | |
editDistance | The total normalized edit distance (“ED”) for all events aggregated in this row. The ED is a value between 0 (no edits at all) and 1 (completely reworked text). The formula is:
CODE
| decimal |
editDistanceSum | Sum of all (non-normalized) edit distances. For example if the initial translation is empty and a user changed to “abcd” then this contributes 4. If the reviser then changes the text to “abcdef” it adds 2 on top. | int |
editDistanceSumLengths | Sum of text lengths of all edits. If text “ab” is changed to “abcd” then we add 4 which is the maximum of initial/edited lengths 2 and 4. | int |
editDistanceSumNormalized | With each individual edit, the system calculates the normalized ED: Edit distance of individual edit divided by the maximum length of initial and changed texts. To obtain the average normalized ED of all records in this record use. See also Text edits example
CODE
| decimal |
Adjusted word counts | ||
words | The number of source words adjusted by the normalized edit distance of the edited text. The result is stored with two decimals and always rounded up. The idea is simple, if the source text has 10 words and the translator had to write the translation from scratch, we count 10 words. On the other hand, if the translator started off with a pre-translation and made 20% changes, then we will count only 2 words. The % is given by the normalized edit distance. An ED of 0 means no change was done and we count nothing. An ED of 1 points to a translation from scratch and the full source words need to be counted. Any value in between means more or less effort that was required by the worker. | decimal |
chars | Similar to words. See above. | decimal |
wordsTarget | Same as words except that we apply the ED % to the number of target words (after editing). This information is useful for example if work shall be measured in terms of translated words/chars rather than source words/chars. | decimal |
charsTarget | Similar to wordsTarget. See above. | decimal |
Date range | Date information for all the edits we have aggregated in this record | |
dateMin | UTC date of earliest edit. | datetime |
dateMax | UTC date of latest edit. | datetime |
Group by | Data is aggregated according to the “groupby” parameter. The following properties tell the group’s properties. | |
did | The document id if we aggregate by document ID. | int? |
uid | The editing user id if we aggregate by document ID. | int? |
src | The segment’s source language if we aggregate by languages. | string? |
trg | The target language of edits if we aggregate by languages. | string? |
ed | The Last Editor (Enumeration) if we aggregate by it. | int? |
EXAMPLES
Report “Global”
A single row is returned:
{
"counts": [
{
"texts": 4,
"edits": 11,
"editDistance": 0.36,
"editDistanceSum": 97,
"editDistanceSumLengths": 272,
"editDistanceSumNormalized": 5.25,
"words": 22.03,
"chars": 118.10,
"wordsTarget": 14.03,
"charsTarget": 73.10,
"dateMin": "2020-03-26T10:22:12.8457033Z",
"dateMax": "2020-04-04T14:30:50.2094891Z"
}
],
"locales": {},
"users": {},
"documents": {},
"parameters": {
"groupby": "Global",
"dateFrom": null,
"dateTo": null,
"aggregationMode": "SingleActionPerUser",
"src": null,
"trgs": null
}
}
Report “By User”
One row per user:
{
"counts": [
{
"texts": 4,
"edits": 11,
"editDistance": 0.36,
"editDistanceSum": 97,
"editDistanceSumLengths": 272,
"editDistanceSumNormalized": 5.25,
"words": 22.03,
"chars": 118.1,
"wordsTarget": 14.03,
"charsTarget": 73.1,
"dateMin": "2020-03-26T10:22:12.8457033Z",
"dateMax": "2020-04-04T14:30:50.2094891Z",
"uid": 505
},
{
"texts": 2,
"edits": 4,
"editDistance": 0.36,
"editDistanceSum": 97,
"editDistanceSumLengths": 272,
"editDistanceSumNormalized": 5.25,
"words": 22.03,
"chars": 118.1,
"wordsTarget": 14.03,
"charsTarget": 73.1,
"dateMin": "2020-02-26T10:22:12.8457033Z",
"dateMax": "2020-05-04T14:30:50.2094891Z",
"uid": 231
}
],
"locales": {},
"users": {
"505": {
"uid": 505,
"uname": "Mike",
"cid": 537,
"cname": "team"
},
"231": {
"uid": 231,
"uname": "John",
"cid": 536,
"cname": "another team"
}
},
"documents": {},
"parameters": {
"groupby": "ByUser",
"dateFrom": null,
"dateTo": null,
"aggregationMode": "SingleActionPerUser",
"src": null,
"trgs": null
}
}
Report “ByLocale”
One row per source and target language couple:
{
"counts": [
{
"texts": 2,
"edits": 9,
"editDistance": 0.34,
"editDistanceSum": 91,
"editDistanceSumLengths": 266,
"editDistanceSumNormalized": 3.25,
"words": 12.03,
"chars": 67.10,
"wordsTarget": 12.03,
"charsTarget": 67.10,
"dateMin": "2020-03-26T10:22:12.8457033Z",
"dateMax": "2020-04-04T14:30:50.2094891Z",
"src": "en",
"trg": "en"
},
{
"texts": 2,
"edits": 2,
"editDistance": 1.0,
"editDistanceSum": 6,
"editDistanceSumLengths": 6,
"editDistanceSumNormalized": 2.0,
"words": 10.0,
"chars": 51.0,
"wordsTarget": 2.0,
"charsTarget": 6.0,
"dateMin": "2020-04-16T09:00:28.6727929Z",
"dateMax": "2020-04-16T09:00:28.6727929Z",
"src": "en",
"trg": "es"
}
],
"locales": {
"en": "English",
"es": "Spanish"
},
"users": {},
"documents": {},
"parameters": {
"groupby": "ByLocale",
"dateFrom": null,
"dateTo": null,
"aggregationMode": "SingleActionPerUser",
"src": null,
"trgs": null
}
}
There are many more grouping options, see resources/segments/textedits