Projekt „InstaLoc“ – Wechsel der Datenscrapertechnologie

Nach diversen Gesprächen, Socialmediabeobachtungen usw. entschied ich mich zur festen Einbindung eines weiteren Datenscraperansatzes.
Dieser interpretiert nun die Stadt nicht als Konstruktion mit einer Grenze, sondern als „Gegend“ mit der Stadt als Mittelpunkt.

Konkrete Beispiele können sein:

Datenbank „Mainz“ -> Mainz + Wiesbaden
Datenbank „Apolda“ -> Apolda + Weimar + Jena + div. Dörfer (falls auslesbar)
Datenbank „Leipzig“ -> Leipzig + Halle + Merseburg

Der Testlauf zum Raum „Mainz“ ergab ca. 25.700 auslesbare Locations zu max. 2000 Beiträge und ein Datenerfassungsdurchlauf beansprucht etwas um die 24 Stunden.

Im Zuge der nächsten Updates werden weitere Erhebungsmethoden getestet und ggf. in die Prozeduren eingebaut.

Die massive Datenausweitung und das feinmaschig erfasste Locationnetz erlaubt nun (auch nach Rückmeldung der Kolleg_innen) die Beantwortung folgender Fragen:

(1) Wo befinden sich ansprechbare (!) Zielgruppen?
(2) Was machen die ansprechbaren Zielgruppen an welchen Orten (gez. durch die Tagwolken, Fotofilter, Emotionsäußerungen etc.)=
(3) Wie sind die Bewegungsstrecken von ansprechbaren Zielgruppen gestaltet? (Hotel->Bar, Hotel->Museum, FashionStore->Bar->Club usw.)
(4) …

Anwendungsszenarien der interpretierbaren Rohdaten / Analysedaten können auch sein:
(1) Genauere Auswahl von Plakatplätzen in Städten
(2) Genauere Auswahl und Briefings von Promotiontrupps (Flyerverteilungen, Werbegeschenkeverteilungen)
(3) div. politische Analysen, pol. Trendanalysen
(4) Trendanalysen in Bezug auf Orte und Ortsverbindungen für Auf- und Abbau v. lokalen Geschäften
(5) Konkurrenzanalysen auf Locationbasis (hier: Sprache und Interaktionen)
(6) Möglichkeiten: Verkauftrigger / Lead- und Saleunterstützungen
(7) Kundengruppen: Interessensschwerpunktanalyse- und reportings (Freizeitverhalten u.a.)

An der Stelle bedanke ich mich bei Georg Grohs, Dr. Klaus Holthausen / Andrea Fetzer (Roland Berger), Lars Heinemann, Mitossi und Dirk Schumann für die treibende und kreative Beurteilung des Projektes.

InstaLOC-Projekt, Freigabe der Version 0.10 Beta

Ich habe soeben die Freigabe für die Versionsnummer 0.10Beta erteilt. Die entsprechende Datei befindet sich in dem – intern geteilten – Dropboxordner und trägt den Namen „insta_loc_15082018_010Beta.zip“.

Bedienungsanleitungsvideos:
InstaLoc-Forschungsprojekt/Software (Basisfunktionen – Likes): https://youtu.be/CkZSVPC8KJY
InstaLoc-Forschungsprojekt/Software (Basisfunktionen – Accountebene): https://youtu.be/VXPzhanL-vw
InstaLoc-Forschungsprojekt/Software (Filter: Tagwolkenanalyse, Locations): https://youtu.be/qh2bowhnMbI
InstaLoc-Forschungsprojekt/Software (Tagwolkenanalyse, Locations): https://youtu.be/5aefOGaGy-o
InstaLoc-Forschungsprojekt/Software (Tagwolkenanalyse): https://youtu.be/Ey9B6Skm9Y4

Wir vergeben an 2 besondere und ausgewählte Kolleg_innen jeweils eine Kopie der Auswertungssoftware und sind offen für entsprechende Gespräche, Anfragen und Nachfragen.

Update: IG Locationclient v.0.9B und die Einführung des Prinzips „Themenwelten“

Diverse Überlegungen, Gespräche und Dateninterpretationsideen ergaben die Notwendigkeit der Einführung sog. „Themenwelten“. Die aktuelle Version der Auswertungssoftware erlaubt nun den Auswurf von Überblickstabellen.

