maandag 21 maart 2011
Objectgeoriënteerd datamodel voor Nederlandse zinsbouw
Sirius Computing ontwikkelt momenteel een objectgeoriënteerd datamodel voor Nederlandse zinsbouw. Met dit objectgeoriënteerd datamodel willen we de Nederlandse grammatica in onze softwaremodules makkelijker kunnen beheersen. Dit objectgeoriënteerd datamodel zal onder meer voor grammaticacontrole en dialoogsystemen kunnen worden gebruikt. Tot dusver hebben we een objectgeoriënteerd datamodel voor een enkelvoudige zin ontwikkeld. Met dit datamodel kunnen we bijvoorbeeld Nederlandse hoofdzinnen samenstellen op basis van de verschillende zinsdelen: onderwerp, hulpwerkwoorden, hoofdwerkwoord, complement, voorzetselvoorwerp, lijdend voorwerp, meewerkend voorwerp en bepalingen van tijd, manier en plaats.
maandag 28 februari 2011
Nederlandse zinsontleding en syntaxisbomen 2
De ontwikkeling van onze toepassing voor Nederlandstalige zinsontleding gaat de goede richting uit. Op basis van voorbeelden uit verschillende grammaticahandboeken testen we momenteel de ontleding van Nederlandse zinnen.
Volgende schermafbeelding toont bijvoorbeeld hoe de toepassing reeds rekening houdt met complexe regels als bijzinnen en voegwoorden.

De bestaande parser voor het Nederlands (Alpino) van de universiteit Groningen blijkt een goede referentie voor het controleren van onze resultaten.
Enkele collega's vroegen zich zelfs af of we niet beter deze bestaande oplossing integreren in onze toepassing. Dit is uiteraard een mogelijkheid, maar aangezien we de regels voor zinsontleding zo toegankelijk mogelijk proberen te maken en ook de betekenis van woorden willen afleiden is onze ontologiegebaseerde methode waarschijnlijk een betere oplossing. De volgende stap is bijvoorbeeld het correct benoemen van de zinsdelen. Om te kunnen herkennen of een woordgroep een tijd, manier of plaats aanduidt, is de betekenis van de woorden immers van belang.
Volgende schermafbeelding toont bijvoorbeeld hoe de toepassing reeds rekening houdt met complexe regels als bijzinnen en voegwoorden.

De bestaande parser voor het Nederlands (Alpino) van de universiteit Groningen blijkt een goede referentie voor het controleren van onze resultaten.
Enkele collega's vroegen zich zelfs af of we niet beter deze bestaande oplossing integreren in onze toepassing. Dit is uiteraard een mogelijkheid, maar aangezien we de regels voor zinsontleding zo toegankelijk mogelijk proberen te maken en ook de betekenis van woorden willen afleiden is onze ontologiegebaseerde methode waarschijnlijk een betere oplossing. De volgende stap is bijvoorbeeld het correct benoemen van de zinsdelen. Om te kunnen herkennen of een woordgroep een tijd, manier of plaats aanduidt, is de betekenis van de woorden immers van belang.
dinsdag 30 november 2010
Nederlandse zinsontleding en syntaxisbomen
In een vorig blogbericht meldde ik dat mijn bedrijf Sirius Computing een grammatica voor het Nederlands heeft ontwikkeld. Op basis van deze formele Nederlandse grammatica ontwikkelen we nu een toepassing voor het syntactisch ontleden van Nederlandse zinnen en het opbouwen van syntaxisbomen. Deze syntaxisbomen zullen in een latere fase gebruikt worden om de betekenis uit een Nederlandse tekst te extraheren.

Tijdens de ontwikkeling van ons eerste prototype bleek wel reeds dat we bijkomende linguïstische informatie nodig hadden voor het correct ontleden van Nederlandse zinnen. Zo gebruiken we nu bijvoorbeeld het geslacht van Nederlandse woorden bij de opsplitsing tussen het persoonlijk voornaamwoord 'het' en het zelfstandig naamwoord 'vakantie' (zie de derde zin in bovenstaande figuur).

Voor een correcte zinsontleding van de 2de zin in de bovenste figuur moesten we ook opgeven dat het woord 'moeilijk' een mogelijk bijwoord is bij het werkwoord 'zijn'. Zoniet werd dit bijwoord als een bijvoeglijk naamwoord aanzien.

Tijdens de ontwikkeling van ons eerste prototype bleek wel reeds dat we bijkomende linguïstische informatie nodig hadden voor het correct ontleden van Nederlandse zinnen. Zo gebruiken we nu bijvoorbeeld het geslacht van Nederlandse woorden bij de opsplitsing tussen het persoonlijk voornaamwoord 'het' en het zelfstandig naamwoord 'vakantie' (zie de derde zin in bovenstaande figuur).

