introduzione
Come possono scansionare tutto via Internet e restituire risultati pertinenti in un attimo? Circa 5,43,00,000 risultati (0,004 secondi). Bene, lavorare sul concetto di strisciare e Indicizzazione.
- strisciare: I bot automatici cercano pagine nuove o aggiornate. E memorizzare le informazioni chiave come: URL, qualificazione, parole chiave, eccetera. delle pagine da utilizzare in seguito.
- Indicizzazione: I dati acquisiti dalla traccia vengono analizzati come: di cosa parla la pagina?. Il contenuto chiave, le immagini e i file video presenti nella pagina vengono utilizzati nella procedura. Queste informazioni vengono indicizzate e archiviate per essere restituite in seguito per una query di ricerca.
Perché, ogni volta che chiediamo loro di trovare qualcosa per noi, non stanno scansionando Internet in lungo e in largo, ma semplicemente scansionando quegli URL indicizzati nel passaggio 2.
Bene, oggi lavoreremmo su come sviluppare un piccolo prototipo, molto equivalente alla funzionalità di indicizzazione di qualsiasi motore di ricerca. Utilizzeremmo un set di dati di tweet in #COVID e proveremmo a indicizzarli in base al nostro termine di ricerca.
UN. Importazione del pacchetto
importa panda come pd da rank_bm25 import *
Cos'è BM25?
BM25 è un semplice pacchetto Python e può essere utilizzato per indicizzare i dati, tweet nel nostro caso, in base alla query di ricerca. Funziona sul concetto di TF / IDF, In altre parole.
- TF o frequenza di terminazione: brevemente, indica il numero di occorrenze del termine di ricerca nel nostro tweet
- Inverti la frequenza del documento o IDF: misura la pertinenza del termine di ricerca. Da quando TF ritiene che tutti i termini siano ugualmente importanti, perché, non possiamo usare solo le frequenze dei termini per calcolare il peso di una definizione nel suo testo. Dovremmo soppesare i termini frequenti mentre ci espandiamo sui termini rari che mostrano la loro rilevanza per il tweet.
Una volta eseguita la query, BM25 mostrerà la pertinenza del tuo termine di ricerca con ciascuno dei tweet. Puoi ordinarli per indicizzare quelli più rilevanti.
B. Preparare i tuoi tweet
Dal momento che questa non è una discussione sull'API di Twitter, iniziare a utilizzare un feed basato su Excel. Puoi ripulire i tuoi dati di testo in questi passaggi chiave per rendere la tua ricerca più solida.
1. Tokenizzazione:
Dividi la frase in parole. In modo che ogni parola possa essere considerata in modo univoco.
da nltk.tokenize import word_tokenize frase = "Jack è un tipo acuto" parole = word_tokenize(frase) Stampa(parole)
Produzione: ['Jack', 'affilato', 'mente', 'compagno']
2. Elimina caratteri speciali:
Elimina i caratteri speciali dai tuoi tweet
def spl_chars_removal(lst): lst1=lista() per elemento in lst: str=”” str = re.sub(“[-9a-zA-Z]","",elemento) lst1.append(str) ritorna lst1
3. Elimina le parole vuote:
Le parole vuote sono parole comuni (è, per, il, eccetera.) nei tweet. Queste parole non significano alcuna rilevanza poiché non aiutano a distinguere due tweet. abituato a Gensim pacchetto per cancellare le mie parole irrilevanti, puoi anche testarlo usando nltk, ma ho trovato Gensim molto più veloce di altri.
Inoltre, è possibile aggiungere facilmente nuove parole all'elenco delle parole non significative., nel caso in cui i tuoi dati siano specificamente circondati da quelle parole e si verificano molte volte.
#aggiungere parole alle stopword da nltk.tokenize import word_tokenize da gensim.parsing.preprocessing import STOPWORDS
#aggiunta di parole personalizzate all'elenco di parole stop predefinite all_stopwords_gensim = STOPWORDS.union(set(['malattia']))
def stopwprds_removal_gensim_custom(lst): lst1=lista() per str in lst: text_tokens = word_tokenize(str) tokens_senza_sw = [parola per parola in text_tokens if not word in all_stopwords_gensim] str_t = “ “.join(tokens_senza_sw) lst1.append(str_t) ritorna lst1
4. NormalizzazioneLa standardizzazione è un processo fondamentale in diverse discipline, che mira a stabilire norme e criteri uniformi per migliorare la qualità e l'efficienza. In contesti come l'ingegneria, Istruzione e amministrazione, La standardizzazione facilita il confronto, Interoperabilità e comprensione reciproca. Nell'attuazione degli standard, si promuove la coesione e si ottimizzano le risorse, che contribuisce allo sviluppo sostenibile e al miglioramento continuo dei processi....:
La normalizzazione del testo è la procedura per trasformare un testo in una forma canonica (standard). Come esempio, la parola “bene” e “Dio” può essere trasformato in “bene”, la sua forma canonica. Un altro esempio è la mappatura di parole quasi identiche come “parole vuote”, “parole vuote” e “parole vuote” a solo “parole vuote”.
Questa tecnica è essenziale per testi ad alto volume come i commenti sui social media., messaggi di testo e commenti sui post del blog dove prevalgono le abbreviazioni, errori di ortografia e l'uso di parole che non sono nel vocabolario (oov). Le persone tendono a scrivere commenti in forma stenografica e, perché, questa pre-elaborazione diventa molto importante.
Greggio | Standardizzato |
sì, yday | ieri |
tomo, 2moro, 2mrw, tmrw | mattina |
brb | torno subito |
5. Derivato:
Procedura per trasformare le parole nella loro forma radice. È la procedura per ridurre l'inflessione delle parole (come esempio, i problemi, i problemi) alla sua forma radice (come esempio, i problemi). Il “radice” in questa circostanza potrebbe non essere una vera radice di parola, ma semplicemente una forma canonica della parola originale.
Lo stemming utilizza una procedura euristica che taglia le estremità delle parole nella speranza di trasformare correttamente le parole nella loro forma radice. Deve essere rivisto, poiché nell'esempio seguente puoi vedere che “Macchina” Si trasforma in “Macchine”, “e” viene tagliato nella procedura di bypass..
import nltk da nltk.stem import PorterStemmer ps = PorterStemmer() frase = "Il machine learning è fantastico" per la parola nella frase.split(): Stampa(ps.stem(parola))
Produzione: ['Macchina', 'Apprendimento', 'fresco']
C. Tokenizzazione dei tweet ed esecuzione di BM25
Questo è il fulcro in cui eseguiamo la query di ricerca. Cerchiamo tweet in base alla parola “vaccino” basato sull'utente. Además se puede ingresar una frase y lo hará con fluidez a misuraIl "misura" È un concetto fondamentale in diverse discipline, che si riferisce al processo di quantificazione delle caratteristiche o delle grandezze degli oggetti, fenomeni o situazioni. In matematica, Utilizzato per determinare le lunghezze, Aree e volumi, mentre nelle scienze sociali può riferirsi alla valutazione di variabili qualitative e quantitative. L'accuratezza della misurazione è fondamentale per ottenere risultati affidabili e validi in qualsiasi ricerca o applicazione pratica.... que convertimos nuestro término de búsqueda en la segunda línea a continuación.
tokenized_corpus = [doc.split("") per il documento in lst1]
bm25 = BM25Okapi (tokenized_body)
domanda = "vaccino" ## Inserisci la tua query di ricerca
tokenized_query = query.split (“”)
Puoi controllare l'associazione di ogni tweet con il tuo termine di ricerca usando .get_scores funzione.
doc_scores = bm25.get_scores(tokenized_query) Stampa(doc_scores)
Per entrare n = 5 Su .get_top_n otterremmo altri cinque tweet associati come risultato. Puoi inserire il valore di n in base alle tue esigenze.
docs = bm25.get_top_n (tokenized_query, lst1, n = 5)
df_search = df[df['Testo'].raggio (documenti)]
df_search.head ()
D. I primi cinque tweet associati
Superiore 5 tweet | Twittato da |
@ MikeCarlton01 Riguardo ai finanziamenti #ABC, cercato i documenti di bilancio. Dopo i precedenti tagli massicci, avuto $ 4.7 ulteriori milioni di fondi (.00044% molto meno dell'inflazione). #rifiuti Morrison $ Più costoso & amplificatore; servizi inefficaci, come esempio, l'inutile app #Covid; #vaccino per la consegna dell'assistenza agli anziani; consulenze per l'implementazione di vaccini. | MORRIGAN |
@TonyHWindsor @barriecassidy @ 4corners @ abc730 Per il loro prezioso lavoro, #ABC ha ottenuto $ 4.7M extra in fondi (.00044% molto meno dell'inflazione). Mentre #Morrison Govt spende come un marinaio ubriaco comprando a caro prezzo & amplificatore; servizi tra pari inefficaci (P. non., inutile app #Covid; Consegna del vaccino #agedcare; lancio del vaccino) #auspol | MORRIGAN |
Passerà un mese dalla mia guarigione dal #Covid. Adesso vado a vaccinare 😎😎😎😎 | Simi Elizabeth😃 |
RT @pradeepkishan: Che politico spregevole è #ArvindKejariwal! Quando l'accumulo di ossigeno è venuto alla luce, la loro propaganda si è rivolta alla carenza di vaccini. È più pericoloso del #COVID stesso! @BJP4India @TajinderBagga | p.hariharan |
RT @AlexBerenson: TL: DR – Alla prova del vaccino #Covid per adolescenti di @pfizer, 4 oh 5 (la cifra esatta è nascosta) a partire dal 1,100 i bambini che hanno ricevuto il vaccino hanno avuto gravi effetti collaterali, rispetto a 1 che ha ricevuto il placebo. @US_FDA non ha rivelato dettagli specifici, quindi non abbiamo idea di cosa fossero o se seguono uno schema. https://t.co/n5igf2xXFN | Sagezza |
E. Casi d'uso aggiuntivi BM25
Ci possono essere molti casi d'uso in cui è richiesta una funzione di ricerca. Uno dei più rilevanti è l'analisi del PDF e lo sviluppo di una funzione di ricerca sul contenuto del PDF.
Questo è uno dei casi più utilizzati per BM25. Mentre il mondo si sposta lentamente verso una migliore strategia dei dati e tecniche di archiviazione efficienti, i vecchi documenti PDF possono essere recuperati in modo efficiente utilizzando algoritmi come BM25.
Spero che ti sia piaciuto leggerlo e che ti sia stato utile. Grazie amici!
Link di riferimento
Il supporto mostrato in questo post non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.
Imparentato
Articoli correlati:
- Crea il tuo set di dati immagine utilizzando Opencv in Machine Learning
- API PNL | L'API NLP di Google per analizzare e produrre contenuti migliori
- Percorso di apprendimento della PNL | Percorso di apprendimento per padroneggiare la PNL in 2020
- Ingegneria delle funzioni in PNL | Come fare ingegneria funzionale in PNL