Beispiele:
(1) Datenschau nach vordefinierten Locations
-> Suche nach dem Substringschema
themenwelt_loc_ueberblick.xlsx

(2) Datenschau nach vordefinierten Tags|Terms
-> Suche nach dem Substringschema UND Suche nach dem genauen Ausdruck
themenwelt_tags_ueberblick.xlsx

Die verlinkten Beispiele sind Probedatenauszüge, um u.a. auch die Performance zu testen.

ToDo für die Versionsnummer 0.10Beta:

(1) Zielgruppenidentifikation nach folgenden Fragesschemata (Übersetzung in SQL folgt).

(a) Welche Gruppen sprechen in [Ort] über [Tag 01|Tag02|Tag03]?
(b) Welche Gruppen springen von [Ort 01] zu [Ort 02]?
(b) Welche Gruppen springen von [Ort 01] zu [Ort 02] und sprechen über [Tag 01|Tag02|Tag003]?

(2) Aktivierung der Beliebtheitsindikatoren für die Datenschau.

(a) Welche Tags sind beliebt?
-> Einbeziehung der Likes und Comments in Form der Zahlen.
-> (Er)findung eines geeigneten Bewerungssystems auf Basis der Nutzwertanalyse.

(b) Welche Orte sind beliebt?
-> siehe (a)
-> Erweiterung um die Begutachtung der Postzeitstempel.

Locationprojekt, aktuelle Datenbanken (Stand: 03.08.2018)

In der aktuellen Woche fand ich Gelegenheit zu einer finalen Optimierung der Datenerhebungsfunktionen und der maximale Output beträgt nun 5 Städte / Arbeitstag (ca. 8Stunden). Der aktuelle Datenbestand umfasst nun 41 SQLite-Datenbanken und lässt sich hier (Download: loc_datenbestand.xlsx) einsehen.

Ein Update der Auswertungssoftware ist für den 05.08.2018 geplant.

Kontakte? Anfragen gern unter office(at)pontipix.de.

(Instagram)-Locationprojekt, Hashtagcloudanalysen nach Usernamen (Leipzig-Datenbank)

Das Programm kann, in der aktuellen Version, zwischen „%suchwort%“ und „=suchwort“ unterscheiden. Bei der letzteren Option werden alle Ergebnisse ausgeworfen, wo der Term – als Hauptstring – in den Tagclouds zu finden ist (Gegenteil zu der Substringvariante).

Inhaltsschema:
Spalte (1) -> Nummer
Spalte (2) -> Username
Spalte (3) -> Tagcloud
Spalte (4) -> Summe Tagcloud, Vorkommen der Tagcloud je Username

Hinweis:
Sämtliche Accountnamen sind in den nachfolgenden Datensätzen – selbstverständlich – verschlüsselt.

(1) Substring: „city“: city_usersum
(2) Substring: „mensa“: mensa_usersum
(3) Hauptstring: „sport“: -sport-_usersum
(4) Substring: „sport“: sport_usersum
(5) Substring: „fest“: fest_usersum
(6) Substring: „farbfilm“: farbfilm_usersum
(7) Substring: „sommer“: sommer_usersum
(8) Substring: „frühling“: frühling_usersum
(9) Substring: „herbst“: herbst_usersum
(10) Substring: „stadt“: stadt_usersum
(11) Hauptstring: „messe“: -messe-_usersum
(12) Substring: „hafen“: hafen_usersum
(13) Substring: „halle“: halle_usersum
(14) Substring: „design“: design_usersum
(15) Substring: „hochschule“: hochschule_usersum
(16) Substring: „kunst“: kunst_usersum
(17) Substring: „film“: film_usersum
(18) Substring: „dokleipzig“: dokleipzig_usersum
(19) Substring: „leipzig“: leipzig_usersum
(20) Hauptstring: „urlaub“: -urlaub-_usersum
(21) Substring: „urlaub“: urlaub_usersum
(22) Substring: „bar“: bar_usersum
(23) Substring: „deko“: deko_usersum
(24) Substring: „feiern“: feiern_usersum

Locationprojekt, aktuelle Datenbanken

Mit Optimierung des Scrapers wurde der Output auf 3 Städte (zu 1000-3.500 Locations mit 2000 Medien / Location) je Durchlauf erhöht.

Der Datenbestand umfasst (derzeit) das folgende Volumen:

