Hoppa till huvudinnehåll

Vad är meningsmängder?

För många av Språkbankens korpusar finns det nedladdningsbara meningsmängder. Meningsmängderna är samlingar av meningar från respektive korpus, med automatisk annotering av till exempel ordklasser och syntaktisk struktur. I vissa korpusar har meningarna kastats om av upphovsrättsliga skäl. Det betyder att meningarna har en slumpmässig ordning för att originaltexterna inte ska gå att återskapa.

Ungefär såhär ser Sparvs "standard"-XML-format för meningsmängderna ut:

<text>
  <paragraph>
    <sentence>
      <token _tail="\s">text</token>
    </sentence>
  </paragraph>
</text>

Observera:

  • Alla korpusar har inte styckesinformation (<paragraph> finns alltså inte alltid).
  • Äldre korpusar (sådana som är annoterade med Sparv-versioner före version 4.0) har <w>-taggar istället för <token> och innehåller aldrig några _tail-attribut.
  • _tail-attributet inuti <token> innehåller information om mellanrum (blanksteg "\s", tabbar "\t" eller radbrytningar "\n") som följer tokenet i källmaterialet.
  • Utöver taggarna och attributen i exemplet ovan kan det förekomma fler taggar och attribut i XML:en beroende på hur indatan såg ut och vilka annotationer som har lagts till av Sparv.
     

Vad är en bz2-fil?

Eftersom meningsmängderna kan vara mycket stora är XML-filerna komprimerade med formatet bzip2 för att minska filstorleken och mängden data som behöver laddas ner.

Bearbeta bz2-filen med Python

Om du ska bearbeta filen programmatiskt behöver du inte packa upp hela filen först. Python kan läsa XML-data direkt från den komprimerade bz2-filen. Eftersom filen kan vara mycket stor rekommenderar vi att den bearbetas stegvis, i stället för att hela XML-dokumentet läses in i minnet.

Ett exempel med Pythons standardbibliotek:

import bz2
import xml.etree.ElementTree as ET
with bz2.open("filnamn.xml.bz2", "rb") as f:
   for _event, elem in ET.iterparse(f, events=("end",)):
       # Replace "paragraph" with the relevant XML element
       if elem.tag == "paragraph":
           # Add your processing code here
           print(elem.text)

           # Free memory when done with the element
           elem.clear()

Packa upp filen manuellt

Om du ändå vill packa upp XML-filen kan du göra såhär:

  • Windows: Använd exempelvis 7-Zip eller ett annat program som stöder bz2.
  • macOS: bz2-filer kan vanligtvis packas upp direkt i Finder. Du kan även använda exempelvis The Unarchiver.
  • Linux: På kommandoraden kan du exempelvis använda bunzip2 filnamn.xml.bz2.

Observera att den uppackade XML-filen kan vara betydligt större än bz2-filen och därför kräva mycket diskutrymme.


Se även Hur kan jag få tillgång till icke-meningsomkastade versioner av Språkbankens korpusar? och Hur får man tillgång till skyddade korpusar som till exempel ESPC?.