Domain-adaptív természetes nyelvi interfész megvalósítása magyar nyelven V.

5.  rész

Szemantika, ontológia: Domain-adaptív szemantikai model felépítése

Cikksorozatunk előző részeiben az NLI rendszer bemenetének előállításával és annak morfológiai elemzésével foglalkoztunk. A következő részben a fogalomalkotásra és a szemantikára helyeződik a hangsúly.

A természetes nyelvű szövegfeldolgozás egyik központi eleme a szemantikai feldolgozás. A szintaktikai feldolgozó modulok - mint a szövegtisztító és a morfológiai - kimenetét bontja tovább a domain ontológiai modul. A modul célja, hogy a bejövő mondatban, mondatokban felismerje a fogalmakat, azok kapcsolatait, viszonyait.

Hirdetés

A fogalmak detektálása nem végezhető előzetes ismeret, tudás nélkül, így szükség van a modul megfelelő betanításásra. A betanítás során a feldolgozó megismeri a domain jellemző folgalmait, kapcsolatait, mondatbeli előfordulási lehetőségeit. Ezeket felhasználva később a felismerési fázisban képes lesz felismerni a mondat fogalmait.

A betanítás során XML formátumú adatokat használhatunk, amelyek előre meghatározott struktúrával kell rendelkezzenek. A valid fájlformátumot XSD leírásokkal biztosítjuk. A betanítás során a domain-t jellemző adatok adatbázisban is letárolásra kerülnek. Így könnyen biztosítható az incrementális és folyamatos tanulás: a már megtanult elemek nem vesznek el egy következő tanítás során.

A felismerés során egy olyan kimenetet kell előállítani, amelyet a parancsontológiai modul értelmezni tud és elő tudja állítani belőle az alkalmazás megfelelő kimenetét. Ennek formátuma az eddigi modulokéhoz hasonlóan szintén XML.

A modul két fő részre bontható:

  • mondatelemző almodul
  • fogalom detektáló almodul.

A modul struktúráját a következő ábra mutatja:

 

 

1. ábra: Az almodulok struktúrája

A domain leírására használt modell elemeit négy fogalom kategóriába sorolhatjuk:

  • absztrakt fogalom
  • predikátum fogalom
  • konkrét fogalom
  • attribútum fogalom.

Minden fogalom egy közös ősosztályból származtatható, ahogyan a következő ábra mutatja:

2. ábra: Fogalomtípusok hierarchiája

Az ontológiai modell felépítéséhez, illetve a szövegelemzéshez fontos almodul a mondatelemző, értelmező almodul. Ehhez a mondattan ismereteit kell összegyűjteni, szerkezetbe foglalni. Alapvetően 5 különböző mondatrészt tudunk elkülöníteni:

  • alany
  • állítmány
  • tárgy
  • határozó
  • jelző.

A mondatelemző modell felépítésekor az egyes mondatrészekhez felismeréséhez a következő adatokk összegyűjtésére van szükség:

  • Mit fejez ki?
  • Mik a kérdőszavai?
  • Milyen típusai, altípusai vannak?
  • Milyen ragokat kaphat?

A modul fő feladatai a következők:

  • mondat elemzése
  • mellékmondatok felismerése, kapcsolatainak meghatározása
  • fogalmak detektálása.

A folyamatokat a következő aktivitásdiagramok szemléltetik:

3. ábra: Mondatelemzés és fogalom-felismerés folyamatai

Nagyon fontos az összes modulnál, tehát itt is, hogy a megfelelő formátumú adatok kerüljenek feldolgozásra, illetve a megfelelő formátumú adatokat állítsák elő a különböző modulok. Az adatfolyam nyelve az XML, melynek a előre definiált séma leírásával lehet is is biztosítani a kívánt formátumot.

A fogalmak leírásához használt XSD leírás a következőkben látható:

<?xmlversion="1.0"encoding="UTF-8"?>

<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://minerva-soft.com/nli/dom/Concepts"

xmlns:local="http://minerva-soft.com/nli/dom/Concepts"

elementFormDefault="qualified">

<xs:complexTypename="Stems">

<xs:sequence>

<xs:elementname="Stem"type="xs:string"minOccurs="1" maxOccurs="unbounded"/>

</xs:sequence>

<xs:attributename="POS"type="xs:string"use="required"/>

</xs:complexType>

<xs:complexTypename="Values">

<xs:sequence>

<xs:elementname="Value"type="xs:string"minOccurs="1" maxOccurs="unbounded"/>

</xs:sequence>

</xs:complexType>

<xs:complexTypename="POSCodes">

<xs:sequence>

<xs:elementname="POSCode"type="xs:string"minOccurs="1" maxOccurs="10"/>

</xs:sequence>

