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.
- nobank - Norsk ordbank (bokmål) med verktøy
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.
.
├── 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
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.
FULLFORMSLISTEinkluderer ikkeFOREIGN KEYtilBOYING, fordi ikke alleBOY_NUMMER-verdier kan matches entydig mot enBOY_GRUPPE.LEMMA_IDiFULLFORMSLISTEer ikke enFOREIGN KEYfor samme grunn – enkelte rader er knyttet til sammensatte uttrykk eller ufullstendige lemma.
LEMMA: grunnformerFULLFORMSLISTE: alle bøyningsformerPARADIGME,PARADIGME_BOYING,BOYING: definerer bøyningssystemLEDDANALYSE: informasjon om leddstruktur i sammensatte ord
- Python ≥ 3.12
sqlite3- Docker (valgfritt)
Installer nødvendige Python-pakker med pip:
pip install -r requirements.txtDu trenger også sqlite3 for å opprette og bruke databasen.
| Plattform | Installasjon |
|---|---|
| macOS | Allerede installert |
| Linux | Bruk pakkebehandler:sudo apt install sqlite3eller 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 |
For å kjøre API-et i en Docker-container trenger du:
- Docker installert på din maskin: https://www.docker.com/get-started
git clone git@github.com:bitjungle/nobank.gitmake venv requirementsDette oppretter et virtuelt Python-miljø i venv-mappen og installerer alle nødvendige pakker.
make schema importmake cleanpython src/test_oppslag.pyVelg 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)
...
Prosjektet inkluderer også et REST API bygget med FastAPI som gir enkel tilgang til ordbankens innhold fra andre applikasjoner.
make apiDenne 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).
| 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økestrenglimit (valgfri): Maks antall resultater (standard: 10) |
/api/ordklasser/ |
Lister opp alle tilgjengelige ordklasser | - |
/docs |
Interaktiv API-dokumentasjon | - |
/redoc |
Alternativ API-dokumentasjon | - |
-
Hent alle bøyningsformer for et ord:
GET /api/words/bil -
Hent alle bøyningsformer for et verb:
GET /api/words/løpe?ordklasse=verb -
Søk etter ord:
GET /api/search/?q=bil&limit=20
Prosjektet inkluderer Docker-støtte.
Det enkleste er å bruke Makefile for å bygge og kjøre Docker-containeren:
make dockerDette gjør to ting:
- Bygger Docker-image (
make docker-build) - 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-runAPI-et er da tilgjengelig på: http://localhost:8000/
- Data: Norsk Ordbank – Språkbanken/NB
Lisensiert under CC BY 4.0 – fri bruk med kreditering til Nasjonalbiblioteket - Kode: Alt Python-innhold i dette prosjektet er lisensiert under MIT-lisensen