Opgave 3 - Informatie-extractie
Introductie
In deze opgave gaan we met het Alpino ontleedsysteem werken. Alpino is een unificatie-grammatica die analyses in de vorm van dependency structures oplevert. In deze opgave zal je aan de hand van dependency structures informatie extraheren, en toegankelijk maken als Prolog feiten. In de opdracht van volgende week zul je dezelfde feiten gebruiken om vragen te beantwoorden.
Gegeven zijn een aantal Prolog bestanden in het archief opgave3.tar.gz:
- extraction.pl Predikaten voor het extraheren van informatie.
- suite.pl Zinnen waar informatie uit geëxtraheerd moet worden.
Na het downloaden van het archief kun je het uitpakken met tar:
$ tar zxf opgave3.tar.gz
$ cd opgave3
Alpino
Zoals gezegd, zal Alpino gebruikt worden voor het ontleden van zinnen. Voor het gebruik van Alpino moet je eerst de ALPINO_HOME en PATH variabelen instellen:
export ALPINO_HOME=/net/aps/64/src/Alpino
export PATH=$PATH:/net/aps/64/bin
Deze regels kun je ook aan ~/.bashrc toevoegen, zodat je ze de volgende keer niet in hoeft te tikken. Je kunt nu Alpino starten met:
$ sh run_alpino.sh
Dit commando zal Alpino starten, en extraction.pl en suite.pl laden. In Alpino kun je een zin ontleden in de command interpreter (in de terminal waar Alpino gestart is) met het ster (*) commando:
1 |: * Amsterdam is de hoofdstad van Nederland .
Let op dat je tokens moet scheiden met een spatie. Na het ontleden van een zin zul je in het linkervlak een dependency tree zien. Door het commando sdt te gebruiken kun je de daadwerkelijke dependency structure tonen. Deze zal dan in het rechtervlak van het Hdrug-scherm verschijnen.
Om de extractie van feiten te kunnen testen, kun je altijd het facts commando uitvoeren om feiten te extraheren uit de laatst ontlede zin. Extractie is al gedefinieerd voor een aantal veelvoorkomende structuren voor landen en hoofdsteden:
1 |: * Amsterdam is de hoofdstad van Nederland .
[...]
2 |: facts
capital('Nederland','Amsterdam').
Opdracht
In deze opdracht zul je vooral in extraction.pl werken. Hier kun je al een voorbeeld vinden van extractie van (nog niet alle) land/hoofdstad combinaties. Je kunt zelf extra extracties toevoegen door bijvoorbeeld fact/2 en su_pref_fact predikaten te definiëren. De beste werkprocedure is:
- Ontleed een zin waarbij informatie-extractie nog niet werkt.
- Bekijk met het sdt commando hoe de informatie in de dependency-structure beschikbaar is, en bedenk een zo algemeen (maar niet te algemeen) mogelijke manier om die informatie te extraheren.
- Voeg predikaten toe om de informatie te extraheren, je kunt dezelfde methoden gebruiken om attribute-value structures te analyseren als het vorige practicum.
- Test: werkt het, is het algemeen genoeg, en werken andere gevallen nog goed?
De opdracht:
- Voeg informatie-extractie toe voor zinnen met landen/provincies/… en hoofdsteden, waarbij de informatie-extractie nog niet werkt.
- Voeg informatie-extractie toe voor personen en geboortedata. Stel ge-extraheerde feiten beschikbaar als het birth_date(Person,Date) predikaat.
- Sluit Alpino af, en voer het extract-all.sh script uit (sh extract-all.sh), de feiten zullen nu geëxtraheerd worden en geschreven worden naar facts.pl.
Voor deze opgave lever je in: extraction.pl en facts.pl. Stuur je uitwerking naar:
Let op: Je zult de komende twee weken verder werken met deze programmacode, bewaar het dus goed.
Tips
- Zoals je in suite.pl kunt zien heeft elke zin een identifier. Je kunt een zin ontleden met het sen commando, bijvoorbeeld: sen hoofdstad1
- Je kunt de volgende zin ontleden met next en de vorige met prev.
- Als je extraction.pl gewijzigd hebt, kun je het opnieuw laden (reconsult) met het rc commando: rc extraction.pl
- Je kunt een predikaat ‘tracen’ met het spy commando. De volgende keer dat het predikaat bewezen wordt, zul je automatisch een Prolog trace prompt krijgen. Bijvoorbeeld: spy fact
- Met het p commando kun je een Sicstus prompt krijgen. Met het r/0 predikaat kom je weer terug in de command interpreter.
Overzicht dependentielabels
Dependentielabel | Omschrijving |
---|---|
APP | appositie, bijstelling |
BODY | romp (bij complementizer) |
CMP | complementizer |
CNJ | lid van nevenschikking |
CRD | nevenschikker (als hoofd van conjunctie) |
DET | determinator |
DLINK | discourse-link |
DP | discourse-part |
HD | hoofd |
HDF | afsluitend element van circumpositie |
LD | locatief of directioneel complement |
ME | maat (duur, gewicht,…) complement |
MOD | bijwoordelijke bepaling |
MWP | deel van een multi-word-unit |
NUCL | kernzin |
OBCOMP | vergelijkingscomplement |
OBJ1 | direct object, lijdend voorwerp |
OBJ2 | secundair object (meewerkend, belanghebbend, ondervindend) |
PC | voorzetselvoorwerp |
POBJ1 | voorlopig direct object |
PREDC | predicatief complement |
PREDM | bepaling van gesteldheid tijdens de handeling |
RHD | hoofd van een relatieve zin |
SAT | satelliet; aan- of uitloop |
SE | verplicht reflexief object |
SU | subject, onderwerp |
SUP | voorlopig subject |
SVP | scheidbaar deel van werkwoord |
TAG | aanhangsel, tussenvoegsel |
VC | verbaal complement |
WHD | hoofd van een vraagzin |