From 173b748bdf8ed73de7502da1419384f670dcdf47 Mon Sep 17 00:00:00 2001 From: pjox Date: Wed, 5 Jun 2024 20:36:30 +0000 Subject: [PATCH] Deployed 7213f1f with MkDocs version: 1.4.2 --- .nojekyll | 0 404.html | 567 ++ accessing/index.html | 787 ++ assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.51d95adb.min.js | 29 + assets/javascripts/bundle.51d95adb.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ assets/javascripts/mkdocs-plotly-plugin.js | 89 + .../workers/search.e5c33ebb.min.js | 42 + .../workers/search.e5c33ebb.min.js.map | 8 + assets/stylesheets/main.558e4712.min.css | 1 + assets/stylesheets/main.558e4712.min.css.map | 1 + assets/stylesheets/palette.2505c338.min.css | 1 + .../stylesheets/palette.2505c338.min.css.map | 1 + index.html | 634 ++ javascripts/tablesort.js | 6 + quickstart/index.html | 800 ++ schema/schema-v2/index.html | 937 +++ search/search_index.json | 1 + sitemap.xml | 58 + sitemap.xml.gz | Bin 0 -> 204 bytes static/media/oscar.png | Bin 0 -> 291648 bytes tools/generation-jeanzay/index.html | 1006 +++ tools/oscar-tools/index.html | 909 +++ versions/mOSCAR/index.html | 2201 ++++++ versions/oscar-2019/index.html | 2647 +++++++ versions/oscar-2109/index.html | 2486 ++++++ versions/oscar-2201/index.html | 1853 +++++ versions/oscar-2301/index.html | 2154 ++++++ 56 files changed, 24421 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 accessing/index.html create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.51d95adb.min.js create mode 100644 assets/javascripts/bundle.51d95adb.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/mkdocs-plotly-plugin.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js.map create mode 100644 assets/stylesheets/main.558e4712.min.css create mode 100644 assets/stylesheets/main.558e4712.min.css.map create mode 100644 assets/stylesheets/palette.2505c338.min.css create mode 100644 assets/stylesheets/palette.2505c338.min.css.map create mode 100644 index.html create mode 100644 javascripts/tablesort.js create mode 100644 quickstart/index.html create mode 100644 schema/schema-v2/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 static/media/oscar.png create mode 100644 tools/generation-jeanzay/index.html create mode 100644 tools/oscar-tools/index.html create mode 100644 versions/mOSCAR/index.html create mode 100644 versions/oscar-2019/index.html create mode 100644 versions/oscar-2109/index.html create mode 100644 versions/oscar-2201/index.html create mode 100644 versions/oscar-2301/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..11c0170 --- /dev/null +++ b/404.html @@ -0,0 +1,567 @@ + + + + + + + + + + + + + + + + + + + + + + OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/accessing/index.html b/accessing/index.html new file mode 100644 index 0000000..23e3634 --- /dev/null +++ b/accessing/index.html @@ -0,0 +1,787 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Getting access to OSCAR - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Skip to content + + +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

Getting access to OSCAR

+

There are two ways of accessing OSCAR: through Huma-Num, or through HuggingFace. +Depending on your status, you might not have the choice.

+ + + + + + + + + + + + + + + + + + + + +
Research/AcademicIndividual
Huma-Num✔✖
Hugging-Face✔✔
+
+
+
+

You can apply for an access request by sending us an email!

+
+

Warning

+

Carefully respect the following instructions, as incorrect submissions might significantly delay your access.

+
+
+

Danger

+

Do not create an account by yourselves, as it could delay you access by weeks! We will create an account for you.

+
+

Send us an email at contact at oscar-project.org, with OSCAR Access Request as the title, and the following (completed) as the body:

+
+

Warning

+

Please send your email using your institutional/academic address when possible. Otherwise, your access might be delayed/refused.

+
+
- First name:
+- Last name:
+- Affiliation:
+- Contact details:
+- Corpus version: 
+- Languages:
+
++ a short description of your usecase.
+
+
+

Note

+

Access requests can take some days to be answered, sometimes more.

+

We post updates on our Discord server on exceptional delays, and you can always contact us there to inquire about yours.

+
+

After some time, you should get an email back from us with access instructions!

+
+
+

Using datasets

+

The following implies that you already have installed the Python datasets library

+
    +
  1. Create an account on HuggingFace.
  2. +
  3. Create a user access token.
  4. +
  5. Open the OSCAR Team page.
  6. +
  7. Open your corpus of choice. Instructions should be in the corpus page.
  8. +
+

After all of this, you should be able to easily use OSCAR data with the datasets library 🙂 :

+
# example with OSCAR 2201
+from datasets import load_dataset
+
+
+dataset = load_dataset("oscar-corpus/OSCAR-2201",
+                        use_auth_token=True, # required
+                        language="ar", 
+                        streaming=True, # optional
+                        split="train") # optional
+
+for d in dataset:
+    print(d) # prints documents
+
+

Using Git LFS

+

You can also get the raw data from HuggingFace using Git LFS.

+

The following steps assume you have git and git-lfs installed, and are on a UNIX system. +The procedure should roughly be the same on Windows, but hasn’t been attempted.

+

This will download the Basque corpus from OSCAR 2109.

