Dati del messaggio con nomi rimossi Prima che qualcuno si preoccupi di includere l’id nel dataframe sopra, Tinder ha pubblicato questo articolo, affermando che è impossibile cercare gli utenti se non si è abbinati con loro:
https://www.help.tinder.com/hc/en-us/articles/115003359366-Can-I-search-for-a-specific-person-on-Tinder-
Ora che i dati erano in un bel formato, sono riuscito a produrre alcune statistiche riassuntive di alto livello. Il set di dati conteneva:
2 ragazze
7 ragazzi
9 partecipanti
502 conversazioni con un messaggio
1330 conversazioni uniche
6.344 incontri
6.750 messaggi ricevuti
8,755 messaggi inviati
34.233 aperture di app
94.027 strisciate a destra
403.149 strisciate a sinistra
Bene, avevo una quantità decente di dati, ma non mi ero preso il tempo di pensare a come sarebbe stato un prodotto finale. Alla fine, ho deciso che il prodotto finale sarebbe stato una lista di raccomandazioni su come migliorare le proprie possibilità di successo con gli incontri online.
E così, con i dati in un bel formato, l’esplorazione poteva iniziare!
L’esplorazione
Ho iniziato a guardare i dati “Uso”, una persona alla volta, per pura curiosità. Ho fatto questo tracciando alcuni grafici, che vanno da semplici grafici metrici aggregati, come il seguente:
a grafici metrici derivati più coinvolti, come il giustamente chiamato ‘Grafico della fedeltà’, mostrato di seguito:
Il primo grafico è abbastanza auto esplicativo, ma il secondo potrebbe richiedere qualche spiegazione. Essenzialmente, ogni riga/linea orizzontale rappresenta una conversazione unica, con la data di inizio di ogni riga che è la data del primo messaggio inviato all’interno della conversazione, e la data di fine che è l’ultimo messaggio inviato nella conversazione. L’idea di questo grafico era quella di cercare di capire come le persone usano l’app in termini di messaggistica con più di una persona alla volta.
Anche se interessante, non ho davvero visto alcuna tendenza evidente o modelli che potessi interrogare ulteriormente, così mi sono rivolto ai dati aggregati “Usage”. Inizialmente ho iniziato a guardare varie metriche nel tempo divise per utente, per cercare di determinare qualsiasi tendenza di alto livello:
ma niente si è subito distinto.
Ho poi deciso di guardare più a fondo nei dati dei messaggi, che, come detto prima, erano dotati di una comoda marca temporale. Dopo aver aggregato il conteggio dei messaggi per giorno della settimana e ora del giorno, mi sono reso conto di essermi imbattuto nella mia prima raccomandazione.
Le 9 di sera di domenica sono il momento migliore per ‘Tinder’, mostrato di seguito come l’ora/data in cui è stato inviato il maggior volume di messaggi nel mio campione.
Qui ho usato il volume di messaggi inviati come proxy per il numero di utenti online ad ogni ora, quindi ‘Tindering’ a quest’ora ti assicurerà di avere il più grande pubblico.
Ho poi iniziato a guardare la lunghezza del messaggio in termini di parole e lettere, così come il numero di messaggi per conversazione. Inizialmente, puoi vedere qui sotto che non c’era molto che saltasse fuori… (qui un ‘successo’ è rosso)
Ma una volta che inizi a scavare, ci sono alcune tendenze chiare:
I messaggi più lunghi hanno più probabilità di generare un successo (fino a un certo punto)
Il numero medio di messaggi in una conversazione in cui viene trovato un ‘successo’ è 27, con una mediana di 21.
Queste osservazioni portano alla mia seconda e terza raccomandazione.
La seconda raccomandazione:
Passa più tempo a costruire i tuoi messaggi, e per l’amor di Dio non usare il text speak… generalmente le parole più lunghe sono parole migliori. Un avvertimento qui è che i dati contengono link, che contano come parole lunghe, quindi questo può alterare i risultati.
La terza raccomandazione:
Non essere troppo frettoloso quando cerchi di ottenere un numero. “Ehi, sei in forma, qual è il tuo numero” è probabilmente la cosa peggiore che puoi dire in termini di possibilità. Allo stesso modo, non lasciarlo troppo a lungo. Ovunque tra il 20° e il 30° messaggio è meglio.
Conteggio medio dei messaggi delle conversazioni di successo rispetto a quelle senza successo
Dopo aver esaminato la lunghezza delle parole/messaggio/conversazione piuttosto estesamente, ho deciso di esaminare il sentiment. Ma non sapevo assolutamente nulla su come farlo. Durante il corso, avevamo coperto un po’ di elaborazione del linguaggio naturale (bag of words, una codifica a caldo, tutti i preprocessi necessari ecc. insieme a vari algoritmi di classificazione), ma non avevamo toccato il sentiment. Ho passato un po’ di tempo a ricercare l’argomento, e ho scoperto che il nltk sentiment.vader SentimentIntensityAnalyzer sarebbe stato un bel colpo.
Questo funziona dando all’utente quattro punteggi, basati sulla percentuale del testo inserito che era:
positivo
neutro
negativo
una combinazione dei tre
Per fortuna, si occupa anche di cose come il contesto delle parole, lo slang e persino gli emoji. Dato che stavo guardando il sentiment, non è stato fatto alcun pre-processing (minuscolo, rimozione della punteggiatura ecc.) al fine di non rimuovere alcun contesto nascosto.
Ho iniziato questa analisi alimentando ogni intera conversazione nell’analizzatore, ma mi sono subito reso conto che questo non funzionava davvero, poiché il sentiment della conversazione tendeva rapidamente a 1 dopo i primi messaggi, e faccio fatica a credere che una conversazione di 100 messaggi fosse sicura al 100% per tutto il tempo.
Ho quindi suddiviso le conversazioni nei loro messaggi costituenti e li ho inseriti uno alla volta, facendo la media dei punteggi a livello di conversazione. Questo ha prodotto un risultato molto più realistico secondo me:
Suddividendo questi dati per ‘Successo’ o ‘Nessun successo’, ho visto emergere rapidamente un modello:
Questo mi ha portato alla quarta raccomandazione.
La quarta raccomandazione:
Siate positivi, ma non troppo positivi.
Il sentiment medio per una conversazione di successo era 0,31 contro 0,20 per una conversazione non di successo. Detto questo, essere troppo positivi è quasi peggio che essere troppo negativi.
L’ultimo vicolo che ho esplorato era quale effetto avessero i vari dettagli del primo messaggio sul successo della conversazione. I pensieri iniziali di cose che potrebbero avere un effetto erano:
lunghezza
se è stato usato un nome
sentimento
presenza di emoji
contenuto esplicito
Come previsto, più lungo è il primo messaggio, maggiore è la probabilità che quella conversazione continui fino ad un ‘Successo’. Come estensione, si raddoppia la probabilità di successo non usando solo un’apertura di una parola, per esempio non dicendo solo ‘hey’ o ‘ciao’ o ‘daayyuumm’ (esempio reale).
Un po’ più sorprendentemente, usare un nome nel primo messaggio ha avuto un effetto molto piccolo sul ‘Success Ratio’ (No. Successes/No. No Successes).
Il sentiment del primo messaggio è risultato essere circa 0,09 più alto per le conversazioni di “Successo” rispetto a quelle di “Non Successo”, il che non è stato davvero una sorpresa… se insulti qualcuno in un primo messaggio, è intuitivamente meno probabile che risponda.
Analizzare gli emoji era un compito a cui non avevo davvero pensato, e aveva il potenziale di essere difficile. Fortunatamente, esiste un pacchetto chiamato ‘emoji’, che rileva automaticamente la presenza di emoji nel testo. Sfortunatamente, e con mia grande costernazione, sembra che usare un emoji in un primo messaggio aumenti la probabilità di ottenere un ‘Successo’.
Ora parliamo di contenuti espliciti… Un altro che aveva il potenziale di essere abbastanza complicato, poiché non ci sono librerie integrate che raccolgono l’uso di imprecazioni ecc. (che io sappia). Fortunatamente mi sono imbattuto in questo: