Competitive Intelligence mit Elasticsearch und Kapow

von Peter Soth

In diesem Blog-Post möchte ich über ein interessantes Vorhaben - in das wir aktuell mit einer Machbarkeitsstudie involviert sind - eines bekannten deutschen Handelskonzerns berichten. In aller Kürze: Es handelt sich um die Analyse von Online-Webshops des Wettbewerbs. Ich habe - auch weil ich gerne Wein trinke :-) - für den Blog-Post als Beispiel die Konkurrenz-Beobachtung von Online-Wein-Händlern herangezogen. 

Für dieses Szenario  gilt, dass die zu vergleichenden Produkte nicht über einen eindeutigen Kenner, wie bspw. den Barcode (EAN / GTIN) verglichen werden können. Dies ist der Grund, dass das Matching über eine Suchmaschine erfolgt. Das Fehlen eines unverkennbaren Identifikators wie bei Wein ist auch bei Tee oder Kaffee gegeben. Die Betrachtung von elektronischen Geräten kann hingegen fast ausschließlich mittels EAN-Code erfolgen.

Was ist Competitive Intelligence genau genommen?

In Wikipedia findet sich eine besonders brauchbare Erklärung hierfür. Bedeutsam ist hierbei die Abgrenzung von Competitive Intelligence (CI) zu Business Intelligence (BI) inklusive des Vergleichs von strukturierten (BI) zu unstrukturierten Informationen (CI). Für die Speicherung von unstrukturierten Daten bietet sich hier vorzüglich NoSQL bzw. Elasticsearch [1] - wie in unserem Fall - an.

Auszug aus Wikipedia-Artikel [2]:
»Die Begriffe Competitive Intelligence und Business Intelligence sind zwei unterschiedliche Ansätze, die sich ergänzen. Während Competitive Intelligence überwiegend Daten über Unternehmen analysiert, die außerhalb eines Unternehmens zu finden sind, befasst sich Business Intelligence fast ausschließlich mit der Auswertung firmeninterner Daten. Competitive Intelligence nutzt auch die internen Daten eines Unternehmens, wie etwa Zahlen aus dem Jahresabschluss, die der breiten Öffentlichkeit zur Verfügung gestellt werden. Es bedient sich jedoch überwiegend der unstrukturierten Daten aus dem Internet, oder anderer öffentlicher Informationsquellen. Business Intelligence wiederum basiert fast ausschließlich auf Zahlen aus dem Unternehmen und weniger auf unstrukturierten Daten. Es gibt Bestrebungen auch hier mehr Daten von außerhalb des Unternehmens einzubinden und durch die Einbettung von unstrukturierten Daten, sei es aus dem Unternehmen, oder von außerhalb des Unternehmens, den Zahlen einen Kontext zu verschaffen, kausale Erklärungen für bestimmte Kennzahlen anzubieten.«

Web-Crawling mit Kapow

Es gibt unzählige Tools, die für das Web-Crawling benutzt werden können. Kapow [3] besticht hier vor allem mit seiner intuitiven Oberfläche, die mit einer kurzen Einarbeitungszeit rasch - für die Umsetzung von Robots - angewendet werden kann. Zusätzlich unterstützt Kapow, im Vergleich zu alternativen Produkten, besonders effektiv JavaScript. Dies ist existentiell, da heutzutage fast jede Web-Seite JavaScript verwendet. Die Workflow-Eigenschaften von Kapow sollten nicht unerwähnt bleiben. Von Projekt zu Projekt muss dann entschieden werden, ob Kapow auch im Bereich Workflow einsetzbar ist. Ein weiterer bedeutender Punkt ist die Normalisierung der Daten. So heißt es „Weißwein“ in einem Shop und in einem anderen „Weisswein“. Mit Kapow ist es – vergleichbar mit einem ETL-Tool von einem Data-Warehouse – machbar, die Daten über die einzelnen Shops hinweg zu normalisieren. Als zusätzliches Beispiel könnte man die Vereinheitlichung von Bewertungen aufführen, die in einem Shop mit 5 Sternen und in einem anderen mit Prozentzahlen angegeben werden.

Warum eine Suchmaschine - wie Elasticsearch - verwenden?