Datenbank: locations_berlin.db
Anz. Einträge: 178640
Anz. Filter: 45
Anz. Postings: 177454
Anz. Tagclouds: 113530
Anz. Locations: 1193
Anz. Accounts: 93386
Anz. Zeitstempel: 177089

Datenbank: locations_koeln.db
Anz. Einträge: 251900
Anz. Filter: 45
Anz. Postings: 247799
Anz. Tagclouds: 174640
Anz. Locations: 2294
Anz. Accounts: 111119
Anz. Zeitstempel: 247224

Datenbank: locations_leipzig.db
Anz. Einträge: 165272
Anz. Filter: 44
Anz. Postings: 161236
Anz. Tagclouds: 115534
Anz. Locations: 1507
Anz. Accounts: 62306
Anz. Zeitstempel: 160963

Datenbank: locations_london.db
Anz. Einträge: 647379
Anz. Filter: 45
Anz. Postings: 635175
Anz. Tagclouds: 363882
Anz. Locations: 3254
Anz. Accounts: 363278
Anz. Zeitstempel: 630993

Datenbank: locations_muenchen.db
Anz. Einträge: 257895
Anz. Filter: 45
Anz. Postings: 252130
Anz. Tagclouds: 175017
Anz. Locations: 2445
Anz. Accounts: 126274
Anz. Zeitstempel: 251593

Datenbank: locations_paris.db
Anz. Einträge: 409348
Anz. Filter: 45
Anz. Postings: 399706
Anz. Tagclouds: 236446
Anz. Locations: 1158
Anz. Accounts: 241158
Anz. Zeitstempel: 396092

(Instagram)-Locationprojekt, Hashtagcloudanalysen nach Orten (Berlin-Datenbank)

Heute fand ich Gelegenheit, das Projekt in einer ersten Version zu compilieren. Dieses beinhaltet auch die Funktion der Auflistung von Tagclouds nach Locations inkl. deren Aufsummierung.

Folgende Dateien liefern erste Interpretationsgrundlagen zu den Locationbewertungen.

Inhaltsschema:
Spalte (1) -> Nummer
Spalte (2) -> Tagcloud
Spalte (3) -> Location
Spalte (4) -> Location-ID
Spalte (5) -> Summe Tagcloud, Vorkommen der Tagcloud in der Location

Beispiele.
Die nachfolgenden Datensätze basieren auf die Query „like ‚%suchwort%'“ und erfragen die Ergebnisse auf Substringebene.

(1) Substring: „working“: working_locsumm
(2) Substring: „work“: work_locsumm
(3) Substring: „office“: office_locsumm
(4) Substring: „neukölln“: neukölln_locsumm
(5) Substring: „kunst“: kunst_locsumm
(6) Substring: „job“: job_locsumm
(7) Substring: „happy“: happy_locsumm
(8) Substring: „foodporn“: foodporn_locsumm
(9) Substring: „food“: food_locsumm
(10) Substring: „feiern“: feiern_locsumm
(11) Substring: „fashion“: fashion_locsumm
(12) Substring: „coworking“: coworking_locsumm
(13) Substring: „berlin“: berlin_locsumm
(14) Substring: „advokat“: advokat_locsumm

Datenexporte: Instagram-Locationprojekt, Teil (1)

(1) Locationrecherche nach Auflistung der aktiven Accounts

SELECT location, Anz_user from(
Select location, count(username) as Anz_user from locations GROUP BY location ) as my_table
WHERE (Anz_user >= 2) order by Anz_user DESC

Diese Abfrage listet alle Locations auf, wo mind. 2 Accounts Postings abgesetzt hatten.
Datei (Paris): loc_2

(2) Locationrecherche nach Auflistung der aktiven Accounts, Anpassung nach Locationtyp

SELECT location as Ort, Anz_user from(
Select location, count(username) as Anz_user from locations GROUP BY location ) as my_table
WHERE (Anz_user >= 2) AND (location like '%museum%') order by Anz_user DESC

Diese Abfrage listet alle Locations auf, wo mind. 2 Accounts Postings abgesetzt hatten und erlaubt die Feinprüfung auf Locationtyp.
Datei (Paris), Hotel: loc_2_hotel
Datei (Paris), Museum: loc_2_museum

(3) Location- und Accountauflistung nach Suchwort (Tagsubstring)
select location, tag, username from locations where tag like '%fashion%' group by username;

