Avoin Arkeologi

ATK:ta arkeologeille

View the Project on GitHub nikolaipaukkonen/AvoinArkeologi

Ohjelmointia osaamattomille

Arkeologiaan kuuluu nykyään välttämättömänä pahana tietokoneella istuminen ja erilaisten ohjelmistojen käyttö. Vähintäänkin karttojen ja raporttien laatiminen vaatii päätteellä istumista, puhumattakaan tutkimussuuntauksista, joihin kuuluvat erilaiset analyysit, prosessoinnit ja simuloinnit. Useimmiten näihin käytettävät ohjelmistot eivät ole arkeologeja varten suunniteltuja, minkä vuoksi niiden käyttö vaatii joskus luovuutta ja joustavuutta. Ohjelmistokehitys on hidasta ja kallista, minkä vuoksi harvat arkeologeille tarkoitetut ohjelmistot ovat yleensä arkeologien itsensä kehittämiä. Koodaaminen on kuitenkin vuosien aikana karttuva taito, ja vaikka taitoa olisikin, on käyttökelpoisen ohjelman kirjoittaminen joka tapauksessa hidasta ja monimutkaista puuhaa.

Vaan ei enää! Uusimmat tekoälypohjaiset kielimallit (Large Language Model, LLM) tuottavat kohtalaista koodia, ja pienten scriptien kaltaisten ohjelmien toteuttamiseen riittää riittää, kun käyttäjä osaa kuvailla tarkasti sen, mitä haluaa ohjelman tekevän. Pieniä koodinpätkiä on helppo tuottaa ja käyttää ChatGPT:n tai muun vastaavan avulla. Kielimallia voi esimerkiksi pyytää kirjoittamaan Powershell-koodia, jolla muuttaa kaikki kansion tiedostonimet seuraamaan tiettyä kaavaa, tai luokitella eri tyyppiset tiedostot omiin kansioihinsa.

Halusin testata eri kielimallien kykyä kirjoittaa kokonainen Internet-selaimessa toimiva pieni ohjelma. Esimerkiksi valikoitui ohjelma, joka tekisi stratigrafisten yksiköiden välisiä suhteita kuvaavan taulukon perusteella Harrisin matriisin. Ideana oli, että kaiken koodin pitäisi mahtua yhteen tiedostoon ja syntyä yhden vastauksen aikana. Testeissä käytettiin seuraavia malleja:

Julkaisija Malli Julkaistu
OpenAI GPT-4o Toukokuu 2024
Claude (Anthropic) Haiku 3.5 Lokakuu 2024
Copilot (Microsoft) GPT-4 Turbo (Copilot) 2024
Gemini (Google) 2.0 Flash Helmikuu 2025
Cursor GPT-4o-mini Heinäkuu 2024
Mistral AI Mistral small 3.1 Maaliskuu 2025

Niille annettiin seuraava CSV-tiedosto, joka kuvaa yksinkertaisia stratigrafisia relaatioita:

unitno type above below
1 deposit 2  
2 deposit 3;4;7 1
3 structure 2;6 2
4 deposit 5 2
5 deposit 8 4
6 deposit 8 3
7 deposit 8 2
8 deposit   5;6;7

Minkä jälkeen kielimalleille annettiin alla oleva ohjeistussyöte:

Create an app called Harris Matrix Automat that allows archaeologists to generate visual Harris matrices from structured stratigraphical data. The user uploads a CSV file, and the app visualizes the stratigraphical relationships between units in a top-down hierarchical graph, with the newest units on top and the oldest at the bottom.
## Example of the CSV input
unitno,type,above,below
1,deposit,2,0
2,deposit,3;4;7,1
3,structure,2;6,2
4,deposit,5,2
5,deposit,8,4
6,deposit,8,3
7,deposit,8,2
8,deposit,,5;6;7

- The "above" and "below" columns may contain multiple values separated by semicolons (;).
- If the "above" or "below" field is empty, it should be treated as no connection in that direction
- The csv file will contain a header that describes the columns

## Technical constraints
- Single-file app: All HTML, CSS, and JavaScript must be contained in a single index.html file. No external .css or .js files
- The app should be build using HTML, CSS and JavaScript
- Core Technologies: Use HTML, CSS, and JavaScript. If needed, you may use a lightweight external library like D3.js for graph visualization
- You will generate your own assets using basic shapes. In the matrix, I want the deposits to be ovals, structures to be rectangles and cuts to be triangles
- The app should be usable on both desktop and mobile devices
- The graph must be top-down, with newer units at the top and older units at the bottom
- Nodes should be spaced automatically to prevent overlap and ensure readability
## Features
- User can input the csv through an upload button
- After the file has been uploaded the user can click "Generate" button to create the Harris matrix image
- The stratigraphical units are connected with lines based on their stratigraphical relationships (above what, below what) as in normal Harris matrix
- The matrix should be interactive so that the user can drag the nodes where they want
- Nodes should be clearly labeled with their unit number.
- The graph should resize dynamically to fit different screen sizes (desktop and mobile).
- Stratigraphic relationships should be visualized with lines connecting nodes (above-below relationships)
- The application includes CSS that makes it look professional and inviting
- The visualization should scale properly for both desktop and mobile devices.


Important: The primary goal is correct interpretation and visualization of the input data. Ensure that the relationships between units are accurately represented in the Harris matrix.

Tulokset:

Claude

Claude Harris Matrix

Cursor

Cursor Harris Matrix

Gemini

Gemini Harris Matrix

Copilot

Copilot Harris Matrix

OpenAI GPT-4

OpenAI GPT-4 Harris Matrix

Mistral

Mistral Harris Matrix

Yhteenveto

Kaiken kaikkiaan mallien suoritus on melko hyvä: lopputulokset syntyivät yhdellä tai kahdella ohjeistuksella muutamassa minuutissa. Kaikki ohjelmat toimivat myös isommilla aineistoilla (testasin jokaista esimerkkidatalla jossa oli 28 yksikköä).

Yhtäkään näistä ei ehkä sellaisenaan kannata käyttää, mutta niiden muokkaaminen ja jatkokehittäminen olisi tarvittaessa helppoa joko koodaamalla itse tai käskemällä kielimalleja tekemään parannuksia.

Eri kielimallien tuottama koodi, syöte sekä esimerkkidata nähtävissä Github-repositoriossani. Inspiraation testiin sain Hacker Newsissä olleesta vngistin vastaavan tyyppisestä testistä. Katso myös Vibe coding.