De komst van de smartphone tien jaar geleden zorgt ervoor dat we tegenwoordig meer informatie tot onze beschikking hebben dan ooit! We verwerken in drie maanden tijd meer data in ons hoofd dan onze grootouders in een mensenleven. Waar wij deze gegevens tot onze beschikking hebben, dient deze echter ook te worden opgeslagen. Dit brengt als probleem met zich mee dat er bij het opslaan ook een hoop ongewenste data wordt gegenereerd zonder structuur. Om deze ongestructureerde data te kunnen bevragen (en structuren) heeft Microsoft Azure Cognitive Search ontwikkeld. In deze blog richt ik mij dan ook op wat Azure Cognitive Search is en hoe je dit zelf kan gebruiken.
Wat is Azure Cognitive Search?
Figuur 1: Voorbeeld van beroemdheid herkenning met Azure Cognitive Search
Aan de slag met Cognitive Search
Iedereen met een Azure subscription kan beginnen met experimenteren met Azure Cognitive Search. Hierbij doorloop je het proces dat in de afbeelding hieronder is weergegeven. Het begint allemaal met je ongestructureerde data die wordt opgeslagen in een vorm van opslag. Vervolgens bevraag je deze gegevens middels verschillende skills, wat leidt tot een verbeterde ervaring op zoekgebied door op deze manier je ongestructureerde data te structuren als het ware. Om dit te realiseren kun je de stappen doorlopen die hieronder worden beschreven.
Figuur 2: Voorbeeld toevoegen van Azure cognitive search (hoog niveau)Het creëren van de magie bestaat uit vier stappen:
- Het aanmaken van de verschillende resources op de Azure Portal.
- Het definiëren van een skillset.
- Het creëren van een skillset middels een http-call.
- Controleren of de skillset functioneert.
1. Het aanmaken van resources op de Azure Portal’
- Blob storage
- Cognitive Services
- Azure Search
Deze resources zijn op dezelfde manier aan te maken als elke andere resource in de Azure Portal. Bij het uploaden van ongestructureerde data naar de blob storage moet je rekening houden met ondersteunde formats. Cognitive Services heeft als sterk punt dat deze verschillende vormen van data ondersteunt, zoals informatie uit andere databases (SQL, Cosmos DB, MySQL, MongoDB), documenten en/of afbeeldingen. Voor documenten geldt dat alleen PDF’s, office formats(.docx, PowerPoint), XML, JSON, ZIP- en gewone tekstbestanden worden gesupporterd. Afbeelding formats die gebruikt kunnen worden zijn .JPEG/.JPG, .PNG & .GIF.
2. Het definiëren van een skillset
Bron: Kennisavond presentatie Delta-N
De afbeelding hierboven toont de verschillende skills die beschikbaar zijn om tekst te extraheren uit ongestructureerde data. In de laatste versie van Azure Cognitive Search zijn de volgende skills beschikbaar:
- KeyPhraseSkill: Deze skill maakt gebruik een getraind model, welke de belangrijkste termen in een tekst zoekt. De “keyphrases” worden o.a. bepaald aan de hand van de plaatsing van de term in zinsverband en in welke mate deze voorkomt in de gehele tekst.
- Language Detection Skill: Deze skill maakt gebruik van een vooraf getraind model om de taal te identificeren waarin een tekst is geschreven. Als output stuurt hij de taalcode (gebaseerd op de ISO 6391) en naam van de taal terug. Verder bepaalt het algoritme de kwaliteit van de analyse middels een score tussen de 0 en 1. Naarmate de score dichter bij de 1 komt des te beter was de analyse van de taal.
- Merge Skill: Deze skill merged meerdere teksten bij elkaar in een enkele regel.
- EntityRecognitionSkill: Een skill uit de Text Analytics in Cognitive Services om verschillende entiteiten als personen, locaties, organisaties, hoeveelheden, datums, URL en email te herkennen. Momenteel wordt deze skill slechts ondersteund in het engels, spaans, frans, duits en italiaans, waarvan de laatste vier entiteiten alleen door de twee eerste worden gesupport.
- SentimentSkill: Deze skill herkent de ondertoon van de verschillende zinnen in een tekst. Middels het toekennen van een score tussen de 0 en 1 analyseert een getraind model of een tekst als positief of negatief dient te worden gezien.
- OcrSkill: OCR staat voor optical character recognition. Deze skill is in staat om de verschillende teksten uit afbeeldingen met tekst te halen en te herkennen. Deze skill wordt momenteel in vijfentwintig verschillende talen ondersteund en kan alleen worden gebruikt voor de bekendere afbeelding formats, zoals .GIF, .JPG en .PNG. Hierbij kan onderscheid worden gemaakt tussen handgeschreven en geprinte teksten.
- ImageAnalysisSkill: Deze extraheert de verschillende visuele kenmerken van afbeeldingen. Middels verschillende tags is het mogelijk om categorieën, tags, omschrijvingen, gezichten, het type van afbeelding, kleuren en volwassen content te filteren. Verder kunnen bekende monumenten en celebrities worden geïdentificeerd.
Na het bepalen van de skills die nodig zijn voor je pipeline, is het laatste dat je toevoegt de Cognitive Service door de naam en admin-key te specificeren.
3. Het creëren van een skillset middels een http-call
De derde stap om cognitive services aan Azure Search toe te voegen, is het aanmaken van de skillset middels een HTTP-call (“POST”) . Een dergelijke call bestaat uit een aantal onderdelen, namelijk de naam van je Azure Search Service op de portal, de aanduiding dat het om een skillset gaat, de naam van de skillset en de gebruikte API-versie (zie afbeelding hieronder). Verder dient in de headers van de request het content-type en de API-key van de Azure search service te worden gespecificeerd om de skillset op de juiste plaats aan te maken.
4. Controleren of de skillset functioneert
Conclusie
De ervaring leert dat het niet altijd even makkelijk is om door de bomen het spreekwoordelijke bos nog te zien wanneer je als developer met grote hoeveelheden data werkt. Het gebruik van Azure cognitive search zorgt ervoor dat wij in projecten het bevragen van data aanzienlijk kunnen verbeteren en het de ontwikkeltijd verminderd doordat we geen complexe zoek-queries bijvoorbeeld hoeven te schrijven.
Mocht je na het lezen van deze blog nog interesse hebben gekregen in de mogelijke toepassingen voor uw systeem of gewoon een vraag hebben die binnen deze blog niet is beantwoord, stuur dan een e-mail naar gideonk[at]delta-n.nl.
Gideon Kuijpers – Software developer