Für den Vergleich von Preisen über unterschiedliche Shops hinweg ist eine eindeutige Kennung notwendig. Hierzu wird bspw. der EAN / GTIN Code benutzt. Die einzelnen Wein-Shops benutzen in unserem Fall allerdings proprietäre Kundennummern. Unter Zuhilfenahme einer Suchmaschine ist es jedoch machbar, die Artikel anhand ihres Artikelnamens - der während der Indizierung eine Trennung der Wörter durchführt - zu finden. Des Weiteren bietet eine Suchmaschine die Möglichkeit, eine Facettierte Suche – wie von Amazon bekannt – bereitzustellen. Eine Facettierte Suche mit blankem SQL aufzubauen ist ein äußerst aufwändiges Unterfangen, da SQL nicht für hierarchische Abfragen entwickelt wurde. Zusätzlich kann eine Suchmaschine wie Elasticsearch auch ausgesprochen umfangreiche Datenmengen (Big Data) verwalten. Auch sollte hierbei nicht vergessen werden, dass dieser Lösungsansatz das Projektbudget im Vergleich zu einer reinen Business-Intelligence-Lösung weniger belastet.

Facettierte Suche

Im untenstehenden Bild sieht man auf der linken Seite die facettierte Suche. Mit dieser besteht die Möglichkeit

Weine auf Shop-Ebene, Kategorie, Herkunftsland, Anbauregion, Winzer, Preise usw. zu filtern. Zusätzlich ist es denkbar, eine Volltext-Suche bzw. eine Fuzzy-Suche abzusetzen. Mit der Fuzzy-Suche kann man Informationen zu Weinen zu finden, bei denen bspw. der Weinname oder das Weingut falsch geschrieben wurden.

Analysen

Es können verschiedene Analysen durchgeführt werden. Das Beispiel rechts zeigt die Möglichkeit, ein Weingut zu suchen, um zu sehen, bei welchen weiteren Shops dieses zu finden ist. Es werden auch die Weine angezeigt, die ein Shop von einem Weingut führt. Dies kann bspw. interessant sein, wenn ein frischer Katalog geplant wird und man 
nicht dieselben Weingüter wie die Konkurrenz führen möchte.


Das Bild veranschaulicht, wie eine grafische Auswertung aussehen könnte. Hierbei wird der prozentuale Anteil von Weinen, die ein
Shop pro Land führt, angezeigt. Diese Grafiken könnten auch für weitere Informationen, wie Visualisierung von Preisspannen etc. dienen. In unserm Fall lässt der Screenshot erkennen, dass  dass bspw. ein Shop (grüner Balken) die meisten deutschen Weine führt. Ein anderer hingegen auf Weine aus Frankreich und Italien führt.

 

Preisvergleich

Wie oben erwähnt können wir die Preise der unterschiedlichen Shops nicht mit einem eindeutigen Kenner, wie den Barcode (EAN - Code) identifizieren. Hier kommt Elasticsearch ins Spiel. Über ein Groovy-Script werden alle Weine des Ausgangs-Shops mit denen des Wettbewerbs verglichen. Die Ergebnisse dienen zum Aufbau des Preisvergleichs-Index. Des Weiteren haben wir noch das Scoring getuned, z.B. Preise, die um mehr als 50% divergieren, werden ans Ende der Liste gestellt. Schaut man sich das Ergebnis an, so erhält man ein valides Matching von ca. 80% an Weinen, die beim Mitbewerb günstiger bzw. teurer sind. 100% sind nicht zu erreichen, da wir in unserem Fall keinen eindeutigen Kenner haben.

Fazit

Für die Begutachtung werden die Inhalte der Konkurrenz-Web-Seiten in eine Datenbank geladen und im selben Schritt gleichzeitig bereinigt. Für die Analyse wird eine Suchmaschine benutzt, die das Problem eines über alle Web-Shops nicht vorhanden EAN (Barcodes) löst.
Für die Analyse stehen vielfältige Möglichkeiten zur Verfügung:

  • Facettierte Filterung (analog zu Amazon) und Volltextsuche
  • Analysen der Weingüter, Preisspannen, Preisvergleich, Sortimentsverteilung, etc. eines Shops im Vergleich zum Wettbewerb
  • Graphische Darstellungen, bspw. Verteilung der Länder des Sortiments auf die einzelnen Web-Shops, etc.

Neben Elasticsearch wurde für das Analysefrontend Twitter-Bootstrap und AngularJS verwendet.

Update 22.10.2015

Vortrag von René Kießling (Lexmark) und Peter Soth (exensio) mit dem Titel:
"Das Leben ist zu kurz, um schlechten Wein zu trinken" - Wettbewerbsbeobachtung im Online-Handel
8. Jahreskonferenz des deutschen competitive intelligence forum (dcif) in Berlin

Competitive Intelligence am Beispiel Wein

Kategorien: ElasticsearchKapow

Zurück