Skip to content

bitjungle/nobank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nobank - Norsk ordbank (bokmål) med verktøy

License: CC BY 4.0 License: MIT Made with Python SQLite FastAPI Docker

Et prosjekt som gjør Nasjonalbibliotekets Norsk Ordbank søkbar via en lokal SQLite-database – komplett med databasemodell, importscript, et enkelt CLI-verktøy og REST API for oppslag av bøyningsformer.


Innhold


Om ordbanken

Dette prosjektet bruker Norsk ordbank levert av Nasjonalbiblioteket.
Ordbanken er en omfattende leksikalsk ressurs som inneholder over 150 000 lemmaer, bøyningsparadigmer og over 1 million bøyningsformer.


Prosjektstruktur

.
├── Makefile               # Automatiserer databaseoppsett, kjøring av API og bygging av Docker-container
├── mydict.db              # SQLite-databasen (genereres)
├── Dockerfile             # Definisjon for Docker-container
├── docker-entrypoint.sh   # Oppstartsskript for Docker-containeren
├── api/                   # REST API for ordbanken
│   ├── routes/            # API-endepunkter
│   ├── main.py            # FastAPI-applikasjon
│   ├── models.py          # Datamodeller
│   ├── database.py        # Databasehåndtering
│   └── run.py             # Server startup script
├── src/
│   ├── ordbank/*          # Mappe med originaldata fra Språkbanken (.txt)
│   ├── schema.sql         # SQL-skjema (DDL)
│   ├── import_data.py     # Import av alle datafiler
│   ├── sjekk_boy.py       # Hjelpeskript brukt under utvikling av SQL skjema
│   ├── sjekk_lemma.py     # Hjelpeskript brukt under utvikling av SQL skjema
│   └── test_oppslag.py    # CLI-app for bøyningsoppslag, for demo og testing
└── README.md              # Denne filen

Datamodell og designvalg

Datamodellen er laget med utgangspunkt i strukturen i ordbankens .txt-filer fra Nasjonalbiblioteket. Disse ligger i src/ordbank og har blitt konvertert fra det opprinnelige Windows 1252-formatet til UTF-8. Filene er ellers uendret.

Hovedvalg og kompromisser

  • FULLFORMSLISTE inkluderer ikke FOREIGN KEY til BOYING, fordi ikke alle BOY_NUMMER-verdier kan matches entydig mot en BOY_GRUPPE.
  • LEMMA_ID i FULLFORMSLISTE er ikke en FOREIGN KEY for samme grunn – enkelte rader er knyttet til sammensatte uttrykk eller ufullstendige lemma.

Viktige tabeller

  • LEMMA: grunnformer
  • FULLFORMSLISTE: alle bøyningsformer
  • PARADIGME, PARADIGME_BOYING, BOYING: definerer bøyningssystem
  • LEDDANALYSE: informasjon om leddstruktur i sammensatte ord

Krav

  • Python ≥ 3.12
  • sqlite3
  • Docker (valgfritt)

Python

Installer nødvendige Python-pakker med pip:

pip install -r requirements.txt

SQLite

Du trenger også sqlite3 for å opprette og bruke databasen.

Plattform Installasjon
macOS Allerede installert
Linux Bruk pakkebehandler:
sudo apt install sqlite3
eller
sudo dnf install sqlite
Windows Last ned fra:
https://sqlite.org/download.html

Velg "sqlite-tools" ZIP under Precompiled Binaries for Windows

Pakk ut og legg sqlite3.exe i en mappe som ligger i PATH

Docker (valgfritt)

For å kjøre API-et i en Docker-container trenger du:


Installasjon og bruk

1. Last ned eller klone nobank fra GitHub:

git clone git@github.com:bitjungle/nobank.git

2. Sett opp virtuelt miljø og installer avhengigheter:

make venv requirements

Dette oppretter et virtuelt Python-miljø i venv-mappen og installerer alle nødvendige pakker.

3. Opprett databasen:

make schema import

4. Rengjøring og fullstendig ny start (om nødvendig):

make clean

Demo CLI: Interaktivt oppslag

python src/test_oppslag.py

Velg ordklasse og oppgi et ord:

---------------------------------------------
📚 Velg ordklasse:
  1. verb
  2. substantiv (subst)
  3. avslutt
👉 Ditt valg (1–3): 2
📥 Oppgi grunnform: bil

📖 Bøyningsformer for 'bil' (subst):

  - bil             subst mask appell ent ub normert    (ent ub → entall_ubestemt)
  - bilen           subst mask appell ent be normert    (ent be → entall_bestemt)
  - bilene          subst mask appell fl be normert     (fl be → flertall_bestemt)
  - biler           subst mask appell fl ub normert     (fl ub → flertall_ubestemt)
  ...

REST API

Prosjektet inkluderer også et REST API bygget med FastAPI som gir enkel tilgang til ordbankens innhold fra andre applikasjoner.

Starte API-serveren

make api

Denne kommandoen vil bruke det virtuelle miljøet og starte API-serveren på http://127.0.0.1:8000

Alternativt kan du bruke Docker (se nedenfor).

Endepunkter

Endepunkt Beskrivelse Parametre
/api/words/{word} Henter alle bøyningsformer for et ord ordklasse (valgfri): Filter på ordklasse (f.eks. "verb", "subst")
/api/search/ Søker etter ord som starter med en bestemt streng q: Søkestreng
limit (valgfri): Maks antall resultater (standard: 10)
/api/ordklasser/ Lister opp alle tilgjengelige ordklasser -
/docs Interaktiv API-dokumentasjon -
/redoc Alternativ API-dokumentasjon -

Eksempler

  1. Hent alle bøyningsformer for et ord:

    GET /api/words/bil
    
  2. Hent alle bøyningsformer for et verb:

    GET /api/words/løpe?ordklasse=verb
    
  3. Søk etter ord:

    GET /api/search/?q=bil&limit=20
    

Docker-støtte

Prosjektet inkluderer Docker-støtte.

Bygge og kjøre Docker-containeren

Det enkleste er å bruke Makefile for å bygge og kjøre Docker-containeren:

make docker

Dette gjør to ting:

  1. Bygger Docker-image (make docker-build)
  2. Kjører containeren (make docker-run)

Du kan også kjøre disse kommandoene separat om nødvendig:

# Bare bygg Docker-image
make docker-build

# Bare kjør containeren
make docker-run

API-et er da tilgjengelig på: http://localhost:8000/


Kilder og lisens


About

Norsk ordbank (bokmål) med verktøy

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published