</xs:complexType>

<xs:complexTypename="ConceptBase">

<xs:sequence>

<xs:elementname="Name"type="xs:anyURI"minOccurs="1"maxOccurs="1"/>

<xs:elementname="Stems"type="local:Stems"/>

</xs:sequence>

</xs:complexType>

<xs:complexTypename="AbstractConcept">

<xs:complexContent>

<xs:extensionbase="local:ConceptBase"/>

</xs:complexContent>

</xs:complexType>

<xs:complexTypename="PredicateConcept">

<xs:complexContent>

<xs:extensionbase="local:ConceptBase"/>

</xs:complexContent>

</xs:complexType>

<xs:complexTypename="IndividualConcept">

<xs:complexContent>

<xs:extensionbase="local:ConceptBase"/>

</xs:complexContent>

</xs:complexType>

<xs:complexTypename="AttributeConcept">

<xs:complexContent>

<xs:extensionbase="local:ConceptBase">

<xs:sequence>

<xs:elementname="Values"type="local:Values"/>

</xs:sequence>

</xs:extension>

</xs:complexContent>

</xs:complexType>

<xs:complexTypename="ConnectionBase">

<xs:sequence>

<xs:elementname="Parent"type="xs:anyURI"minOccurs="1"/>

<xs:elementname="Child"type="xs:anyURI"minOccurs="1"/>

</xs:sequence>

</xs:complexType>

<xs:complexTypename="ISAConnection">

<xs:complexContent>

<xs:extensionbase="local:ConnectionBase"/>

</xs:complexContent>

</xs:complexType>

<xs:complexTypename="PredicateConnection">

<xs:complexContent>

<xs:extensionbase="local:ConnectionBase">

<xs:sequence>

<xs:elementname="POSCodes"type="local:POSCodes"minOccurs="1"/>

<xs:elementname="Required"type="xs:boolean"minOccurs="1" default="false"/>

<xs:elementname="Default"type="xs:string"minOccurs="0"/>

</xs:sequence>

</xs:extension>

</xs:complexContent>

</xs:complexType>

<xs:complexTypename="AttributeConnection">

<xs:complexContent>

<xs:extensionbase="local:ConnectionBase"/>

</xs:complexContent>

</xs:complexType>

<xs:complexTypename="Concepts">

<xs:sequence>

<xs:elementname="Concept"type="local:ConceptBase"minOccurs="1" maxOccurs="unbounded"/>

</xs:sequence>

</xs:complexType>

<xs:complexTypename="Connections">

<xs:sequence>

<xs:elementname="Connection"type="local:ConnectionBase"minOccurs="1" maxOccurs="unbounded"/>

</xs:sequence>

</xs:complexType>

<xs:elementname="ConceptsDictionary">

<xs:complexType>

<xs:sequence>

<xs:elementname="Concepts"type="local:Concepts"/>

<xs:elementname="Connections"type="local:Connections"/>

</xs:sequence>

</xs:complexType>

</xs:element>

4. ábra: Fogalmak XSD sémája

A domain ontológia modul felépítése igen komplex, sok XML binding modell elemmel, ezért fontos a csomagok megfelelő strukturálása. Az implementációs terv a következő csomagokat tartalmazza:

  • com.minervasoft.nli.dom: a modul fő osztályai, interfészei
  • com.minervasoft.nli.dom.analyser: a mondatelemző osztályai
  • com.minervasoft.nli.dom.exception: a kivételkezelés elemei
  • com.minervasoft.nli.dom.model: a modell osztályok, interfészek
  • com.minervasoft.nli.dom.model.constituents: a mondatrészek leírásának osztályai
  • com.minervasoft.nli.dom.service: a szolgáltatás osztályok definiciói.

Konklúzió

A cikksorozat jelen részében meghatároztuk a fogalomépítés alapelemeit, struktúráját. Nagyon fontos, hogy a mondatok fogalmait nagyon gyorsan találjuk meg, mert a feldolgozásnak közel valós időben kell működnie. Így fontos a jól strukturáltság, az egyszerűség és a rekurzív algoritmusok mélységének minél lentebb szorítása. Láthattuk, hogy a fő folyamatok milyen lépésekből állnak - és azt is, hogy az implemetáció során milyen ajánlott csomagstruktúrát célszerű tartani.

A cikksorozat következő részében a parancskonverzióval, a fogalmak parancshoz, parancsok paramétereihez történő kapcsolásával foglalkozunk.

Jelen publikáció eredményei a GOP-1.1.1-09/1-2009-0028 számú, “Domain- és nyelvadaptív természetes nyelvű parancsfelület prototípusának kidolgozása” című projekt keretében születtek.

Azóta történt

Előzmények

Hirdetés