Voor een correcte zinsontleding van de 2de zin in de bovenste figuur moesten we ook opgeven dat het woord 'moeilijk' een mogelijk bijwoord is bij het werkwoord 'zijn'. Zoniet werd dit bijwoord als een bijvoeglijk naamwoord aanzien.
maandag 4 oktober 2010
Implementatie van een Nederlandse grammatica
Mijn bedrijf Sirius Computing ontwikkelt momenteel een toepassing voor kennisextractie uit Nederlandse tekst. Om dit kennisextractieproces mogelijk te maken hebben we net een Nederlandse grammatica geïmplementeerd. De grammatica is voornamelijk gebaseerd op de Nederlandse woordvolgorde zoals beschreven op de website Dutchgrammar.com voor NT2-studenten. Op dit moment is de grammatica niet compleet maar de grammatica kan via onze crowdsourcingapplicatie makkelijk worden uitgebreid. Indien nodig kunnen we voor de verdere uitbreiding van de grammatica ook gebruik maken van de website van de elektronische Algemene Nederlandse Spraakkunst.
Gebruikmakend van de grammatica kunnen we een Nederlandse zin reeds opsplitsen in naamwoordgroep, voorzetsel+naamwoordgroep en werkwoordgroep. Op basis van deze opsplitsing willen we de belangrijkste zinsdelen (onderwerp, lijdend voorwerp, meewerkend voorwerp en werkwoordelijke constituent) uit een Nederlandse zin extraheren. Deze zinsdelen kunnen we dan gebruiken als grammaticale controle van de basiszin.
Gebruikmakend van de grammatica kunnen we een Nederlandse zin reeds opsplitsen in naamwoordgroep, voorzetsel+naamwoordgroep en werkwoordgroep. Op basis van deze opsplitsing willen we de belangrijkste zinsdelen (onderwerp, lijdend voorwerp, meewerkend voorwerp en werkwoordelijke constituent) uit een Nederlandse zin extraheren. Deze zinsdelen kunnen we dan gebruiken als grammaticale controle van de basiszin.
Labels:
extractie,
kennis,
Nederlands,
tekst,
toepassing
vrijdag 10 september 2010
Kennisextractie uit een Nederlandse tekst 3
De ontwikkeling van een kennisextractietoepassing uit Nederlandse tekst door Sirius Computing verloopt als gepland. Een eerste stap in het kennisextractieproces is om onbekende lemma's te identificeren en deze met de juiste grammaticale categorie toe te voegen aan de termbank. De identificatie van de mogelijke lemma's verloopt automatisch zodra de tekst in het linkertekstvak wordt geplakt. In het rechtertekstvak verschijnen de voorgestelde wijzigingen aan de termbank. Deze lijst van voorgestelde wijzigingen kan door de gebruiker worden gecorrigeerd. Door vervolgens op de knop Effectueer te klikken, worden de voorgestelde wijzigingen doorgevoerd en wordt de tekst opnieuw geanalyseerd.

Onbekende woorden kunnen ook manueel worden toegevoegd. Per grammaticale categorie verschijnt een aangepast dialoogvenster waarmee het juiste lemma kan worden toegevoegd. Via het menu-item 'Voeg werkwoord toe...' onder de rechtermuisknop kan bijvoorbeeld een ontbrekend werkwoord worden toegevoegd. Na het invullen van de hoofding worden de mogelijke vervoegingen voorgesteld na een druk op de knop '?'. De gebruiker kan vervolgens de voorgestelde vervoegingen controleren en bevestigen door op de knop 'Bewaar & sluit' te klikken.

In een volgende versie willen we ook ontbrekende grammaticale patronen (sequenties van grammaticale categorieën voor een Nederlandse zin) semi-automatisch laten herkennen en toevoegen. Hiervoor moeten we waarschijnlijk een model voor Nederlandse zinsontleding bouwen. Meer hierover in een volgend blogbericht...

Onbekende woorden kunnen ook manueel worden toegevoegd. Per grammaticale categorie verschijnt een aangepast dialoogvenster waarmee het juiste lemma kan worden toegevoegd. Via het menu-item 'Voeg werkwoord toe...' onder de rechtermuisknop kan bijvoorbeeld een ontbrekend werkwoord worden toegevoegd. Na het invullen van de hoofding worden de mogelijke vervoegingen voorgesteld na een druk op de knop '?'. De gebruiker kan vervolgens de voorgestelde vervoegingen controleren en bevestigen door op de knop 'Bewaar & sluit' te klikken.

