Come creare un buon elenco di password


9

Sto cercando alcuni suggerimenti su come curare un elenco di parole d'ordine. Qualcuno sa / può consigliare un buon metodo per estrarre elenchi di parole d'ordine dal set di dati stesso per la preelaborazione e il filtro?

I dati:

un'enorme quantità di testo umano di lunghezza variabile (termini di ricerca e frasi intere (fino a 200 caratteri)) per diversi anni. Il testo contiene molto spam (come input di macchine da bot, parole singole, ricerche stupide, ricerche di prodotti ...) e solo un po 'di% sembra essere utile. Mi sono reso conto che a volte (solo molto raramente) le persone cercano nella mia parte ponendo domande davvero interessanti. Queste domande sono così interessanti che penso che valga la pena approfondire per vedere come le persone effettuano ricerche nel tempo e quali argomenti le persone sono state interessate a utilizzare il mio sito Web.

Il mio problema:

è che sto davvero lottando con la preelaborazione (ovvero eliminando lo spam). Ho già provato un elenco di parole d'ordine dal Web (NLTK, ecc.), Ma queste non aiutano molto le mie esigenze in merito a questo set di dati.

Grazie per le tue idee e gente di discussione!


1
Il modulo NLTK di Python fornisce dati sulle password e se non ti ha aiutato a fornire maggiori informazioni sul tuo set di dati. Perché non è stato utile nel tuo caso?
Kasra Manshaei,

@kasramsh: Quando ho filtrato per questi SW ho avuto l'impressione che questo non filtrasse significativamente lo spam. Penso che il motivo sia che questi elenchi sono generati su testi naturali (non sono sicuro) e quindi non sono utilizzabili per parole chiave e query sul sito. Come quando si raggruppava (in base alla somiglianza della stringa di ricerca) ho avuto l'impressione che lo spam abbia un forte effetto a livello di entropia e quindi mescoli il risultato finale: - /.
PlagTag,

1
Penso che @PlagTag non capisca cosa sia stop words. Stop-wrods è una lista della maggior parte delle parole comuni in una certa lingua, per esempio I, the, ae così via. Rimuoverai queste parole dal tuo testo prima di iniziare a formare l'algoritmo che prova a identificare quale testo è spam o meno. Non ti ha aiutato a identificare quale testo è spam o meno, può migliorare leggermente il tuo algoritmo di apprendimento.
itdxer,

@itdxer, grazie per il tuo commento. Ho usato il termine stopwords qui in una più ampia estensione (poiché pensavo che potesse essere ok allo scopo). Grazie per aver
chiarito

Risposte:


5

Un approccio sarebbe quello di utilizzare il punteggio tf-idf . Le parole che compaiono nella maggior parte delle query saranno di scarso aiuto nel differenziare le query di ricerca buone da quelle cattive. Ma quelli che si verificano molto frequentemente (alta frequenza o termine-frequenza) in solo poche query (alta frequenza idf o frequenza inversa del documento) sono probabilmente più importanti nel distinguere le query buone da quelle cattive.


grazie mille, proverò questo e riferirò qui!
PlagTag,

in realtà un punteggio IDF alto da solo farebbe il trucco
CpILL

2

Dipende dalla tua applicazione.

Quando si esegue la modellazione degli argomenti, provare prima le password predefinite. Quando ci sono alcune parole che appaiono in modo prominente in molti argomenti (nota la mia formulazione piuttosto vaga) sono buoni candidati per ulteriori parole d'ordine.

Ad esempio, in un corpus con testi contenenti figure e materiale tabulare, le parole "fig", "figure", "tab" o "table" sono buone parole d'ordine aggiuntive. Di conseguenza, i tuoi argomenti diventano più ben definiti.


1

L'uso di TFIDF (termine frequenza inversa del documento) risolverà il tuo scopo. Ottieni il punteggio TFIDF per ogni parola nel tuo documento e ordina le parole in base ai loro punteggi in base ai quali puoi selezionare le parole importanti nei tuoi dati.


1

Un approccio che ho usato per costruire un elenco di parole d'ordine è quello di costruire e formare un modello di regressione logistica (a causa della sua interpretabilità) sui dati di testo. Prendi il valore assoluto dei coefficienti per ciascun token. Quindi, ordinare in ordine decrescente il valore assoluto dei coefficienti dei token. Quindi, crea un elenco di tutti i token con un valore assoluto ad alto coefficiente che potrebbe portare a un eccesso di adattamento o che potrebbe soddisfare alcuni altri criteri per essere una parola d'ordine. Tale elenco è il tuo elenco di password. È quindi possibile applicare tale elenco di parole d'arresto a un altro set di documenti di questo tipo (un po 'come un set di test), per vedere se rimuoverli aumenta l'accuratezza, la precisione o il richiamo del modello del set di test.

Questa strategia è efficace perché tiene conto dell'impatto dei token durante la creazione di un elenco di parole d'ordine.


0

Le parole d'ordine possono far parte della soluzione ad un certo punto, ma non la chiave. In ogni caso, per tutte le principali lingue esistono buoni elenchi di parole chiave, non dovrebbe essere specifico del dominio.

Inoltre, non penso che usare TD-IDF da solo sia davvero corretto. Potrebbero esserci parole molto rare (potenzialmente spazzatura) in stringhe di scarsa qualità.

Invece di provare a indovinare quali caratteristiche esatte sono utili: vorrei iniziare creando un set di dati selezionando casualmente alcuni dei dati ed etichettandoli a mano (come goodo bad, o su una scala da 0,0 a 1,0). Quindi codifica qualcosa che tira fuori molte funzionalità (lunghezza, numero di parole (token), punteggio di spam, se contiene URL o caratteri bot, lingua rilevata, se ha un punto interrogativo, se ha la maiuscola corretta). Inoltre, non dimenticare di includere funzionalità non linguistiche che potresti avere, come il paese del geoIP dell'utente che ha effettuato la query, se l'utente ha effettuato l'accesso, quanti anni ha l'account dell'utente. Quindi a questo punto avrai una tabella enorme / CSV e una più piccola con una colonna aggiuntiva per l'etichetta che hai aggiunto.

Quindi forma un pacchetto di apprendimento automatico con quegli esempi etichettati per creare un modello sufficientemente accurato per te. Quindi lascia che quel modello venga eseguito sul resto dei dati.

Se desideri non codificare troppo, potresti anche semplicemente ottenere quelle funzioni nel modulo CSV e fornirle all'interfaccia del foglio di calcolo dell'API di Google Prediction .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.