Verwandtschaftssuche – Funktionen zur statistisch semantische Suche


Andreas Rauch

Im vorhergehenden Artikel Statistisch semantische Suche haben wir das notwendige Werkzeug für den SQL Server eingebunden: Die Semantik Datenbank und den Microsoft Office Paketfilter.

imageimage

Nun soll die Semantik auch mal für uns tun. Mit Hilfe 3er Funktionen können wir einiges herausfinden:

Funktion 1: SEMANTICKEYPHRASETABLE

SEMANTICKEYPHRASETABLE hilft uns dabei die Schlüsselwörter aus Dokumenten herauszufinden.

Der Funktionsrumpf sieht dabei so aus:

SEMANTICKEYPHRASETABLE ( table, { column | (column_list) | * } [ , source_key ] ) --So zum Beispiel DECLARE @DocID hierarchyid SELECT @DocID = path_locator from Akten where name = 'Workflow.docx'; SELECT SEMANTIKTAB.keyphrase, SEMANTIKTAB.score from SEMANTICKEYPHRASETABLE ( Akten, file_stream, @DocID ) AS SEMANTIKTAB ORDER BY SEMANTIKTAB.score DESC;

Und hier mein Ergebnis dazu:

imageimage

So finden wir schon mal raus, welche Schlüsselwörter ein Dokument enthält und in welcher Gewichtung. So könne wir schon mal rausfinden welche Dokumente ähnlich sind.

Funktion 2: SEMANTICSIMILARITYTABLE

Die Funktion gibt als Ergebnis die Dokumente zurück, die aufgrund der Semantik dem angegeben ähneln, sprich sich in den Schlüsselwörtern inkl Gewichtung ähnlich sind.

SEMANTICSIMILARITYTABLE ( table, { column | (column_list) | * }, source_key ) --Zunächst suchen wir uns die Idee des Dokuments raus.. DECLARE @DocID hierarchyid SELECT @DocID = path_locator from Akten where name = 'Workflow.docx'; SELECT mft.name, sst.score FROM SEMANTICSIMILARITYTABLE ( Akten, file_stream, @DocID ) AS sst INNER JOIN Akten mft ON path_locator = matched_document_key ORDER BY score DESC


Und so sieht mein Ergebnis hier aus..

image

Je höher der Score, umso ähnlicher das Dokument.

Ach ja.. Wenn zwei oder mehr Dokumente den gleichen Score aufweisen, kann man davon ausgehen, dass es sich um Kopien handelt Zwinkerndes Smiley

Funktion 3: SEMANTICSIMILARITYDETAILSTABLE

Warum ist dieses Dokument eigtl ähnlich mit einem anderen. Die Funktion SEMANTICSIMILARITYDETAILSTABLE schlüsselt uns das etwas genauer aus:

SEMANTICSIMILARITYDETAILSTABLE ( table, source_column, source_key, matched_column, matched_key ) DECLARE @DocID hierarchyid DECLARE @DocIDVergleich hierarchyid SELECT @DocID = path_locator from Akten where name = 'Workflow.docx'; SELECT @DocIDVergleich = path_locator FROM Akten WHERE name = 'Security.docx'; SELECT TOP(5) TAB.keyphrase, TAB.score FROM SEMANTICSIMILARITYDETAILSTABLE ( Akten, file_stream, @DocID, file_stream, @DocIDVergleich ) AS TAB ORDER BY TAB.score DESC;

 

image

Voila.. und das ist unser Ergebnis. vermutlich hatte alles was mit Sharepoint zu tun Zwinkerndes Smiley

Die Semantik belastet natürlich unseren Volltext ein Stück mehr, aber die Möglichkeiten, die sich daraus ergeben sind unerschöpfllich, vor allem, wenn man bendekt wie extrem schnel ldie Volltextindizierung geworden ist.

Kommentare sind geschlossen