In een volgende versie willen we ook ontbrekende grammaticale patronen (sequenties van grammaticale categorieën voor een Nederlandse zin) semi-automatisch laten herkennen en toevoegen. Hiervoor moeten we waarschijnlijk een model voor Nederlandse zinsontleding bouwen. Meer hierover in een volgend blogbericht...
vrijdag 20 augustus 2010
Kennisextractie uit een Nederlandse tekst 2
Na de ontwikkeling van een semantische databankeditor voor het taalonafhankelijk beheren van (encyclopedische) kennis, heeft mijn softwarebedrijf Sirius Computing de ontwikkeling van een kennisextractor uit Nederlandse tekst aangevat. Een eerste prototype kan reeds naamwoordgroepen uit een Nederlandse tekst extraheren. Naamwoordgroepen zijn frasen waarvan de kern een naamwoord is. Belangrijke zinsdelen - zoals onderwerp, lijdend voorwerp en meewerkend voorwerp - bestaan uit naamwoordgroepen.
De bedoeling is om ook verbale constituenten en voorzetselconstituenten uit de tekst te extraheren en op basis daarvan relaties tussen de verschillende naamwoordgroepen te vinden. Deze tekstspecifieke kennis kan dan in een latere stap semi-automatisch worden gegeneraliseerd in een algemene kennisbank.

Sirius Computing specialiseert zich in crowdsourcingapplicaties d.w.z. applicaties die de gebruikers mee kunnen verbeteren. Vandaar dat we de gebruikers de mogelijkheid bieden om de grammaticale patronen voor de herkenning van naamwoordgroepen mee te beheren. Via de optie 'Voeg naamwoordgroep toe' uit het rechtermuismenu is het bijvoorbeeld mogelijk om een geselecteerde frase als naamwoordgroep aan te duiden. Frasen die voldoen aan dit grammaticale patroon worden dan na een druk op de knop Extraheer eveneens als naamwoordgroep herkend.
Via de tab Kennisbeheer.Naamwoordgroepen kunnen alle naamwoordgroepen eveneens worden beheerd.
De bedoeling is om ook verbale constituenten en voorzetselconstituenten uit de tekst te extraheren en op basis daarvan relaties tussen de verschillende naamwoordgroepen te vinden. Deze tekstspecifieke kennis kan dan in een latere stap semi-automatisch worden gegeneraliseerd in een algemene kennisbank.

Sirius Computing specialiseert zich in crowdsourcingapplicaties d.w.z. applicaties die de gebruikers mee kunnen verbeteren. Vandaar dat we de gebruikers de mogelijkheid bieden om de grammaticale patronen voor de herkenning van naamwoordgroepen mee te beheren. Via de optie 'Voeg naamwoordgroep toe' uit het rechtermuismenu is het bijvoorbeeld mogelijk om een geselecteerde frase als naamwoordgroep aan te duiden. Frasen die voldoen aan dit grammaticale patroon worden dan na een druk op de knop Extraheer eveneens als naamwoordgroep herkend.
Via de tab Kennisbeheer.Naamwoordgroepen kunnen alle naamwoordgroepen eveneens worden beheerd.
maandag 16 augustus 2010
Semantische databankeditor
Mijn softwarebedrijf Sirius Computing heeft een semantische databankeditor ontwikkeld voor het beheren van een terminologische ontologie.
De semantische databankeditor laat toe om objecten toe te voegen, te verwijderen, te bewerken en te zoeken. Aan elk object kan een lijst met eigenschappen, relaties en termen worden gekoppeld. Deze eigenschappen, relaties en termen zijn zelf eveneens objecten.