+
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/datasets/oscar-corpus/OSCAR-2109 
+cd OSCAR-2109 # go inside the directory
+git lfs pull --include packaged/eu/eu.txt.gz # pull the required file(s) (here the Basque corpus). Check with the manpage for pull options
+
+
+
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.51d95adb.min.js b/assets/javascripts/bundle.51d95adb.min.js new file mode 100644 index 0000000..b20ec68 --- /dev/null +++ b/assets/javascripts/bundle.51d95adb.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Hi=Object.create;var xr=Object.defineProperty;var Pi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Ii=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&on(e,r,t[r]);if(kt)for(var r of kt(t))an.call(t,r)&&on(e,r,t[r]);return e};var sn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&an.call(e,n)&&(r[n]=e[n]);return r};var Ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $i(t))!Er.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=Pi(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Hi(Ii(e)):{},Fi(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=Ht((wr,cn)=>{(function(e,t){typeof wr=="object"&&typeof cn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function f(T){var Ke=T.type,We=T.tagName;return!!(We==="INPUT"&&a[Ke]&&!T.readOnly||We==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function c(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(T){n=!1}function d(T){s(T.target)&&(n||f(T.target))&&c(T.target)}function h(T){s(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),B())}function B(){document.addEventListener("mousemove",z),document.addEventListener("mousedown",z),document.addEventListener("mouseup",z),document.addEventListener("pointermove",z),document.addEventListener("pointerdown",z),document.addEventListener("pointerup",z),document.addEventListener("touchmove",z),document.addEventListener("touchstart",z),document.addEventListener("touchend",z)}function re(){document.removeEventListener("mousemove",z),document.removeEventListener("mousedown",z),document.removeEventListener("mouseup",z),document.removeEventListener("pointermove",z),document.removeEventListener("pointerdown",z),document.removeEventListener("pointerup",z),document.removeEventListener("touchmove",z),document.removeEventListener("touchstart",z),document.removeEventListener("touchend",z)}function z(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,re())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),B(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var un=Ht(Sr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(re,z){d.append(z,re)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+c+" due to "+T)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,B=!0,re=this;["append","delete","set"].forEach(function(T){var Ke=h[T];h[T]=function(){Ke.apply(h,arguments),v&&(B=!1,re.search=h.toString(),B=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var z=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==z&&(z=this.search,B&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(f){Object.defineProperty(a,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){s(f)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr)});var Qr=Ht((Lt,Kr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var a=i(279),s=i.n(a),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var w=p()(O);return m("cut"),w},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[O?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(O,w){var k=v(O);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},re=function(O){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof O=="string"?k=B(O,w):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?k=B(O.value,w):(k=p()(O),m("copy")),k},z=re;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(w){return typeof w}:T=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},T(j)}var Ke=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=O.action,k=w===void 0?"copy":w,F=O.container,q=O.target,Le=O.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(q)return k==="cut"?h(q):z(q,{container:F})},We=Ke;function Ie(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ie=function(w){return typeof w}:Ie=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Ie(j)}function Ti(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function nn(j,O){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Ie(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var q=this;this.listener=c()(F,"click",function(Le){return q.onClick(Le)})}},{key:"onClick",value:function(F){var q=F.delegateTarget||F.currentTarget,Le=this.action(q)||"copy",Rt=We({action:Le,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Le,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var q=yr("target",F);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,q)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return q.forEach(function(Rt){Le=Le&&!!document.queryCommandSupported(Rt)}),Le}}]),w}(s()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,f){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return s(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return u(m,d,h);if(a.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return s(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),a=f.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var f=this;function c(){f.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=s.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var is=/["'&<>]/;Jo.exports=as;function as(e){var t=""+e,r=is.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||s(m,d)})})}function s(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Xe?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){s("next",m)}function u(m){s("throw",m)}function p(m,d){m(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(a){return new Promise(function(s,f){a=e[i](a),o(s,f,a.done,a.value)})}}function o(i,a,s,f){Promise.resolve(f).then(function(c){i({value:c,done:s})},a)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var $t=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function De(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Fe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=xe(a),f=s.next();!f.done;f=s.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof $t?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof $t?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new $t(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&De(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&De(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Or=Fe.EMPTY;function It(e){return e instanceof Fe||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?Or:(this.currentObservers=null,s.push(r),new Fe(function(){n.currentObservers=null,De(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Or},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,f=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Ut);var On=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var we=new On(Tn);var R=new U(function(e){return e.complete()});function Dt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Dt(kr(e))?e.pop():void 0}function Vt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function zt(e){return A(e==null?void 0:e.then)}function Nt(e){return A(e[ft])}function qt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=Ki();function Yt(e){return A(e==null?void 0:e[Qt])}function Gt(e){return ln(this,arguments,function(){var r,n,o,i;return Pt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Xe(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,Xe(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Xe(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(Nt(e))return Qi(e);if(pt(e))return Yi(e);if(zt(e))return Gi(e);if(qt(e))return _n(e);if(Yt(e))return Bi(e);if(Bt(e))return Ji(e)}throw Kt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):me,Oe(1),r?He(t):zn(function(){return new Xt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function fe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,f=s===void 0?!0:s;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},re=function(){B(),u=m=void 0,h=v=!1},z=function(){var T=u;re(),T==null||T.unsubscribe()};return g(function(T,Ke){d++,!v&&!h&&B();var We=m=m!=null?m:r();Ke.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),We.subscribe(Ke),!u&&d>0&&(u=new et({next:function(Ie){return We.next(Ie)},error:function(Ie){v=!0,B(),p=jr(re,o,Ie),We.error(Ie)},complete:function(){h=!0,B(),p=jr(re,a),We.complete()}}),$(T).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=se(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function se(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),Y())}function Be(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,we),l(()=>Be(e)),N(Be(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,we),l(()=>rr(e)),N(rr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function de(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>de(e)))),N(de(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function sr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=de(e),o=bt(e);return r>=o.height-n.height-t}),Y())}var cr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return cr[e].checked}function qe(e,t){cr[e].checked!==t&&cr[e].click()}function je(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),fe());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>se(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function ur(e,t={credentials:"same-origin"}){return ve(fetch(`${e}`,t)).pipe(ce(()=>R),x(r=>r.status!==200?Tt(()=>new Error(r.statusText)):H(r)))}function Ue(e,t){return ur(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return ur(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function pr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Oe(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Be(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:a,size:s},{x:f,y:c}])=>({offset:{x:a.x-f,y:a.y-c+i},size:s})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,s,f,c,u)=>{if(s===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:s,lineno:f,colno:c,error:u});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

OSCAR

+

OSCAR LogoThe OSCAR project (Open Super-large Crawled Aggregated coRpus) is an Open Source project aiming to provide web-based multilingual resources and datasets for Machine Learning (ML) and Artificial Intelligence (AI) applications. The project focuses specifically in providing large quantities of unannotated raw data that is commonly used in the pre-training of large deep learning models. The OSCAR project has developed high-performance data pipelines specifically conceived to classify and filter large amounts of web data. The project has also put special attention in improving the data quality of web-based corpora as well as providing data for low-resource languages, so that these new ML/AI technologies are accessible to as many communities as possible.

+

Getting access +Latest version +Quickstart guide

+
+

Info

+

The new ✨ OSCAR 2301 ✨ is available! 🥳

+
+

This website aims to gather information about the corpus in a technical point of view:

+
    +
  • Corpus versions and their respective file formats.
  • +
  • Tools and pipelines, how to install and use them.
  • +
  • More general documentation and how to contribute.
  • +
+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/javascripts/tablesort.js b/javascripts/tablesort.js new file mode 100644 index 0000000..ee04e90 --- /dev/null +++ b/javascripts/tablesort.js @@ -0,0 +1,6 @@ +document$.subscribe(function () { + var tables = document.querySelectorAll("article table:not([class])") + tables.forEach(function (table) { + new Tablesort(table) + }) +}) \ No newline at end of file diff --git a/quickstart/index.html b/quickstart/index.html new file mode 100644 index 0000000..c1f335f --- /dev/null +++ b/quickstart/index.html @@ -0,0 +1,800 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + OSCAR Quickstart - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

OSCAR Quickstart

+

What is OSCAR?

+

OSCAR is a collection of web-based multilingual corpus of several terabytes, containing subcorpora in more than 150 languages.

+

Each OSCAR Corpus has a version name that tells you its approximate generation time, which usually coincides with the source crawl time. +The latest OSCAR Corpus is OSCAR 2301. +We advise you to always use the latest version, as we incrementally include new features that enable new ways of filtering the corpus for your applications.

+

Basic data layout

+

OSCAR is, since OSCAR 2109, document-oriented, which means that subcorpora are comprised of documents rather than individual lines.

+

This has important implications as to how to preprocess the data:

+

You can (and will) find sentences in other languages than the one you're interested in. For example, it is expected to encounter English sentences in documents from the French subcorpus.

+
+

Example

+

The Wikipedia article about the French anthem, La Marseillaise, contains its lyrics in French. +As such, this article is expected to be present in the English subcorpus with those French lyrics.

+

The good news is that you can easily remove those sentences if you are not interested in them, thanks to the metadata provided alongside the main content.

+
+

OSCAR is distributed in JSONLines files, usually compressed (gzip, zstd depending on the version).

+

Each line of a file is a JSON Object representing a single document. +Here is an example from OSCAR 2301:

+
{
+   "content":"English sentence\nphrase en français\n????????????", // (1)
+   "warc_headers":{ // (2)
+      "warc-identified-content-language":"fra,eng",
+      "warc-target-uri":"https://fr.wikipedia.org/wiki/...",
+      "warc-record-id":"<urn:uuid:29eaa920-d299-4b1d-b687-c72bd8d68116>",
+      "warc-type":"conversion",
+      "content-length":"35298", // (3)
+      "warc-refers-to":"<urn:uuid:39e42055-0d94-4e45-9c6c-9e7056635d64>",
+      "warc-block-digest":"sha1:WFH2A5WHCS2H365GIAFYQPI7UOAMFGHB", // (3)
+      "warc-date":"2022-11-26T09:45:47Z",
+      "content-type":"text/plain"
+   },
+   "metadata":{
+      "identification":{ // (4)
+         "label":"fr",
+         "prob":0.8938327
+      },
+      "harmful_pp":4063.1814, // (5)
+      "tlsh":"tlsh:T125315FF2B6088901EEA097015DB39B4600B...", // (6)
+      "quality_warnings":[ // (7)
+         "short_sentences",
+         "header",
+         "footer"
+      ],
+      "categories":[ // (8)
+         "examen_pix",
+         "liste_bu"
+      ],
+      "sentence_identifications":[ // (9)
+         {
+            "label":"fr",
+            "prob":0.99837273
+         },
+         {
+            "label":"en",
+            "prob":0.9992377
+         },
+         null
+      ]
+   }
+}
+
+
    +
  1. Newline-separated content.
  2. +
  3. Headers from the crawled dumps are left untouched. See the WARC specification for more info.
  4. +
  5. Since warc_headers are copied and content can be altered by Ungoliant at generation stage, content-length and warc-block-digest can be different from actual values.
  6. +
  7. Document-level identification. Computation details can be found on the OSCAR 22.01 paper.
  8. +
  9. Perplexity of the document, computed using a KenLM model trained on harmful content. See this pre-print for more info. The lower this number is, the higher the probability that it will contain harmful or adult content. This annotation will be changed from harmful_pp to harmful_pplin future releases.
  10. +
  11. Locality Sensitive Hash of the documents' content, using TLSH. Useful for both exact and near deduplication.
  12. +
  13. (Corresponds to annotations pre-23.01) Potential quality warnings. Based on content/sentence length. See [OSCAR 22.01 paper for more info.
  14. +
  15. Blocklist-based categories. Uses the UT1 Blocklist, plus custom additions. Please refer to the UT1 website for categories description. Note that the categories are in French.
  16. +
  17. Sentence-level identifications. A null value means no identification with a good enough threshold (>0.8 on 23.01).
  18. +
+

Getting access

+

There are different ways of getting access to OSCAR depending on your status! Head on to our dedicated page.

+

Using the corpus

+

TODO

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/schema/schema-v2/index.html b/schema/schema-v2/index.html new file mode 100644 index 0000000..8a2c07e --- /dev/null +++ b/schema/schema-v2/index.html @@ -0,0 +1,937 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + OSCAR Schema v2 - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

OSCAR Schema v2

+

OSCAR (Open Super-large Crawled Aggregated coRpus) is a huge multilingual corpus obtained by language classification and filtering of the Common Crawl corpus using the goclassy architecture.

+

The new OSCAR schema is a major, breaking change from the previous ones, adding more metadata and laying out documents rather than lines.

+

Changes

+

OSCAR Schema v2 groups text and metadata in JSON dictionnaries, in JSONLines format.

+
/
+├── af
+   ├── af_sha256.txt
+   └── af.jsonl.gz
+├── de
+   ├── de_sha256.txt    # Checksum file 
+   └── de.jsonl.gz        # Textual content
+├── en
+   ├── en_part_1.jsonl.gz        # Multipart example
+   ├── en_part_2.jsonl.gz
+   └── en_sha256.txt
+├── yi
+   ├── yi_sha256.txt
+   └── yi.jsonl.gz
+└── zh
+    ├── zh_sha256.txt
+    └── zh.jsonl.gz
+
+

File formats

+

.jsonl files

+

These are the metadata, in JSONLines format.

+

Each line follows the following JSON Scheme:

+
{
+  "$schema": "http://json-schema.org/draft-07/schema#",
+  "title": "Document",
+  "description": "Serializable version of [Document].",
+  "type": "object",
+  "required": [
+    "content",
+    "metadata",
+    "warc_headers"
+  ],
+  "properties": {
+    "content": {
+      "type": "string"
+    },
+    "metadata": {
+      "$ref": "#/definitions/Metadata"
+    },
+    "warc_headers": {
+      "type": "object",
+      "additionalProperties": {
+        "type": "string"
+      }
+    }
+  },
+  "definitions": {
+    "Identification": {
+      "type": "object",
+      "required": [
+        "label",
+        "prob"
+      ],
+      "properties": {
+        "label": {
+          "$ref": "#/definitions/Lang"
+        },
+        "prob": {
+          "type": "number",
+          "format": "float"
+        }
+      }
+    },
+    "Lang": {
+      "type": "string",
+      "enum": [
+        "Af",
+        "Als",
+        "...",
+        "Yue",
+        "Zh",
+        "Multi"
+      ]
+    },
+    "Metadata": {
+      "description": "OSCAR-specific metadata",
+      "type": "object",
+      "required": [
+        "identification",
+        "sentence_identifications"
+      ],
+      "properties": {
+        "annotation": {
+          "type": [
+            "array",
+            "null"
+          ],
+          "items": {
+            "type": "string"
+          }
+        },
+        "identification": {
+          "$ref": "#/definitions/Identification"
+        },
+        "sentence_identifications": {
+          "type": "array",
+          "items": {
+            "anyOf": [
+              {
+                "$ref": "#/definitions/Identification"
+              },
+              {
+                "type": "null"
+              }
+            ]
+          }
+        }
+      }
+    }
+  }
+}
+
+

Example: +

{
+
+  // text is here, separated by \n characters that have been removed here for lisibility
+  "content": "Adopt-a-user Home • Talk || Adoptee's Area • Resources || Adopter's Area • Resources • List of Adopters || Teahouse || Live Help Chat (IRC)\n
+  Shortcuts\n
+  WP:AAU\n
+  WP:ADOPT\n
+  WP:ADOPTION\n
+  WP:WIKIADOPT\n
+  The Adopt-a-user program is designed to help new and inexperienced users by pairing them with more experienced Wikipedians. These editors (referred to as adopters or mentors) will \"adopt\" newer users, guiding them along the way as they learn about Wikipedia and its various aspects.\n
+  The project aims to inform new users about the ins and outs of Wikipedia and steer them away from making less-than-constructive edits or misplaced test edits. Well over a thousand users have been involved in the program at one time or another.\n
+  So, if you're new or inexperienced and would like to:\nAsk questions about editing, contributing to Wikipedia and creating your first article\n
+  Learn to navigate processes and policies and guidelines\n
+  Get help with article creation or image uploads or any other activities on Wikipedia\n
+  . . .then an adopter should be able to help you. Adoption lasts as long as the adopter and adoptee want to continue, so you can stop any time if you feel you've learned enough, or you'd like to take a break.\n
+  If you are looking to contribute to Wikipedia but do not intend to remain as an active user well after adoption, then this program is not for you. Adoption is for users who intend to be long-term contributors and members of the community, so if you are simply here to create one article, see this page for help and do not request adoption.\n
+  Users who don't want adopting – but who do need help with one-off problems – might like to consider whether the Teahouse question forum, the Help desk, or a {{Help me}} request might be better ways to get quick answers.\n
+  Participation\n
+  Being adopted is easy and fun. Why not select an adopter from the list of adopters and contact them directly to request adoption? If you choose an adopter who shares your interests, they will be more able to assist you while you learn under their tutelage.\n
+  View the list of adopters!\n
+  ...",
+
+  // WARC Headers are extracted and put there untouched.
+  // The content-length shoud not be understood as the current document length, but as the original document length.
+  "warc_headers": {
+    "warc-block-digest": "sha1:U2OJPXXE3JCPSLAB6UPB3TEGBDHKPTAO",
+    "warc-record-id": "<urn:uuid:fec8808f-96ef-4ae5-8a57-df5b44e42dcf>",
+    "warc-identified-content-language": "eng,nno",
+    "content-type": "text/plain",
+    "warc-refers-to": "<urn:uuid:2f59440d-3700-418c-aa94-5c63bab316c3>",
+    "warc-date": "2021-09-16T12:40:45Z",
+    "warc-target-uri": "https://en.wikipedia.org/wiki/Wikipedia:Adopt-a-user",
+    "content-length": "5385",
+    "warc-type": "conversion"
+  },
+
+  // OSCAR metadata
+  "metadata": {
+
+    // Document identification
+    "identification": {
+      "label": "en",
+      "prob": 0.6775619
+    },
+
+    // Annotations of the document
+    "annotation": [
+      "short_sentences",
+      "header",
+      "footer"
+    ],
+
+    // Sentence identifications.
+    // null: identification confidence too low (<0.8)
+    // There is exactly one identification per line.
+    "sentence_identifications": [
+      null,
+      null,
+      {
+        "label": "en",
+        "prob": 0.89475197
+      },
+      {
+        "label": "en",
+        "prob": 0.9124037
+      },
+      {
+        "label": "en",
+        "prob": 0.8080786
+      },
+      null,
+      {
+        "label": "en",
+        "prob": 0.9665413
+      }, 
+    ]
+  }
+}
+

+

<lang>_sha256.txt files

+

These are used to check for eventual corruption during download. +They can be used by running sha256sum -c <lang>_sha256.txt.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 0000000..52561a8 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"OSCAR","text":"

The OSCAR project (Open Super-large Crawled Aggregated coRpus) is an Open Source project aiming to provide web-based multilingual resources and datasets for Machine Learning (ML) and Artificial Intelligence (AI) applications. The project focuses specifically in providing large quantities of unannotated raw data that is commonly used in the pre-training of large deep learning models. The OSCAR project has developed high-performance data pipelines specifically conceived to classify and filter large amounts of web data. The project has also put special attention in improving the data quality of web-based corpora as well as providing data for low-resource languages, so that these new ML/AI technologies are accessible to as many communities as possible.

Getting access Latest version Quickstart guide

Info

The new OSCAR 2301 is available!

This website aims to gather information about the corpus in a technical point of view:

  • Corpus versions and their respective file formats.
  • Tools and pipelines, how to install and use them.
  • More general documentation and how to contribute.
"},{"location":"accessing/","title":"Getting access to OSCAR","text":"

There are two ways of accessing OSCAR: through Huma-Num, or through HuggingFace. Depending on your status, you might not have the choice.

Research/Academic Individual Huma-Num Hugging-Face Huma-NumHuggingFace

You can apply for an access request by sending us an email!

Warning

Carefully respect the following instructions, as incorrect submissions might significantly delay your access.

Danger

Do not create an account by yourselves, as it could delay you access by weeks! We will create an account for you.

Send us an email at contact at oscar-project.org, with OSCAR Access Request as the title, and the following (completed) as the body:

Warning

Please send your email using your institutional/academic address when possible. Otherwise, your access might be delayed/refused.

- First name:\n- Last name:\n- Affiliation:\n- Contact details:\n- Corpus version: \n- Languages:\n\n+ a short description of your usecase.\n

Note

Access requests can take some days to be answered, sometimes more.

We post updates on our Discord server on exceptional delays, and you can always contact us there to inquire about yours.

After some time, you should get an email back from us with access instructions!

"},{"location":"accessing/#using-datasets","title":"Using datasets","text":"

The following implies that you already have installed the Python datasets library

  1. Create an account on HuggingFace.
  2. Create a user access token.
  3. Open the OSCAR Team page.
  4. Open your corpus of choice. Instructions should be in the corpus page.

After all of this, you should be able to easily use OSCAR data with the datasets library :

# example with OSCAR 2201\nfrom datasets import load_dataset\ndataset = load_dataset(\"oscar-corpus/OSCAR-2201\",\nuse_auth_token=True, # required\nlanguage=\"ar\", \nstreaming=True, # optional\nsplit=\"train\") # optional\nfor d in dataset:\nprint(d) # prints documents\n
"},{"location":"accessing/#using-git-lfs","title":"Using Git LFS","text":"

You can also get the raw data from HuggingFace using Git LFS.

The following steps assume you have git and git-lfs installed, and are on a UNIX system. The procedure should roughly be the same on Windows, but hasn\u2019t been attempted.

This will download the Basque corpus from OSCAR 2109.

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/datasets/oscar-corpus/OSCAR-2109 cd OSCAR-2109 # go inside the directory\ngit lfs pull --include packaged/eu/eu.txt.gz # pull the required file(s) (here the Basque corpus). Check with the manpage for pull options\n
"},{"location":"quickstart/","title":"OSCAR Quickstart","text":""},{"location":"quickstart/#what-is-oscar","title":"What is OSCAR?","text":"

OSCAR is a collection of web-based multilingual corpus of several terabytes, containing subcorpora in more than 150 languages.

Each OSCAR Corpus has a version name that tells you its approximate generation time, which usually coincides with the source crawl time. The latest OSCAR Corpus is OSCAR 2301. We advise you to always use the latest version, as we incrementally include new features that enable new ways of filtering the corpus for your applications.

"},{"location":"quickstart/#basic-data-layout","title":"Basic data layout","text":"

OSCAR is, since OSCAR 2109, document-oriented, which means that subcorpora are comprised of documents rather than individual lines.

This has important implications as to how to preprocess the data:

You can (and will) find sentences in other languages than the one you're interested in. For example, it is expected to encounter English sentences in documents from the French subcorpus.

Example

The Wikipedia article about the French anthem, La Marseillaise, contains its lyrics in French. As such, this article is expected to be present in the English subcorpus with those French lyrics.

The good news is that you can easily remove those sentences if you are not interested in them, thanks to the metadata provided alongside the main content.

OSCAR is distributed in JSONLines files, usually compressed (gzip, zstd depending on the version).

Each line of a file is a JSON Object representing a single document. Here is an example from OSCAR 2301:

{\n\"content\":\"English sentence\\nphrase en fran\u00e7ais\\n????????????\", // (1)\n\"warc_headers\":{ // (2)\n\"warc-identified-content-language\":\"fra,eng\",\n\"warc-target-uri\":\"https://fr.wikipedia.org/wiki/...\",\n\"warc-record-id\":\"<urn:uuid:29eaa920-d299-4b1d-b687-c72bd8d68116>\",\n\"warc-type\":\"conversion\",\n\"content-length\":\"35298\", // (3)\n\"warc-refers-to\":\"<urn:uuid:39e42055-0d94-4e45-9c6c-9e7056635d64>\",\n\"warc-block-digest\":\"sha1:WFH2A5WHCS2H365GIAFYQPI7UOAMFGHB\", // (3)\n\"warc-date\":\"2022-11-26T09:45:47Z\",\n\"content-type\":\"text/plain\"\n},\n\"metadata\":{\n\"identification\":{ // (4)\n\"label\":\"fr\",\n\"prob\":0.8938327\n},\n\"harmful_pp\":4063.1814, // (5)\n\"tlsh\":\"tlsh:T125315FF2B6088901EEA097015DB39B4600B...\", // (6)\n\"quality_warnings\":[ // (7)\n\"short_sentences\",\n\"header\",\n\"footer\"\n],\n\"categories\":[ // (8)\n\"examen_pix\",\n\"liste_bu\"\n],\n\"sentence_identifications\":[ // (9)\n{\n\"label\":\"fr\",\n\"prob\":0.99837273\n},\n{\n\"label\":\"en\",\n\"prob\":0.9992377\n},\nnull\n]\n}\n}\n
  1. Newline-separated content.
  2. Headers from the crawled dumps are left untouched. See the WARC specification for more info.
  3. Since warc_headers are copied and content can be altered by Ungoliant at generation stage, content-length and warc-block-digest can be different from actual values.
  4. Document-level identification. Computation details can be found on the OSCAR 22.01 paper.
  5. Perplexity of the document, computed using a KenLM model trained on harmful content. See this pre-print for more info. The lower this number is, the higher the probability that it will contain harmful or adult content. This annotation will be changed from harmful_pp to harmful_pplin future releases.
  6. Locality Sensitive Hash of the documents' content, using TLSH. Useful for both exact and near deduplication.
  7. (Corresponds to annotations pre-23.01) Potential quality warnings. Based on content/sentence length. See [OSCAR 22.01 paper for more info.
  8. Blocklist-based categories. Uses the UT1 Blocklist, plus custom additions. Please refer to the UT1 website for categories description. Note that the categories are in French.
  9. Sentence-level identifications. A null value means no identification with a good enough threshold (>0.8 on 23.01).
"},{"location":"quickstart/#getting-access","title":"Getting access","text":"

There are different ways of getting access to OSCAR depending on your status! Head on to our dedicated page.

"},{"location":"quickstart/#using-the-corpus","title":"Using the corpus","text":"

TODO

"},{"location":"schema/schema-v2/","title":"OSCAR Schema v2","text":"

OSCAR (Open Super-large Crawled Aggregated coRpus) is a huge multilingual corpus obtained by language classification and filtering of the Common Crawl corpus using the goclassy architecture.

The new OSCAR schema is a major, breaking change from the previous ones, adding more metadata and laying out documents rather than lines.

"},{"location":"schema/schema-v2/#changes","title":"Changes","text":"

OSCAR Schema v2 groups text and metadata in JSON dictionnaries, in JSONLines format.

/\n\u251c\u2500\u2500 af\n\u2502   \u251c\u2500\u2500 af_sha256.txt\n\u2502   \u2514\u2500\u2500 af.jsonl.gz\n\u251c\u2500\u2500 de\n\u2502   \u251c\u2500\u2500 de_sha256.txt    # Checksum file \n\u2502   \u2514\u2500\u2500 de.jsonl.gz        # Textual content\n\u251c\u2500\u2500 en\n\u2502   \u251c\u2500\u2500 en_part_1.jsonl.gz        # Multipart example\n\u2502   \u251c\u2500\u2500 en_part_2.jsonl.gz\n\u2502   \u2514\u2500\u2500 en_sha256.txt\n\u251c\u2500\u2500 yi\n\u2502   \u251c\u2500\u2500 yi_sha256.txt\n\u2502   \u2514\u2500\u2500 yi.jsonl.gz\n\u2514\u2500\u2500 zh\n    \u251c\u2500\u2500 zh_sha256.txt\n    \u2514\u2500\u2500 zh.jsonl.gz\n
"},{"location":"schema/schema-v2/#file-formats","title":"File formats","text":""},{"location":"schema/schema-v2/#jsonl-files","title":".jsonl files","text":"

These are the metadata, in JSONLines format.

Each line follows the following JSON Scheme:

{\n\"$schema\": \"http://json-schema.org/draft-07/schema#\",\n\"title\": \"Document\",\n\"description\": \"Serializable version of [Document].\",\n\"type\": \"object\",\n\"required\": [\n\"content\",\n\"metadata\",\n\"warc_headers\"\n],\n\"properties\": {\n\"content\": {\n\"type\": \"string\"\n},\n\"metadata\": {\n\"$ref\": \"#/definitions/Metadata\"\n},\n\"warc_headers\": {\n\"type\": \"object\",\n\"additionalProperties\": {\n\"type\": \"string\"\n}\n}\n},\n\"definitions\": {\n\"Identification\": {\n\"type\": \"object\",\n\"required\": [\n\"label\",\n\"prob\"\n],\n\"properties\": {\n\"label\": {\n\"$ref\": \"#/definitions/Lang\"\n},\n\"prob\": {\n\"type\": \"number\",\n\"format\": \"float\"\n}\n}\n},\n\"Lang\": {\n\"type\": \"string\",\n\"enum\": [\n\"Af\",\n\"Als\",\n\"...\",\n\"Yue\",\n\"Zh\",\n\"Multi\"\n]\n},\n\"Metadata\": {\n\"description\": \"OSCAR-specific metadata\",\n\"type\": \"object\",\n\"required\": [\n\"identification\",\n\"sentence_identifications\"\n],\n\"properties\": {\n\"annotation\": {\n\"type\": [\n\"array\",\n\"null\"\n],\n\"items\": {\n\"type\": \"string\"\n}\n},\n\"identification\": {\n\"$ref\": \"#/definitions/Identification\"\n},\n\"sentence_identifications\": {\n\"type\": \"array\",\n\"items\": {\n\"anyOf\": [\n{\n\"$ref\": \"#/definitions/Identification\"\n},\n{\n\"type\": \"null\"\n}\n]\n}\n}\n}\n}\n}\n}\n

Example:

{\n// text is here, separated by \\n characters that have been removed here for lisibility\n\"content\": \"Adopt-a-user Home \u2022 Talk || Adoptee's Area \u2022 Resources || Adopter's Area \u2022 Resources \u2022 List of Adopters || Teahouse || Live Help Chat (IRC)\\n\n  Shortcuts\\n\n  WP:AAU\\n\n  WP:ADOPT\\n\n  WP:ADOPTION\\n\n  WP:WIKIADOPT\\n\n  The Adopt-a-user program is designed to help new and inexperienced users by pairing them with more experienced Wikipedians. These editors (referred to as adopters or mentors) will \\\"adopt\\\" newer users, guiding them along the way as they learn about Wikipedia and its various aspects.\\n\n  The project aims to inform new users about the ins and outs of Wikipedia and steer them away from making less-than-constructive edits or misplaced test edits. Well over a thousand users have been involved in the program at one time or another.\\n\n  So, if you're new or inexperienced and would like to:\\nAsk questions about editing, contributing to Wikipedia and creating your first article\\n\n  Learn to navigate processes and policies and guidelines\\n\n  Get help with article creation or image uploads or any other activities on Wikipedia\\n\n  . . .then an adopter should be able to help you. Adoption lasts as long as the adopter and adoptee want to continue, so you can stop any time if you feel you've learned enough, or you'd like to take a break.\\n\n  If you are looking to contribute to Wikipedia but do not intend to remain as an active user well after adoption, then this program is not for you. Adoption is for users who intend to be long-term contributors and members of the community, so if you are simply here to create one article, see this page for help and do not request adoption.\\n\n  Users who don't want adopting \u2013 but who do need help with one-off problems \u2013 might like to consider whether the Teahouse question forum, the Help desk, or a {{Help me}} request might be better ways to get quick answers.\\n\n  Participation\\n\n  Being adopted is easy and fun. Why not select an adopter from the list of adopters and contact them directly to request adoption? If you choose an adopter who shares your interests, they will be more able to assist you while you learn under their tutelage.\\n\n  View the list of adopters!\\n\n  ...\",\n// WARC Headers are extracted and put there untouched.\n// The content-length shoud not be understood as the current document length, but as the original document length.\n\"warc_headers\": {\n\"warc-block-digest\": \"sha1:U2OJPXXE3JCPSLAB6UPB3TEGBDHKPTAO\",\n\"warc-record-id\": \"<urn:uuid:fec8808f-96ef-4ae5-8a57-df5b44e42dcf>\",\n\"warc-identified-content-language\": \"eng,nno\",\n\"content-type\": \"text/plain\",\n\"warc-refers-to\": \"<urn:uuid:2f59440d-3700-418c-aa94-5c63bab316c3>\",\n\"warc-date\": \"2021-09-16T12:40:45Z\",\n\"warc-target-uri\": \"https://en.wikipedia.org/wiki/Wikipedia:Adopt-a-user\",\n\"content-length\": \"5385\",\n\"warc-type\": \"conversion\"\n},\n// OSCAR metadata\n\"metadata\": {\n// Document identification\n\"identification\": {\n\"label\": \"en\",\n\"prob\": 0.6775619\n},\n// Annotations of the document\n\"annotation\": [\n\"short_sentences\",\n\"header\",\n\"footer\"\n],\n// Sentence identifications.\n// null: identification confidence too low (<0.8)\n// There is exactly one identification per line.\n\"sentence_identifications\": [\nnull,\nnull,\n{\n\"label\": \"en\",\n\"prob\": 0.89475197\n},\n{\n\"label\": \"en\",\n\"prob\": 0.9124037\n},\n{\n\"label\": \"en\",\n\"prob\": 0.8080786\n},\nnull,\n{\n\"label\": \"en\",\n\"prob\": 0.9665413\n}, ]\n}\n}\n

"},{"location":"schema/schema-v2/#lang_sha256txt-files","title":"<lang>_sha256.txt files","text":"

These are used to check for eventual corruption during download. They can be used by running sha256sum -c <lang>_sha256.txt.

"},{"location":"tools/generation-jeanzay/","title":"Generating a new OSCAR Version on Jean Zay","text":""},{"location":"tools/generation-jeanzay/#compile-the-latest-version-of-unogliant","title":"Compile the latest version of Unogliant","text":"

This is currently preferred to just getting it from cargo install ungoliant.

  • git clone https://github.com/oscar-project/ungoliant
  • Open an interactive session on a compil node: srun --partition=compil -A <GROUP ID>@cpu --pty bash
  • Run module load llvm boost cargo (boost and llvm are necessary for compiling KenLM and FastText)
  • Run cd ungoliant
  • Run cargo b --release --features kenlm
"},{"location":"tools/generation-jeanzay/#download-the-data-from-commoncrawl","title":"Download the data from CommonCrawl","text":"

We advise the use of the prepost partition for downloading the data form Common Crawl. However, please bear in mind that jobs are limited to 20hours in the prepost partition, meaning that you'll likely run out of time before completing the download of a whole Common Crawl dump.

  • Download the wet.paths.gz file for the latest release (likely here
  • gzip -d wet.paths.gz

Create a dl_corpus.slurm file with the following text inside:

#! /bin/bash\n#SBATCH --partition=prepost\n#SBATCH --job-name=get_cc # create a short name for your job\n#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)\n#SBATCH --mail-user=<YOUR MAIL>    # Where to send mail\n#SBATCH --nodes=\"1\" #Combien de n\u0153uds\n#SBATCH --ntasks-per-node=\"1\" # Une t\u00e2che par GPU\n#SBATCH --cpus-per-task=\"64\" # nombre de coeurs \u00e0 r\u00e9server par t\u00e2che\n#SBATCH --time=\"20:00:00\" # temps d'ex\u00e9cution maximum demande (HH:MM:SS)\n#SBATCH -A <GROUP ID>@cpu\nexport CARGO_HOME=<CARGO HOME PATH (in SCRATCH if you can>\nexport PATHS_FILE=<PATH TO wet.PATHS>\nexport DST=<DESTINATION>\n\n./target/release/ungoliant download $PATHS_FILE $DST\n

When the time has run out, you have to ensure that the last downloaded shards weren't corrupted (because of a potential kill while downloading).

Then, after potentially removing faulty shards, run the following slurm job. The only difference with the previous one is the use of the -o n parameter on ungoliant download, which will ignore the first n lines of the wet.paths. You can/should also use another DESTINATION folder, and then do the merge by hand.

#! /bin/bash\n#SBATCH --partition=prepost\n#SBATCH --job-name=get_cc # create a short name for your job\n#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)\n#SBATCH --mail-user=<YOUR MAIL>    # Where to send mail\n#SBATCH --nodes=\"1\" #Combien de n\u0153uds\n#SBATCH --ntasks-per-node=\"1\" # Une t\u00e2che par GPU\n#SBATCH --cpus-per-task=\"64\" # nombre de coeurs \u00e0 r\u00e9server par t\u00e2che\n#SBATCH --time=\"20:00:00\" # temps d'ex\u00e9cution maximum demande (HH:MM:SS)\n#SBATCH -A <GROUP ID>@cpu\nexport CARGO_HOME=<CARGO HOME PATH (in SCRATCH if you can>\nexport PATHS_FILE=<PATH TO wet.PATHS>\nexport DST=<DESTINATION>\n\n./target/release/ungoliant download -o <NB_DOWNLOADED> $PATHS_FILE $DST\n

You can then check that no shards are missing:

import os\nshards_dir = \"./shards\"\npaths_file = \"wet.paths\"\ncc_rooturl = \"https://data.commoncrawl.org/\"\nmissing_shards = list()\nfor i in range(88000):\nif not os.path.isfile(f\"{shards_dir}/{i}.txt.gz\"):\nmissing_shards.append(i)\nprint(f\"missing {len(missing_shards)} shards\")\nwith open(paths_file) as f:\nshard_paths = f.readlines()\nfor missing_shard_number in missing_shards:\nprint(\nf\"wget -nc {cc_rooturl}{shard_paths[missing_shard_number].strip()} -O {missing_shard_number}.txt.gz\"\n)\n

This will give you the wget commands to get the missing shards, with a -nc param to avoid overwriting already existing files.

"},{"location":"tools/generation-jeanzay/#generate-oscar","title":"Generate OSCAR","text":"

When you have your shards ready, create a new SLURM file with:

We use a QoS of t4 because since we can only use one node and corpus generation time is likely >20h, we need the 100 mark.

Other strategies could be tested (for example, splitting CC data into 4 buckets and launch 4 ungoliant jobs. Then, merging back the datasets should be done. Note that in that case, rebuild files will be less efficient (since we'll have 4 of them)

#! /bin/bash\n#SBATCH --partition=cpu_p1\n#SBATCH --job-name=gen_oscar # create a short name for your job\n#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)\n#SBATCH --mail-user=<YOUR MAIL>    # Where to send mail\n#SBATCH --nodes=\"1\" #Combien de n\u0153uds\n#SBATCH --ntasks-per-node=\"1\" # Une t\u00e2che par GPU\n#SBATCH --cpus-per-task=\"40\" # nombre de coeurs \u00e0 r\u00e9server par t\u00e2che\n#SBATCH --time=\"100:00:00\" # temps d'ex\u00e9cution maximum demande (HH:MM:SS)\n#SBATCH --qos=qos_cpu-t4\n#SBATCH -A <GROUP ID>@cpu\nexport CARGO_HOME=<CARGO HOME PATH>\nexport CC_FOLDER=<SHARDS PATH>\nexport KENLM_FOLDER=<PATH TO KENLMS MODELS IF APPLICABLE>\nexport CORPUS=<DESTINATION FOLDER>\nexport BLOCKLIST=<BLOCKLIST FOLDER (must contain subfolders with category names..)>\nexport LID_PATH=<PATH TO FASTTEXT LangID>\nexport UNGOLIANT_PATH=<PATH TO UNGOLIANT BINARY>\n\n$UNGOLIANT_PATH pipeline $CC_FOLDER $CORPUS --blocklist-path $BLOCKLIST --kenlms-path $KENLM_FOLDER --lid-path $LID_PATH\n

As of Jan. 2023, using ungoliant 1.3.0 ([c14acc8](https://github.com/oscar-project/ungoliant/tree/c14acc8c6a87913d138a022cf4819024d66b3e06)), with a 88,000-shard dump of CommonCrawl (November/December 2022, ~9.5TB compressed), this process took around 20 hours and yielded a corpus weighing arount 12TB (uncompressed).

"},{"location":"tools/generation-jeanzay/#move-oscar","title":"Move OSCAR","text":"

Files in $SCRATCH are deleted after 30 days if no R/W is operated on them. You should move out files to $STORE if you plan on keeping them. Unfortunately, due to the file size, you'll need to launch another job to do the copying of the files.

Warning

rsync -n enables a dry-run, enabling you to see which files would be moved, and where. Remove the -n parameter when you want to perform the actual copy.

#! /bin/bash\n#SBATCH --partition=prepost\n#SBATCH --job-name=copy_oscar # create a short name for your job\n#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)\n#SBATCH --mail-user=julien.abadji@inria.fr    # Where to send mail\n#SBATCH --nodes=\"1\" #Combien de n\u0153uds\n#SBATCH --ntasks-per-node=\"1\" # Une t\u00e2che par GPU\n#SBATCH --cpus-per-task=\"4\" # nombre de coeurs \u00e0 r\u00e9server par t\u00e2che\n#SBATCH --time=\"20:00:00\" # temps d'ex\u00e9cution maximum demande (HH:MM:SS)\n#SBATCH -A <GROUP ID>@cpu\nexport SRC=<CORPUS SOURCE>\nexport DST=<CORPUS DESTINATION>\n\nrsync -anvP $SRC $DST\n

On the same example as before, copying took around 9 hours.

"},{"location":"tools/generation-jeanzay/#preparing-for-release","title":"Preparing for release","text":""},{"location":"tools/generation-jeanzay/#splitting","title":"Splitting","text":"

We use oscar-tools to split the corpus.

Note

At the time of writing, oscar-tools is not available via crates.io/cargo install, so you have to compile it from source. Luckily, it's easy.

Compiling oscar-tools
  1. Get the source: git clone https://github.com/oscar-project/oscar-tools
  2. Go inside a compil node: srun --partition=compil -A <GROUP ID>@cpu --pty bash
  3. cd oscar-tools
  4. CARGO_HOME=<Somewhere not in your ~, like $SCRATCH/.cargo> cargo b --features zstd --release.
  5. Wait ~some hours~
  6. That's it! Your binary sits at target/release/oscar-tools.
#! /bin/bash\n#SBATCH --partition=prepost\n#SBATCH --job-name=split_oscar # create a short name for your job\n#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)\n#SBATCH --mail-user=<Your email address>    # Where to send mail\n#SBATCH --nodes=\"1\" #Combien de n\u0153uds\n#SBATCH --ntasks-per-node=\"1\" # Une t\u00e2che par GPU\n#SBATCH --cpus-per-task=\"10\" # nombre de coeurs \u00e0 r\u00e9server par t\u00e2che\n#SBATCH --time=\"20:00:00\" # temps d'ex\u00e9cution maximum demande (HH:MM:SS)\n#SBATCH -A <group id>@cpu\nexport OSCAR_TOOLS_BIN=<path to oscar-tools binary>\nexport CORPUS=<path to corpus>\nexport DST=<where the split corpus will be put>\n\n$OSCAR_TOOLS_BIN v2 split $CORPUS $DST -s 2000\n

This step took around 3 hours (assuming both CORPUS and DST are on $SCRATCH).

"},{"location":"tools/generation-jeanzay/#compressing","title":"Compressing","text":"
#! /bin/bash\n#SBATCH --partition=prepost\n#SBATCH --job-name=compress_oscar # create a short name for your job\n#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)\n#SBATCH --mail-user=<email address>    # Where to send mail\n#SBATCH --nodes=\"1\" #Combien de n\u0153uds\n#SBATCH --ntasks-per-node=\"1\" # Une t\u00e2che par GPU\n#SBATCH --cpus-per-task=\"48\" # nombre de coeurs \u00e0 r\u00e9server par t\u00e2che\n#SBATCH --time=\"20:00:00\" # temps d'ex\u00e9cution maximum demande (HH:MM:SS)\n#SBATCH -A <group id>@cpu\nexport OSCAR_TOOLS_BIN=<link to oscar-tools binary>\nexport CORPUS=<path to split focus>\nexport DST=<where the compressed ocrpus will be saved>\n\n$OSCAR_TOOLS_BIN v2 compress $CORPUS $DST\n

This step took around 2 hours, going from 12TB to 3.3TB

"},{"location":"tools/generation-jeanzay/#checksuming","title":"Checksuming","text":"

The last step is to create checksum files for each language, so that people can check that their downloads have been successful. Also, it acts as a split list for download-oscar.

#! /bin/bash\n#SBATCH --partition=prepost\n#SBATCH --job-name=compress_oscar # create a short name for your job\n#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)\n#SBATCH --mail-user=<email address>    # Where to send mail\n#SBATCH --nodes=\"1\" #Combien de n\u0153uds\n#SBATCH --ntasks-per-node=\"1\" # Une t\u00e2che par GPU\n#SBATCH --cpus-per-task=\"48\" # nombre de coeurs \u00e0 r\u00e9server par t\u00e2che\n#SBATCH --time=\"20:00:00\" # temps d'ex\u00e9cution maximum demande (HH:MM:SS)\n#SBATCH -A <group id>@cpu\nexport OSCAR_TOOLS_BIN=<link to oscar-tools binary>\nexport CORPUS=<path to split focus>\n\n$OSCAR_TOOLS_BIN v2 checksum $CORPUS\n

The process took around 2 hours.

"},{"location":"tools/oscar-tools/","title":"oscar-tools","text":"

oscar-tools is a toolkit that was created along with OSCAR-2201 to make operations on the corpus easy and fast.

At its core, oscar-tools provides a set of operations targeted at a given OSCAR version. As such, you shoudn't expect to have all operations available on all OSCAR versions. For example, at the time of writing, deduplicate is not available for OSCAR 22.01-like corpora.

The CLI of oscar-tools is still a bit messy and can be confusing, because we are actively working on it and on implementing essential features.

"},{"location":"tools/oscar-tools/#installation","title":"Installation","text":""},{"location":"tools/oscar-tools/#from-releases","title":"From releases","text":"

Note

Binaries are not available yet.

"},{"location":"tools/oscar-tools/#from-cargo","title":"From cargo","text":"

Note

cargo install oscar-tools is not available yet.

"},{"location":"tools/oscar-tools/#from-repository","title":"From repository","text":"

Note

This could evolve rapidly.

Right now the latest version sits on the dev-oscario branch, where we're slowly replacing inline IO blocks by our Corpus IO library, oscar-io.

$> git clone https://github.com/oscar-corpus/oscar-tools #Clone the repository\n$> cd oscar-tools\n$> git checkout dev-oscario #Change branch\n$> cargo b --release #Build the project. \n$> # Building might take some time because of \n$> # the parquet dependency that will soon be optional.\n$> touch target/release/oscar-tools #Binary is here and self-sufficient.\n
"},{"location":"tools/oscar-tools/#usage","title":"Usage","text":"

oscar-tools --help might help you find the parameters/operations you're looking for.

Note

In the tool, v1 corresponds to 2019-like corpora, whereas v2 corresponds to 22.01-like corpora.

Each operation has different parameters.

"},{"location":"tools/oscar-tools/#v1-oscar-2019","title":"v1 / OSCAR 2019","text":"

At the time of writing, the only operation available is dedup. It uses runiq to deduplicate corpora.

oscar-tools-v1-dedup \nline deduplication\n\nUSAGE:\n    oscar-tools v1 dedup [ARGS]\n\nARGS:\n    <SOURCE>         Corpus source file.\n    <DESTINATION>    Corpus destination file. Should not exist.\n\nOPTIONS:\n    -h, --help    Print help information\n
"},{"location":"tools/oscar-tools/#v2-oscar-2201","title":"v2 / OSCAR 22.01","text":"

There is a lot more operations implemented on OSCAR 22.01-like corpora.

"},{"location":"tools/oscar-tools/#extract-tags","title":"extract-tags","text":"

extract-tags extracts documents that meet certain annotation constraints.

oscar-tools-v2-extract-tags \nExtracts a OSCAR v2 corpus restricting tags. Included tags must be present and excluded ones must be\nabsent. Use --clean to extract documents with no annotation only\n\nUSAGE:\n    oscar-tools v2 extract-tags [OPTIONS] [--] [ARGS]\n\nARGS:\n    <SOURCE>         Corpus source file/folder. If folder, splits corpus files in provided\n                     folder\n    <DESTINATION>    Corpus source file/folder. If folder, splits corpus files in provided\n                     folder\n\nOPTIONS:\n        --clean                only return documents with no tags. include and exclude will be\n                               ignored\n    -e, --exclude <tags>...    space separated tags to exclude.\n    -h, --help                 Print help information\n    -i, --include <tags>...    space separated tags to include.\n
"},{"location":"tools/oscar-tools/#extract-text","title":"extract-text","text":"

extract-text \"converts\" a 2201-like corpus into a 2019-like corpus, by removing all metadata and only storing sentences. Keep in mind that while the format will be similar to 2109-like corpora, the filtering is a bit different and lines from other languages won't be stripped.

Extract text from documents. The output will be a OSCAR v1 (2019)-compatible corpus.\n\nUSAGE:\n    oscar-tools v2 extract-text [OPTIONS] <SOURCE> <DESTINATION>\n\nARGS:\n    <SOURCE>         Corpus source file.\n    <DESTINATION>    Corpus destination file (OSCAR v1 (2019)-like)\n\nOPTIONS:\n        --del_src    If set, deletes source files as they are being extracted.\n    -h, --help       Print help information\n
"},{"location":"versions/mOSCAR/","title":"mOSCAR","text":"

mOSCAR, to the best of our knowledge the first large-scale multilingual and multimodal document corpus crawled from the web. It covers 163 languages, 315M documents, 214B tokens and 1.2B images. We carefully conduct a set of filtering and evaluation steps to make sure mOSCAR is sufficiently safe, diverse and of good quality.

"},{"location":"versions/mOSCAR/#access","title":"Access","text":"

Access to the mOSCAR is granted via the Hugging Face Hub.

All data is avaialble at https://huggingface.co/datasets/oscar-corpus/mOSCAR.

"},{"location":"versions/mOSCAR/#layout","title":"Layout","text":"

To Come ...

"},{"location":"versions/mOSCAR/#language-table","title":"Language table","text":"Lang. name Code Family Script # documents # images # tokens Acehnese ace_Latn Latin 7,803 32,461 2,889,134 Mesopotamian Arabic acm_Arab Arabic 2,274 10,620 1,047,748 Tunisian Arabic aeb_Arab Arabic 7,640 41,570 2,715,187 Afrikaans afr_Latn Latin 54,895 247,774 39,956,585 South Levantine Arabic ajp_Arab Arabic 12,098 87,837 5,167,813 Tosk Albanian als_Latn Latin 861,678 2,569,164 452,737,251 Amharic amh_Ethi Ge'ez 39,588 152,646 35,089,019 North Levantine Arabic apc_Arab Arabic 19,904 128,966 9,560,701 Modern Standard Arabic arb_Arab Arabic 3,936,851 15,126,931 3,401,919,964 Najdi Arabic ars_Arab Arabic 60,229 296,741 43,610,873 Moroccan Arabic ary_Arab Arabic 142,386 698,051 204,723,454 Egyptian Arabic arz_Arab Arabic 835,529 4,054,632 653,626,387 Assamese asm_Beng Bengali 3,948 9,210 640,390 Asturian ast_Latn Latin 165,745 962,723 37,547,944 Awadhi awa_Deva Devanagari 29,324 107,483 4,961,635 Central Aymara ayr_Latn Latin 27,384 151,889 5,148,970 South Azerbaijani azb_Arab Arabic 8,274 38,233 5,256,693 North Azerbaijani azj_Latn Latin 516,021 1,808,060 257,825,849 Bashkir bak_Cyrl Cyrillic 4,532 17,174 3,038,766 Bambara bam_Latn Latin 7,674 39,190 1,243,332 Balinese ban_Latn Latin 1,886 11,266 542,015 Belarusian bel_Cyrl Cyrillic 63,309 287,539 72,976,520 Bemba bem_Latn Latin 1,096 7,479 1,340,471 Bengali ben_Beng Bengali 270,406 947,035 35,858,814 Bhojpuri bho_Deva Devanagari 6,366 28,131 875,463 Banjar bjn_Latn Latin 5,427 27,803 1,898,526 Bosnian bos_Latn Latin 1,960,599 7,633,049 1,255,000,505 Buginese bug_Latn Latin 3,312 18,648 588,678 Bulgarian bul_Cyrl Cyrillic 2,591,998 11,670,028 1,760,971,620 Catalan cat_Latn Latin 1,153,864 4,736,634 606,447,390 Cebuano ceb_Latn Latin 16,990 91,234 10,748,818 Czech ces_Latn Latin 3,918,837 13,291,309 2,823,172,996 Central Kurdish ckb_Arab Arabic 36,725 136,566 22,322,689 Crimean Tatar crh_Latn Latin 6,376 24,124 1,742,727 Welsh cym_Latn Latin 40,408 165,897 27,748,345 Danish dan_Latn Latin 2,076,298 9,559,600 1,238,277,499 German deu_Latn Latin 20,662,696 87,976,200 8,544,986,218 Southwestern Dinka dik_Latn Latin 1,712 6,635 1,319,943 Greek ell_Grek Greek 4,916,081 15,209,058 2,923,201,041 English eng_Latn Latin 52,215,013 207,904,315 33,570,108,782 Esperanto epo_Latn Latin 25,157 124,996 28,586,195 Estonian est_Latn Latin 1,040,368 5,217,366 619,215,048 Basque eus_Latn Latin 849,043 3,445,539 277,145,498 Faroese fao_Latn Latin 15,411 60,340 6,691,327 Fijian fij_Latn Latin 1,528 8,776 487,388 Finnish fin_Latn Latin 2,396,033 10,365,333 1,781,044,864 French fra_Latn Latin 20,305,739 78,179,601 14,362,579,829 Friulian fur_Latn Latin 37,290 256,456 5,949,600 Nigerian Fulfulde fuv_Latn Latin 1,568 7,124 401,852 West Central Oromo gaz_Latn Latin 4,058 11,763 1,786,093 Scottish Gaelic gla_Latn Latin 29,710 153,249 14,605,090 Irish gle_Latn Latin 68,858 315,132 47,438,400 Galician glg_Latn Latin 518,973 2,381,475 217,063,180 Guarani grn_Latn Latin 490,945 2,416,633 89,921,114 Gujarati guj_Gujr Gujarati 23,062 91,320 3,324,866 Haitian Creole hat_Latn Latin 257,745 1,570,699 62,847,106 Hausa hau_Latn Latin 25,364 104,934 13,089,932 Hebrew heb_Hebr Hebrew 1,109,591 4,766,483 893,327,320 Hindi hin_Deva Devanagari 579,430 1,830,667 122,558,353 Chhattisgarhi hne_Deva Devanagari 1,581 7,263 273,174 Croatian hrv_Latn Latin 1,719,617 8,425,510 1,010,674,096 Hungarian hun_Latn Latin 3,534,506 15,390,083 2,831,715,050 Armenian hye_Armn Armenian 339,962 1,141,885 205,635,952 Igbo ibo_Latn Latin 11,529 68,049 8,701,070 Ilocano ilo_Latn Latin 78,872 523,195 8,116,113 Indonesian ind_Latn Latin 7,016,291 17,324,777 3,981,843,468 Icelandic isl_Latn Latin 244,676 1,027,465 137,015,973 Italian ita_Latn Latin 12,937,153 47,476,971 8,311,790,842 Javanese jav_Latn Latin 24,785 135,583 16,908,805 Japanese jpn_Jpan Kanji 14,415,292 23,893,768 8,923,348,944 Kabyle kab_Latn Latin 18,508 106,730 4,079,553 Kannada kan_Knda Brahmic Kannada 12,978 42,621 1,442,776 Kashmiri kas_Arab Arabic 3,109 11,408 5,731,910 Georgian kat_Geor Caucasian Georgian 354,436 1,304,281 275,223,026 Kazakh kaz_Cyrl Cyrillic 252,242 732,648 140,049,214 Halh Mongolian khk_Cyrl Cyrillic 124,412 508,217 84,535,241 Khmer khm_Khmr Austroasiatic 24,495 122,243 3,043,925 Kinyarwanda kin_Latn Latin 30,401 172,201 12,049,616 Kyrgyz kir_Cyrl Cyrillic 53,010 199,713 34,404,281 Northern Kurdish kmr_Latn Latin 39,262 164,666 23,834,960 Korean kor_Hang Hanja 2,614,089 13,563,283 2,006,080,705 Lao lao_Laoo 50,611 208,768 31,029,380 Ligurian lij_Latn Latin 8,751 56,266 2,958,179 Limburgish lim_Latn Latin 189,547 1,076,047 42,534,327 Lingala lin_Latn Latin 24,614 152,132 4,053,459 Lithuanian lit_Latn Latin 1,688,811 8,869,443 1,161,476,040 Lombard lmo_Latn Latin 30,506 151,855 9,058,614 Latgalian ltg_Latn Latin 11,948 61,624 4,148,492 Luxembourgish ltz_Latn Latin 44,987 246,346 16,676,872 Ganda lug_Latn Latin 1,878 7,215 789,917 Mizo lus_Latn Latin 7,880 26,817 4,978,472 Standard Latvian lvs_Latn Latin 896,243 4,141,648 587,653,855 Magahi mag_Deva Devanagari 1,097 3,847 205,763 Malayalam mal_Mlym 14,140 52,679 1,689,010 Marathi mar_Deva Devanagari 50,391 163,868 6,689,250 Minangkabau min_Latn Latin 9,341 35,309 1,256,931 Macedonian mkd_Cyrl Cyrillic 542,250 1,853,070 307,232,151 Maltese mlt_Latn Latin 120,888 709,242 36,097,957 Maori mri_Latn Latin 24,322 130,137 24,957,914 Burmese mya_Mymr 8,144 44,188 539,527 Dutch nld_Latn Latin 17,096,727 65,606,013 9,670,041,731 Norwegian Nynorsk nno_Latn Latin 199,355 1,012,313 67,799,774 Norwegian Bokmal nob_Latn Latin 2,229,702 9,698,128 1,294,178,095 Nepali npi_Deva Devanagari 31,239 127,193 3,138,539 Nyanja nya_Latn Latin 12,047 67,192 8,596,769 Occitan oci_Latn Latin 164,852 671,881 59,309,549 Odia ory_Orya 4,319 15,574 378,635 Pangasinan pag_Latn Latin 4,214 32,287 546,071 Eastern Panjabi pan_Guru 11,497 46,168 1,887,991 Papiamento pap_Latn Latin 55,224 363,015 10,002,655 Southern Pasto pbt_Arab Arabic 32,604 110,807 29,170,322 Western Persian pes_Arab Arabic 7,048,946 25,200,571 6,210,479,015 Plateau Malgasy plt_Latn Latin 32,521 120,673 29,263,848 Polish pol_Latn Latin 14,549,605 60,639,244 11,104,144,109 Portuguese por_Latn Latin 8,145,664 26,530,423 4,760,063,083 Dari prs_Arab Arabic 515,041 2,589,859 517,053,967 Ayacucho Quechua quy_Latn Latin 1,578 11,817 362,690 Romanian ron_Latn Latin 5,180,171 17,964,048 3,548,291,261 Rundi run_Latn Latin 20,001 67,096 8,686,054 Russian rus_Cyrl Cyrillic 15,913,845 69,542,828 18,909,213,208 Sango sag_Latn Latin 2,124 13,556 454,455 Sicilian scn_Latn Latin 73,199 424,362 27,110,743 Sinhala sin_Sinh 58,767 221,183 14,270,972 Slovak slk_Latn Latin 3,008,599 15,067,234 1,963,804,563 Slovenian slv_Latn Latin 1,472,025 7,210,285 935,834,754 Samoan smo_Latn Latin 12,346 71,359 14,954,824 Shona sna_Latn Latin 12,698 68,782 6,112,600 Sindhi snd_Arab Arabic 21,095 74,289 17,647,825 Somali som_Latn Latin 77,343 301,429 34,554,975 Southern Sotho sot_Latn Latin 7,718 43,146 6,156,450 Spanish spa_Latn Latin 22,713,366 78,361,087 14,616,773,475 Sardinian srd_Latn Latin 675,539 4,059,493 106,159,957 Serbian srp_Cyrl Cyrillic 604,557 2,286,171 401,223,741 Sundanese sun_Latn Latin 44,310 236,025 13,627,832 Swedish swe_Latn Latin 3,302,730 10,860,518 1,779,284,152 Swahili swh_Latn Latin 137,134 593,418 59,454,896 Silesian szl_Latn Latin 23,535 132,459 5,996,972 Tamil tam_Taml Dravidian Tamil 36,196 167,669 4,834,946 Tatar tat_Cyrl Cyrillic 37,188 143,842 22,831,350 Telugu tel_Telu Brahmic Telugu 22,974 81,033 2,273,772 Tajik tgk_Cyrl Cyrillic 125,236 417,591 90,503,778 Tagalog tgl_Latn Latin 151,437 673,814 97,708,639 Thai tha_Thai Thai 2,983,837 11,621,786 2,839,211,104 Tigrinya tir_Ethi Ge'ez 2,657 8,707 1,725,422 Tok Pisin tpi_Latn Latin 5,063 35,169 460,853 Turkmen tuk_Latn Latin 13,024 57,354 9,766,999 Turkish tur_Latn Latin 4,478,700 12,401,091 2,394,669,068 Twi twi_Latn Latin 3,305 13,634 495,220 Uyghur uig_Arab Arabic 10,713 41,709 6,785,318 Ukrainian ukr_Cyrl Cyrillic 2,721,424 10,929,796 1,928,351,595 Urdu urd_Arab Arabic 407,098 1,239,125 242,007,283 Northern Uzbek uzn_Latn Latin 156,632 798,155 89,022,562 Venetian vec_Latn Latin 330,611 1,830,777 71,077,531 Vietnamese vie_Latn Latin 12,621,521 47,411,488 11,616,191,199 Wolof wol_Latn Latin 4,658 20,380 1,596,432 Xhosa xho_Latn Latin 25,950 142,387 15,809,823 Eastern Yiddish ydd_Hebr 12,486 57,510 17,369,727 Yoruba yor_Latn Latin 56,700 286,933 32,614,558 Yue Chinese yue_Hant 33,671 203,513 24,172,441 Chinese (Simplified) zho_Hans Hanzi 9,861,262 36,152,754 8,078,842,701 Chinese (Traditional) zho_Hant Hant 3,967,966 16,307,258 2,962,854,441 Standard Malay zsm_Latn Latin 1,179,744 5,488,632 432,667,199 Zulu zul_Latn Latin 30,717 156,639 11,345,288"},{"location":"versions/oscar-2019/","title":"OSCAR 2019","text":"

OSCAR 2019 is the original 2019 release of the OSCAR corpus. It has been generated from Common Crawl corpus using the goclassy architecture.

"},{"location":"versions/oscar-2019/#features","title":"Features","text":"

OSCAR 2019 is shuffled at line level and no metadata is provided. Thus it is mainly intended to be used in the training of unsupervised language models for NLP.

Data is distributed by language in both original and deduplicated form.

If you need the unshuffled version of OSCAR, please contact us using the contact form. Please include your name, affiliation, contact details, which languages do you need and a brief description of how you intend to use OSCAR. You can also download it using HuggingFace\u2019s datasets library.

Even though OSCAR is not Postcardware, we do appreciate when our users send us a postcard. If you want to send us one, you can find the address in the contact section down below.

"},{"location":"versions/oscar-2019/#citing-oscar","title":"Citing OSCAR","text":"

If you use OSCAR to train a language model, text generation model or any other ML model in general please consider citing our latest paper:

@inproceedings{ortiz-suarez-etal-2020-monolingual,\n    title = \"A Monolingual Approach to Contextualized Word Embeddings for Mid-Resource Languages\",\n    author = \"Ortiz Su{\\'a}rez, Pedro Javier  and\n      Romary, Laurent  and\n      Sagot, Beno{\\^\\i}t\",\n    booktitle = \"Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics\",\n    month = jul,\n    year = \"2020\",\n    address = \"Online\",\n    publisher = \"Association for Computational Linguistics\",\n    url = \"https://www.aclweb.org/anthology/2020.acl-main.156\",\n    pages = \"1703--1714\",\n    abstract = \"We use the multilingual OSCAR corpus, extracted from Common Crawl via language classification, filtering and cleaning, to train monolingual contextualized word embeddings (ELMo) for five mid-resource languages. We then compare the performance of OSCAR-based and Wikipedia-based ELMo embeddings for these languages on the part-of-speech tagging and parsing tasks. We show that, despite the noise in the Common-Crawl-based OSCAR data, embeddings trained on OSCAR perform much better than monolingual embeddings trained on Wikipedia. They actually equal or improve the current state of the art in tagging and parsing for all five languages. In particular, they also improve over multilingual Wikipedia-based contextual embeddings (multilingual BERT), which almost always constitutes the previous state of the art, thereby showing that the benefit of a larger, more diverse corpus surpasses the cross-lingual benefit of multilingual embedding architectures.\",\n}\n
"},{"location":"versions/oscar-2019/#the-unshuffled-oscar","title":"The Unshuffled OSCAR","text":"

If you need a copy of any of the unshuffled sub-corpora, please contact us using the contact form down below. Please include your name, affiliation, contact details, which languages do you need and a brief description of how you intend to use OSCAR. We will evaluate your request and answer accordingly.

{{% callout note %}} The unshuffled OSCAR is now available in HuggingFace\u2019s datasets library {{% /callout %}} They have obtained our permission to redistribute the unshuffled OSCAR and they allow users to download a corpus all at once as opposed to file by file. You can get more information about how to download OSCAR using their library by visiting OSCAR's dataset card.

"},{"location":"versions/oscar-2019/#downloading-oscar","title":"Downloading OSCAR","text":"

All the data is distributed by language, both the original and the deduplicated versions of the data are available. To download a file just click the desired link on the table below. Languages are split in shards of around 700MB, these shards are standalone. A plain text file with checksums is also provided.

The OSCAR corpus is yet to be filtered, so please be careful when using it, specially for text generation tasks! To see which sub-corpora have been audited, please refer to the list of publications above for more information.

You'll be asked to create an HumanID account in order to download a corpus. This is intended, and we do it in order to limit traffic and reduce abuse of the infrastructure. The OSCAR corpus is hosted by Huma-Num, you can read more about them on their website.

All sizes are for the uncompressed files.

Language Words original Size original File original Words deduplicated Size deduplicated File deduplicated Afrikaans 43,482,801 241M af 29,533,437 163M af Albanian 374,196,110 2.3G sq 186,856,699 1.2G sq Alemannic 841,750 5.0M als 459,001 2.8M als Amharic 28,301,601 360M am 16,086,628 206M am Arabic 8,117,162,828 82G ar 3,171,221,354 32G ar Aragonese 52,896 1.3M an 45,669 801K an Armenian 273,919,388 3.7G hy 110,196,043 1.5G hy Assamese 6,956,663 113M as 4,366,570 71M as Asturian 381,005 2.4M ast 325,237 2.0M ast Avaric 24,720 409K av 19,478 324K av Azerbaijani 322,641,710 2.8G az 167,742,296 1.5G az Bashkir 9,796,764 128M ba 6,922,589 90M ba Basque 120,456,652 848M eu 45,359,710 342M eu Bavarian 399 503 bar 399 503 bar Belarusian 144,579,630 1.8G be 83,499,037 1.1G be Bengali 623,575,733 11G bn 363,766,143 5.8G bn Bihari 8,848 110K bh 2,875 34K bh Bishnupriya 198,286 4.1M bpy 96,940 1.7M bpy Bosnian 106,448 447K bs 20,485 116K bs Breton 5,013,241 29M br 2,890,384 16M br Bulgarian 2,947,648,106 32G bg 1,268,114,977 14G bg Burmese 56,111,184 1.9G my 30,102,173 1.1G my Catalan 1,360,212,450 8.0G ca 729,333,440 4.3G ca Cebuano 6,603,567 39M ceb 3,675,024 24M ceb Central Bikol 312 885 bcl 312 885 bcl Central Khmer 20,690,610 1.1G km 10,082,245 581M km Central Kurdish 48,478,334 487M ckb 18,726,721 226M ckb Chavacano 130 520 cbk 130 520 cbk Chechen 711,051 8.3M ce 568,146 6.7M ce Chinese 14,986,424,850 508G zh 6,350,215,113 249G zh Chuvash 3,041,614 39M cv 2,054,810 26M cv Cornish 8,329 44K kw 2,704 14K kw Croatian 34,232,765 226M hr 16,727,640 110M hr Czech 7,715,977,441 53G cs 3,540,997,509 24G cs Danish 2,637,463,889 16G da 1,620,091,317 9.5G da Dhivehi 7,559,472 126M dv 4,726,660 79M dv Dimli 19 146 diq 19 146 diq Dutch 13,020,136,373 78G nl 6,598,786,137 39G nl Eastern Mari 565,992 7.2M mhr 469,297 6.0M mhr Egyptian Arabic 7,305,151 66M arz 3,659,419 33M arz Emilian-Romagnol 6,376 25K eml 6,121 24K eml English 418,187,793,408 2.3T en 215,841,256,971 1.2T en Erzya 90 1.4K myv 78 1.2K myv Esperanto 48,486,161 299M eo 37,324,446 228M eo Estonian 643,163,730 4.8G et 309,931,463 2.3G et Finnish 3,196,666,419 27G fi 1,597,855,468 13G fi French 46,896,036,417 282G fr 23,206,776,649 138G fr Galician 102,011,291 620M gl 63,600,602 384M gl Georgian 171,950,621 3.6G ka 91,569,739 1.9G ka German 44,878,908,446 308G de 21,529,164,172 145G de Goan Konkani 124,277 2.2M gom 102,306 1.8M gom Guarani 7,382 36K gn 4,680 24K gn Gujarati 72,045,701 1.1G gu 50,023,432 722M gu Haitian 1,014 3.9K ht 832 3.3K ht Hebrew 2,067,753,528 20G he 1,032,018,056 9.8G he Hindi 1,372,234,782 17G hi 745,774,934 8.9G hi Hungarian 5,163,936,345 40G hu 2,339,127,555 18G hu Icelandic 219,900,094 1.5G is 129,818,331 846M is Ido 25,702 147K io 22,773 130K io Iloko 142,942 874K ilo 105,564 636K ilo Indonesian 4,574,692,265 30G id 2,394,957,629 16G id Interlingua 180,231 662K ia 100,019 360K ia Interlingue 5,352 24K ie 602 1.6K ie Irish 14,483,593 88M ga 10,017,303 60M ga Italian 22,248,707,341 137G it 11,250,012,896 69G it Japanese 4,962,979,182 216G ja 1,123,067,063 106G ja Javanese 104,896 659K jv 86,654 583K jv Kalmyk 10,277 113K xal 10,155 112K xal Kannada 81,186,863 1.7G kn 49,343,462 1.1G kn Karachay-Balkar 185,436 2.6M krc 166,496 2.3M krc Kazakh 191,126,469 2.7G kk 108,388,743 1.5G kk Kirghiz 44,194,823 600M ky 28,982,620 388M ky Komi 201,404 2.3M kv 95,243 1.2M kv Korean 2,368,765,142 24G ko 1,120,375,149 12G ko Kurdish 15,561,003 94M ku 9,946,440 60M ku Lao 4,133,311 174M lo 2,583,342 114M lo Latin 4,122,201 26M la 1,328,038 8.3M la Latvian 520,761,977 4.0G lv 236,428,905 1.8G lv Lezghian 247,646 3.3M lez 224,871 3.0M lez Limburgan 4,730 29K li 4,283 27K li Lithuanian 1,159,661,742 8.8G lt 516,183,525 3.9G lt Lojban 154,330 736K jbo 141,973 678K jbo Lombard 75,229 443K lmo 73,665 433K lmo Low German 2,906,347 18M nds 2,146,417 13M nds Lower Sorbian 1,787 13K dsb 966 7.1K dsb Luxembourgish 4,403,577 29M lb 3,087,650 21M lb Macedonian 189,289,873 2.1G mk 102,849,595 1.2G mk Maithili 69,161 317K mai 874 11K mai Malagasy 3,068,360 21M mg 1,872,044 13M mg Malay 16,696,882 111M ms 6,045,753 42M ms Malayalam 189,534,472 4.9G ml 95,892,551 2.5G ml Maltese 2,995,654 24M mt 2,163,358 17M mt Marathi 162,609,404 2.7G mr 82,130,803 1.4G mr Mazanderani 73,870 691K mzn 64,481 602K mzn Minangkabau 5,682 608K min 4,825 310K min Mingrelian 299,098 5.8M xmf 228,629 4.4M xmf Mirandese 171 1.2K mwl 152 1.1K mwl Modern Greek 5,479,180,137 62G el 2,412,419,435 27G el Mongolian 181,307,167 2.2G mn 68,362,013 838M mn Nahuatl languages 1,234 12K nah 1,193 11K nah Neapolitan 5,282 17K nap 4,147 13K nap Nepali 107,448,208 1.8G ne 71,628,317 1.2G ne Newari 564,697 5.5M new 288,995 4.1M new Northern Frisian 1,516 4.4K frr 1,516 4.4K frr Northern Luri 8,022 76K lrc 6,740 63K lrc Norwegian 1,344,326,388 8.0G no 804,894,377 4.7G no Norwegian Nynorsk 14,764,980 85M nn 9,435,139 54M nn Occitan 750,301 5.8M oc 512,678 3.7M oc Oriya 14,938,567 248M or 11,321,740 188M or Ossetian 1,031,268 13M os 878,765 11M os Pampanga 130 760 pam 52 304 pam Panjabi 61,847,806 763M pa 37,555,835 460M pa Persian 9,096,554,121 79G fa 4,363,505,319 38G fa Piemontese 362,013 2.1M pms 337,246 1.9M pms Polish 15,277,255,137 109G pl 6,708,709,674 47G pl Portuguese 20,641,903,898 124G pt 10,751,156,918 64G pt Pushto 46,559,441 361M ps 31,347,348 242M ps Quechua 10,186 78K qu 8,691 67K qu Romanian 3,984,317,058 25G ro 1,741,794,069 11G ro Romansh 1,093 7.4K rm 960 6.5K rm Russia Buriat 963 13K bxr 809 11K bxr Russian 92,522,407,837 1.2T ru 46,692,691,520 568G ru Sanskrit 4,331,569 93M sa 1,713,930 37M sa Scottish Gaelic 310,689 1.9M gd 207,110 1.3M gd Serbian 364,395,411 3.9G sr 207,561,168 2.2G sr Serbo-Croatian 5,292,184 25M sh 1,040,573 5.8M sh Sicilian 554 3.3K scn 468 2.8K scn Sindhi 43,530,158 347M sd 33,028,015 263M sd Sinhala 93,053,465 1.4G si 50,864,857 802M si Slovak 1,322,247,763 9.1G sk 656,346,179 4.5G sk Slovenian 387,399,700 2.5G sl 193,926,684 1.3G sl Somali 1,202 61K so 472 16K so South Azerbaijani 2,175,054 27M azb 1,528,709 19M azb Spanish 47,545,122,279 278G es 25,928,290,729 149G es Sundanese 30,321 211K su 20,278 141K su Swahili 2,211,927 13M sw 1,376,963 8.1M sw Swedish 7,155,994,312 44G sv 4,106,120,608 25G sv Tagalog 98,949,299 573M tl 70,121,601 407M tl Tajik 31,758,142 379M tg 21,029,893 249M tg Tamil 420,537,132 9.3G ta 226,013,330 5.1G ta Tatar 51,034,893 670M tt 23,825,695 305M tt Telugu 123,711,517 2.5G te 79,094,167 1.6G te Thai 951,743,087 36G th 368,965,202 16G th Tibetan 1,483,589 187M bo 936,556 138M bo Turkish 7,577,388,700 60G tr 3,365,734,289 27G tr Turkmen 1,113,869 11M tk 752,326 6.8M tk Tuvinian 759 12K tyv 540 7.9K tyv Uighur 8,657,141 122M ug 5,852,225 83M ug Ukrainian 4,204,381,276 53G uk 2,252,380,351 28G uk Upper Sorbian 545,351 4.2M hsb 236,867 1.8M hsb Urdu 331,817,982 2.7G ur 218,030,228 1.7G ur Uzbek 2,450,256 21M uz 1,381,644 12M uz Venetian 3,492 18K vec 3,199 17K vec Vietnamese 12,036,845,359 68G vi 5,577,159,843 32G vi Volap\u00fck 321,121 2.0M vo 318,568 2.0M vo Walloon 50,720 273K wa 37,543 203K wa Waray 397,315 2.5M war 336,311 2.2M war Welsh 37,422,441 213M cy 23,574,673 133M cy Western Frisian 5,691,077 35M fy 4,223,816 26M fy Western Mari 93,338 1.2M mrj 87,780 1.1M mrj Western Panjabi 1,426,986 12M pnb 1,111,112 9.0M pnb Wu Chinese 11,189 109K wuu 4,333 32K wuu Yakut 2,547,623 42M sah 1,789,174 26M sah Yiddish 13,834,320 141M yi 8,212,970 84M yi Yoruba 8,906 55K yo 3,518 27K yo Yue Chinese 186 3.7K yue 128 2.2K yue"},{"location":"versions/oscar-2019/#license","title":"License","text":"

These data are released under this licensing scheme:

  • We do not own any of the text from which these data has been extracted.
  • We license the actual packaging of these data under the Creative Commons CC0 license (\"no rights reserved\").
  • To the extent possible under law, Inria has waived all copyright and related or neighboring rights to OSCAR.
  • This work is published from: France.

"},{"location":"versions/oscar-2019/#notice-and-take-down-policy","title":"Notice and take down policy","text":"

Notice: Should you consider that our data contains material that is owned by you and should therefore not be reproduced here, please:

  • Clearly identify yourself, with detailed contact data such as an address, telephone number or email address at which you can be contacted.
  • Clearly identify the copyrighted work claimed to be infringed.
  • Clearly identify the material that is claimed to be infringing and information reasonably sufficient to allow us to locate the material.
  • And use the contact form below.

Take down: We will comply to legitimate requests by removing the affected sources from the next release of the corpus.

"},{"location":"versions/oscar-2019/#models","title":"Models","text":"

Here is a list of some language models that have been trained using the OSCAR corpus or that are part of the OSCAR project:

Model Language Corpus Authors Paper Files License ELMo Bulgarian OSCAR Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 bg.zip MIT ELMo Bulgarian Wikipedia Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 bg.zip MIT ELMo Catalan OSCAR Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 ca.zip MIT ELMo Catalan Wikipedia Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 ca.zip MIT ELMo Danish OSCAR Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 da.zip MIT ELMo Danish Wikipedia Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 da.zip MIT ELMo French OSCAR Pedro J. Ortiz, Yoann Dupont, Benjamin Muller, Laurent Romary and Beno\u00eet Sagot LREC 2020 fr.zip MIT ELMo Finnish OSCAR Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 fi.zip MIT ELMo Finnish Wikipedia Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 fi.zip MIT ELMo Indonesian OSCAR Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 id.zip MIT ELMo Indonesian Wikipedia Pedro J. Ortiz, Beno\u00eet Sagot and Laurent Romary ACL 2020 id.zip MIT"},{"location":"versions/oscar-2019/#featured-models","title":"Featured Models","text":"

Here is a list of Language models trained by the community:

Model Language Cased Corpus Authors Paper Website Files License AraBERT Arabic Cased OSCAR, Wikipedia, 1.5B words Arabic Corpus, OSIAN, Assafir Wissam Antoun, Fady Baly and Hazem Hajj ACL Anthology GitHub Hugging Face N/A Arabic-BERT Arabic Cased OSCAR and Wikipedia Ali Safaya ArXiv GitHub Hugging Face MIT AraELECTRA Arabic Cased OSCAR, Wikipedia, 1.5B words Arabic Corpus, OSIAN, Assafir Wissam Antoun, Fady Baly and Hazem Hajj ArXiV GitHub Hugging Face N/A AraGPT2 Arabic Cased OSCAR, Wikipedia, 1.5B words Arabic Corpus, OSIAN, Assafir Wissam Antoun, Fady Baly and Hazem Hajj ArXiv GitHub Hugging Face N/A CamemBERT French Cased OSCAR Louis Martin, Benjamin Muller, Pedro Javier Ortiz Su\u00e1rez, Yoann Dupont, Laurent Romary, \u00c9ric Villemonte de la Clergerie, Djam\u00e9 Seddah and Beno\u00eet Sagot ACL 2020 camembert-model.fr camembert-base.tar.gz MIT CamemBERT French Cased Subsample of OSCAR (4 GB of text) Louis Martin, Benjamin Muller, Pedro Javier Ortiz Su\u00e1rez, Yoann Dupont, Laurent Romary, \u00c9ric Villemonte de la Clergerie, Djam\u00e9 Seddah and Beno\u00eet Sagot ACL 2020 camembert-model.fr camembert-base-oscar-4gb.tar.gz MIT LePetit French Cased Subsample of OSCAR (2 GB of text) Vincent Micheli, Martin d'Hoffschmidt, Quentin Heinrich Medium blog illuin.tech Hugging Face MIT GigaBERT Arabic Cased and Uncased OSCAR, Wikipedia, Gigaword Wuwei Lan, Yang Chen, Wei Xu, Alan Ritter EMNLP 2020 GitHub Hugging Face MIT ELECTRA Norwegian Cased OSCAR and OPUS Viktor Alm N/A Hugging Face Hugging Face N/A BERT Romanian Cased OSCAR, Wikipedia and OPUS Dumitrescu Stefan and Andrei Avram SOON GitHub Hugging Face MIT BERT Romanian Uncased OSCAR, Wikipedia and OPUS Dumitrescu Stefan and Andrei Avram SOON GitHub Hugging Face MIT RoBERTa Sinhala N/A OSCAR Keshan Sodimana N/A Hugging Face Hugging Face N/A BERT Turkish Cased and Uncased OSCAR, Wikipedia and OPUS Stefan Schweter Zenodo GitHub Hugging Face MIT ELECTRA Turkish Cased OSCAR, Wikipedia and OPUS Stefan Schweter Zenodo GitHub Hugging Face MIT XLMIndic Hindi, Bengali, Gujarati, Panjabi, Marathi, Oriya, Assamese, Sinhala, Nepali, Bihari, Bishnupriya, Maithili, Goan Konkani, Sanskrit Cased OSCAR Ibraheem Muhammad Moosa, Mahmud Shimul and Ashfia Binte Habib Arxiv GitHub Hugging Face MIT

If you have trained a model using the OSCAR corpus and would like to have it featured here, please open a pull request in our GitHub repo. Help us grow the community!

"},{"location":"versions/oscar-2109/","title":"OSCAR 21.09","text":""},{"location":"versions/oscar-2109/#features","title":"Features","text":"

These are the versions of tooling, schemes and data

  • CommonCrawl version: February/March 2021 (2021.10)
  • OSCAR Schema version: v1.1 : Incorporates metadata in a backward compatible manner.
  • Ungoliant version: v1 : New generation tool, faster and better documented/tested than the previous one: goclassy.
"},{"location":"versions/oscar-2109/#changes","title":"Changes","text":"
  • As per OSCAR Schema v1.1, each document/record has associated metadata.
  • New languages: Manx, Rusyn, Scots and West Flemish. Their size and quality still has to be assessed.
  • Removed languages: Central Bikol and Cantonese. Cantonsese was of a very low quality. Central Bikol corpus is still available on OSCAR 2019.
"},{"location":"versions/oscar-2109/#table","title":"Table","text":"Language OSCAR 2019 OSCAR 2019 deduplicated OSCAR 21.09 OSCAR 21.09 deduplicated Issues af Afrikaans 251MB 170MB 258MB 157MB sq Albanian 2GB 1GB 3GB 1GB am Amharic 377MB 215MB 405MB 241MB ar Arabic 87GB 33GB 69GB 35GB an Aragonese 1MB 822KB 1MB 608KB hy Armenian 3GB 1GB 4GB 1GB as Assamese 117MB 73MB 135MB 95MB ast Asturian 2MB 2MB 7MB 4MB av Avaric 418KB 331KB 421KB 325KB az Azerbaijani 2GB 1GB 3GB 1GB bn Bangla 10GB 6GB 14GB 7GB ba Bashkir 133MB 93MB 110MB 77MB eu Basque 889MB 358MB 900MB 503MB bar Bavarian 507B 507B 2KB 1KB be Belarusian 1GB 1GB 2GB 1GB bh Bihari languages 112KB 34KB 579KB 120KB bpy Bishnupriya 4MB 1MB 11MB 4MB bs Bosnian 459KB 120KB 310KB 175KB br Breton 29MB 16MB 49MB 23MB bg Bulgarian 33GB 14GB 34GB 15GB my Burmese 2GB 1GB 2GB 1GB yue Cantonese 3KB 2KB - - ca Catalan 8GB 4GB 13GB 6GB ceb Cebuano 40MB 24MB 81MB 58MB bcl Central Bikol 886B 886B - - ckb Central Kurdish 509MB 236MB 784MB 367MB cbk Chavacano 521B 521B 168B 168B {{< issue cbk >}} ce Chechen 8MB 6MB 29MB 20MB zh Chinese 544GB 267GB 500GB 266GB cv Chuvash 40MB 27MB 60MB 41MB kw Cornish 44KB 14KB 119KB 72KB hr Croatian 237MB 115MB 361MB 169MB cs Czech 56GB 25GB 72GB 33GB da Danish 16GB 10GB 18GB 10GB diq Dimli (individual language) 147B 147B 294B 147B dv Divehi 131MB 81MB 143MB 111MB nl Dutch 82GB 41GB 97GB 47GB mhr Eastern Mari 7MB 6MB 15MB 10MB arz Egyptian Arabic 68MB 34MB 48MB 21MB en English 2520GB 1294GB 2936GB 1342GB myv Erzya 1KB 1KB 29KB 2KB eo Esperanto 312MB 238MB 560MB 390MB et Estonian 5GB 2GB 7GB 3GB tl Filipino 601MB 426MB 699MB 383MB fi Finnish 28GB 13GB 35GB 20GB fr French 302GB 147GB 340GB 161GB gl Galician 650MB 402MB 989MB 549MB ka Georgian 3GB 1GB 6GB 2GB de German 330GB 155GB 433GB 184GB gom Goan Konkani 2MB 1MB 3MB 2MB el Greek 66GB 28GB 72GB 30GB gn Guarani 36KB 23KB 32KB 25KB gu Gujarati 1GB 756MB 1GB 950MB ht Haitian Creole 3KB 3KB 2KB 1KB he Hebrew 21GB 10GB 29GB 11GB hi Hindi 17GB 9GB 26GB 13GB hu Hungarian 42GB 18GB 60GB 29GB is Icelandic 1GB 887MB 2GB 1GB io Ido 151KB 133KB 276KB 221KB ilo Iloko 896KB 653KB 1MB 857KB id Indonesian 32GB 16GB 40GB 22GB ia Interlingua 678KB 368KB 291KB 172KB ie Interlingue 24KB 1KB 7KB 2KB ga Irish 91MB 62MB 131MB 69MB it Italian 146GB 73GB 192GB 94GB ja Japanese 231GB 112GB 208GB 96GB jv Javanese 675KB 598KB 858KB 728KB xal Kalmyk 115KB 114KB 62KB 62KB kn Kannada 1GB 1GB 2GB 1GB krc Karachay-Balkar 2MB 2MB 2MB 2MB kk Kazakh 2GB 1GB 3GB 1GB km Khmer 1GB 608MB 1GB 860MB kv Komi 2MB 1MB 1MB 588KB ko Korean 25GB 11GB 35GB 15GB ku Kurdish 98MB 62MB 152MB 108MB ky Kyrgyz 629MB 406MB 485MB 334MB lo Lao 181MB 118MB 287MB 163MB la Latin 26MB 8MB 103MB 9MB lv Latvian 4GB 1GB 6GB 2GB lez Lezghian 3MB 3MB 2MB 2MB li Limburgish 29KB 27KB 76KB 54KB lt Lithuanian 9GB 4GB 12GB 5GB jbo Lojban 753KB 694KB 929KB 731KB lmo Lombard 454KB 444KB 1MB 1MB nds Low German 18MB 13MB 25MB 17MB dsb Lower Sorbian 13KB 7KB 31KB 14KB lb Luxembourgish 30MB 21MB 54MB 37MB mk Macedonian 2GB 1GB 3GB 1GB mai Maithili 324KB 10KB 685KB 24KB mg Malagasy 21MB 13MB 59MB 38MB ms Malay 116MB 43MB 146MB 60MB ml Malayalam 5GB 2GB 4GB 2GB mt Maltese 24MB 17MB 51MB 26MB gv Manx - - 1KB 907B mr Marathi 2GB 1GB 3GB 1GB mzn Mazanderani 708KB 617KB 1MB 1MB min Minangkabau 622KB 317KB 8MB 1MB xmf Mingrelian 6MB 4MB 16MB 10MB mwl Mirandese 1KB 1KB 3KB 2KB mn Mongolian 2GB 879MB 1GB 912MB nah Nahuatl languages 11KB 10KB 34KB 21KB nap Neapolitan 17KB 13KB 1KB 1KB {{< issue nap >}} ne Nepali 1GB 1GB 3GB 2GB new Newari 5MB 4MB 6MB 4MB frr Northern Frisian 4KB 4KB 7KB 5KB {{< issue frr >}} lrc Northern Luri 77KB 64KB 183B 183B no Norwegian Bokm\u00e5l 8GB 5GB 9GB 4GB nn Norwegian Nynorsk 88MB 56MB 123MB 66MB oc Occitan 6MB 3MB 12MB 5MB or Odia 259MB 196MB 538MB 357MB os Ossetic 12MB 10MB 11MB 6MB pam Pampanga 763B 307B 3KB 3KB ps Pashto 378MB 253MB 404MB 286MB fa Persian 84GB 39GB 79GB 35GB pms Piedmontese 2MB 1MB 4MB 3MB pl Polish 116GB 50GB 122GB 48GB pt Portuguese 132GB 67GB 159GB 71GB pa Punjabi 799MB 481MB 769MB 430MB qu Quechua 80KB 68KB 322KB 230KB ro Romanian 26GB 11GB 37GB 15GB rm Romansh 7KB 6KB 3KB 3KB bxr Russia Buriat 12KB 10KB 22KB 18KB ru Russian 1239GB 609GB 1201GB 542GB rue Rusyn - - 247B 247B sah Sakha 43MB 27MB 57MB 39MB sa Sanskrit 96MB 38MB 72MB 43MB sco Scots - - 1KB 1KB {{< issue sco >}} gd Scottish Gaelic 1MB 1MB 2MB 1MB sr Serbian 4GB 2GB 6GB 3GB sh Serbian (Latin) 25MB 6MB 13MB 9MB scn Sicilian 3KB 2KB 4KB 3KB sd Sindhi 363MB 274MB 75MB 50MB si Sinhala 1GB 840MB 1GB 791MB sk Slovak 9GB 4GB 14GB 6GB sl Slovenian 2GB 1GB 4GB 1GB so Somali 62KB 15KB 15KB 13KB {{< issue so >}} azb South Azerbaijani 28MB 19MB 47MB 29MB es Spanish 297GB 159GB 342GB 160GB su Sundanese 216KB 145KB 397KB 274KB sw Swahili 13MB 8MB 11MB 7MB sv Swedish 46GB 26GB 43GB 19GB tg Tajik 396MB 260MB 985MB 321MB {{< issue tg >}} ta Tamil 9GB 5GB 10GB 5GB tt Tatar 701MB 319MB 947MB 424MB te Telugu 2GB 1GB 3GB 1GB th Thai 38GB 17GB 62GB 26GB bo Tibetan 195MB 144MB 439MB 358MB gsw[^1] Alemannic German 5MB 2MB 7MB 5MB tr Turkish 63GB 28GB 73GB 33GB {{< issue tr >}} tk Turkmen 10MB 7MB 25MB 20MB tyv Tuvinian 11KB 8KB 9KB 7KB uk Ukrainian 56GB 29GB 53GB 28GB eml Emiliano-Romagnolo[^2] 25KB 23KB 22KB 20KB hsb Upper Sorbian 4MB 1MB 2MB 1MB ur Urdu 2GB 1GB 2GB 1GB ug Uyghur 127MB 86MB 187MB 123MB uz Uzbek 21MB 11MB 56MB 28MB vec Venetian 18KB 16KB 37KB 28KB vi Vietnamese 72GB 33GB 87GB 42GB vo Volap\u00fck 2MB 2MB 2MB 2MB wa Walloon 280KB 207KB 511KB 329KB war Waray 2MB 2MB 4MB 4MB cy Welsh 223MB 139MB 307MB 180MB vls West Flemish - - 134B 134B {{< issue vls >}} fy Western Frisian 35MB 26MB 82MB 57MB mrj Western Mari 1MB 1MB 645KB 521KB pnb Western Panjabi 11MB 9MB 68MB 45MB wuu Wu Chinese 111KB 32KB 145KB 69KB {{< issue wuu >}} yi Yiddish 146MB 87MB 199MB 93MB yo Yoruba 56KB 26KB 229KB 120KB"},{"location":"versions/oscar-2109/#oscar-schema-v110","title":"OSCAR Schema v1.1.0","text":"

The new OSCAR schema incorporates backward-compatible changes.

"},{"location":"versions/oscar-2109/#changes_1","title":"Changes","text":"

The old OSCAR Schema v1.0 featured the following file hierarchy, in an uncompressed form:

/\n\u251c\u2500\u2500 af\n\u2502   \u251c\u2500\u2500 af_sha256.txt\n\u2502   \u2514\u2500\u2500 af.txt.gz\n\u251c\u2500\u2500 de\n\u2502   \u251c\u2500\u2500 de_sha256.txt    # Checksum file \n\u2502   \u2514\u2500\u2500 de.txt.gz        # Textual content\n\u251c\u2500\u2500 en\n\u2502   \u251c\u2500\u2500 en_part_1.txt.gz        # Multipart example\n\u2502   \u251c\u2500\u2500 en_part_2.txt.gz\n\u2502   \u2514\u2500\u2500 en_sha256.txt\n\u251c\u2500\u2500 yi\n\u2502   \u251c\u2500\u2500 yi_sha256.txt\n\u2502   \u2514\u2500\u2500 yi.txt.gz\n\u2514\u2500\u2500 zh\n    \u251c\u2500\u2500 zh_sha256.txt\n    \u2514\u2500\u2500 zh.txt.gz\n

The new OSCAR Schema v1.1 features the following file hierarchy (some languages omitted):

/\n\u251c\u2500\u2500 af\n\u2502   \u251c\u2500\u2500 af_meta.jsonl.gz\n\u2502   \u251c\u2500\u2500 af_sha256.txt\n\u2502   \u2514\u2500\u2500 af.txt.gz\n\u251c\u2500\u2500 de\n\u2502   \u251c\u2500\u2500 de_meta.jsonl.gz # Metadata, in JSONLines format\n\u2502   \u251c\u2500\u2500 de_sha256.txt    # Checksum file \n\u2502   \u2514\u2500\u2500 de.txt.gz        # Textual content\n\u251c\u2500\u2500 en\n\u2502   \u251c\u2500\u2500 en_meta_part_1.jsonl.gz # Multipart example\n\u2502   \u251c\u2500\u2500 en_meta_part_2.jsonl.gz # Each part is independent,\n\u2502   \u251c\u2500\u2500 en_part_1.txt.gz        # Ex: en_part_2.txt.gz and en_meta_part_2.jsonl.gz\n\u2502   \u251c\u2500\u2500 en_part_2.txt.gz\n\u2502   \u2514\u2500\u2500 en_sha256.txt\n\u251c\u2500\u2500 yi\n\u2502   \u251c\u2500\u2500 yi_meta.jsonl.gz\n\u2502   \u251c\u2500\u2500 yi_sha256.txt\n\u2502   \u2514\u2500\u2500 yi.txt.gz\n\u2514\u2500\u2500 zh\n    \u251c\u2500\u2500 zh_meta.jsonl.gz\n    \u251c\u2500\u2500 zh_sha256.txt\n    \u2514\u2500\u2500 zh.txt.gz\n
"},{"location":"versions/oscar-2109/#file-formats","title":"File formats","text":""},{"location":"versions/oscar-2109/#txt-files","title":".txt files","text":"

Lines are newline-separated, and documents are double-newline separated. In other terms, there is a blank line between each document.

"},{"location":"versions/oscar-2109/#jsonl-files","title":".jsonl files","text":"

These are the metadata, in JSONLines format.

Each line follows the following JSON Scheme:

{\n\"$schema\": \"http://json-schema.org/draft-07/schema#\",\n\"title\": \"Metadata\",\n\"description\": \"Holds record headers.\\n\\nEach metadata is linked to a specific paragraph/text zone\",\n\"type\": \"object\",\n\"required\": [\n\"headers\",\n\"nb_sentences\",\n\"offset\"\n],\n\"properties\": {\n\"headers\": {\n\"type\": \"object\",\n\"additionalProperties\": {\n\"type\": \"string\"\n}\n},\n\"nb_sentences\": {\n\"type\": \"integer\",\n\"format\": \"uint\",\n\"minimum\": 0.0\n},\n\"offset\": {\n\"type\": \"integer\",\n\"format\": \"uint\",\n\"minimum\": 0.0\n}\n}\n}\n

Example:

{\n\"headers\":{                  // these headers keys are *almost* always present.\n\"content-length\":\"11062\", // the content length is not changed and reflects the \n// length before filtering and eventual deduplication.\n\"warc-target-uri\":\"...\",\n\"warc-type\":\"conversion\",\n\"content-type\":\"text/plain\",\n\"warc-date\":\"2021-02-24T17:55:29Z\", // Following WARC specification, it is the crawl date.\n\"warc-identified-content-language\":\"eng,zho\",\n\"warc-refers-to\":\"<urn:uuid:c649de0e-42a3-4e69-b675-98e28e084698>\",\n\"warc-block-digest\":\"sha1:V4PYYGYA6ZYA2WACDKSNL6NXGDN6XK6X\",\n\"warc-record-id\":\"<urn:uuid:121a822f-5362-4559-8891-d085415cdd90>\"\n},\n\"offset\":0, // Related text is in the text file, from lines offset+1 to lines offset+nb_sentences.\n\"nb_sentences\":9\n}\n

"},{"location":"versions/oscar-2109/#lang_sha256txt-files","title":"<lang>_sha256.txt files","text":"

These are used to check for eventual corruption during download. They can be used by running sha256sum -c <lang>_sha256.txt.

[^1]: gsw is ISO 639-2 for Alemannic German. It was previously identified as als in previous OSCAR versions, due to a bug in fasttext. [^2]: eml identification tag is deprecated and corresponds to rgn and egl tags in ISO 639-3

"},{"location":"versions/oscar-2201/","title":"OSCAR 22.01","text":"

OSCAR 2201 is the OSCAR version from January, 2022, the November/December 2021 dump of Common Crawl. It features a different file layout that makes it not backward compatible with code designed to run with previous OSCAR versions.

Request access \ud83e\udd17 Datasets Read the paper

"},{"location":"versions/oscar-2201/#summary","title":"Summary","text":"

OSCAR 22.01 is document-oriented, which means that rather than extracting lines and sorting them in language subcorpora, we identify documents as a whole. The main differences are that sentences in a document are contiguous and should make sense one after another, but sentences are not guaranteed to be of the subcorpus' language.

Note

As an example, the English Wikipedia page about La Marseillaise contains sentences in French (The anthem's lyrics). In line-oriented corpora, these sentences would have been put in the French subcorpus. In OSCAR 22.01, they should be along with the article, in a document classified as English.

"},{"location":"versions/oscar-2201/#layout","title":"Layout","text":"

As previous corpora, there is one subcorpus per language, plus one new subcorpus for multilingual documents. Subcorpora are distributed in JSONLines, split into 1GB chunks, then gzipped.

Note

Splits are completely independent and self-contained: It is possible to only download en_meta_134.jsonl.gz and to do processing on it.

"},{"location":"versions/oscar-2201/#example-document","title":"Example document","text":"
{\n\"content\":\"newline\\nseparaaaaaaaaaaated\\ncontent\", // (1)\n\"warc_headers\":{ // (2) \n\"warc-refers-to\":\"<urn:uuid:83f2e1d4-5ed3-41db-86ff-f7826c4c20f9>\", \"warc-date\":\"2021-09-16T11:07:14Z\",\n\"warc-block-digest\":\"sha1:X3OWP47FG2O5LBNMFSNB44FJF2SSRC26\",\n\"warc-type\":\"conversion\",\n\"warc-identified-content-language\":\"eng\",\n\"content-length\":\"1694\",\n\"warc-target-uri\":\"https://foo.bar\",\n\"warc-record-id\":\"<urn:uuid:3304bc27-17d0-4ffd-a692-340381478a5f>\",\n\"content-type\":\"text/plain\"\n},\n\"metadata\":{\n// (3)\n\"identification\":{\n\"label\":\"en\",\n\"prob\":0.6268374\n},\n// (4)\n\"annotation\":[\n\"short_sentences\",\n\"footer\"\n],\n// (5)\n\"sentence_identifications\":[\n{\n\"label\":\"en\",\n\"prob\":0.93925816\n},\nnull,\n{\n\"label\":\"en\",\n\"prob\":0.9606543\n}\n]\n}\n}\n
  1. Content. Lines are separated by \\n.
  2. Headers from the crawler. Note that nothing is changed, so the content length may be incorrect.
  3. Document-wide identification. prob is the weighted average of the confidence of identified lines.
  4. Annotations of the document. null if no annotation.
  5. Line-by-line identifications. null for each line that has no identification.
"},{"location":"versions/oscar-2201/#annotations","title":"Annotations","text":"
  • tiny: The document has a low (<5) number of lines.
  • short_sentences: The document has a high number (>50%) of short lines (<400 bytes)
  • header: The document has a high number of short lines at its head, suggesting the presence of low quality content.
  • footer: The document has a high number of short lines at its tail, suggesting the presence of low quality content.
  • noisy: The document has a high percentage of punctuation (>50%)
  • adult: The document contains adult content. This annotation uses a blocklist and labels a tiny part of the corpus: It does not catch most of the adult content.

More information about the thresholds and annotators are present in our paper.

"},{"location":"versions/oscar-2201/#filtering","title":"Filtering","text":"

Tip

Filtering can be done using oscar-tools, a high performance toolkit that provides rapid and efficient ways of transforming corpora into what you need. More info here.

Filtering can be done using classic Python tools, such as ujson. While we don't supply a Python library enabling easy filtering/transformation for OSCAR 22.01, we provide some filtering examples that you can change to better suit your needs.

"},{"location":"versions/oscar-2201/#getting-documents-that-come-from-wikipedia-only","title":"Getting documents that come from Wikipedia only","text":"

Using filters on warc_headers.warc-target-uri makes filtering on URLs easy.

TODO\n
"},{"location":"versions/oscar-2201/#extracting-lines-from-non-annotated-documents","title":"Extracting lines from non-annotated documents","text":"

Non-annotated documents are suspected to be cleaner than annotated ones, so extracting their content should be interesting to do. We extract lines from documents where metadata.annotations == null.

TODO\n
"},{"location":"versions/oscar-2201/#getting-alemannic-lines-from-the-german-corpus","title":"Getting Alemannic lines from the German corpus","text":"

As detailed in our paper, we found that the German corpus has a (relative to the Alemannic corpus size) important amount of Alemannic. We use a filter on metadata.sentence_identifications to extract those sentences.

TODO\n
"},{"location":"versions/oscar-2201/#languages","title":"Languages","text":"

OSCAR 22.01 has subcorpora for 142 languages (counting the Multilingual corpus). The following table exhibits the size, number of documents and number of words for each of them.

Note that the size accounts for the raw uncompressed file size, counting metadata.

Language table Language Size # Documents # Words Multilingual 12.1 GB 1,210,685 936,187,711 Afrikaans 47.0 MB 12,393 6,227,310 Albanian 3.0 GB 437,287 326,325,149 Alemannic / Swiss German 363.6 kB 139 37,381 Amharic 461.0 MB 37,513 30,481,153 Arabic 84.2 GB 8,718,929 6,103,711,887 Aragonese 10.6 kB 12 51 Armenian 4.7 GB 379,267 268,031,270 Assamese 221.2 MB 17,084 11,109,557 Asturian 73.6 kB 77 3,919 Avaric 18.6 kB 14 582 Azerbaijani 3.5 GB 491,847 291,927,692 Bangla 15.1 GB 1,171,501 751,877,226 Bashkir 95.5 MB 11,198 5,418,474 Basque 1.1 GB 233,658 97,092,942 Belarusian 1.8 GB 180,046 107,227,860 Bihari languages 24.2 kB 27 569 Bishnupriya 2.0 MB 271 98,419 Bosnian 10.3 kB 10 422 Breton 33.7 MB 16,119 3,111,619 Bulgarian 35.1 GB 2,887,115 2,405,981,285 Burmese 1.9 GB 158,733 44,835,970 Catalan 13.9 GB 2,627,307 1,508,919,864 Cebuano 44.6 MB 5,742 5,253,785 Central Kurdish 716.4 MB 84,950 43,913,025 Chechen 14.0 MB 4,086 798,766 Chinese 900.9 GB 56,524,518 23,149,203,886 Chuvash 41.8 MB 4,750 2,465,782 Cornish 1.4 kB 2 55 Croatian 11.2 MB 11,462 505,369 Czech 58.6 GB 10,381,916 5,452,724,456 Danish 12.6 GB 2,265,479 1,454,439,292 Dimli (individual language) 706 Bytes 1 19 Divehi 217.2 MB 24,067 10,112,205 Dutch 114.0 GB 20,206,532 12,329,127,151 Eastern Mari 11.3 MB 1,612 641,525 Egyptian Arabic 2.8 MB 1,256 176,096 English 3.2 TB 431,992,659 377,376,402,775 Esperanto 558.3 MB 111,932 58,416,628 Estonian 9.2 GB 1,362,524 820,975,443 Filipino 646.5 MB 70,394 81,881,278 Finnish 37.8 GB 4,948,961 2,900,615,928 French 382.2 GB 52,037,098 41,713,990,658 Galician 255.2 MB 88,803 27,051,212 Georgian 7.1 GB 488,588 281,430,479 German 496.7 GB 70,075,424 46,826,676,844 Goan Konkani 787.2 kB 46 38,831 Greek 78.3 GB 6,738,546 5,031,242,803 Guarani 9.0 kB 10 374 Gujarati 4.8 GB 136,467 301,170,777 Hebrew 30.3 GB 3,132,396 2,249,377,984 Hindi 23.3 GB 1,529,907 1,534,799,198 Hungarian 53.9 GB 6,866,062 4,598,787,907 Icelandic 2.0 GB 396,183 210,365,124 Ido 77.3 kB 105 2,690 Iloko 97.9 kB 75 8,592 Indonesian 17.4 GB 2,244,622 1,984,195,207 Interlingua 40.2 kB 6 10,125 Irish 45.6 MB 12,233 4,877,850 Italian 229.3 GB 28,502,092 24,294,684,830 Japanese 258.7 GB 36,328,931 5,592,948,356 Javanese 152.7 kB 70 10,441 Kalmyk 9.3 kB 9 250 Kannada 2.6 GB 150,850 108,450,571 Karachay-Balkar 119.6 kB 91 4,089 Kazakh 2.9 GB 261,085 157,267,307 Khmer 1.9 GB 121,910 30,564,131 Komi 119.9 kB 127 3,335 Korean 51.8 GB 5,881,481 3,854,968,649 Kurdish 150.3 MB 29,906 17,390,759 Kyrgyz 518.6 MB 62,244 28,028,986 Lao 337.1 MB 28,914 6,682,982 Latin 4.1 MB 4,397 187,446 Latvian 8.2 GB 1,032,987 707,361,898 Lezghian 375.5 kB 124 19,250 Limburgish 1.4 kB 2 41 Lithuanian 20.0 GB 2,303,070 1,712,802,056 Lojban 1.9 MB 570 260,542 Lombard 2.6 kB 2 225 Low German 9.0 MB 1,938 1,012,561 Lower Sorbian 707 Bytes 1 17 Luxembourgish 15.8 MB 5,108 1,545,946 Macedonian 3.6 GB 341,775 244,058,579 Maithili 21.6 kB 23 483 Malagasy 57.3 MB 3,028 7,279,056 Malay 5.3 MB 5,228 217,818 Malayalam 4.1 GB 250,972 137,831,247 Maltese 2.5 MB 2,208 118,190 Marathi 3.3 GB 250,376 160,179,233 Mazanderani 128.2 kB 76 7,337 Minangkabau 6.0 MB 585 614,613 Mingrelian 7.6 MB 2,550 253,333 Mongolian 2.8 GB 237,719 176,405,432 Nahuatl languages 8.7 kB 12 179 Nepali 3.7 GB 391,947 177,885,116 Newari 5.7 MB 1,134 273,837 Norwegian 2.8 GB 973,188 279,182,902 Norwegian Nynorsk 6.8 MB 5,835 459,183 Occitan 2.1 MB 373 31,061 Odia 487.9 MB 52,942 23,755,902 Ossetic 13.9 MB 3,560 800,430 Pashto 490.3 MB 50,312 46,293,249 Persian 77.4 GB 7,665,871 6,430,164,396 Piedmontese 1.7 MB 698 188,270 Polish 139.0 GB 19,301,137 12,584,498,906 Portuguese 170.3 GB 23,735,707 18,441,864,893 Punjabi 1.1 GB 68,094 70,068,604 Quechua 744 Bytes 1 14 Romanian 49.2 GB 4,624,764 5,261,803,995 Russia Buriat 32.9 kB 39 785 Russian 1.1 TB 76,060,844 62,811,122,663 Sakha 65.6 MB 6,284 3,473,813 Sanskrit 136.0 MB 4,472 5,671,369 Scottish Gaelic 137.7 kB 136 7,769 Serbian 6.9 GB 577,472 482,932,670 Serbian (Latin) 931.8 kB 738 92,875 Sicilian 1.5 kB 2 50 Sindhi 117.1 MB 15,516 10,685,611 Sinhala 2.0 GB 108,593 113,179,741 Slovak 16.5 GB 2,409,555 1,619,121,944 Slovenian 1.2 GB 351,894 118,400,246 Somali 2.1 kB 3 109 South Azerbaijani 14.1 MB 5,381 693,746 Spanish 381.9 GB 51,386,247 42,829,835,316 Sundanese 5.0 MB 263 547,145 Swahili 1.3 MB 462 123,050 Swedish 48.0 GB 7,541,278 5,078,331,128 Tajik 870.9 MB 46,366 56,627,727 Tamil 11.4 GB 556,772 452,343,748 Tatar 915.3 MB 76,398 51,875,265 Telugu 3.4 GB 249,756 137,752,065 Thai 66.1 GB 5,030,254 1,626,779,846 Tibetan 234.5 MB 18,683 2,286,269 Turkish 75.1 GB 10,826,031 6,421,221,358 Turkmen 4.4 MB 2,485 276,632 Ukrainian 48.8 GB 4,558,214 2,879,585,992 Emiliano-Romagnolo[eml] 901 Bytes 1 53 Upper Sorbian 132.8 kB 110 8,825 Urdu 3.4 GB 336,994 332,816,354 Uyghur 201.9 MB 18,556 11,240,889 Uzbek 19.9 MB 9,526 1,370,842 Vietnamese 98.9 GB 9,587,233 12,283,185,482 Volap\u00fck 825.9 kB 661 57,039 Walloon 105.7 kB 138 4,386 Waray 7.6 MB 933 830,872 Welsh 409.3 MB 90,378 49,488,495 Western Frisian 75.3 MB 21,946 6,357,929 Western Mari 743.5 kB 155 43,916 Western Panjabi 46.7 MB 6,790 4,060,419 Wu Chinese 137.2 kB 88 3,056 Yiddish 232.5 MB 23,418 15,809,780 Yoruba 24.7 kB 26 1,042 Multilingual 12.1 GB 1,210,685 936,187,711"},{"location":"versions/oscar-2301/","title":"OSCAR 23.01","text":"

OSCAR 23.01 is the January 2023 version of the OSCAR Corpus based on the November/December 2022 dump of Common Crawl. While being quite similar to OSCAR 22.01, it contains several new features, including KenLM-based adult content detection, precomputed Locality-Sensitive Hashes for near deduplication, and blocklist-based categories. OSCAR 23.01 has also moved from gzip to Zstandard compression. You might already have zstd installed on your system, but if not, please check the Zstandard website for installation instructions.

Tip

OSCAR 23.01 is similar to OSCAR 22.01. As such, please also check out the documentation for OSCAR 22.01 if you need detailed information about metadata.

"},{"location":"versions/oscar-2301/#access","title":"Access","text":"

Note

If you already have access to the corpus, there's nothing to do! Go up in the file hierarchy on the link you've been given, and you should find the new corpus.

Access to the OSCAR Corpus changes depending on your status. More info on our dedicated page.

Getting access

"},{"location":"versions/oscar-2301/#new-features","title":"New Features","text":""},{"location":"versions/oscar-2301/#categories","title":"Categories","text":"

OSCAR 22.01 leveraged the UT1 Blocklists project to attempt to classify some adult content present in OSCAR. The OSCAR 23.01 pipeline iterated on this to include all of the blocklists provided by UT1.

Warning

The UT1 Blocklists page lists all the categories along with a short description. We strongly encourage you to read the descriptions if you plan on using them. Please also note that these descriptions are in French. We're working on an English translation of them.

Note

A document can belong to multiple categories.

These categories are in a field that is at this path: metadata.categories.

Example

{\n\"content\":\"foo\",\n\"metadata\": {\n// ...\n\"categories\": [\"blog\", \"news\"],\n// ...\n}\n// ...\n}\n
"},{"location":"versions/oscar-2301/#kenlm-based-adult-content-filtering","title":"KenLM-based Adult Content Filtering","text":"

For a select number of subcorpora, a measure of perplexity has been added. This perplexity comes from a KenLM model trained on harmful content, previously gathered by using the adult annotation in OSCAR 22.01. In other terms, the lower it is, the more likely a given document contains harmful/adult content.

Danger

This feature can be considered as unstable/unsafe, since we also want to evaluate its impact on particular issues.

As such, we do not provide a boolean value indicating if a given document can be harmful/adult content, but rather the raw perplexity. We have found a threshold that works well in English, but encourage you to experiment with it and to report back your findings.

"},{"location":"versions/oscar-2301/#locality-sensitive-hashing","title":"Locality Sensitive Hashing","text":"

We use TLSH to compute a hash for each document.

Locality sensitive hashing is a hashing method that computes similar hashes for similar documents.

This can be used to do both exact- and near- deduplication. Same documents have same hashes (the reverse might not be true). So you only need to check for identity amongst documents with identical hashes. TLSH hashes can be compared to yield a distance metric. According to the original paper, a cutoff of < 40 yields a false positive rate of 0.07% and a detect rate of 49.6%, while a cutoff of < 100 yields a FP rate of 6.43% and detect rate of 94.5%. You should choose a value that meets your purposes.

The above is true for the default version of TLSH which is used in packages such as py-tlsh. OSCAR 23.01 uses a TLSH with a hyperparameter of 256 buckets (Full hash), and 3 byte checksums (collision rate : 1 in 5800) instead of 1 byte checksums (collision rate : 1 in 24).

If you would like to use py-tlsh, follow these instructions (You need CMake installed to perform the necessary modifications and build):

# download py-tlsh source package\npip download python-tlsh\n# unpack the source tar.gz and enter the directory\ntar -xvf python-tlsh-4.5.0.tar.gz && cd python-tlsh-4.5.0\n# run the following command to implement the changes\n# alternatively, you can use vi or a text editor\n# change TLSH_BUCKETS_128 into TLSH_BUCKETS_256 and change TLSH_CHECKSUM_1B into TLSH_CHECKSUM_3B\nsed -i 's/set(TLSH_BUCKETS_128 1)/set(TLSH_BUCKETS_256 1)/g; s/set(TLSH_CHECKSUM_1B 1)/set(TLSH_CHECKSUM_3B 1)/g' CMakeLists.txt\n\n# build and activate pip venv if not already done\n# python3 -m venv ~/.venv\nsource ~/.venv/bin/activate\n# build and install the new py-tlsh\npython3 setup.py install\n

Hashes are at metadata.tlsh.

"},{"location":"versions/oscar-2301/#minor-changes","title":"Minor changes","text":"
  • metadata.annotations has been renamed metadata.quality_warnings, and only contains length based quality warnings (see the OSCAR 2201 documentation for details).
  • Some language tags have changed to better respect the BCP47:
    • als has become gsw. Previously, als was erroneously used as the tag for Alemannic/Swiss German, whereas it is the tag for Tosk Albanian.
    • eml has become x-eml. The eml tag is deprecated and as such has been replaced by a private tag (x-eml).
"},{"location":"versions/oscar-2301/#layout","title":"Layout","text":"
{\n\"content\":\"English sentence\\nphrase en fran\u00e7ais\\n????????????\", // (1)\n\"warc_headers\":{ // (2)\n\"warc-identified-content-language\":\"fra,eng\",\n\"warc-target-uri\":\"https://fr.wikipedia.org/wiki/...\",\n\"warc-record-id\":\"<urn:uuid:29eaa920-d299-4b1d-b687-c72bd8d68116>\",\n\"warc-type\":\"conversion\",\n\"content-length\":\"35298\", // (3)\n\"warc-refers-to\":\"<urn:uuid:39e42055-0d94-4e45-9c6c-9e7056635d64>\",\n\"warc-block-digest\":\"sha1:WFH2A5WHCS2H365GIAFYQPI7UOAMFGHB\", // (3)\n\"warc-date\":\"2022-11-26T09:45:47Z\",\n\"content-type\":\"text/plain\"\n},\n\"metadata\":{\n\"identification\":{ // (4)\n\"label\":\"fr\",\n\"prob\":0.8938327\n},\n\"harmful_pp\":4063.1814, // (5)\n\"tlsh\":\"tlsh:T125315FF2B6088901EEA097015DB39B4600B...\", // (6)\n\"quality_warnings\":[ // (7)\n\"short_sentences\",\n\"header\",\n\"footer\"\n],\n\"categories\":[ // (8)\n\"examen_pix\",\n\"liste_bu\"\n],\n\"sentence_identifications\":[ // (9)\n{\n\"label\":\"fr\",\n\"prob\":0.99837273\n},\n{\n\"label\":\"en\",\n\"prob\":0.9992377\n},\nnull\n]\n}\n}\n

Some important notes:

  1. Newline-separated content.
  2. Headers from the crawled dumps are left untouched. See the WARC specification for more info.
  3. Since warc_headers are copied and content can be altered by Ungoliant at generation stage, content-length and warc-block-digest can be different from actual values.
  4. Document-level identification. Computation details can be found on the OSCAR 22.01 paper.
  5. Perplexity of the document, computed using a KenLM model trained on harmful content. See this pre-print for more info. The lower this number is, the higher the probability that it will contain harmful or adult content. This annotation will be changed from harmful_pp to harmful_pplin future releases.
  6. Locality Sensitive Hash of the documents' content, using TLSH. Useful for both exact and near deduplication.
  7. (Corresponds to annotations pre-23.01) Potential quality warnings. Based on content/sentence length. See [OSCAR 22.01 paper for more info.
  8. Blocklist-based categories. Uses the UT1 Blocklist, plus custom additions. Please refer to the UT1 website for categories description. Note that the categories are in French.
  9. Sentence-level identifications. A null value means no identification with a good enough threshold (>0.8 on 23.01).
"},{"location":"versions/oscar-2301/#language-table","title":"Language table","text":"Code Language # docs # words Content Length : 0 af Afrikaans 23,994 6,217,024 37.2 MB 1 sq Albanian 1,342,790 462,694,599 3.2 GB 2 am Amharic 119,434 40,262,809 512.9 MB 3 ar Arabic 25,012,116 10,081,452,882 110.7 GB 4 an Aragonese 34 264 11.0 kB 5 hy Armenian 1,056,974 336,045,041 4.9 GB 6 as Assamese 89,542 24,395,215 412.1 MB 7 ast Asturian 440 10,917 74.1 kB 8 av Avaric 44 1,073 18.6 kB 9 az Azerbaijani 1,159,994 316,850,330 3.0 GB 10 bn Bangla 3,474,086 1,092,983,765 19.1 GB 11 ba Bashkir 128,248 26,036,637 363.7 MB 12 eu Basque 678,474 136,672,615 1.2 GB 13 be Belarusian 445,612 164,729,607 2.3 GB 14 bh Bihari languages 48 507 6.8 kB 15 bpy Bishnupriya 2,346 346,947 5.4 MB 16 bs Bosnian 20 395 3.0 kB 17 br Breton 36,338 4,759,407 31.4 MB 18 bg Bulgarian 8,933,998 3,635,273,738 44.1 GB 19 my Burmese 430,276 82,433,836 3.0 GB 20 ca Catalan 6,953,898 2,240,460,836 15.3 GB 21 ceb Cebuano 16,174 6,263,404 41.1 MB 22 ckb Central Kurdish 182,508 61,334,746 772.9 MB 23 ce Chechen 11,686 1,051,752 13.9 MB 24 zh Chinese 138,478,270 44,378,380,161 1.4 TB 25 cv Chuvash 16,652 3,039,925 42.3 MB 26 kw Cornish 8 80 432 Bytes 27 hr Croatian 31,808 3,542,961 26.5 MB 28 cs Czech 34,859,632 9,717,378,559 77.0 GB 29 da Danish 7,214,338 2,217,634,340 14.8 GB 30 dv Divehi 77,060 10,655,359 200.1 MB 31 nl Dutch 72,552,688 19,564,553,306 135.0 GB 32 mhr Eastern Mari 9,502 1,615,215 22.9 MB 33 arz Egyptian Arabic 3,958 385,511 3.7 MB 34 en English 1,235,510,986 523,869,288,690 3.4 TB 35 eo Esperanto 226,924 67,774,923 474.8 MB 36 et Estonian 3,601,904 938,296,892 8.0 GB 37 tl Filipino 250,558 110,560,444 719.2 MB 38 fi Finnish 14,471,710 4,198,143,883 41.1 GB 39 fr French 158,334,998 62,127,088,294 430.5 GB 40 gl Galician 248,762 38,345,625 255.7 MB 41 ka Georgian 1,343,036 373,935,158 8.4 GB 42 de German 206,598,430 73,848,586,648 594.7 GB 43 gom Goan Konkani 398 121,035 2.3 MB 44 el Greek 20,282,864 7,691,622,692 95.7 GB 45 gn Guarani 14 260 2.2 kB 46 gu Gujarati 425,552 417,001,705 5.6 GB 47 ht Haitian Creole 2 20,671 93.1 kB 48 he Hebrew 3,997,888 1,697,158,891 18.0 GB 49 hi Hindi 5,514,454 2,475,605,444 32.6 GB 50 hu Hungarian 21,349,372 16,013,364,289 150.1 GB 51 is Icelandic 1,210,232 294,471,539 2.2 GB 52 io Ido 224 2,598 16.1 kB 53 ilo Iloko 144 4,411 28.0 kB 54 id Indonesian 7,109,778 3,228,020,221 23.4 GB 55 ia Interlingua 34 9,384 33.5 kB 56 ie Interlingue 2 0 881 Bytes 57 ga Irish 29,894 9,054,923 63.2 MB 58 it Italian 89,021,606 36,327,274,203 259.4 GB 59 ja Japanese 94,236,404 4,401,059,165 181.2 GB 60 jv Javanese 172 3,286 25.7 kB 61 xal Kalmyk 2 27 315 Bytes 62 kn Kannada 448,500 124,924,350 2.6 GB 63 krc Karachay-Balkar 496 8,385 122.4 kB 64 kk Kazakh 677,622 214,679,857 3.3 GB 65 km Khmer 450,660 59,880,231 3.2 GB 66 kv Komi 460 5,909 70.3 kB 67 ko Korean 15,147,698 3,435,866,935 38.1 GB 68 ku Kurdish 80,338 25,921,607 174.1 MB 69 ky Kyrgyz 144,288 32,062,783 489.3 MB 70 lo Lao 118,374 10,659,203 472.1 MB 71 la Latin 14,384 307,865 2.0 MB 72 lv Latvian 2,435,882 845,459,899 7.4 GB 73 lez Lezghian 676 60,634 856.6 kB 74 li Limburgish 6 169 1.4 kB 75 lt Lithuanian 5,182,028 1,674,362,574 14.5 GB 76 jbo Lojban 572 312,315 1.5 MB 77 lmo Lombard 112 3,269 21.0 kB 78 nds Low German 5,248 1,612,175 10.7 MB 79 dsb Lower Sorbian 8 84 664 Bytes 80 lb Luxembourgish 18,090 2,514,838 18.4 MB 81 mk Macedonian 1,063,298 389,344,425 4.7 GB 82 mai Maithili 46 467 6.8 kB 83 mg Malagasy 10,830 1,416,430 11.2 MB 84 ms Malay 11,500 238,477 2.6 MB 85 ml Malayalam 800,936 236,597,838 5.8 GB 86 mt Maltese 5,180 149,886 1.3 MB 87 mr Marathi 729,578 252,706,331 4.5 GB 88 mzn Mazanderani 384 16,115 169.2 kB 89 min Minangkabau 2,436 305,589 3.8 MB 90 xmf Mingrelian 7,318 283,316 6.1 MB 91 mwl Mirandese 4 54 423 Bytes 92 mn Mongolian 1,061,710 454,350,415 5.8 GB 93 multi Multilingual 2,948,202 1,251,676,406 11.9 GB 94 nah Nahuatl languages 38 279 2.4 kB 95 ne Nepali 1,152,156 278,901,036 4.9 GB 96 new Newari 1,996 229,703 4.0 MB 97 no Norwegian 2,797,378 373,160,033 2.6 GB 98 nn Norwegian Nynorsk 19,470 575,518 3.7 MB 99 oc Occitan 920 34,701 405.0 kB 100 or Odia 158,426 31,963,340 543.1 MB 101 os Ossetic 8,628 3,935,964 50.7 MB 102 ps Pashto 87,408 30,196,179 261.6 MB 103 fa Persian 23,813,882 9,609,206,698 93.2 GB 104 pms Piedmontese 2,524 510,087 3.1 MB 105 pl Polish 57,184,826 18,073,705,588 147.1 GB 106 pt Portuguese 36,062,800 15,172,557,311 105.0 GB 107 pa Punjabi 222,058 104,235,418 1.4 GB 108 qu Quechua 2 13 143 Bytes 109 ro Romanian 11,985,668 6,302,600,833 45.6 GB 110 bxr Russia Buriat 72 698 8.2 kB 111 ru Russian 194,143,422 78,032,029,344 1.1 TB 112 sah Sakha 17,566 4,288,051 68.8 MB 113 sa Sanskrit 16,802 2,479,345 56.3 MB 114 gd Scottish Gaelic 776 18,458 146.1 kB 115 sr Serbian 1,677,896 632,781,822 7.7 GB 116 sh Serbian (Latin) 3,214 166,517 816.4 kB 117 sd Sindhi 48,566 14,667,207 131.6 MB 118 si Sinhala 301,066 172,755,385 2.6 GB 119 sk Slovak 8,931,784 2,704,716,280 21.5 GB 120 sl Slovenian 1,112,560 192,816,743 1.4 GB 121 so Somali 6 51 503 Bytes 122 azb South Azerbaijani 26,364 2,029,729 28.4 MB 123 es Spanish 153,574,556 63,388,237,965 429.9 GB 124 su Sundanese 18 258 2.0 kB 125 sw Swahili 1,664 164,459 1.0 MB 126 sv Swedish 21,891,348 6,993,719,601 50.0 GB 127 gsw Swiss German 342 34,328 232.7 kB 128 tg Tajik 144,932 76,987,285 1.0 GB 129 ta Tamil 1,638,238 738,824,392 15.8 GB 130 tt Tatar 262,654 59,253,765 833.8 MB 131 te Telugu 644,712 201,575,815 3.9 GB 132 th Thai 14,845,900 2,224,483,018 92.0 GB 133 bo Tibetan 62,352 6,062,558 531.6 MB 134 tr Turkish 26,654,330 8,290,890,087 73.7 GB 135 tk Turkmen 4,576 325,786 3.3 MB 136 uk Ukrainian 10,059,992 3,183,842,018 44.7 GB 137 x-eml Emiliano-Romagnol 4 329 1.8 kB 138 hsb Upper Sorbian 402 15,827 123.2 kB 139 ur Urdu 887,004 434,023,273 3.8 GB 140 ug Uyghur 51,304 14,659,554 219.8 MB 141 uz Uzbek 15,806 1,665,960 15.3 MB 142 vi Vietnamese 33,933,994 22,424,984,210 140.8 GB 143 vo Volap\u00fck 896 49,968 371.9 kB 144 wa Walloon 390 6,347 34.3 kB 145 war Waray 1,494 19,665 126.8 kB 146 cy Welsh 151,512 52,250,043 333.0 MB 147 fy Western Frisian 45,458 9,885,788 70.4 MB 148 mrj Western Mari 496 60,180 765.8 kB 149 pnb Western Panjabi 12,904 11,844,695 105.8 MB 150 wuu Wu Chinese 136 1,199 26.8 kB 151 yi Yiddish 47,438 14,287,370 171.7 MB 152 yo Yoruba 128 2,396 16.6 kB"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..fa20972 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,58 @@ + + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + + None + 2024-06-05 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..61d6cf85d4292d5c33fad398b9b595a278c60163 GIT binary patch literal 204 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 z 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%0D%SfF-^wp2Nc2r5pll_E6;*#%P6gF=zC%B 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 a$c0yvK!Lvy+SB{cs%0b + + + + + + + + + + + + + + + + + + + + + + + + Generating a new OSCAR Version on Jean Zay - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

Generating a new OSCAR Version on Jean Zay

+

Compile the latest version of Unogliant

+

This is currently preferred to just getting it from cargo install ungoliant.

+
    +
  • git clone https://github.com/oscar-project/ungoliant
  • +
  • Open an interactive session on a compil node: srun --partition=compil -A <GROUP ID>@cpu --pty bash
  • +
  • Run module load llvm boost cargo (boost and llvm are necessary for compiling KenLM and FastText)
  • +
  • Run cd ungoliant
  • +
  • Run cargo b --release --features kenlm
  • +
+

Download the data from CommonCrawl

+

We advise the use of the prepost partition for downloading the data form Common Crawl. However, please bear in mind that jobs are limited to 20hours in the prepost partition, meaning that you'll likely run out of time before completing the download of a whole Common Crawl dump.

+
    +
  • Download the wet.paths.gz file for the latest release (likely here
  • +
  • gzip -d wet.paths.gz
  • +
+

Create a dl_corpus.slurm file with the following text inside:

+
#! /bin/bash
+
+#SBATCH --partition=prepost
+#SBATCH --job-name=get_cc # create a short name for your job
+#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)
+#SBATCH --mail-user=<YOUR MAIL>    # Where to send mail
+#SBATCH --nodes="1" #Combien de nœuds
+#SBATCH --ntasks-per-node="1" # Une tâche par GPU
+#SBATCH --cpus-per-task="64" # nombre de coeurs à réserver par tâche
+#SBATCH --time="20:00:00" # temps d'exécution maximum demande (HH:MM:SS)
+#SBATCH -A <GROUP ID>@cpu
+
+export CARGO_HOME=<CARGO HOME PATH (in SCRATCH if you can>
+export PATHS_FILE=<PATH TO wet.PATHS>
+export DST=<DESTINATION>
+
+
+./target/release/ungoliant download $PATHS_FILE $DST
+
+

When the time has run out, you have to ensure that the last downloaded shards weren't corrupted (because of a potential kill while downloading).

+

Then, after potentially removing faulty shards, run the following slurm job. +The only difference with the previous one is the use of the -o n parameter on ungoliant download, which will ignore the first n lines of the wet.paths. +You can/should also use another DESTINATION folder, and then do the merge by hand.

+
#! /bin/bash
+
+#SBATCH --partition=prepost
+#SBATCH --job-name=get_cc # create a short name for your job
+#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)
+#SBATCH --mail-user=<YOUR MAIL>    # Where to send mail
+#SBATCH --nodes="1" #Combien de nœuds
+#SBATCH --ntasks-per-node="1" # Une tâche par GPU
+#SBATCH --cpus-per-task="64" # nombre de coeurs à réserver par tâche
+#SBATCH --time="20:00:00" # temps d'exécution maximum demande (HH:MM:SS)
+#SBATCH -A <GROUP ID>@cpu
+
+export CARGO_HOME=<CARGO HOME PATH (in SCRATCH if you can>
+export PATHS_FILE=<PATH TO wet.PATHS>
+export DST=<DESTINATION>
+
+
+./target/release/ungoliant download -o <NB_DOWNLOADED> $PATHS_FILE $DST
+
+

You can then check that no shards are missing:

+
import os
+
+shards_dir = "./shards"
+paths_file = "wet.paths"
+cc_rooturl = "https://data.commoncrawl.org/"
+
+missing_shards = list()
+for i in range(88000):
+    if not os.path.isfile(f"{shards_dir}/{i}.txt.gz"):
+        missing_shards.append(i)
+print(f"missing {len(missing_shards)} shards")
+
+with open(paths_file) as f:
+    shard_paths = f.readlines()
+    for missing_shard_number in missing_shards:
+        print(
+            f"wget -nc {cc_rooturl}{shard_paths[missing_shard_number].strip()} -O {missing_shard_number}.txt.gz"
+        )
+
+

This will give you the wget commands to get the missing shards, with a -nc param to avoid overwriting already existing files.

+

Generate OSCAR

+

When you have your shards ready, create a new SLURM file with:

+

We use a QoS of t4 because since we can only use one node and corpus generation time is likely >20h, we need the 100 mark.

+

Other strategies could be tested (for example, splitting CC data into 4 buckets and launch 4 ungoliant jobs. +Then, merging back the datasets should be done. +Note that in that case, rebuild files will be less efficient (since we'll have 4 of them)

+
#! /bin/bash
+
+#SBATCH --partition=cpu_p1
+#SBATCH --job-name=gen_oscar # create a short name for your job
+#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)
+#SBATCH --mail-user=<YOUR MAIL>    # Where to send mail
+#SBATCH --nodes="1" #Combien de nœuds
+#SBATCH --ntasks-per-node="1" # Une tâche par GPU
+#SBATCH --cpus-per-task="40" # nombre de coeurs à réserver par tâche
+#SBATCH --time="100:00:00" # temps d'exécution maximum demande (HH:MM:SS)
+#SBATCH --qos=qos_cpu-t4
+#SBATCH -A <GROUP ID>@cpu
+
+export CARGO_HOME=<CARGO HOME PATH>
+export CC_FOLDER=<SHARDS PATH>
+export KENLM_FOLDER=<PATH TO KENLMS MODELS IF APPLICABLE>
+export CORPUS=<DESTINATION FOLDER>
+export BLOCKLIST=<BLOCKLIST FOLDER (must contain subfolders with category names..)>
+export LID_PATH=<PATH TO FASTTEXT LangID>
+export UNGOLIANT_PATH=<PATH TO UNGOLIANT BINARY>
+
+$UNGOLIANT_PATH pipeline $CC_FOLDER $CORPUS --blocklist-path $BLOCKLIST --kenlms-path $KENLM_FOLDER --lid-path $LID_PATH
+
+

As of Jan. 2023, using ungoliant 1.3.0 ([c14acc8](https://github.com/oscar-project/ungoliant/tree/c14acc8c6a87913d138a022cf4819024d66b3e06)), with a 88,000-shard dump of CommonCrawl (November/December 2022, ~9.5TB compressed), this process took around 20 hours and yielded a corpus weighing arount 12TB (uncompressed).

+

Move OSCAR

+

Files in $SCRATCH are deleted after 30 days if no R/W is operated on them. You should move out files to $STORE if you plan on keeping them. +Unfortunately, due to the file size, you'll need to launch another job to do the copying of the files.

+
+

Warning

+

rsync -n enables a dry-run, enabling you to see which files would be moved, and where. Remove the -n parameter when you want to perform the actual copy.

+
+
#! /bin/bash
+
+#SBATCH --partition=prepost
+#SBATCH --job-name=copy_oscar # create a short name for your job
+#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)
+#SBATCH --mail-user=julien.abadji@inria.fr    # Where to send mail
+#SBATCH --nodes="1" #Combien de nœuds
+#SBATCH --ntasks-per-node="1" # Une tâche par GPU
+#SBATCH --cpus-per-task="4" # nombre de coeurs à réserver par tâche
+#SBATCH --time="20:00:00" # temps d'exécution maximum demande (HH:MM:SS)
+#SBATCH -A <GROUP ID>@cpu
+
+export SRC=<CORPUS SOURCE>
+export DST=<CORPUS DESTINATION>
+
+rsync -anvP $SRC $DST
+
+

On the same example as before, copying took around 9 hours.

+

Preparing for release

+

Splitting

+

We use oscar-tools to split the corpus.

+
+

Note

+

At the time of writing, oscar-tools is not available via crates.io/cargo install, so you have to compile it from source. Luckily, it's easy.

+
+
+Compiling oscar-tools +
    +
  1. Get the source: git clone https://github.com/oscar-project/oscar-tools
  2. +
  3. Go inside a compil node: srun --partition=compil -A <GROUP ID>@cpu --pty bash
  4. +
  5. cd oscar-tools
  6. +
  7. CARGO_HOME=<Somewhere not in your ~, like $SCRATCH/.cargo> cargo b --features zstd --release.
  8. +
  9. Wait ~some hours~
  10. +
  11. That's it! Your binary sits at target/release/oscar-tools.
  12. +
+
+
#! /bin/bash
+
+#SBATCH --partition=prepost
+#SBATCH --job-name=split_oscar # create a short name for your job
+#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)
+#SBATCH --mail-user=<Your email address>    # Where to send mail
+#SBATCH --nodes="1" #Combien de nœuds
+#SBATCH --ntasks-per-node="1" # Une tâche par GPU
+#SBATCH --cpus-per-task="10" # nombre de coeurs à réserver par tâche
+#SBATCH --time="20:00:00" # temps d'exécution maximum demande (HH:MM:SS)
+#SBATCH -A <group id>@cpu
+
+export OSCAR_TOOLS_BIN=<path to oscar-tools binary>
+export CORPUS=<path to corpus>
+export DST=<where the split corpus will be put>
+
+$OSCAR_TOOLS_BIN v2 split $CORPUS $DST -s 2000
+
+

This step took around 3 hours (assuming both CORPUS and DST are on $SCRATCH).

+

Compressing

+
#! /bin/bash
+
+#SBATCH --partition=prepost
+#SBATCH --job-name=compress_oscar # create a short name for your job
+#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)
+#SBATCH --mail-user=<email address>    # Where to send mail
+#SBATCH --nodes="1" #Combien de nœuds
+#SBATCH --ntasks-per-node="1" # Une tâche par GPU
+#SBATCH --cpus-per-task="48" # nombre de coeurs à réserver par tâche
+#SBATCH --time="20:00:00" # temps d'exécution maximum demande (HH:MM:SS)
+#SBATCH -A <group id>@cpu
+
+export OSCAR_TOOLS_BIN=<link to oscar-tools binary>
+export CORPUS=<path to split focus>
+export DST=<where the compressed ocrpus will be saved>
+
+$OSCAR_TOOLS_BIN v2 compress $CORPUS $DST
+
+

This step took around 2 hours, going from 12TB to 3.3TB

+

Checksuming

+

The last step is to create checksum files for each language, so that people can check that their downloads have been successful. +Also, it acts as a split list for download-oscar.

+
#! /bin/bash
+
+#SBATCH --partition=prepost
+#SBATCH --job-name=compress_oscar # create a short name for your job
+#SBATCH --mail-type=BEGIN,END,FAIL          # Mail events (NONE, BEGIN, END, FAIL, ALL)
+#SBATCH --mail-user=<email address>    # Where to send mail
+#SBATCH --nodes="1" #Combien de nœuds
+#SBATCH --ntasks-per-node="1" # Une tâche par GPU
+#SBATCH --cpus-per-task="48" # nombre de coeurs à réserver par tâche
+#SBATCH --time="20:00:00" # temps d'exécution maximum demande (HH:MM:SS)
+#SBATCH -A <group id>@cpu
+
+export OSCAR_TOOLS_BIN=<link to oscar-tools binary>
+export CORPUS=<path to split focus>
+
+$OSCAR_TOOLS_BIN v2 checksum $CORPUS
+
+

The process took around 2 hours.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/oscar-tools/index.html b/tools/oscar-tools/index.html new file mode 100644 index 0000000..a212865 --- /dev/null +++ b/tools/oscar-tools/index.html @@ -0,0 +1,909 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + oscar-tools - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

oscar-tools

+

oscar-tools is a toolkit that was created along with OSCAR-2201 to make operations on the corpus easy and fast.

+

At its core, oscar-tools provides a set of operations targeted at a given OSCAR version. As such, you shoudn't expect to have all operations available on all OSCAR versions. For example, at the time of writing, deduplicate is not available for OSCAR 22.01-like corpora.

+

The CLI of oscar-tools is still a bit messy and can be confusing, because we are actively working on it and on implementing essential features.

+

Installation

+

From releases

+
+

Note

+

Binaries are not available yet.

+
+

From cargo

+
+

Note

+

cargo install oscar-tools is not available yet.

+
+

From repository

+
+

Note

+

This could evolve rapidly.

+
+

Right now the latest version sits on the dev-oscario branch, where we're slowly replacing inline IO blocks by our Corpus IO library, oscar-io.

+
$> git clone https://github.com/oscar-corpus/oscar-tools #Clone the repository
+$> cd oscar-tools
+$> git checkout dev-oscario #Change branch
+$> cargo b --release #Build the project. 
+$> # Building might take some time because of 
+$> # the parquet dependency that will soon be optional.
+$> touch target/release/oscar-tools #Binary is here and self-sufficient.
+
+

Usage

+

oscar-tools --help might help you find the parameters/operations you're looking for.

+
+

Note

+

In the tool, v1 corresponds to 2019-like corpora, whereas v2 corresponds to 22.01-like corpora.

+
+

Each operation has different parameters.

+

v1 / OSCAR 2019

+

At the time of writing, the only operation available is dedup. It uses runiq to deduplicate corpora.

+
oscar-tools-v1-dedup 
+line deduplication
+
+USAGE:
+    oscar-tools v1 dedup [ARGS]
+
+ARGS:
+    <SOURCE>         Corpus source file.
+    <DESTINATION>    Corpus destination file. Should not exist.
+
+OPTIONS:
+    -h, --help    Print help information
+
+

v2 / OSCAR 22.01

+

There is a lot more operations implemented on OSCAR 22.01-like corpora.

+

extract-tags

+

extract-tags extracts documents that meet certain annotation constraints.

+
oscar-tools-v2-extract-tags 
+Extracts a OSCAR v2 corpus restricting tags. Included tags must be present and excluded ones must be
+absent. Use --clean to extract documents with no annotation only
+
+USAGE:
+    oscar-tools v2 extract-tags [OPTIONS] [--] [ARGS]
+
+ARGS:
+    <SOURCE>         Corpus source file/folder. If folder, splits corpus files in provided
+                     folder
+    <DESTINATION>    Corpus source file/folder. If folder, splits corpus files in provided
+                     folder
+
+OPTIONS:
+        --clean                only return documents with no tags. include and exclude will be
+                               ignored
+    -e, --exclude <tags>...    space separated tags to exclude.
+    -h, --help                 Print help information
+    -i, --include <tags>...    space separated tags to include.
+
+

extract-text

+

extract-text "converts" a 2201-like corpus into a 2019-like corpus, by removing all metadata and only storing sentences. Keep in mind that while the format will be similar to 2109-like corpora, the filtering is a bit different and lines from other languages won't be stripped.

+
Extract text from documents. The output will be a OSCAR v1 (2019)-compatible corpus.
+
+USAGE:
+    oscar-tools v2 extract-text [OPTIONS] <SOURCE> <DESTINATION>
+
+ARGS:
+    <SOURCE>         Corpus source file.
+    <DESTINATION>    Corpus destination file (OSCAR v1 (2019)-like)
+
+OPTIONS:
+        --del_src    If set, deletes source files as they are being extracted.
+    -h, --help       Print help information
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versions/mOSCAR/index.html b/versions/mOSCAR/index.html new file mode 100644 index 0000000..5a55357 --- /dev/null +++ b/versions/mOSCAR/index.html @@ -0,0 +1,2201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + mOSCAR - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

mOSCAR

+

mOSCAR, to the best of our knowledge the first large-scale multilingual and multimodal document corpus crawled from the web. It covers 163 languages, 315M documents, 214B tokens and 1.2B images. We carefully conduct a set of filtering and evaluation steps to make sure mOSCAR is sufficiently safe, diverse and of good quality.

+

Access

+

Access to the mOSCAR is granted via the Hugging Face Hub.

+

All data is avaialble at https://huggingface.co/datasets/oscar-corpus/mOSCAR.

+

Layout

+

To Come ...

+

Language table

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Lang. nameCodeFamilyScript# documents# images# tokens
Acehneseace_LatnLatin7,80332,4612,889,134
Mesopotamian Arabicacm_ArabArabic2,27410,6201,047,748
Tunisian Arabicaeb_ArabArabic7,64041,5702,715,187
Afrikaansafr_LatnLatin54,895247,77439,956,585
South Levantine Arabicajp_ArabArabic12,09887,8375,167,813
Tosk Albanianals_LatnLatin861,6782,569,164452,737,251
Amharicamh_EthiGe'ez39,588152,64635,089,019
North Levantine Arabicapc_ArabArabic19,904128,9669,560,701
Modern Standard Arabicarb_ArabArabic3,936,85115,126,9313,401,919,964
Najdi Arabicars_ArabArabic60,229296,74143,610,873
Moroccan Arabicary_ArabArabic142,386698,051204,723,454
Egyptian Arabicarz_ArabArabic835,5294,054,632653,626,387
Assameseasm_BengBengali3,9489,210640,390
Asturianast_LatnLatin165,745962,72337,547,944
Awadhiawa_DevaDevanagari29,324107,4834,961,635
Central Aymaraayr_LatnLatin27,384151,8895,148,970
South Azerbaijaniazb_ArabArabic8,27438,2335,256,693
North Azerbaijaniazj_LatnLatin516,0211,808,060257,825,849
Bashkirbak_CyrlCyrillic4,53217,1743,038,766
Bambarabam_LatnLatin7,67439,1901,243,332
Balineseban_LatnLatin1,88611,266542,015
Belarusianbel_CyrlCyrillic63,309287,53972,976,520
Bembabem_LatnLatin1,0967,4791,340,471
Bengaliben_BengBengali270,406947,03535,858,814
Bhojpuribho_DevaDevanagari6,36628,131875,463
Banjarbjn_LatnLatin5,42727,8031,898,526
Bosnianbos_LatnLatin1,960,5997,633,0491,255,000,505
Buginesebug_LatnLatin3,31218,648588,678
Bulgarianbul_CyrlCyrillic2,591,99811,670,0281,760,971,620
Catalancat_LatnLatin1,153,8644,736,634606,447,390
Cebuanoceb_LatnLatin16,99091,23410,748,818
Czechces_LatnLatin3,918,83713,291,3092,823,172,996
Central Kurdishckb_ArabArabic36,725136,56622,322,689
Crimean Tatarcrh_LatnLatin6,37624,1241,742,727
Welshcym_LatnLatin40,408165,89727,748,345
Danishdan_LatnLatin2,076,2989,559,6001,238,277,499
Germandeu_LatnLatin20,662,69687,976,2008,544,986,218
Southwestern Dinkadik_LatnLatin1,7126,6351,319,943
Greekell_GrekGreek4,916,08115,209,0582,923,201,041
Englisheng_LatnLatin52,215,013207,904,31533,570,108,782
Esperantoepo_LatnLatin25,157124,99628,586,195
Estonianest_LatnLatin1,040,3685,217,366619,215,048
Basqueeus_LatnLatin849,0433,445,539277,145,498
Faroesefao_LatnLatin15,41160,3406,691,327
Fijianfij_LatnLatin1,5288,776487,388
Finnishfin_LatnLatin2,396,03310,365,3331,781,044,864
Frenchfra_LatnLatin20,305,73978,179,60114,362,579,829
Friulianfur_LatnLatin37,290256,4565,949,600
Nigerian Fulfuldefuv_LatnLatin1,5687,124401,852
West Central Oromogaz_LatnLatin4,05811,7631,786,093
Scottish Gaelicgla_LatnLatin29,710153,24914,605,090
Irishgle_LatnLatin68,858315,13247,438,400
Galicianglg_LatnLatin518,9732,381,475217,063,180
Guaranigrn_LatnLatin490,9452,416,63389,921,114
Gujaratiguj_GujrGujarati23,06291,3203,324,866
Haitian Creolehat_LatnLatin257,7451,570,69962,847,106
Hausahau_LatnLatin25,364104,93413,089,932
Hebrewheb_HebrHebrew1,109,5914,766,483893,327,320
Hindihin_DevaDevanagari579,4301,830,667122,558,353
Chhattisgarhihne_DevaDevanagari1,5817,263273,174
Croatianhrv_LatnLatin1,719,6178,425,5101,010,674,096
Hungarianhun_LatnLatin3,534,50615,390,0832,831,715,050
Armenianhye_ArmnArmenian339,9621,141,885205,635,952
Igboibo_LatnLatin11,52968,0498,701,070
Ilocanoilo_LatnLatin78,872523,1958,116,113
Indonesianind_LatnLatin7,016,29117,324,7773,981,843,468
Icelandicisl_LatnLatin244,6761,027,465137,015,973
Italianita_LatnLatin12,937,15347,476,9718,311,790,842
Javanesejav_LatnLatin24,785135,58316,908,805
Japanesejpn_JpanKanji14,415,29223,893,7688,923,348,944
Kabylekab_LatnLatin18,508106,7304,079,553
Kannadakan_KndaBrahmicKannada12,97842,6211,442,776
Kashmirikas_ArabArabic3,10911,4085,731,910
Georgiankat_GeorCaucasianGeorgian354,4361,304,281275,223,026
Kazakhkaz_CyrlCyrillic252,242732,648140,049,214
Halh Mongoliankhk_CyrlCyrillic124,412508,21784,535,241
Khmerkhm_KhmrAustroasiatic24,495122,2433,043,925
Kinyarwandakin_LatnLatin30,401172,20112,049,616
Kyrgyzkir_CyrlCyrillic53,010199,71334,404,281
Northern Kurdishkmr_LatnLatin39,262164,66623,834,960
Koreankor_HangHanja2,614,08913,563,2832,006,080,705
Laolao_Laoo50,611208,76831,029,380
Ligurianlij_LatnLatin8,75156,2662,958,179
Limburgishlim_LatnLatin189,5471,076,04742,534,327
Lingalalin_LatnLatin24,614152,1324,053,459
Lithuanianlit_LatnLatin1,688,8118,869,4431,161,476,040
Lombardlmo_LatnLatin30,506151,8559,058,614
Latgalianltg_LatnLatin11,94861,6244,148,492
Luxembourgishltz_LatnLatin44,987246,34616,676,872
Gandalug_LatnLatin1,8787,215789,917
Mizolus_LatnLatin7,88026,8174,978,472
Standard Latvianlvs_LatnLatin896,2434,141,648587,653,855
Magahimag_DevaDevanagari1,0973,847205,763
Malayalammal_Mlym14,14052,6791,689,010
Marathimar_DevaDevanagari50,391163,8686,689,250
Minangkabaumin_LatnLatin9,34135,3091,256,931
Macedonianmkd_CyrlCyrillic542,2501,853,070307,232,151
Maltesemlt_LatnLatin120,888709,24236,097,957
Maorimri_LatnLatin24,322130,13724,957,914
Burmesemya_Mymr8,14444,188539,527
Dutchnld_LatnLatin17,096,72765,606,0139,670,041,731
Norwegian Nynorsknno_LatnLatin199,3551,012,31367,799,774
Norwegian Bokmalnob_LatnLatin2,229,7029,698,1281,294,178,095
Nepalinpi_DevaDevanagari31,239127,1933,138,539
Nyanjanya_LatnLatin12,04767,1928,596,769
Occitanoci_LatnLatin164,852671,88159,309,549
Odiaory_Orya4,31915,574378,635
Pangasinanpag_LatnLatin4,21432,287546,071
Eastern Panjabipan_Guru11,49746,1681,887,991
Papiamentopap_LatnLatin55,224363,01510,002,655
Southern Pastopbt_ArabArabic32,604110,80729,170,322
Western Persianpes_ArabArabic7,048,94625,200,5716,210,479,015
Plateau Malgasyplt_LatnLatin32,521120,67329,263,848
Polishpol_LatnLatin14,549,60560,639,24411,104,144,109
Portuguesepor_LatnLatin8,145,66426,530,4234,760,063,083
Dariprs_ArabArabic515,0412,589,859517,053,967
Ayacucho Quechuaquy_LatnLatin1,57811,817362,690
Romanianron_LatnLatin5,180,17117,964,0483,548,291,261
Rundirun_LatnLatin20,00167,0968,686,054
Russianrus_CyrlCyrillic15,913,84569,542,82818,909,213,208
Sangosag_LatnLatin2,12413,556454,455
Sicilianscn_LatnLatin73,199424,36227,110,743
Sinhalasin_Sinh58,767221,18314,270,972
Slovakslk_LatnLatin3,008,59915,067,2341,963,804,563
Slovenianslv_LatnLatin1,472,0257,210,285935,834,754
Samoansmo_LatnLatin12,34671,35914,954,824
Shonasna_LatnLatin12,69868,7826,112,600
Sindhisnd_ArabArabic21,09574,28917,647,825
Somalisom_LatnLatin77,343301,42934,554,975
Southern Sothosot_LatnLatin7,71843,1466,156,450
Spanishspa_LatnLatin22,713,36678,361,08714,616,773,475
Sardiniansrd_LatnLatin675,5394,059,493106,159,957
Serbiansrp_CyrlCyrillic604,5572,286,171401,223,741
Sundanesesun_LatnLatin44,310236,02513,627,832
Swedishswe_LatnLatin3,302,73010,860,5181,779,284,152
Swahiliswh_LatnLatin137,134593,41859,454,896
Silesianszl_LatnLatin23,535132,4595,996,972
Tamiltam_TamlDravidianTamil36,196167,6694,834,946
Tatartat_CyrlCyrillic37,188143,84222,831,350
Telugutel_TeluBrahmicTelugu22,97481,0332,273,772
Tajiktgk_CyrlCyrillic125,236417,59190,503,778
Tagalogtgl_LatnLatin151,437673,81497,708,639
Thaitha_ThaiThai2,983,83711,621,7862,839,211,104
Tigrinyatir_EthiGe'ez2,6578,7071,725,422
Tok Pisintpi_LatnLatin5,06335,169460,853
Turkmentuk_LatnLatin13,02457,3549,766,999
Turkishtur_LatnLatin4,478,70012,401,0912,394,669,068
Twitwi_LatnLatin3,30513,634495,220
Uyghuruig_ArabArabic10,71341,7096,785,318
Ukrainianukr_CyrlCyrillic2,721,42410,929,7961,928,351,595
Urduurd_ArabArabic407,0981,239,125242,007,283
Northern Uzbekuzn_LatnLatin156,632798,15589,022,562
Venetianvec_LatnLatin330,6111,830,77771,077,531
Vietnamesevie_LatnLatin12,621,52147,411,48811,616,191,199
Wolofwol_LatnLatin4,65820,3801,596,432
Xhosaxho_LatnLatin25,950142,38715,809,823
Eastern Yiddishydd_Hebr12,48657,51017,369,727
Yorubayor_LatnLatin56,700286,93332,614,558
Yue Chineseyue_Hant33,671203,51324,172,441
Chinese (Simplified)zho_HansHanzi9,861,26236,152,7548,078,842,701
Chinese (Traditional)zho_HantHant3,967,96616,307,2582,962,854,441
Standard Malayzsm_LatnLatin1,179,7445,488,632432,667,199
Zuluzul_LatnLatin30,717156,63911,345,288
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versions/oscar-2019/index.html b/versions/oscar-2019/index.html new file mode 100644 index 0000000..5875a26 --- /dev/null +++ b/versions/oscar-2019/index.html @@ -0,0 +1,2647 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + OSCAR 2019 - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

OSCAR 2019

+

OSCAR 2019 is the original 2019 release of the OSCAR corpus. +It has been generated from Common Crawl corpus using the goclassy architecture.

+

Features

+

OSCAR 2019 is shuffled at line level and no metadata is provided. Thus it is mainly intended to be used in the training of unsupervised language models for NLP.

+

Data is distributed by language in both original and deduplicated form.

+

If you need the unshuffled version of OSCAR, please contact us using the contact form. Please include your name, affiliation, contact details, which languages do you need and a brief description of how you intend to use OSCAR. You can also download it using HuggingFace’s datasets library.

+

Even though OSCAR is not Postcardware, we do appreciate when our users send us a postcard. If you want to send us one, you can find the address in the contact section down below.

+

Citing OSCAR

+

If you use OSCAR to train a language model, text generation model or any other ML model in general please consider citing our latest paper:

+
@inproceedings{ortiz-suarez-etal-2020-monolingual,
+    title = "A Monolingual Approach to Contextualized Word Embeddings for Mid-Resource Languages",
+    author = "Ortiz Su{\'a}rez, Pedro Javier  and
+      Romary, Laurent  and
+      Sagot, Beno{\^\i}t",
+    booktitle = "Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics",
+    month = jul,
+    year = "2020",
+    address = "Online",
+    publisher = "Association for Computational Linguistics",
+    url = "https://www.aclweb.org/anthology/2020.acl-main.156",
+    pages = "1703--1714",
+    abstract = "We use the multilingual OSCAR corpus, extracted from Common Crawl via language classification, filtering and cleaning, to train monolingual contextualized word embeddings (ELMo) for five mid-resource languages. We then compare the performance of OSCAR-based and Wikipedia-based ELMo embeddings for these languages on the part-of-speech tagging and parsing tasks. We show that, despite the noise in the Common-Crawl-based OSCAR data, embeddings trained on OSCAR perform much better than monolingual embeddings trained on Wikipedia. They actually equal or improve the current state of the art in tagging and parsing for all five languages. In particular, they also improve over multilingual Wikipedia-based contextual embeddings (multilingual BERT), which almost always constitutes the previous state of the art, thereby showing that the benefit of a larger, more diverse corpus surpasses the cross-lingual benefit of multilingual embedding architectures.",
+}
+
+

The Unshuffled OSCAR

+

If you need a copy of any of the unshuffled sub-corpora, please contact us using the contact form down below. Please include your name, affiliation, contact details, which languages do you need and a brief description of how you intend to use OSCAR. We will evaluate your request and answer accordingly.

+

{{% callout note %}} +The unshuffled OSCAR is now available in HuggingFace’s datasets library +{{% /callout %}} +They have obtained our permission to redistribute the unshuffled OSCAR and they allow users to download a corpus all at once as opposed to file by file. You can get more information about how to download OSCAR using their library by visiting OSCAR's dataset card.

+

Downloading OSCAR

+

All the data is distributed by language, both the original and the deduplicated versions of the data are available. To download a file just click the desired link on the table below. Languages are split in shards of around 700MB, these shards are standalone. A plain text file with checksums is also provided.

+

The OSCAR corpus is yet to be filtered, so please be careful when using it, specially for text generation tasks! To see which sub-corpora have been audited, please refer to the list of publications above for more information.

+

You'll be asked to create an HumanID account in order to download a corpus. This is intended, and we do it in order to limit traffic and reduce abuse of the infrastructure. The OSCAR corpus is hosted by Huma-Num, you can read more about them on their website.

+

All sizes are for the uncompressed files.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LanguageWords originalSize originalFile originalWords deduplicatedSize deduplicatedFile deduplicated
Afrikaans43,482,801241Maf29,533,437163Maf
Albanian374,196,1102.3Gsq186,856,6991.2Gsq
Alemannic841,7505.0Mals459,0012.8Mals
Amharic28,301,601360Mam16,086,628206Mam
Arabic8,117,162,82882Gar3,171,221,35432Gar
Aragonese52,8961.3Man45,669801Kan
Armenian273,919,3883.7Ghy110,196,0431.5Ghy
Assamese6,956,663113Mas4,366,57071Mas
Asturian381,0052.4Mast325,2372.0Mast
Avaric24,720409Kav19,478324Kav
Azerbaijani322,641,7102.8Gaz167,742,2961.5Gaz
Bashkir9,796,764128Mba6,922,58990Mba
Basque120,456,652848Meu45,359,710342Meu
Bavarian399503bar399503bar
Belarusian144,579,6301.8Gbe83,499,0371.1Gbe
Bengali623,575,73311Gbn363,766,1435.8Gbn
Bihari8,848110Kbh2,87534Kbh
Bishnupriya198,2864.1Mbpy96,9401.7Mbpy
Bosnian106,448447Kbs20,485116Kbs
Breton5,013,24129Mbr2,890,38416Mbr
Bulgarian2,947,648,10632Gbg1,268,114,97714Gbg
Burmese56,111,1841.9Gmy30,102,1731.1Gmy
Catalan1,360,212,4508.0Gca729,333,4404.3Gca
Cebuano6,603,56739Mceb3,675,02424Mceb
Central Bikol312885bcl312885bcl
Central Khmer20,690,6101.1Gkm10,082,245581Mkm
Central Kurdish48,478,334487Mckb18,726,721226Mckb
Chavacano130520cbk130520cbk
Chechen711,0518.3Mce568,1466.7Mce
Chinese14,986,424,850508Gzh6,350,215,113249Gzh
Chuvash3,041,61439Mcv2,054,81026Mcv
Cornish8,32944Kkw2,70414Kkw
Croatian34,232,765226Mhr16,727,640110Mhr
Czech7,715,977,44153Gcs3,540,997,50924Gcs
Danish2,637,463,88916Gda1,620,091,3179.5Gda
Dhivehi7,559,472126Mdv4,726,66079Mdv
Dimli19146diq19146diq
Dutch13,020,136,37378Gnl6,598,786,13739Gnl
Eastern Mari565,9927.2Mmhr469,2976.0Mmhr
Egyptian Arabic7,305,15166Marz3,659,41933Marz
Emilian-Romagnol6,37625Keml6,12124Keml
English418,187,793,4082.3Ten215,841,256,9711.2Ten
Erzya901.4Kmyv781.2Kmyv
Esperanto48,486,161299Meo37,324,446228Meo
Estonian643,163,7304.8Get309,931,4632.3Get
Finnish3,196,666,41927Gfi1,597,855,46813Gfi
French46,896,036,417282Gfr23,206,776,649138Gfr
Galician102,011,291620Mgl63,600,602384Mgl
Georgian171,950,6213.6Gka91,569,7391.9Gka
German44,878,908,446308Gde21,529,164,172145Gde
Goan Konkani124,2772.2Mgom102,3061.8Mgom
Guarani7,38236Kgn4,68024Kgn
Gujarati72,045,7011.1Ggu50,023,432722Mgu
Haitian1,0143.9Kht8323.3Kht
Hebrew2,067,753,52820Ghe1,032,018,0569.8Ghe
Hindi1,372,234,78217Ghi745,774,9348.9Ghi
Hungarian5,163,936,34540Ghu2,339,127,55518Ghu
Icelandic219,900,0941.5Gis129,818,331846Mis
Ido25,702147Kio22,773130Kio
Iloko142,942874Kilo105,564636Kilo
Indonesian4,574,692,26530Gid2,394,957,62916Gid
Interlingua180,231662Kia100,019360Kia
Interlingue5,35224Kie6021.6Kie
Irish14,483,59388Mga10,017,30360Mga
Italian22,248,707,341137Git11,250,012,89669Git
Japanese4,962,979,182216Gja1,123,067,063106Gja
Javanese104,896659Kjv86,654583Kjv
Kalmyk10,277113Kxal10,155112Kxal
Kannada81,186,8631.7Gkn49,343,4621.1Gkn
Karachay-Balkar185,4362.6Mkrc166,4962.3Mkrc
Kazakh191,126,4692.7Gkk108,388,7431.5Gkk
Kirghiz44,194,823600Mky28,982,620388Mky
Komi201,4042.3Mkv95,2431.2Mkv
Korean2,368,765,14224Gko1,120,375,14912Gko
Kurdish15,561,00394Mku9,946,44060Mku
Lao4,133,311174Mlo2,583,342114Mlo
Latin4,122,20126Mla1,328,0388.3Mla
Latvian520,761,9774.0Glv236,428,9051.8Glv
Lezghian247,6463.3Mlez224,8713.0Mlez
Limburgan4,73029Kli4,28327Kli
Lithuanian1,159,661,7428.8Glt516,183,5253.9Glt
Lojban154,330736Kjbo141,973678Kjbo
Lombard75,229443Klmo73,665433Klmo
Low German2,906,34718Mnds2,146,41713Mnds
Lower Sorbian1,78713Kdsb9667.1Kdsb
Luxembourgish4,403,57729Mlb3,087,65021Mlb
Macedonian189,289,8732.1Gmk102,849,5951.2Gmk
Maithili69,161317Kmai87411Kmai
Malagasy3,068,36021Mmg1,872,04413Mmg
Malay16,696,882111Mms6,045,75342Mms
Malayalam189,534,4724.9Gml95,892,5512.5Gml
Maltese2,995,65424Mmt2,163,35817Mmt
Marathi162,609,4042.7Gmr82,130,8031.4Gmr
Mazanderani73,870691Kmzn64,481602Kmzn
Minangkabau5,682608Kmin4,825310Kmin
Mingrelian299,0985.8Mxmf228,6294.4Mxmf
Mirandese1711.2Kmwl1521.1Kmwl
Modern Greek5,479,180,13762Gel2,412,419,43527Gel
Mongolian181,307,1672.2Gmn68,362,013838Mmn
Nahuatl languages1,23412Knah1,19311Knah
Neapolitan5,28217Knap4,14713Knap
Nepali107,448,2081.8Gne71,628,3171.2Gne
Newari564,6975.5Mnew288,9954.1Mnew
Northern Frisian1,5164.4Kfrr1,5164.4Kfrr
Northern Luri8,02276Klrc6,74063Klrc
Norwegian1,344,326,3888.0Gno804,894,3774.7Gno
Norwegian Nynorsk14,764,98085Mnn9,435,13954Mnn
Occitan750,3015.8Moc512,6783.7Moc
Oriya14,938,567248Mor11,321,740188Mor
Ossetian1,031,26813Mos878,76511Mos
Pampanga130760pam52304pam
Panjabi61,847,806763Mpa37,555,835460Mpa
Persian9,096,554,12179Gfa4,363,505,31938Gfa
Piemontese362,0132.1Mpms337,2461.9Mpms
Polish15,277,255,137109Gpl6,708,709,67447Gpl
Portuguese20,641,903,898124Gpt10,751,156,91864Gpt
Pushto46,559,441361Mps31,347,348242Mps
Quechua10,18678Kqu8,69167Kqu
Romanian3,984,317,05825Gro1,741,794,06911Gro
Romansh1,0937.4Krm9606.5Krm
Russia Buriat96313Kbxr80911Kbxr
Russian92,522,407,8371.2Tru46,692,691,520568Gru
Sanskrit4,331,56993Msa1,713,93037Msa
Scottish Gaelic310,6891.9Mgd207,1101.3Mgd
Serbian364,395,4113.9Gsr207,561,1682.2Gsr
Serbo-Croatian5,292,18425Msh1,040,5735.8Msh
Sicilian5543.3Kscn4682.8Kscn
Sindhi43,530,158347Msd33,028,015263Msd
Sinhala93,053,4651.4Gsi50,864,857802Msi
Slovak1,322,247,7639.1Gsk656,346,1794.5Gsk
Slovenian387,399,7002.5Gsl193,926,6841.3Gsl
Somali1,20261Kso47216Kso
South Azerbaijani2,175,05427Mazb1,528,70919Mazb
Spanish47,545,122,279278Ges25,928,290,729149Ges
Sundanese30,321211Ksu20,278141Ksu
Swahili2,211,92713Msw1,376,9638.1Msw
Swedish7,155,994,31244Gsv4,106,120,60825Gsv
Tagalog98,949,299573Mtl70,121,601407Mtl
Tajik31,758,142379Mtg21,029,893249Mtg
Tamil420,537,1329.3Gta226,013,3305.1Gta
Tatar51,034,893670Mtt23,825,695305Mtt
Telugu123,711,5172.5Gte79,094,1671.6Gte
Thai951,743,08736Gth368,965,20216Gth
Tibetan1,483,589187Mbo936,556138Mbo
Turkish7,577,388,70060Gtr3,365,734,28927Gtr
Turkmen1,113,86911Mtk752,3266.8Mtk
Tuvinian75912Ktyv5407.9Ktyv
Uighur8,657,141122Mug5,852,22583Mug
Ukrainian4,204,381,27653Guk2,252,380,35128Guk
Upper Sorbian545,3514.2Mhsb236,8671.8Mhsb
Urdu331,817,9822.7Gur218,030,2281.7Gur
Uzbek2,450,25621Muz1,381,64412Muz
Venetian3,49218Kvec3,19917Kvec
Vietnamese12,036,845,35968Gvi5,577,159,84332Gvi
Volapük321,1212.0Mvo318,5682.0Mvo
Walloon50,720273Kwa37,543203Kwa
Waray397,3152.5Mwar336,3112.2Mwar
Welsh37,422,441213Mcy23,574,673133Mcy
Western Frisian5,691,07735Mfy4,223,81626Mfy
Western Mari93,3381.2Mmrj87,7801.1Mmrj
Western Panjabi1,426,98612Mpnb1,111,1129.0Mpnb
Wu Chinese11,189109Kwuu4,33332Kwuu
Yakut2,547,62342Msah1,789,17426Msah
Yiddish13,834,320141Myi8,212,97084Myi
Yoruba8,90655Kyo3,51827Kyo
Yue Chinese1863.7Kyue1282.2Kyue
+

License

+

These data are released under this licensing scheme:

+
    +
  • We do not own any of the text from which these data has been extracted.
  • +
  • We license the actual packaging of these data under the Creative Commons CC0 license ("no rights reserved").
  • +
  • To the extent possible under law, Inria has waived all copyright and related or neighboring rights to OSCAR.
  • +
  • This work is published from: France.
  • +
+

+CC0 +

+

Notice and take down policy

+

Notice: Should you consider that our data contains material that is owned by you and should therefore not be reproduced here, please:

+
    +
  • Clearly identify yourself, with detailed contact data such as an address, telephone number or email address at which you can be contacted.
  • +
  • Clearly identify the copyrighted work claimed to be infringed.
  • +
  • Clearly identify the material that is claimed to be infringing and information reasonably sufficient to allow us to locate the material.
  • +
  • And use the contact form below.
  • +
+

Take down: We will comply to legitimate requests by removing the affected sources from the next release of the corpus.

+

Models

+

Here is a list of some language models that have been trained using the OSCAR corpus or that are part of the OSCAR project:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModelLanguageCorpusAuthorsPaperFilesLicense
ELMoBulgarianOSCARPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020bg.zipMIT
ELMoBulgarianWikipediaPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020bg.zipMIT
ELMoCatalanOSCARPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020ca.zipMIT
ELMoCatalanWikipediaPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020ca.zipMIT
ELMoDanishOSCARPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020da.zipMIT
ELMoDanishWikipediaPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020da.zipMIT
ELMoFrenchOSCARPedro J. Ortiz, Yoann Dupont, Benjamin Muller, Laurent Romary and Benoît SagotLREC 2020fr.zipMIT
ELMoFinnishOSCARPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020fi.zipMIT
ELMoFinnishWikipediaPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020fi.zipMIT
ELMoIndonesianOSCARPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020id.zipMIT
ELMoIndonesianWikipediaPedro J. Ortiz, Benoît Sagot and Laurent RomaryACL 2020id.zipMIT
+ +

Here is a list of Language models trained by the community:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModelLanguageCasedCorpusAuthorsPaperWebsiteFilesLicense
AraBERTArabicCasedOSCAR, Wikipedia, 1.5B words Arabic Corpus, OSIAN, AssafirWissam Antoun, Fady Baly and Hazem HajjACL AnthologyGitHubHugging FaceN/A
Arabic-BERTArabicCasedOSCAR and WikipediaAli SafayaArXivGitHubHugging FaceMIT
AraELECTRAArabicCasedOSCAR, Wikipedia, 1.5B words Arabic Corpus, OSIAN, AssafirWissam Antoun, Fady Baly and Hazem HajjArXiVGitHubHugging FaceN/A
AraGPT2ArabicCasedOSCAR, Wikipedia, 1.5B words Arabic Corpus, OSIAN, AssafirWissam Antoun, Fady Baly and Hazem HajjArXivGitHubHugging FaceN/A
CamemBERTFrenchCasedOSCARLouis Martin, Benjamin Muller, Pedro Javier Ortiz Suárez, Yoann Dupont, Laurent Romary, Éric Villemonte de la Clergerie, Djamé Seddah and Benoît SagotACL 2020camembert-model.frcamembert-base.tar.gzMIT
CamemBERTFrenchCasedSubsample of OSCAR (4 GB of text)Louis Martin, Benjamin Muller, Pedro Javier Ortiz Suárez, Yoann Dupont, Laurent Romary, Éric Villemonte de la Clergerie, Djamé Seddah and Benoît SagotACL 2020camembert-model.frcamembert-base-oscar-4gb.tar.gzMIT
LePetitFrenchCasedSubsample of OSCAR (2 GB of text)Vincent Micheli, Martin d'Hoffschmidt, Quentin HeinrichMedium blogilluin.techHugging FaceMIT
GigaBERTArabicCased and UncasedOSCAR, Wikipedia, GigawordWuwei Lan, Yang Chen, Wei Xu, Alan RitterEMNLP 2020GitHubHugging FaceMIT
ELECTRANorwegianCasedOSCAR and OPUSViktor AlmN/AHugging FaceHugging FaceN/A
BERTRomanianCasedOSCAR, Wikipedia and OPUSDumitrescu Stefan and Andrei AvramSOONGitHubHugging FaceMIT
BERTRomanianUncasedOSCAR, Wikipedia and OPUSDumitrescu Stefan and Andrei AvramSOONGitHubHugging FaceMIT
RoBERTaSinhalaN/AOSCARKeshan SodimanaN/AHugging FaceHugging FaceN/A
BERTTurkishCased and UncasedOSCAR, Wikipedia and OPUSStefan SchweterZenodoGitHubHugging FaceMIT
ELECTRATurkishCasedOSCAR, Wikipedia and OPUSStefan SchweterZenodoGitHubHugging FaceMIT
XLMIndicHindi, Bengali, Gujarati, Panjabi, Marathi, Oriya, Assamese, Sinhala, Nepali, Bihari, Bishnupriya, Maithili, Goan Konkani, SanskritCasedOSCARIbraheem Muhammad Moosa, Mahmud Shimul and Ashfia Binte HabibArxivGitHubHugging FaceMIT
+

If you have trained a model using the OSCAR corpus and would like to have it featured here, please open a pull request in our GitHub repo. Help us grow the community!

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versions/oscar-2109/index.html b/versions/oscar-2109/index.html new file mode 100644 index 0000000..c129b68 --- /dev/null +++ b/versions/oscar-2109/index.html @@ -0,0 +1,2486 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + OSCAR 21.09 - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

OSCAR 21.09

+

Features

+

These are the versions of tooling, schemes and data

+
    +
  • CommonCrawl version: February/March 2021 (2021.10)
  • +
  • OSCAR Schema version: v1.1 : Incorporates metadata in a backward compatible manner.
  • +
  • Ungoliant version: v1 : New generation tool, faster and better documented/tested than the previous one: goclassy.
  • +
+

Changes

+
    +
  • As per OSCAR Schema v1.1, each document/record has associated metadata.
  • +
  • New languages: Manx, Rusyn, Scots and West Flemish. Their size and quality still has to be assessed.
  • +
  • Removed languages: Central Bikol and Cantonese. Cantonsese was of a very low quality. Central Bikol corpus is still available on OSCAR 2019.
  • +
+

Table

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LanguageOSCAR 2019OSCAR 2019 deduplicatedOSCAR 21.09OSCAR 21.09 deduplicatedIssues
afAfrikaans251MB170MB258MB157MB
sqAlbanian2GB1GB3GB1GB
amAmharic377MB215MB405MB241MB
arArabic87GB33GB69GB35GB
anAragonese1MB822KB1MB608KB
hyArmenian3GB1GB4GB1GB
asAssamese117MB73MB135MB95MB
astAsturian2MB2MB7MB4MB
avAvaric418KB331KB421KB325KB
azAzerbaijani2GB1GB3GB1GB
bnBangla10GB6GB14GB7GB
baBashkir133MB93MB110MB77MB
euBasque889MB358MB900MB503MB
barBavarian507B507B2KB1KB
beBelarusian1GB1GB2GB1GB
bhBihari languages112KB34KB579KB120KB
bpyBishnupriya4MB1MB11MB4MB
bsBosnian459KB120KB310KB175KB
brBreton29MB16MB49MB23MB
bgBulgarian33GB14GB34GB15GB
myBurmese2GB1GB2GB1GB
yueCantonese3KB2KB--
caCatalan8GB4GB13GB6GB
cebCebuano40MB24MB81MB58MB
bclCentral Bikol886B886B--
ckbCentral Kurdish509MB236MB784MB367MB
cbkChavacano521B521B168B168B{{< issue cbk >}}
ceChechen8MB6MB29MB20MB
zhChinese544GB267GB500GB266GB
cvChuvash40MB27MB60MB41MB
kwCornish44KB14KB119KB72KB
hrCroatian237MB115MB361MB169MB
csCzech56GB25GB72GB33GB
daDanish16GB10GB18GB10GB
diqDimli (individual language)147B147B294B147B
dvDivehi131MB81MB143MB111MB
nlDutch82GB41GB97GB47GB
mhrEastern Mari7MB6MB15MB10MB
arzEgyptian Arabic68MB34MB48MB21MB
enEnglish2520GB1294GB2936GB1342GB
myvErzya1KB1KB29KB2KB
eoEsperanto312MB238MB560MB390MB
etEstonian5GB2GB7GB3GB
tlFilipino601MB426MB699MB383MB
fiFinnish28GB13GB35GB20GB
frFrench302GB147GB340GB161GB
glGalician650MB402MB989MB549MB
kaGeorgian3GB1GB6GB2GB
deGerman330GB155GB433GB184GB
gomGoan Konkani2MB1MB3MB2MB
elGreek66GB28GB72GB30GB
gnGuarani36KB23KB32KB25KB
guGujarati1GB756MB1GB950MB
htHaitian Creole3KB3KB2KB1KB
heHebrew21GB10GB29GB11GB
hiHindi17GB9GB26GB13GB
huHungarian42GB18GB60GB29GB
isIcelandic1GB887MB2GB1GB
ioIdo151KB133KB276KB221KB
iloIloko896KB653KB1MB857KB
idIndonesian32GB16GB40GB22GB
iaInterlingua678KB368KB291KB172KB
ieInterlingue24KB1KB7KB2KB
gaIrish91MB62MB131MB69MB
itItalian146GB73GB192GB94GB
jaJapanese231GB112GB208GB96GB
jvJavanese675KB598KB858KB728KB
xalKalmyk115KB114KB62KB62KB
knKannada1GB1GB2GB1GB
krcKarachay-Balkar2MB2MB2MB2MB
kkKazakh2GB1GB3GB1GB
kmKhmer1GB608MB1GB860MB
kvKomi2MB1MB1MB588KB
koKorean25GB11GB35GB15GB
kuKurdish98MB62MB152MB108MB
kyKyrgyz629MB406MB485MB334MB
loLao181MB118MB287MB163MB
laLatin26MB8MB103MB9MB
lvLatvian4GB1GB6GB2GB
lezLezghian3MB3MB2MB2MB
liLimburgish29KB27KB76KB54KB
ltLithuanian9GB4GB12GB5GB
jboLojban753KB694KB929KB731KB
lmoLombard454KB444KB1MB1MB
ndsLow German18MB13MB25MB17MB
dsbLower Sorbian13KB7KB31KB14KB
lbLuxembourgish30MB21MB54MB37MB
mkMacedonian2GB1GB3GB1GB
maiMaithili324KB10KB685KB24KB
mgMalagasy21MB13MB59MB38MB
msMalay116MB43MB146MB60MB
mlMalayalam5GB2GB4GB2GB
mtMaltese24MB17MB51MB26MB
gvManx--1KB907B
mrMarathi2GB1GB3GB1GB
mznMazanderani708KB617KB1MB1MB
minMinangkabau622KB317KB8MB1MB
xmfMingrelian6MB4MB16MB10MB
mwlMirandese1KB1KB3KB2KB
mnMongolian2GB879MB1GB912MB
nahNahuatl languages11KB10KB34KB21KB
napNeapolitan17KB13KB1KB1KB{{< issue nap >}}
neNepali1GB1GB3GB2GB
newNewari5MB4MB6MB4MB
frrNorthern Frisian4KB4KB7KB5KB{{< issue frr >}}
lrcNorthern Luri77KB64KB183B183B
noNorwegian Bokmål8GB5GB9GB4GB
nnNorwegian Nynorsk88MB56MB123MB66MB
ocOccitan6MB3MB12MB5MB
orOdia259MB196MB538MB357MB
osOssetic12MB10MB11MB6MB
pamPampanga763B307B3KB3KB
psPashto378MB253MB404MB286MB
faPersian84GB39GB79GB35GB
pmsPiedmontese2MB1MB4MB3MB
plPolish116GB50GB122GB48GB
ptPortuguese132GB67GB159GB71GB
paPunjabi799MB481MB769MB430MB
quQuechua80KB68KB322KB230KB
roRomanian26GB11GB37GB15GB
rmRomansh7KB6KB3KB3KB
bxrRussia Buriat12KB10KB22KB18KB
ruRussian1239GB609GB1201GB542GB
rueRusyn--247B247B
sahSakha43MB27MB57MB39MB
saSanskrit96MB38MB72MB43MB
scoScots--1KB1KB{{< issue sco >}}
gdScottish Gaelic1MB1MB2MB1MB
srSerbian4GB2GB6GB3GB
shSerbian (Latin)25MB6MB13MB9MB
scnSicilian3KB2KB4KB3KB
sdSindhi363MB274MB75MB50MB
siSinhala1GB840MB1GB791MB
skSlovak9GB4GB14GB6GB
slSlovenian2GB1GB4GB1GB
soSomali62KB15KB15KB13KB{{< issue so >}}
azbSouth Azerbaijani28MB19MB47MB29MB
esSpanish297GB159GB342GB160GB
suSundanese216KB145KB397KB274KB
swSwahili13MB8MB11MB7MB
svSwedish46GB26GB43GB19GB
tgTajik396MB260MB985MB321MB{{< issue tg >}}
taTamil9GB5GB10GB5GB
ttTatar701MB319MB947MB424MB
teTelugu2GB1GB3GB1GB
thThai38GB17GB62GB26GB
boTibetan195MB144MB439MB358MB
gsw[^1]Alemannic German5MB2MB7MB5MB
trTurkish63GB28GB73GB33GB{{< issue tr >}}
tkTurkmen10MB7MB25MB20MB
tyvTuvinian11KB8KB9KB7KB
ukUkrainian56GB29GB53GB28GB
emlEmiliano-Romagnolo[^2]25KB23KB22KB20KB
hsbUpper Sorbian4MB1MB2MB1MB
urUrdu2GB1GB2GB1GB
ugUyghur127MB86MB187MB123MB
uzUzbek21MB11MB56MB28MB
vecVenetian18KB16KB37KB28KB
viVietnamese72GB33GB87GB42GB
voVolapük2MB2MB2MB2MB
waWalloon280KB207KB511KB329KB
warWaray2MB2MB4MB4MB
cyWelsh223MB139MB307MB180MB
vlsWest Flemish--134B134B{{< issue vls >}}
fyWestern Frisian35MB26MB82MB57MB
mrjWestern Mari1MB1MB645KB521KB
pnbWestern Panjabi11MB9MB68MB45MB
wuuWu Chinese111KB32KB145KB69KB{{< issue wuu >}}
yiYiddish146MB87MB199MB93MB
yoYoruba56KB26KB229KB120KB
+

OSCAR Schema v1.1.0

+

The new OSCAR schema incorporates backward-compatible changes.

+

Changes

+

The old OSCAR Schema v1.0 featured the following file hierarchy, in an uncompressed form:

+
/
+├── af
+   ├── af_sha256.txt
+   └── af.txt.gz
+├── de
+   ├── de_sha256.txt    # Checksum file 
+   └── de.txt.gz        # Textual content
+├── en
+   ├── en_part_1.txt.gz        # Multipart example
+   ├── en_part_2.txt.gz
+   └── en_sha256.txt
+├── yi
+   ├── yi_sha256.txt
+   └── yi.txt.gz
+└── zh
+    ├── zh_sha256.txt
+    └── zh.txt.gz
+
+

The new OSCAR Schema v1.1 features the following file hierarchy (some languages omitted):

+
/
+├── af
+   ├── af_meta.jsonl.gz
+   ├── af_sha256.txt
+   └── af.txt.gz
+├── de
+   ├── de_meta.jsonl.gz # Metadata, in JSONLines format
+   ├── de_sha256.txt    # Checksum file 
+   └── de.txt.gz        # Textual content
+├── en
+   ├── en_meta_part_1.jsonl.gz # Multipart example
+   ├── en_meta_part_2.jsonl.gz # Each part is independent,
+   ├── en_part_1.txt.gz        # Ex: en_part_2.txt.gz and en_meta_part_2.jsonl.gz
+   ├── en_part_2.txt.gz
+   └── en_sha256.txt
+├── yi
+   ├── yi_meta.jsonl.gz
+   ├── yi_sha256.txt
+   └── yi.txt.gz
+└── zh
+    ├── zh_meta.jsonl.gz
+    ├── zh_sha256.txt
+    └── zh.txt.gz
+
+

File formats

+

.txt files

+

Lines are newline-separated, and documents are double-newline separated. +In other terms, there is a blank line between each document.

+

.jsonl files

+

These are the metadata, in JSONLines format.

+

Each line follows the following JSON Scheme:

+
{
+  "$schema": "http://json-schema.org/draft-07/schema#",
+  "title": "Metadata",
+  "description": "Holds record headers.\n\nEach metadata is linked to a specific paragraph/text zone",
+  "type": "object",
+  "required": [
+    "headers",
+    "nb_sentences",
+    "offset"
+  ],
+  "properties": {
+    "headers": {
+      "type": "object",
+      "additionalProperties": {
+        "type": "string"
+      }
+    },
+    "nb_sentences": {
+      "type": "integer",
+      "format": "uint",
+      "minimum": 0.0
+    },
+    "offset": {
+      "type": "integer",
+      "format": "uint",
+      "minimum": 0.0
+    }
+  }
+}
+
+

Example: +

{
+   "headers":{                  // these headers keys are *almost* always present.
+      "content-length":"11062", // the content length is not changed and reflects the 
+                                // length before filtering and eventual deduplication.
+      "warc-target-uri":"...",
+      "warc-type":"conversion",
+      "content-type":"text/plain",
+      "warc-date":"2021-02-24T17:55:29Z", // Following WARC specification, it is the crawl date.
+      "warc-identified-content-language":"eng,zho",
+      "warc-refers-to":"<urn:uuid:c649de0e-42a3-4e69-b675-98e28e084698>",
+      "warc-block-digest":"sha1:V4PYYGYA6ZYA2WACDKSNL6NXGDN6XK6X",
+      "warc-record-id":"<urn:uuid:121a822f-5362-4559-8891-d085415cdd90>"
+   },
+   "offset":0, // Related text is in the text file, from lines offset+1 to lines offset+nb_sentences.
+   "nb_sentences":9
+}
+

+

<lang>_sha256.txt files

+

These are used to check for eventual corruption during download. +They can be used by running sha256sum -c <lang>_sha256.txt.

+

[^1]: gsw is ISO 639-2 for Alemannic German. It was previously identified as als in previous OSCAR versions, due to a bug in fasttext. +[^2]: eml identification tag is deprecated and corresponds to rgn and egl tags in ISO 639-3

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versions/oscar-2201/index.html b/versions/oscar-2201/index.html new file mode 100644 index 0000000..d9f20a7 --- /dev/null +++ b/versions/oscar-2201/index.html @@ -0,0 +1,1853 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + OSCAR 22.01 - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+ +
+ + + +
+
+ + + + + + + + +

OSCAR 22.01

+

OSCAR 2201 is the OSCAR version from January, 2022, the November/December 2021 dump of Common Crawl. +It features a different file layout that makes it not backward compatible with code designed to run with previous OSCAR versions.

+

Request access +🤗 Datasets +Read the paper

+

Summary

+

OSCAR 22.01 is document-oriented, which means that rather than extracting lines and sorting them in language subcorpora, we identify documents as a whole. The main differences are that sentences in a document are contiguous and should make sense one after another, but sentences are not guaranteed to be of the subcorpus' language.

+
+

Note

+

As an example, the English Wikipedia page about La Marseillaise contains sentences in French (The anthem's lyrics). In line-oriented corpora, these sentences would have been put in the French subcorpus. In OSCAR 22.01, they should be along with the article, in a document classified as English.

+
+

Layout

+

As previous corpora, there is one subcorpus per language, plus one new subcorpus for multilingual documents. +Subcorpora are distributed in JSONLines, split into 1GB chunks, then gzipped.

+
+

Note

+

Splits are completely independent and self-contained: It is possible to only download en_meta_134.jsonl.gz and to do processing on it.

+
+

Example document

+
{
+  "content":"newline\nseparaaaaaaaaaaated\ncontent", // (1)
+  "warc_headers":{ // (2) 
+    "warc-refers-to":"<urn:uuid:83f2e1d4-5ed3-41db-86ff-f7826c4c20f9>", 
+    "warc-date":"2021-09-16T11:07:14Z",
+    "warc-block-digest":"sha1:X3OWP47FG2O5LBNMFSNB44FJF2SSRC26",
+    "warc-type":"conversion",
+    "warc-identified-content-language":"eng",
+    "content-length":"1694",
+    "warc-target-uri":"https://foo.bar",
+    "warc-record-id":"<urn:uuid:3304bc27-17d0-4ffd-a692-340381478a5f>",
+    "content-type":"text/plain"
+  },
+  "metadata":{
+    // (3)
+    "identification":{
+      "label":"en",
+      "prob":0.6268374
+    },
+
+    // (4)
+    "annotation":[
+      "short_sentences",
+      "footer"
+    ],
+
+    // (5)
+    "sentence_identifications":[
+      {
+        "label":"en",
+        "prob":0.93925816
+      },
+      null,
+      {
+        "label":"en",
+        "prob":0.9606543
+      }
+    ]
+  }
+}
+
+
    +
  1. Content. Lines are separated by \n.
  2. +
  3. Headers from the crawler. Note that nothing is changed, so the content length may be incorrect.
  4. +
  5. Document-wide identification. prob is the weighted average of the confidence of identified lines.
  6. +
  7. Annotations of the document. null if no annotation.
  8. +
  9. Line-by-line identifications. null for each line that has no identification.
  10. +
+

Annotations

+
    +
  • tiny: The document has a low (<5) number of lines.
  • +
  • short_sentences: The document has a high number (>50%) of short lines (<400 bytes)
  • +
  • header: The document has a high number of short lines at its head, suggesting the presence of low quality content.
  • +
  • footer: The document has a high number of short lines at its tail, suggesting the presence of low quality content.
  • +
  • noisy: The document has a high percentage of punctuation (>50%)
  • +
  • adult: The document contains adult content. This annotation uses a blocklist and labels a tiny part of the corpus: It does not catch most of the adult content.
  • +
+

More information about the thresholds and annotators are present in our paper.

+

Filtering

+
+

Tip

+

Filtering can be done using oscar-tools, a high performance toolkit that provides rapid and efficient ways of transforming corpora into what you need. More info here.

+
+

Filtering can be done using classic Python tools, such as ujson. +While we don't supply a Python library enabling easy filtering/transformation for OSCAR 22.01, we provide some filtering examples that you can change to better suit your needs.

+

Getting documents that come from Wikipedia only

+

Using filters on warc_headers.warc-target-uri makes filtering on URLs easy.

+
TODO
+
+

Extracting lines from non-annotated documents

+

Non-annotated documents are suspected to be cleaner than annotated ones, so extracting their content should be interesting to do. We extract lines from documents where metadata.annotations == null.

+
TODO
+
+

Getting Alemannic lines from the German corpus

+

As detailed in our paper, we found that the German corpus has a (relative to the Alemannic corpus size) important amount of Alemannic. We use a filter on metadata.sentence_identifications to extract those sentences.

+
TODO
+
+

Languages

+

OSCAR 22.01 has subcorpora for 142 languages (counting the Multilingual corpus). +The following table exhibits the size, number of documents and number of words for each of them.

+

Note that the size accounts for the raw uncompressed file size, counting metadata.

+
+Language table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LanguageSize# Documents# Words
Multilingual12.1 GB1,210,685936,187,711
Afrikaans47.0 MB12,3936,227,310
Albanian3.0 GB437,287326,325,149
Alemannic / Swiss German363.6 kB13937,381
Amharic461.0 MB37,51330,481,153
Arabic84.2 GB8,718,9296,103,711,887
Aragonese10.6 kB1251
Armenian4.7 GB379,267268,031,270
Assamese221.2 MB17,08411,109,557
Asturian73.6 kB773,919
Avaric18.6 kB14582
Azerbaijani3.5 GB491,847291,927,692
Bangla15.1 GB1,171,501751,877,226
Bashkir95.5 MB11,1985,418,474
Basque1.1 GB233,65897,092,942
Belarusian1.8 GB180,046107,227,860
Bihari languages24.2 kB27569
Bishnupriya2.0 MB27198,419
Bosnian10.3 kB10422
Breton33.7 MB16,1193,111,619
Bulgarian35.1 GB2,887,1152,405,981,285
Burmese1.9 GB158,73344,835,970
Catalan13.9 GB2,627,3071,508,919,864
Cebuano44.6 MB5,7425,253,785
Central Kurdish716.4 MB84,95043,913,025
Chechen14.0 MB4,086798,766
Chinese900.9 GB56,524,51823,149,203,886
Chuvash41.8 MB4,7502,465,782
Cornish1.4 kB255
Croatian11.2 MB11,462505,369
Czech58.6 GB10,381,9165,452,724,456
Danish12.6 GB2,265,4791,454,439,292
Dimli (individual language)706 Bytes119
Divehi217.2 MB24,06710,112,205
Dutch114.0 GB20,206,53212,329,127,151
Eastern Mari11.3 MB1,612641,525
Egyptian Arabic2.8 MB1,256176,096
English3.2 TB431,992,659377,376,402,775
Esperanto558.3 MB111,93258,416,628
Estonian9.2 GB1,362,524820,975,443
Filipino646.5 MB70,39481,881,278
Finnish37.8 GB4,948,9612,900,615,928
French382.2 GB52,037,09841,713,990,658
Galician255.2 MB88,80327,051,212
Georgian7.1 GB488,588281,430,479
German496.7 GB70,075,42446,826,676,844
Goan Konkani787.2 kB4638,831
Greek78.3 GB6,738,5465,031,242,803
Guarani9.0 kB10374
Gujarati4.8 GB136,467301,170,777
Hebrew30.3 GB3,132,3962,249,377,984
Hindi23.3 GB1,529,9071,534,799,198
Hungarian53.9 GB6,866,0624,598,787,907
Icelandic2.0 GB396,183210,365,124
Ido77.3 kB1052,690
Iloko97.9 kB758,592
Indonesian17.4 GB2,244,6221,984,195,207
Interlingua40.2 kB610,125
Irish45.6 MB12,2334,877,850
Italian229.3 GB28,502,09224,294,684,830
Japanese258.7 GB36,328,9315,592,948,356
Javanese152.7 kB7010,441
Kalmyk9.3 kB9250
Kannada2.6 GB150,850108,450,571
Karachay-Balkar119.6 kB914,089
Kazakh2.9 GB261,085157,267,307
Khmer1.9 GB121,91030,564,131
Komi119.9 kB1273,335
Korean51.8 GB5,881,4813,854,968,649
Kurdish150.3 MB29,90617,390,759
Kyrgyz518.6 MB62,24428,028,986
Lao337.1 MB28,9146,682,982
Latin4.1 MB4,397187,446
Latvian8.2 GB1,032,987707,361,898
Lezghian375.5 kB12419,250
Limburgish1.4 kB241
Lithuanian20.0 GB2,303,0701,712,802,056
Lojban1.9 MB570260,542
Lombard2.6 kB2225
Low German9.0 MB1,9381,012,561
Lower Sorbian707 Bytes117
Luxembourgish15.8 MB5,1081,545,946
Macedonian3.6 GB341,775244,058,579
Maithili21.6 kB23483
Malagasy57.3 MB3,0287,279,056
Malay5.3 MB5,228217,818
Malayalam4.1 GB250,972137,831,247
Maltese2.5 MB2,208118,190
Marathi3.3 GB250,376160,179,233
Mazanderani128.2 kB767,337
Minangkabau6.0 MB585614,613
Mingrelian7.6 MB2,550253,333
Mongolian2.8 GB237,719176,405,432
Nahuatl languages8.7 kB12179
Nepali3.7 GB391,947177,885,116
Newari5.7 MB1,134273,837
Norwegian2.8 GB973,188279,182,902
Norwegian Nynorsk6.8 MB5,835459,183
Occitan2.1 MB37331,061
Odia487.9 MB52,94223,755,902
Ossetic13.9 MB3,560800,430
Pashto490.3 MB50,31246,293,249
Persian77.4 GB7,665,8716,430,164,396
Piedmontese1.7 MB698188,270
Polish139.0 GB19,301,13712,584,498,906
Portuguese170.3 GB23,735,70718,441,864,893
Punjabi1.1 GB68,09470,068,604
Quechua744 Bytes114
Romanian49.2 GB4,624,7645,261,803,995
Russia Buriat32.9 kB39785
Russian1.1 TB76,060,84462,811,122,663
Sakha65.6 MB6,2843,473,813
Sanskrit136.0 MB4,4725,671,369
Scottish Gaelic137.7 kB1367,769
Serbian6.9 GB577,472482,932,670
Serbian (Latin)931.8 kB73892,875
Sicilian1.5 kB250
Sindhi117.1 MB15,51610,685,611
Sinhala2.0 GB108,593113,179,741
Slovak16.5 GB2,409,5551,619,121,944
Slovenian1.2 GB351,894118,400,246
Somali2.1 kB3109
South Azerbaijani14.1 MB5,381693,746
Spanish381.9 GB51,386,24742,829,835,316
Sundanese5.0 MB263547,145
Swahili1.3 MB462123,050
Swedish48.0 GB7,541,2785,078,331,128
Tajik870.9 MB46,36656,627,727
Tamil11.4 GB556,772452,343,748
Tatar915.3 MB76,39851,875,265
Telugu3.4 GB249,756137,752,065
Thai66.1 GB5,030,2541,626,779,846
Tibetan234.5 MB18,6832,286,269
Turkish75.1 GB10,826,0316,421,221,358
Turkmen4.4 MB2,485276,632
Ukrainian48.8 GB4,558,2142,879,585,992
Emiliano-Romagnolo[eml]901 Bytes153
Upper Sorbian132.8 kB1108,825
Urdu3.4 GB336,994332,816,354
Uyghur201.9 MB18,55611,240,889
Uzbek19.9 MB9,5261,370,842
Vietnamese98.9 GB9,587,23312,283,185,482
Volapük825.9 kB66157,039
Walloon105.7 kB1384,386
Waray7.6 MB933830,872
Welsh409.3 MB90,37849,488,495
Western Frisian75.3 MB21,9466,357,929
Western Mari743.5 kB15543,916
Western Panjabi46.7 MB6,7904,060,419
Wu Chinese137.2 kB883,056
Yiddish232.5 MB23,41815,809,780
Yoruba24.7 kB261,042
Multilingual12.1 GB1,210,685936,187,711
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/versions/oscar-2301/index.html b/versions/oscar-2301/index.html new file mode 100644 index 0000000..bade386 --- /dev/null +++ b/versions/oscar-2301/index.html @@ -0,0 +1,2154 @@ + + + + + + + + + + + + + + + + + + + + + + + + OSCAR 23.01 - OSCAR Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + +

OSCAR 23.01

+

OSCAR 23.01 is the January 2023 version of the OSCAR Corpus based on the November/December 2022 dump of Common Crawl. While being quite similar to OSCAR 22.01, it contains several new features, including KenLM-based adult content detection, precomputed Locality-Sensitive Hashes for near deduplication, and blocklist-based categories. OSCAR 23.01 has also moved from gzip to Zstandard compression. You might already have zstd installed on your system, but if not, please check the Zstandard website for installation instructions.

+
+

Tip

+

OSCAR 23.01 is similar to OSCAR 22.01. As such, please also check out the documentation for OSCAR 22.01 if you need detailed information about metadata.

+
+

Access

+
+

Note

+

If you already have access to the corpus, there's nothing to do! +Go up in the file hierarchy on the link you've been given, and you should find the new corpus.

+
+

Access to the OSCAR Corpus changes depending on your status. More info on our dedicated page.

+

Getting access

+

New Features

+

Categories

+

OSCAR 22.01 leveraged the UT1 Blocklists project to attempt to classify some adult content present in OSCAR. +The OSCAR 23.01 pipeline iterated on this to include all of the blocklists provided by UT1.

+
+

Warning

+

The UT1 Blocklists page lists all the categories along with a short description. +We strongly encourage you to read the descriptions if you plan on using them. Please also note that these descriptions are in French. We're working on an English translation of them.

+
+
+

Note

+

A document can belong to multiple categories.

+
+

These categories are in a field that is at this path: metadata.categories.

+
+

Example

+
{
+    "content":"foo",
+    "metadata": {
+        // ...
+        "categories": ["blog", "news"],
+        // ...
+    }
+    // ...
+}
+
+
+

KenLM-based Adult Content Filtering

+

For a select number of subcorpora, a measure of perplexity has been added. This perplexity comes from a KenLM model trained on harmful content, previously gathered by using the adult annotation in OSCAR 22.01. +In other terms, the lower it is, the more likely a given document contains harmful/adult content.

+
+

Danger

+

This feature can be considered as unstable/unsafe, since we also want to evaluate its impact on particular issues.

+

As such, we do not provide a boolean value indicating if a given document can be harmful/adult content, but rather the raw perplexity. +We have found a threshold that works well in English, but encourage you to experiment with it and to report back your findings.

+
+

Locality Sensitive Hashing

+

We use TLSH to compute a hash for each document.

+

Locality sensitive hashing is a hashing method that computes similar hashes for similar documents.

+

This can be used to do both exact- and near- deduplication. +Same documents have same hashes (the reverse might not be true). So you only need to check for identity amongst documents with identical hashes. +TLSH hashes can be compared to yield a distance metric. According to the original paper, a cutoff of < 40 yields a false positive rate of 0.07% and a detect rate of 49.6%, while a cutoff of < 100 yields a FP rate of 6.43% and detect rate of 94.5%. You should choose a value that meets your purposes.

+

The above is true for the default version of TLSH which is used in packages such as py-tlsh. OSCAR 23.01 uses a TLSH with a hyperparameter of 256 buckets (Full hash), and 3 byte checksums (collision rate : 1 in 5800) instead of 1 byte checksums (collision rate : 1 in 24).

+

If you would like to use py-tlsh, follow these instructions (You need CMake installed to perform the necessary modifications and build): +

# download py-tlsh source package
+pip download python-tlsh
+# unpack the source tar.gz and enter the directory
+tar -xvf python-tlsh-4.5.0.tar.gz && cd python-tlsh-4.5.0
+# run the following command to implement the changes
+# alternatively, you can use vi or a text editor
+# change TLSH_BUCKETS_128 into TLSH_BUCKETS_256 and change TLSH_CHECKSUM_1B into TLSH_CHECKSUM_3B
+sed -i 's/set(TLSH_BUCKETS_128 1)/set(TLSH_BUCKETS_256 1)/g; s/set(TLSH_CHECKSUM_1B 1)/set(TLSH_CHECKSUM_3B 1)/g' CMakeLists.txt
+
+# build and activate pip venv if not already done
+# python3 -m venv ~/.venv
+source ~/.venv/bin/activate
+# build and install the new py-tlsh
+python3 setup.py install
+

+

Hashes are at metadata.tlsh.

+

Minor changes

+
    +
  • metadata.annotations has been renamed metadata.quality_warnings, and only contains length based quality warnings (see the OSCAR 2201 documentation for details).
  • +
  • Some language tags have changed to better respect the BCP47:
      +
    • als has become gsw. Previously, als was erroneously used as the tag for Alemannic/Swiss German, whereas it is the tag for Tosk Albanian.
    • +
    • eml has become x-eml. The eml tag is deprecated and as such has been replaced by a private tag (x-eml).
    • +
    +
  • +
+

Layout

+
{
+   "content":"English sentence\nphrase en français\n????????????", // (1)
+   "warc_headers":{ // (2)
+      "warc-identified-content-language":"fra,eng",
+      "warc-target-uri":"https://fr.wikipedia.org/wiki/...",
+      "warc-record-id":"<urn:uuid:29eaa920-d299-4b1d-b687-c72bd8d68116>",
+      "warc-type":"conversion",
+      "content-length":"35298", // (3)
+      "warc-refers-to":"<urn:uuid:39e42055-0d94-4e45-9c6c-9e7056635d64>",
+      "warc-block-digest":"sha1:WFH2A5WHCS2H365GIAFYQPI7UOAMFGHB", // (3)
+      "warc-date":"2022-11-26T09:45:47Z",
+      "content-type":"text/plain"
+   },
+   "metadata":{
+      "identification":{ // (4)
+         "label":"fr",
+         "prob":0.8938327
+      },
+      "harmful_pp":4063.1814, // (5)
+      "tlsh":"tlsh:T125315FF2B6088901EEA097015DB39B4600B...", // (6)
+      "quality_warnings":[ // (7)
+         "short_sentences",
+         "header",
+         "footer"
+      ],
+      "categories":[ // (8)
+         "examen_pix",
+         "liste_bu"
+      ],
+      "sentence_identifications":[ // (9)
+         {
+            "label":"fr",
+            "prob":0.99837273
+         },
+         {
+            "label":"en",
+            "prob":0.9992377
+         },
+         null
+      ]
+   }
+}
+
+

Some important notes:

+
    +
  1. Newline-separated content.
  2. +
  3. Headers from the crawled dumps are left untouched. See the WARC specification for more info.
  4. +
  5. Since warc_headers are copied and content can be altered by Ungoliant at generation stage, content-length and warc-block-digest can be different from actual values.
  6. +
  7. Document-level identification. Computation details can be found on the OSCAR 22.01 paper.
  8. +
  9. Perplexity of the document, computed using a KenLM model trained on harmful content. See this pre-print for more info. The lower this number is, the higher the probability that it will contain harmful or adult content. This annotation will be changed from harmful_pp to harmful_pplin future releases.
  10. +
  11. Locality Sensitive Hash of the documents' content, using TLSH. Useful for both exact and near deduplication.
  12. +
  13. (Corresponds to annotations pre-23.01) Potential quality warnings. Based on content/sentence length. See [OSCAR 22.01 paper for more info.
  14. +
  15. Blocklist-based categories. Uses the UT1 Blocklist, plus custom additions. Please refer to the UT1 website for categories description. Note that the categories are in French.
  16. +
  17. Sentence-level identifications. A null value means no identification with a good enough threshold (>0.8 on 23.01).
  18. +
+

Language table

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeLanguage# docs# wordsContent Length :
0afAfrikaans23,9946,217,02437.2 MB
1sqAlbanian1,342,790462,694,5993.2 GB
2amAmharic119,43440,262,809512.9 MB
3arArabic25,012,11610,081,452,882110.7 GB
4anAragonese3426411.0 kB
5hyArmenian1,056,974336,045,0414.9 GB
6asAssamese89,54224,395,215412.1 MB
7astAsturian44010,91774.1 kB
8avAvaric441,07318.6 kB
9azAzerbaijani1,159,994316,850,3303.0 GB
10bnBangla3,474,0861,092,983,76519.1 GB
11baBashkir128,24826,036,637363.7 MB
12euBasque678,474136,672,6151.2 GB
13beBelarusian445,612164,729,6072.3 GB
14bhBihari languages485076.8 kB
15bpyBishnupriya2,346346,9475.4 MB
16bsBosnian203953.0 kB
17brBreton36,3384,759,40731.4 MB
18bgBulgarian8,933,9983,635,273,73844.1 GB
19myBurmese430,27682,433,8363.0 GB
20caCatalan6,953,8982,240,460,83615.3 GB
21cebCebuano16,1746,263,40441.1 MB
22ckbCentral Kurdish182,50861,334,746772.9 MB
23ceChechen11,6861,051,75213.9 MB
24zhChinese138,478,27044,378,380,1611.4 TB
25cvChuvash16,6523,039,92542.3 MB
26kwCornish880432 Bytes
27hrCroatian31,8083,542,96126.5 MB
28csCzech34,859,6329,717,378,55977.0 GB
29daDanish7,214,3382,217,634,34014.8 GB
30dvDivehi77,06010,655,359200.1 MB
31nlDutch72,552,68819,564,553,306135.0 GB
32mhrEastern Mari9,5021,615,21522.9 MB
33arzEgyptian Arabic3,958385,5113.7 MB
34enEnglish1,235,510,986523,869,288,6903.4 TB
35eoEsperanto226,92467,774,923474.8 MB
36etEstonian3,601,904938,296,8928.0 GB
37tlFilipino250,558110,560,444719.2 MB
38fiFinnish14,471,7104,198,143,88341.1 GB
39frFrench158,334,99862,127,088,294430.5 GB
40glGalician248,76238,345,625255.7 MB
41kaGeorgian1,343,036373,935,1588.4 GB
42deGerman206,598,43073,848,586,648594.7 GB
43gomGoan Konkani398121,0352.3 MB
44elGreek20,282,8647,691,622,69295.7 GB
45gnGuarani142602.2 kB
46guGujarati425,552417,001,7055.6 GB
47htHaitian Creole220,67193.1 kB
48heHebrew3,997,8881,697,158,89118.0 GB
49hiHindi5,514,4542,475,605,44432.6 GB
50huHungarian21,349,37216,013,364,289150.1 GB
51isIcelandic1,210,232294,471,5392.2 GB
52ioIdo2242,59816.1 kB
53iloIloko1444,41128.0 kB
54idIndonesian7,109,7783,228,020,22123.4 GB
55iaInterlingua349,38433.5 kB
56ieInterlingue20881 Bytes
57gaIrish29,8949,054,92363.2 MB
58itItalian89,021,60636,327,274,203259.4 GB
59jaJapanese94,236,4044,401,059,165181.2 GB
60jvJavanese1723,28625.7 kB
61xalKalmyk227315 Bytes
62knKannada448,500124,924,3502.6 GB
63krcKarachay-Balkar4968,385122.4 kB
64kkKazakh677,622214,679,8573.3 GB
65kmKhmer450,66059,880,2313.2 GB
66kvKomi4605,90970.3 kB
67koKorean15,147,6983,435,866,93538.1 GB
68kuKurdish80,33825,921,607174.1 MB
69kyKyrgyz144,28832,062,783489.3 MB
70loLao118,37410,659,203472.1 MB
71laLatin14,384307,8652.0 MB
72lvLatvian2,435,882845,459,8997.4 GB
73lezLezghian67660,634856.6 kB
74liLimburgish61691.4 kB
75ltLithuanian5,182,0281,674,362,57414.5 GB
76jboLojban572312,3151.5 MB
77lmoLombard1123,26921.0 kB
78ndsLow German5,2481,612,17510.7 MB
79dsbLower Sorbian884664 Bytes
80lbLuxembourgish18,0902,514,83818.4 MB
81mkMacedonian1,063,298389,344,4254.7 GB
82maiMaithili464676.8 kB
83mgMalagasy10,8301,416,43011.2 MB
84msMalay11,500238,4772.6 MB
85mlMalayalam800,936236,597,8385.8 GB
86mtMaltese5,180149,8861.3 MB
87mrMarathi729,578252,706,3314.5 GB
88mznMazanderani38416,115169.2 kB
89minMinangkabau2,436305,5893.8 MB
90xmfMingrelian7,318283,3166.1 MB
91mwlMirandese454423 Bytes
92mnMongolian1,061,710454,350,4155.8 GB
93multiMultilingual2,948,2021,251,676,40611.9 GB
94nahNahuatl languages382792.4 kB
95neNepali1,152,156278,901,0364.9 GB
96newNewari1,996229,7034.0 MB
97noNorwegian2,797,378373,160,0332.6 GB
98nnNorwegian Nynorsk19,470575,5183.7 MB
99ocOccitan92034,701405.0 kB
100orOdia158,42631,963,340543.1 MB
101osOssetic8,6283,935,96450.7 MB
102psPashto87,40830,196,179261.6 MB
103faPersian23,813,8829,609,206,69893.2 GB
104pmsPiedmontese2,524510,0873.1 MB
105plPolish57,184,82618,073,705,588147.1 GB
106ptPortuguese36,062,80015,172,557,311105.0 GB
107paPunjabi222,058104,235,4181.4 GB
108quQuechua213143 Bytes
109roRomanian11,985,6686,302,600,83345.6 GB
110bxrRussia Buriat726988.2 kB
111ruRussian194,143,42278,032,029,3441.1 TB
112sahSakha17,5664,288,05168.8 MB
113saSanskrit16,8022,479,34556.3 MB
114gdScottish Gaelic77618,458146.1 kB
115srSerbian1,677,896632,781,8227.7 GB
116shSerbian (Latin)3,214166,517816.4 kB
117sdSindhi48,56614,667,207131.6 MB
118siSinhala301,066172,755,3852.6 GB
119skSlovak8,931,7842,704,716,28021.5 GB
120slSlovenian1,112,560192,816,7431.4 GB
121soSomali651503 Bytes
122azbSouth Azerbaijani26,3642,029,72928.4 MB
123esSpanish153,574,55663,388,237,965429.9 GB
124suSundanese182582.0 kB
125swSwahili1,664164,4591.0 MB
126svSwedish21,891,3486,993,719,60150.0 GB
127gswSwiss German34234,328232.7 kB
128tgTajik144,93276,987,2851.0 GB
129taTamil1,638,238738,824,39215.8 GB
130ttTatar262,65459,253,765833.8 MB
131teTelugu644,712201,575,8153.9 GB
132thThai14,845,9002,224,483,01892.0 GB
133boTibetan62,3526,062,558531.6 MB
134trTurkish26,654,3308,290,890,08773.7 GB
135tkTurkmen4,576325,7863.3 MB
136ukUkrainian10,059,9923,183,842,01844.7 GB
137x-emlEmiliano-Romagnol43291.8 kB
138hsbUpper Sorbian40215,827123.2 kB
139urUrdu887,004434,023,2733.8 GB
140ugUyghur51,30414,659,554219.8 MB
141uzUzbek15,8061,665,96015.3 MB
142viVietnamese33,933,99422,424,984,210140.8 GB
143voVolapük89649,968371.9 kB
144waWalloon3906,34734.3 kB
145warWaray1,49419,665126.8 kB
146cyWelsh151,51252,250,043333.0 MB
147fyWestern Frisian45,4589,885,78870.4 MB
148mrjWestern Mari49660,180765.8 kB
149pnbWestern Panjabi12,90411,844,695105.8 MB
150wuuWu Chinese1361,19926.8 kB
151yiYiddish47,43814,287,370171.7 MB
152yoYoruba1282,39616.6 kB
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + \ No newline at end of file