home << dhlab reference << dhlab.text

nbtokenizer#

from dhlab.text import nbtokenizer

Tokenisator for ngramleser (evt. parsing).#

Lars G Johnsen, Nasjonalbiblioteket, juni 2014

Tokenisatorens oppgave er å danne token eller ord fra en sekvens med tegn. I utgangspunktet fungerer skilletegn og mellomrom som ordgrenser, men det er unntak, se listen nedenfor. Skilletegn danner som oftest egne token, men spesielt punktum og komma brukes på flere måter, noe det må tas høyde for.

Noen ord (token) har bestanddeler i form av skilletegn, som forkortelser, tall, i tillegg kan ordene selv være bundet sammen med bindestrek:

p-pille (bindestrek) 3.3 (punktum i seksjonsnummerering) etc. (forkortelser) 10 000 (token over mellomrom) 3,14 (desimaltall med komma) co2 (bokstaver og tall i kjemiske formler) co2-forurensning (bokstaver tall pluss bindestrek) 17. (ordenstall som i 17. mai) P. A. Munch (punktum i initialer) … tre eller flere punktum Når punktum følger tall vil tokenisatoren la punktum tilhøre tallet med mindre punktumet følges av mellomrom og stor bokstav.

Punktum tilhører alle forkortelser som tar punktum uavhenging av kontekst. Den kan imidlertid gjøres følsom for påfølgende stor bokstav, men det er altså ikke gjort her. Punktum tillates inne i ord og deler ikke opp ord med punktum i seg.

Alle skilletegn ellers utgjør egne token, bortsett fra § som kan sekvensieres, så § og §§ vil være egne tokener; de benyttes en hel del i lovtekster for entall og flertall.

Tall skrevet med mellomrom blir ett token om de er på formen xx xxx, altså 1 eller 3 siffer etterfulgt av grupper på tre siffer skilt med ett mellomrom. Så 3 1995 vil være to tokener, mens 3 995 blir ett token, 4000 398 blir igjen to token. (Mulig det er endret)

Tall som følger etter § (adskilt med maks ett mellomrom) vil aldri tiltrekke seg punktum.

Øvrige tegn som ikke passer inn med mønstrene over behandles som separate token.

Module Attributes#

fork

Her er listen over forkortelser med punktum.

num

Tall som kan slutte på punktum består av hele tall, som tokeniseres

num0

F.eks.

num1

Seksjon 3.2.1 eller 2.3999, kan ikke ha sluttpunktum.

num2

3,5 kan ikke ha sluttpunktum.

num3

Det var .2 prosent økning.

num4

Tre eller flere punktum blir ett token.

num5

Tallord kombinert med ord, f.eks.

parnum0

Paragraftegn kan komme i en eller to (eller flere?) utgaver.

parnum

Tolk tall etter § som heltall uten punktum.

paragrafer

§ eller §§ brukes i lovtekster.

word

Ord er alt som ikke inneholder skillende skilletegn.

catchall

Alle tegn som ikke er et blankt tegn (tab, mellomrom linjeskift osv.), og som ikke er blitt matchet opp tidligere, blir å regne som egne token.

regex

Kombiner alle uttrykkene i rekkefølge og kompiler dem.

Functions#

tokenize(text)

Tokenize the input text with the regex pattern.

tokenize_timer(text)

Time the tokenize() function and return the resulting tokens.

Classes#

Tokens(text)

Create a list of tokens from a text with tokenize().