Naast het gebruik van URI's (Uniform Resource Identifiers), maakt de (meertalige) terminologie, in combinatie met de ontologie, het mogelijk om objecten ondubbelzinnig te identificeren.
Voor het zoeken naar objecten in de databank werd een objectgeörienteerd filtermechanisme geïmplementeerd. De objectfilter ondersteunt het gebruik van Booleaanse logica en reguliere expressies. Het criterium heeft.* filtert bijvoorbeeld alle objecten waarvan de term start met heeft.
De filter ondersteunt het gebruik van dubbele aanhalingstekens om meerwoordexpressies te zoeken gescheiden door spaties. Het criterium "heeft inverse.*" filtert bijvoorbeeld alle objecten met een term die begint met heeft inverse.
De volgende gereserveerde woorden kunnen in de filter worden gebruikt: term, termen, eigenschap, eigenschappen, waarde, relatie, relaties, doel.
+ Term duidt een objectterm aan.
+ Termen duidt het aantal objecttermen aan.
+ Eigenschap duidt een eigenschap aan.
+ Eigenschappen duidt het aantal eigenschappen aan.
+ Waarde duidt de waarde van een eigenschap aan.
+ Relatie duidt een relatie aan.
+ Relaties duidt het aantal relaties aan.
+ Doel duidt het doelobject van een relatie aan.
Met behulp van deze sleutelwoorden kunnen vrij eenvoudig complexe filtercriteria worden samengesteld. Het filtercriterium term.eigenschap.waarde=http.* selecteert bijvoorbeeld alle objecten met een term waarvan de waarde van een eigenschap begint met http.
Ook de volgende speciale tekens (operators) worden ondersteund: !, &, |, ().
! is het teken voor de Booleaanse Not (negatie van de Booleaanse operand).
& is het teken voor de Booleaanse And operatie.
| is het teken voor de Booleaanse Or operatie.
( duidt het begin van een samengestelde Booleaanse operand aan.
) duidt het einde van een samengestelde Booleaanse operand aan.
Het filtercriterium (relatie="heeft hyperoniem" & doel=relatie) selecteert bijvoorbeeld alle relaties.
De structuur van de onderliggend object databank is gebaseerd op de W3C-standaard RDF (Resource Description Format). Volgens deze structuur hebben links tussen objecten de vorm van een drie-eenheid: onderwerp-werkwoord-object. Deze elementaire structuur maakt het mogelijk om op een generieke wijze zowel gestructureerde als ongestructureerde heterogene informatie te beheren.
De semantische databank zal in eerste instantie gebruikt worden als kennisbank in onze software voor kennisextractie uit een Nederlandse tekst.
De semantische databankeditor laat toe om objecten toe te voegen, te verwijderen, te bewerken en te zoeken. Aan elk object kan een lijst met eigenschappen, relaties en termen worden gekoppeld. Deze eigenschappen, relaties en termen zijn zelf eveneens objecten.

Naast het gebruik van URI's (Uniform Resource Identifiers), maakt de (meertalige) terminologie, in combinatie met de ontologie, het mogelijk om objecten ondubbelzinnig te identificeren.
Voor het zoeken naar objecten in de databank werd een objectgeörienteerd filtermechanisme geïmplementeerd. De objectfilter ondersteunt het gebruik van Booleaanse logica en reguliere expressies. Het criterium heeft.* filtert bijvoorbeeld alle objecten waarvan de term start met heeft.
De filter ondersteunt het gebruik van dubbele aanhalingstekens om meerwoordexpressies te zoeken gescheiden door spaties. Het criterium "heeft inverse.*" filtert bijvoorbeeld alle objecten met een term die begint met heeft inverse.
De volgende gereserveerde woorden kunnen in de filter worden gebruikt: term, termen, eigenschap, eigenschappen, waarde, relatie, relaties, doel.
+ Term duidt een objectterm aan.
+ Termen duidt het aantal objecttermen aan.
+ Eigenschap duidt een eigenschap aan.
+ Eigenschappen duidt het aantal eigenschappen aan.
+ Waarde duidt de waarde van een eigenschap aan.
+ Relatie duidt een relatie aan.
+ Relaties duidt het aantal relaties aan.
+ Doel duidt het doelobject van een relatie aan.
Met behulp van deze sleutelwoorden kunnen vrij eenvoudig complexe filtercriteria worden samengesteld. Het filtercriterium term.eigenschap.waarde=http.* selecteert bijvoorbeeld alle objecten met een term waarvan de waarde van een eigenschap begint met http.
Ook de volgende speciale tekens (operators) worden ondersteund: !, &, |, ().
! is het teken voor de Booleaanse Not (negatie van de Booleaanse operand).
& is het teken voor de Booleaanse And operatie.
| is het teken voor de Booleaanse Or operatie.
( duidt het begin van een samengestelde Booleaanse operand aan.
) duidt het einde van een samengestelde Booleaanse operand aan.
Het filtercriterium (relatie="heeft hyperoniem" & doel=relatie) selecteert bijvoorbeeld alle relaties.
De structuur van de onderliggend object databank is gebaseerd op de W3C-standaard RDF (Resource Description Format). Volgens deze structuur hebben links tussen objecten de vorm van een drie-eenheid: onderwerp-werkwoord-object. Deze elementaire structuur maakt het mogelijk om op een generieke wijze zowel gestructureerde als ongestructureerde heterogene informatie te beheren.
De semantische databank zal in eerste instantie gebruikt worden als kennisbank in onze software voor kennisextractie uit een Nederlandse tekst.
Abonneren op:
Posts (Atom)
