Warum ĂŒberhaupt NER?
Du willst wissen, wer, was und wo im Text erwÀhnt wird.
Kunden, Firmen, Orte â automatisch erkennen.
Access selbst kann das nicht. Aber per API oder Python im Hintergrund funktioniertâs.
Ich zeig Dir, wie Du aus Access Texte an eine NER-Engine schickst und sauber zurĂŒckloggst.
Varianten fĂŒr die NER-Analyse
Option | Technologie | Aufwand |
---|---|---|
Azure Text Analytics | REST API | mittel |
spaCy + Flask | Python lokal | hoch |
Hugging Face API | REST | mittel |
OpenAI / GPT | promptbasiert | einfach |
FĂŒr diesen Beitrag nehmen wir Azure und spaCy.
Tabellenstruktur (Beispiel)
Tabelle | Zweck |
---|---|
tblTexte | Eingabetexte |
tblEntities | Ergebnisse: Typ, Wert, Position |
Azure NER per REST aus Access ansprechen
Schritt 1: Azure Ressource anlegen
- Azure âCognitive Servicesâ erstellen
- Region, Key und Endpoint merken
- Sprache: z.âŻB.
de
fĂŒr Deutsch
Schritt 2: VBA-Funktion
Function RufeAzureNER(text As String) As String
Dim http As Object
Dim apiKey As String
Dim endpoint As String
Dim jsonRequest As String
apiKey = "DEIN_API_KEY"
endpoint = "https://DEINE_REGION.api.cognitive.microsoft.com/text/analytics/v3.1/entities/recognition/general"
jsonRequest = "{""documents"":[{""id"":""1"",""language"":""de"",""text"":""" & Replace(text, """", "\""") & """}]}"
Set http = CreateObject("MSXML2.ServerXMLHTTP")
http.Open "POST", endpoint, False
http.setRequestHeader "Content-Type", "application/json"
http.setRequestHeader "Ocp-Apim-Subscription-Key", apiKey
http.send jsonRequest
RufeAzureNER = http.responseText
End Function
Ergebnis extrahieren
Function ExtrahiereAzureEntities(json As String) As String
Dim sc As Object
Set sc = CreateObject("ScriptControl")
sc.Language = "JScript"
sc.AddCode "function parse(j){" & _
"var r='';" & _
"var ents=JSON.parse(j).documents[0].entities;" & _
"for(var i=0;i<ents.length;i++){" & _
"r += ents[i].text + '|' + ents[i].category + '|' + ents[i].offset + '\n';}" & _
"return r;}"
ExtrahiereAzureEntities = sc.Run("parse", json)
End Function
Speicherung in Access
Sub SpeichereEntities(textID As Long, json As String)
Dim daten As String
Dim zeilen() As String
Dim teile() As String
Dim i As Long
daten = ExtrahiereAzureEntities(json)
zeilen = Split(daten, vbLf)
For i = 0 To UBound(zeilen)
If Trim(zeilen(i)) <> "" Then
teile = Split(zeilen(i), "|")
If UBound(teile) = 2 Then
CurrentDb.Execute "INSERT INTO tblEntities (TextID, Entitaet, Kategorie, Position) VALUES (" & _
textID & ", '" & Replace(teile(0), "'", "''") & "', '" & teile(1) & "', " & teile(2) & ")"
End If
End If
Next i
End Sub
Alternative: spaCy mit Flask (lokal)
Python-Server starten:
from flask import Flask, request, jsonify
import spacy
app = Flask(__name__)
nlp = spacy.load("de_core_news_md")
@app.route("/ner", methods=["POST"])
def ner():
text = request.json["text"]
doc = nlp(text)
ents = [{"text": ent.text, "label": ent.label_, "start": ent.start_char} for ent in doc.ents]
return jsonify(ents)
app.run(port=5001)
Access-Aufruf per VBA:
Function RufeSpaCyNER(text As String) As String
Dim http As Object
Dim jsonRequest As String
Set http = CreateObject("MSXML2.ServerXMLHTTP")
http.Open "POST", "http://localhost:5001/ner", False
http.setRequestHeader "Content-Type", "application/json"
jsonRequest = "{""text"":""" & Replace(text, """", "\""") & """}"
http.Send jsonRequest
RufeSpaCyNER = http.responseText
End Function
Beispiel: Verarbeitung im Formular
Private Sub btnAnalysieren_Click()
Dim textID As Long
Dim text As String
Dim json As String
textID = Me.txtID
text = Me.txtEingabetext
json = RufeAzureNER(text)
SpeichereEntities textID, json
MsgBox "NER abgeschlossen."
End Sub
Was erkennt NER?
Kategorie | Beispiele |
---|---|
Person | âAngela Merkelâ, âHerr MĂŒllerâ |
Location | âBerlinâ, âElbeâ, âEuropaâ |
Organization | âSiemensâ, âEU-Kommissionâ |
Date/Time | â1. Maiâ, â2025â, âgesternâ |
Product | âiPhoneâ, âVW Golfâ |
Was Du beachten musst
- JSON kann je nach Anbieter leicht anders strukturiert sein
- spaCy lĂ€uft nur lokal â kein Hosting ohne Aufwand
- Azure ist schnell, aber hat Preislimits
- NER ist nie 100âŻ% korrekt â menschliche PrĂŒfung sinnvoll
„Du willst wissen, wer im Text auftaucht? Frag Deine Datenbank.“
Wenn Du sowas brauchst: Ich helf Dir beim Einbau.
Du sprichst Access â ich ĂŒbersetz das fĂŒr die KI.
Keine Antworten