Diese Abfrage listet alle Locations und Accounts auf, welche etwas zu „Fashion“ gepostet hatten
Datei (Paris), „fashion“: paris_fashion

(4) Userauflistung nach Suchwort UND Mindestaufkommen in Bezug auf die Locationaufsummierung

SELECT username, numb from(
Select username, tag, count(location) as numb from locations GROUP BY username ) as my_table
WHERE (numb >= 2) and (tag like '%fashion%') order by numb DESC;

Diese Abfrage listet alle erfassten Accounts auf, welche an mind. 2 Locations aktiv etwas zu „Fashion“ schrieben.
Datei (Paris), Loc=2, „fashion“: user_tag_fashion_2

Spezial-SQLabfragen (Projekt: Instagramlocations), Stand: 14.07.2018

(1) Ausgabe der Usernames als Auflistung, mit Mindestanzahl in Bezug auf die Locations

SELECT username, numb from(
Select username, count(location) as numb from locations GROUP BY username ) as my_table
WHERE numb >= 2 order by numb DESC;

(2) Ausgabe der Usernames als Auflistung mit Mindestanzahl in Bezug auf die Locations UND Vorkommen eines Substrings in den Tagwolken

SELECT username, numb from(
Select username, tag, count(location) as numb from locations GROUP BY username ) as my_table
WHERE (numb >= 2) and (tag like '%fashion%') order by numb DESC;

(3) Ausgabe der Locations als Auflistung mit Mindestanzahl in Bezug auf die erfassten User_innen

SELECT location, Anz_user from(
Select location, count(username) as Anz_user from locations GROUP BY location ) as my_table
WHERE (Anz_user >= 2) order by Anz_user DESC

(4) Ausgabe der Locations als Auflistung mit Mindestanzahl in Bezug auf die erfassten User_innen UND Vorkommen eines Substrings in den Locations

SELECT location, Anz_user from(
Select location, count(username) as Anz_user from locations GROUP BY location ) as my_table
WHERE (Anz_user >= 2) AND (location like '%hotel%') order by Anz_user DESC;

(5) Ausgabe der Locations als Auflistung mit Mindestanzahl in Bezug auf die erfassten User_innen UND Vorkommen eines Substrings in den Locations UND Vorkommen eines Substrings in den Tagwolken

SELECT location, Anz_user from(
Select location, tag, count(username) as Anz_user from locations GROUP BY location ) as my_table
WHERE (Anz_user >= 2) AND (location like '%hotel%') AND (tag like '%fashion%') order by Anz_user DESC;

Basis-SQLabfragen (Projekt: Instagramlocations)

Notiz für mich:
Auflistung der Standardabfragen, ohne Anspruch auf Tiefenanalysen.

(1) Statistiken, „KPI“
select count(*), count(distinct(filter)), count(distinct(url)), count(distinct(tag)), count(distinct(location)), count(distinct(username)), count(distinct(erstellzeit)) from locations;

(2) Überblick, Auflistung der erfassten Accounts
select username from locations group by username;

(3) Auflistung der erfassten Accounts zzgl. Zusammenzählung der Beiträge der jeweiligen Accounts
select username, count(username) from locations group by username order by count(username) DESC

(4) Auflistung der erfassten Accounts zzgl. Zusammenzählung der Beiträge der jeweiligen Accounts + Zusammenzählung der Locations
select username, count(username), count(distinct(location)) from locations group by username order by count(distinct(location)) DESC;

(5) Auflistung der erfassten Locations zzgl. Zusammenzählung der Locations
select location, count(location) from locations group by location order by count(location) DESC;

(6) Auflistung der erfassten Locations zzgl. Zusammenzählung der Locations bei Vorkommen eines Tags / Zeichenketten
select location, count(location) from locations where tag like '%gucci%' group by location order by count(location) DESC

(7) Auflistung der erfassten Usernames zzgl. Zusammenzählung der Usernames bei Vorkommen eines Tags / Zeichenketten
select username, count(username) from locations where tag like '%fashion%' group by location order by count(username) DESC

(8) Auflistung der erfassten Tags zzgl. Zusammenzählung der Tags bei Vorkommen von zwei gesuchten Tags / Zeichenketten
select tag, count(tag) from locations where (tag like '%fashion%') and (tag like '%woman%') group by location order by count(tag) DESC;