Hoe AI te gebruiken voor het zoeken en groeperen van ongestructureerde gegevens
Stel je voor dat je veel ongestructureerde gegevens hebt, of het nu gaat om zakelijke documenten, interacties op sociale media, communicatiescans of video’s. U wilt vergelijkbare inhoud betrouwbaar zoeken en groeperen. Of u moet specifieke informatie extraheren om uw database te verrijken. In beide gevallen kunnen semantische inbeddingen u helpen uw doelen te bereiken en een stap verder te gaan dan op trefwoorden gebaseerde methoden.
Snelle en betrouwbare toegang tot informatie staat bij alle organisaties hoog in het vaandel. Zonder dit lijden de processen en de communicatie samen of mislukken ze allemaal.
In dit bericht leer je hoe je het zoeken en groeperen van ongestructureerde tekstdocumenten aanpakt. Een aanzienlijk deel van de methodologie is echter vergelijkbaar voor verschillende gegevenstypen. In de komende artikelen zullen we meer onderwerpen over ongestructureerde documenten behandelen.
Organisaties realiseerden zich dit al aan het begin van het computertijdperk in de jaren tachtig, toen de populariteit van relationele databases aanzienlijk groeide dankzij efficiënte query’s, indexering en meer betaalbare opslag. Relationele databases, die gegevens opslaan in een reeks gerelateerde tabellen, zijn de facto een standaard voor het opslaan en openen van informatie. Het tabelformaat is vaak voldoende om de kritieke gegevens van het bedrijf vast te leggen, zoals informatie over de bestellingen of klanten. Met behulp van programmeertalen zoals SQL of Datalog kan men op een gestructureerde manier de database opvragen om toegang te krijgen tot de gewenste informatie.
De talen die worden gebruikt voor het opzetten en doorzoeken van relationele gegevensbronnen zijn goed geoptimaliseerd, gemakkelijk toegankelijk en snel. Je zou kunnen denken dat het zoeken naar gewenste informatie een opgelost probleem is. Er is echter één probleem: 80-90% van de gegevens is ongestructureerd [1]. Voorbeelden zijn documentverzamelingen zoals facturen, records, e-mails of rich media zoals foto’s of video’s. Het relationele datamodel is niet langer geschikt. Betrouwbaar zoeken in deze gegevens is veel moeilijker of zelfs onmogelijk. Toch slaat dit soort gegevens belangrijke informatie op die kan worden gebruikt voor:
- structuur opleggen aan de ongestructureerde datadump
- zoeken
- procesoptimalisatie (bijv. klantenondersteuning)
- nalevingsborging
- verrijking van de tabelgegevens
en nog veel meer.
In dit bericht leer je hoe je het zoeken en groeperen van ongestructureerde tekstdocumenten aanpakt. Een groot deel van de methodologie is echter vergelijkbaar voor verschillende gegevenstypen. In de komende artikelen zullen we meer onderwerpen over ongestructureerde documenten behandelen.
Klassieke benadering: lexicaal zoeken
In een notendop, lexicaal zoeken gebruikt de woorden die in de zoekopdracht worden gebruikt om documenten uit de documentenverzameling met de grootste overlap tussen zoekopdrachten en documenten te rangschikken. Er zijn enkele toeters en bellen, zoals het filteren van zoekopdrachten en augmentatie. Ze verbeteren vaak de resultaten, maar daar gaan we in dit artikel niet op in. Als je geïnteresseerd bent, zijn er tal van geweldige bronnen [2][3].
Wat is het probleem met lexicaal zoeken?
Het belangrijkste probleem bij deze benadering is het onvermogen om zoekopdrachten in natuurlijke taal uit te voeren. Het zoekresultaat is afhankelijk van de exacte overeenkomsten, dus de semantisch vergelijkbare resultaten worden niet geretourneerd.
Laten we naar een voorbeeld kijken. Stel dat we een contract tussen sommige partijen willen zoeken. We geven een vraag uit “contract tussen technologiebedrijven”. Als het document dat u zoekt echter de titel “bindende overeenkomst tussen Apple en Samsung” heeft, kan het lexicale zoeken mislukken.
Hetzelfde uitdrukken in verschillende woorden is ook een uitdaging voor klassieke zoekmachines. Dit kan ertoe leiden dat de zoekmachine compleet andere resultaten oplevert voor semantisch equivalente zoekopdrachten.
Het zoeken naar afbeeldingen en misverstanden over zoekopdrachten die voortkomen uit woordvolgorde zijn twee andere veelvoorkomende problemen van klassieke zoekmachines.
Dus hoe kunnen we de hierboven beschreven problemen aanpakken? Het antwoord is semantische inbedding !
Semantische inbeddingen voor zoeken en groeperen
Het belangrijkste idee dat ten grondslag ligt aan semantisch zoeken is eenvoudig: geef tekst weer als een lijst met getallen, dwz een vector. Deze vector is wat semantische inbedding wordt genoemd. Conceptueel staat elk getal in de vector voor een kenmerk van de tekst. Deze benadering stelt u vervolgens in staat om de verschillende inbeddingen op enige afstand met elkaar te vergelijken.
Laten we naar een voorbeeld kijken. Stel dat we vectoren hebben die productrecensies vertegenwoordigen. Elke vector heeft twee dimensies: sentiment en informativiteit. Laten we zeggen dat we op zoek willen naar kritische maar informatieve recensies om ons product te verbeteren. We kunnen dan onze vectoren bevragen met een laag sentiment en een hoge informativiteit.
Deze aanpak kan eenvoudig worden uitgebreid tot een zoekopdracht op basis van zoekopdrachten. Gegeven een vectorrepresentatie van een query (of zelfs een document), kunnen we zoeken naar de meest vergelijkbare vectorrepresentatie van een document uit onze documentenverzameling.
Uiteraard kunnen we deze aanpak hergebruiken voor groepering. Gegeven een verzameling vectoren, kunnen we een van de vele clusteringalgoritmen [4] gebruiken om groepen zoals klantsegmenten binnen de gegevens te vinden.
Merk op dat we niet (gemakkelijk) elke dimensie van de vector kunnen interpreteren die we van een model verkrijgen.
Toch best netjes, toch?
De vraag die je nu misschien hebt, is hoe we aan deze semantische inbeddingen komen. Leuk dat je het vraagt!
De inbeddingen kunnen worden verkregen door gebruik te maken van zin-encoders-modellen [5] die een vector met een vaste grootte retourneren, meestal met een dimensionaliteit tussen 128 en 1024. Dit zijn meestal varianten van het deep learning-taalmodel genaamd BERT [6]. Maar maak je geen zorgen als dat je niet veel zegt.
De zin-encodermodellen zijn geoptimaliseerd met een duidelijk doel. Stel je voor dat je veel vergelijkbare zinparen hebt. Als het model vervolgens een zin van het paar krijgt, moet het voorspellen welke van een reeks willekeurig gesamplede andere zinnen eraan is gekoppeld in onze dataset. Op deze manier leert het model semantische gelijkenis! Als je meer wilt weten over dit onderwerp [7] bevat een lijst met geweldige publicaties.
Beperkingen
Hoewel de semantische inbeddingen buitengewoon nuttig zijn, hebben ze nog steeds last van beperkingen.
Met name de zeer korte en lange documenten leveren mogelijk geen nauwkeurige inbedding op. Waar de eerste last heeft van te weinig informatie, heeft de tweede het tegenovergestelde probleem. Lange documenten kunnen veel verschillende onderwerpen behandelen, wat kan leiden tot onnauwkeurige modelinterpretatie. Een remedie hiervoor is om de tekst in brokken te verwerken en vervolgens de resulterende vectoren slim te combineren.
Een andere beperking is de snelheid. Zincoderingsmodellen zijn afhankelijk van transformatorarchitecturen die GPU’s nodig hebben voor snelle inferentie. Voor grotere datasets moet men ervoor zorgen dat de juiste middelen beschikbaar zijn. Men zou ook moeten overwegen om een hybride model van lexicaal en semantisch zoeken te gebruiken. Soms is het de enige haalbare optie.
Conclusie
In dit bericht hebben we de motivatie voor het verwerken van ongestructureerde gegevens, de methodologie en zwakke punten van de klassieke benadering en semantische inbeddingen samen met de beperkingen ervan besproken.
Het gebruik van semantische inbeddingen is een universele tool die de prestaties kan verbeteren bij zoeken, clustering en andere taken die hier niet worden behandeld, zoals samenvattingen.
Bij Zenit maken we uitgebreid gebruik van de nieuwste tools voor het omgaan met ongestructureerde data. Als jouw bedrijf kennis wil halen uit de ongestructureerde data, neem dan contact op, dan zoeken we het samen uit!
Referenties:
[1] https://monkeylearn.com/blog/structured-data-vs-unstructured-data/
[2] https://dtunkelang.medium.com/query-understanding-divided-into-three-parts-d9cbc81a5d09
[3] https://towardsdatascience.com/understanding-the-search-query-part-i-632d1b323b50
[4] https://en.wikipedia.org/wiki/Cluster_analysis
[5] https://arxiv.org/pdf/1908.10084.pdf
[6] https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270