Thursday 16 November 2017

Semplice Mobile Media Python


Questo è un wrapper Python per TA-LIB sulla base di Cython invece di SWIG. Dalla home page: TA-Lib è ampiamente utilizzato dagli sviluppatori di software di trading che necessitano di effettuare l'analisi tecnica di dati finanziari. Comprende 150 indicatori quali ADX, MACD, RSI, stocastico, le bande di Bollinger, ecc Candlestick pattern recognition API open-source per CC, Java, Perl, Python e 100 gestito il binding Python originali utilizzare SWIG che sono purtroppo difficili da installare e arent efficienti come potrebbero essere. Quindi questo progetto utilizza Cython e Numpy di impegnare in modo efficiente e in modo pulito per TA-Lib - produrre risultati 2-4 volte più veloce l'interfaccia SWIG. Installare TA-Lib o leggere la documentazione Simile a TA-Lib, la funzione di interfaccia fornisce un involucro leggero degli indicatori TA-Lib esposti. Ogni funzione restituisce un array di uscita e hanno valori di default per i loro parametri, se non specificato come argomenti chiave. Tipicamente, queste funzioni avranno un periodo lookback iniziale (un numero richiesto di osservazioni prima un'uscita viene generato) impostato su NaN. Tutti i seguenti esempi utilizzare la funzione API: Calcolare una media mobile dei prezzi di chiusura: Calcolo bande di Bollinger, con tripla media mobile esponenziale: Calcolo slancio dei prezzi di chiusura, con un periodo di tempo di 5: Estratto API Quick Start Se sei già familiarità con l'utilizzo della funzione API, si dovrebbe sentire come a casa utilizzando l'API astratto. Ogni funzione ha lo stesso ingresso, passato come un dizionario di array NumPy: Le funzioni possono sia essere importati direttamente o istanziati per nome: Da lì, chiamare funzioni è fondamentalmente la stessa della funzione API: Scopri di utilizzo su più avanzato di TA-Lib qui . Gli indicatori supportati Possiamo mostrare tutte le funzioni TA supportate da TA-Lib, sia come elenco o come dict ordinati per gruppo (ad esempio, gli studi si sovrappongono, indicatori di momentum, ecc): Funzione Groups1 Language Processing e Python è facile mettere le mani su milioni di parole di testo. Cosa possiamo fare con esso, assumendo possiamo scrivere alcuni semplici programmi In questo capitolo e rispondere alle seguenti domande: Che cosa possiamo ottenere dalla combinazione di semplici tecniche di programmazione con grandi quantità di testo Come possiamo estrarre automaticamente le parole chiave e frasi che riassumono il lo stile e il contenuto di un testo quali strumenti e tecniche fa il linguaggio di programmazione Python prevedono tale lavoro quali sono alcune delle sfide interessanti di elaborazione del linguaggio naturale Questo capitolo è suddiviso in sezioni che saltano tra i due stili molto diversi. Nella quotcomputing con sezioni languagequot prenderemo su alcune attività di programmazione linguisticamente motivati ​​senza necessariamente spiegare come funzionano. Nel sguardo quotcloser in sezioni Pythonquot rivedremo sistematicamente concetti di programmazione chiave. Bene bandiera i due stili nei titoli di sezione, ma in seguito i capitoli si mescoleranno entrambi gli stili senza essere così up-front su di esso. Ci auguriamo che questo stile di introduzione ti dà un gusto autentico di ciò che verrà dopo, mentre coprono una gamma di concetti elementari di linguistica e informatica. Se avete familiarità con entrambe le aree, è possibile saltare a 1,5 ripeteremo i punti importanti nei capitoli successivi, e se si perde qualcosa si può facilmente consultare il materiale di riferimento on-line su nltk. org. Se il materiale è completamente nuovo a voi, questo capitolo si sollevano più domande che risposte, domande che vengono affrontate nel resto di questo libro. 1.1 Computing con il linguaggio: Testi e parole erano tutti molto familiarità con il testo, dal momento che leggiamo e scriviamo ogni giorno. Qui tratteremo testo come dati grezzi per i programmi che scriviamo, i programmi che manipolano e analizzano in una varietà di modi interessanti. Ma prima di poter fare questo, dobbiamo iniziare con l'interprete Python. Introduzione a Python Una delle cose amichevoli circa Python è che permette di digitare direttamente nella interprete interattivo 8212 il programma che eseguirà i programmi Python. È possibile accedere al interprete Python utilizzando una semplice interfaccia grafica denominata Interactive Development Environment (IDLE). Su un Mac è possibile trovare questo in Applicazioni 8594 MacPython. e su Windows sotto Tutti i programmi 8594 Python. Sotto Unix è possibile eseguire Python dalla shell digitando minimo (se questo non è installato, provare a digitare python). L'interprete stampa un trafiletto sulla tua versione di Python semplicemente verificare che sia in esecuzione Python 2.4 o 2.5 (qui è 2.5.1): Your Turn: Prova a cercare altre parole per risparmiare ri-tipizzazione, si potrebbe essere in grado di utilizzare fino - arrow, Ctrl-freccia su o Alt-p per accedere al comando precedente e modificare la parola da ricercare. È anche possibile provare le ricerche su alcune delle altri testi che abbiamo incluso. Ad esempio, la ricerca Ragione e sentimento per la parola affetto. utilizzando text2.concordance (quotaffectionquot). Cerca nel libro della Genesi per scoprire quanto tempo alcune persone hanno vissuto, usando text3.concordance (quotlivedquot). Si potrebbe guardare Text4. il discorso inaugurale Corpus. per vedere esempi di inglese che risale al 1789, e la ricerca di parole come nazione. terrore. Dio per vedere come queste parole sono state usate in modo diverso nel corso del tempo. Weve incluso anche text5. NPS Chat Corpus. cercare questo per le parole non convenzionali come im. ur. lol. (Si noti che questo corpus è uncensored) Una volta che avete speso un po 'di tempo l'esame di questi testi, speriamo di avere un nuovo senso della ricchezza e la diversità del linguaggio. Nel prossimo capitolo imparerete come accedere una gamma più ampia di testo, inclusi testo in lingue diverse dall'inglese. Una concordanza ci permette di vedere le parole nel contesto. Ad esempio, abbiamo visto che mostruose si sono verificati in contesti quali le immagini e le dimensioni. Quali altre parole compaiono in una serie simile di contesti possiamo scoprire aggiungendo il termine simile al nome del testo in questione, quindi inserendo la parola rilevante in parentesi: Si osservi che si ottengono risultati diversi per testi diversi. Austen usa questa parola in modo diverso da Melville per lei, mostruosa ha una connotazione positiva, ed a volte funziona come un intensificatore di come la parola stessa. I commoncontexts termine ci permette di esaminare solo i contesti che sono condivisi da due o più parole, come il mostruoso e molto. Dobbiamo racchiudere queste parole tra parentesi quadre e parentesi, e separarli con una virgola: Your Turn: Scegliere un altro paio di parole e di confrontare il loro utilizzo in due testi diversi, utilizzando il simile () e commoncontexts () funzioni. E 'una cosa da rilevare automaticamente che una parola particolare si verifica in un testo, e di visualizzare alcune parole che compaiono nello stesso contesto. Tuttavia, si può anche determinare la posizione di una parola nel testo: quante parole dall'inizio appare. Questa informazione posizionale può essere visualizzato usando un diagramma di dispersione. Ogni banda rappresenta un'istanza di una parola, e ogni riga rappresenta l'intero testo. In 1.2 vediamo alcuni modelli sorprendenti d'uso di parole nel corso degli ultimi 220 anni (in un testo artificiale costruita unendo i testi del discorso inaugurale Corpus end-to-end). È possibile produrre questo grafico come illustrato di seguito. Come si potrebbe provare più parole (ad esempio la libertà. Costituzione), e testi differenti. Si può prevedere la dispersione di una parola prima di vederlo come prima, aver cura di ottenere le virgolette, virgole, parentesi e parentesi esattamente a destra. Figura 1.2. Lessicale dispersione Plot for Words in Stati Uniti presidenziali discorsi inaugurali: Questo può essere usato per studiare i cambiamenti nell'uso del linguaggio nel corso del tempo. Importante: È necessario disporre di pacchetti Pythons NumPy e matplotlib installati al fine di produrre le trame grafiche utilizzate in questo libro. Si prega di consultare nltk. org per le istruzioni di installazione. Ora, solo per divertimento, consente di provare a generare un po 'di testo casuale nei vari stili che abbiamo appena visto. Per fare questo, digitiamo il nome del testo, seguito dal termine generare. (Abbiamo bisogno di includere le parentesi, ma non c'è niente che va tra di loro.) Si noti che la prima volta che si esegue questo comando, è lento perché raccoglie statistiche sulle sequenze di parole. Ogni volta che si esegue, si otterrà testo di output diverso. Ora provare a generare testo casuale nello stile di un indirizzo inaugurale o di una chat room di Internet. Anche se il testo è casuale, si ri-usa le parole e le frasi comuni dal testo di partenza e ci dà un senso di stile e contenuto. (Quello che manca in questo testo generato in modo casuale) Quando generare produce la sua uscita, la punteggiatura è divisa fuori dalla parola precedente. Anche se questo non è corretta formattazione per il testo inglese, lo facciamo per chiarire che le parole e punteggiatura sono indipendenti l'uno dall'altro. Potrete saperne di più su questo a 3. Conteggio Vocabolario Il fatto più evidente su testi che emerge dagli esempi precedenti è che differiscono nel vocabolario che utilizzano. In questa sezione vedremo come utilizzare il computer per contare le parole in un testo in una varietà di modi utili. Come in precedenza, si saltare a destra e sperimentare con l'interprete Python, anche se non si può avere studiato Python sistematicamente ancora. Testare la comprensione modificando gli esempi, e cercando gli esercizi alla fine del capitolo. Iniziamo scoprendo la lunghezza di un testo dall'inizio alla fine, in termini di parole e simboli di punteggiatura che appaiono. Usiamo il termine len per ottenere la lunghezza di qualcosa, che ben si applicano qui per il libro della Genesi: Così Genesis ha 44,764 parole e simboli di punteggiatura, o quottokens. quot una pedina è il nome tecnico per una sequenza di caratteri 8212, come peloso . il suo . o :) 8212 che vogliamo trattare come un gruppo. Quando contiamo il numero di gettoni in un testo, per esempio, la frase di essere o non essere. contiamo occorrenze di queste sequenze. Così, nel nostro esempio frase ci sono due occorrenze di a. due di BE. e uno ciascuno o non. Ma ci sono solo quattro elementi di vocabolario distinti in questa frase. Quante parole distinte fa il libro della Genesi contengono Per lavorare questo fuori in Python, dobbiamo porre la questione in modo leggermente diverso. Il vocabolario di un testo è solo l'insieme di segni che utilizza, dal momento che in un set, tutti i duplicati sono crollati insieme. In Python possiamo ottenere le voci di vocabolario dei text3 con il comando: set (Testo3). Quando si esegue questa operazione, molti schermi di parole voleranno passato. Ora provate la seguente: avvolgendo ordinato () intorno l'espressione Python set (Testo3). si ottiene una lista ordinata di elementi di vocabolario, a cominciare con i vari simboli di punteggiatura e continuando con parole che iniziano con A. Tutte le parole in maiuscolo precedono parole minuscole. Scopriamo la dimensione del vocabolario indirettamente, chiedendo il numero di elementi nel set, e ancora una volta possiamo usare len per ottenere questo numero. Anche se ha 44,764 gettoni, questo libro ha solo 2.789 parole distinte, o quotword types. quot Un tipo di parola è la forma o di ortografia della parola indipendentemente dalle sue occorrenze specifiche in un testo che è 8212, il termine considerato come un pezzo unico di vocabolario. Il nostro conteggio di 2.789 articoli includerà simboli di punteggiatura, quindi dovremo generalmente chiamare questi tipi di articoli unici al posto di tipi di parola. Ora, consente di calcolare una misura della ricchezza lessicale del testo. Il prossimo esempio ci mostra che ogni parola è usata 16 volte in media (abbiamo bisogno di fare in modo Python usa la divisione in virgola mobile): Si noti che i nostri indici partono da zero: elemento inviato a zero, sent0 scritta. è la prima parola, parola1. considerando elemento inviato 9 è word10. La ragione è semplice: nel momento in Python accede al contenuto di un elenco dalla memoria del computer, è già al primo elemento dobbiamo dire che il numero di elementi in avanti per andare. Così, lo zero passi in avanti la lascia al primo elemento. Questa pratica di contare da zero è inizialmente confusa, ma tipico dei moderni linguaggi di programmazione. Youll ottenere rapidamente il blocco di esso se youve imparato il sistema di secoli di conteggio dove 19XY è un anno nel 20 ° secolo, o se si vive in un paese in cui i piani di un edificio sono numerate da 1 e così camminare su n-1 rampe di scale vi porta al livello n. Ora, se per caso utilizzare un indice che è troppo grande, otteniamo un errore: Questa volta non è un errore di sintassi, perché il frammento di programma è sintatticamente corretto. Invece, si tratta di un errore di runtime. e produce un messaggio Traceback che mostra il contesto dell'errore, seguito dal nome dell'errore, IndexError. e una breve spiegazione. Diamo un'occhiata più da vicino a taglio, utilizzando ancora una volta la nostra condanna artificiale. Qui si verifica che la fetta 5: 8 comprende elementi inviati a indici 5, 6 e 7: Possiamo modificare un elemento di un elenco assegnando ad uno dei suoi valori di indice. Nel prossimo esempio, abbiamo messo sent0 a sinistra del segno di uguale. Si può anche sostituire un intero fetta con nuovo materiale. Una conseguenza di questo ultimo cambiamento è che l'elenco ha solo quattro elementi, e l'accesso a un valore entro genera un errore. Your Turn: Ti bastano pochi minuti per definire una frase della propria e modificare le singole parole e gruppi di parole (fette) utilizzando gli stessi metodi utilizzati in precedenza. Controlla la tua comprensione provando gli esercizi sulle liste alla fine di questo capitolo. Dall'inizio 1.1. avete avuto accesso ai testi chiamati text1. TEXT2. e così via. Ha salvato un sacco di digitare per essere in grado di fare riferimento a un libro 250.000-parola con un nome breve come questo In generale, possiamo fare i nomi per qualsiasi cosa ci preoccupiamo per il calcolo. Lo abbiamo fatto noi stessi nelle sezioni precedenti, per esempio la definizione di una sent1 variabile. come segue: Queste linee hanno la forma: espressione variabile. Python valuterà l'espressione, e salvare il suo risultato alla variabile. Questo processo è chiamato assegnazione. Essa non genera alcun output è necessario digitare la variabile su una linea propria di ispezionare il contenuto. Il segno di uguale è leggermente fuorviante, dal momento che le informazioni si sta muovendo dal lato destro verso sinistra. Potrebbe essere utile pensare ad esso come un freccia sinistra. Il nome della variabile può essere qualsiasi cosa che ti piace, per esempio mysent. condanna, frase . xyzzy. Si deve iniziare con una lettera, e può includere i numeri e underscore. Ecco alcuni esempi di variabili e le assegnazioni: Ricordate che le parole in maiuscolo appaiono prima parole minuscole negli elenchi ordinati. Si noti nell'esempio precedente, che abbiamo diviso la definizione di mysent su due righe. espressioni Python possono essere suddivisi su più linee, fino a quando questo accade all'interno di qualsiasi tipo di parentesi. Python usa il quot. quot pronta per indicare che più input è previsto. Non importa quanto il rientro viene utilizzato in queste righe di continuazione, ma alcuni rientro di solito li rende più facile da leggere. E 'bene scegliere i nomi delle variabili significative per ricordare 8212 e per aiutare chiunque altro che legge il codice Python 8212 ciò che il codice è destinato a fare. Python non cerca di dare un senso ai nomi che segue ciecamente le tue istruzioni, e non si oppone se fai qualcosa di confuso, come ad esempio uno due o due 3. L'unica restrizione è che un nome di variabile non può essere parole qualsiasi Pitoni riservati, come ad esempio def. Se . no. e l'importazione. Se si utilizza una parola riservata, Python produrrà un errore di sintassi: Fate attenzione con la vostra scelta di nomi (o gli identificatori) per le variabili Python. In primo luogo, si dovrebbe iniziare il nome con una lettera, eventualmente seguito da cifre (da 0 a 9) o lettere. Così, abc23 va bene, ma 23abc causerà un errore di sintassi. I nomi sono case-sensitive, il che significa che myVar e myvar sono variabili distinte. I nomi delle variabili non possono contenere spazi, ma è possibile separare le parole con un carattere di sottolineatura, per esempio myvar. Fare attenzione a non inserire un trattino invece di un trattino: my-var è sbagliato, dal momento che Python interpreta il quot - quot come un segno meno. Alcuni dei metodi che abbiamo usato per accedere agli elementi di una lista di lavoro anche con le singole parole o stringhe. Ad esempio, siamo in grado di assegnare una stringa a una variabile. indice di una stringa. e affettare una stringa: Possiamo anche eseguire la moltiplicazione e addizione con le stringhe: Possiamo unire le parole di una lista per fare una singola stringa, o dividere una stringa in una lista, come segue: Torneremo al tema delle stringhe in 3. per il momento, abbiamo due importanti blocchi di costruzione 8212 liste e stringhe 8212 e sono pronti a tornare a qualche analisi del linguaggio. 1.3 Computing con il linguaggio: semplice Statistiche Consente di ritorno alla nostra esplorazione dei modi in cui possiamo portare le nostre risorse di calcolo esercitate su grandi quantità di testo. Abbiamo iniziato questa discussione in 1.1. e ho visto come cercare parole in un contesto, come compilare il vocabolario di un testo, come generare testo casuale nello stesso stile, e così via. In questa sezione prendiamo la questione di ciò che rende un testo distinta e utilizzare metodi automatici per trovare le parole e le espressioni caratteristiche di un testo. Come in 1.1. si può provare le nuove caratteristiche del linguaggio Python copiandoli in l'interprete, e youll conoscere queste funzioni in modo sistematico nella sezione seguente. Prima di continuare oltre, come si potrebbe controllare la comprensione dell'ultima sezione prevedendo l'output del seguente codice. È possibile utilizzare l'interprete per verificare se hai capito bene. Se non sei sicuro di come eseguire questa operazione, sarebbe una buona idea di rivedere la sezione precedente prima di continuare ulteriormente. Distribuzioni di frequenza Come possiamo identificare automaticamente le parole di un testo che sono più informativo sul tema e il genere del testo Immaginate come si potrebbe fare per trovare le 50 parole più frequenti di un libro. Un metodo potrebbe essere quello di mantenere un conteggio per ogni voce di vocabolario, come quello mostrato in 1.3. Il bilancio avrebbe bisogno di migliaia di righe, e sarebbe un processo estremamente laborioso 8212 in modo laborioso che avremmo preferito assegnare il compito a una macchina. Figura 1.3. Conteggio parole compaiono in un testo (una distribuzione di frequenza) La tabella 1.3 è conosciuta come una distribuzione di frequenza. e ci dice la frequenza di ciascun elemento vocabolario nel testo. (In generale, si potrebbe contare ogni tipo di evento osservabile.) Si tratta di un quotdistributionquot perché ci dice come il numero totale di gettoni parola nel testo sono distribuiti attraverso le voci di vocabolario. Dal momento che abbiamo spesso bisogno di distribuzioni di frequenza nell'elaborazione del linguaggio, NLTK fornisce il supporto integrato per loro. Consente di utilizzare un FreqDist per trovare le 50 parole più frequenti di Moby Dick. Cercare di capire cosa sta succedendo qui, quindi leggere la spiegazione che segue. Quando abbiamo invochiamo FreqDist. passiamo il nome del testo come argomento. Siamo in grado di controllare il numero totale di parole (quotoutcomesquot) che sono stati contati fino 8212 260.819 nel caso di Moby Dick. Le chiavi di espressione () ci dà un elenco di tutti i tipi distinti nel testo. e possiamo guardare i primi 50 di questi mediante tranciatura di lista. Your Turn: Prova l'esempio precedente distribuzione di frequenza per te stesso, per text2. Fare attenzione a usare le parentesi corretti e le lettere maiuscole. Se si riceve un messaggio di errore NameError: nome FreqDist non è definito. è necessario iniziare il vostro lavoro con da nltk. book importazione fare qualsiasi parole prodotte nell'ultimo esempio ci aiutano a cogliere l'argomento o il genere di questo testo solo una parola, balena. è leggermente informativo Essa si verifica più di 900 volte. Il resto delle parole ci dicono nulla circa il testo theyre solo inglese quotplumbing. quot Quale percentuale del testo viene ripreso con queste parole possiamo generare una trama frequenza cumulativa per queste parole, usando fdist1.plot (50, cumulativeTrue). per produrre il grafico in 1.4. Queste 50 parole rappresentano quasi la metà del libro Figura 1.4. Cumulativo Trama di frequenza per 50 parole più frequentemente in Moby Dick. questi rappresentano quasi la metà dei token. Se le parole frequenti ci non aiuta, come circa le parole che si verificano solo una volta, i cosiddetti hapaxes. li Guarda digitando fdist1.hapaxes (). Questa lista contiene lessicografo. cetological. contrabbando. rimostranze. e circa 9.000 altri. Sembra che ci sono troppe parole rare, e senza vedere il contesto probabilmente sopraelevazione indovinate un po 'la metà dei hapaxes significa in alcun caso Poiché né frequenti né infrequenti parole aiutano, abbiamo bisogno di provare qualcosa di diverso. A grana fine selezione di parole Avanti, consente di guardare le lunghe parole di un testo forse questi saranno più caratteristico e informativo. Per questo ci adattiamo qualche notazione dalla teoria degli insiemi. Vorremmo trovare le parole dal vocabolario del testo che sono lunghi più di 15 caratteri. Consente di chiamare questa proprietà P. modo che P (w) è vera se e solo se w è più lungo di 15 caratteri. Ora siamo in grado di esprimere le parole di interesse utilizzando set di notazione matematica come indicato in (1a). Questo significa quotthe insieme di tutte w tale che w è un elemento di V (vocabolario) e w ha la proprietà P quot. Da questo vediamo che la più frequente lunghezza di parola è 3, e che parole di lunghezza 3 rappresentano circa 50.000 (o 20) delle parole che compongono il libro. Anche se non perseguiremo qui, ulteriori analisi di lunghezza di parola potrebbe aiutarci a capire le differenze tra autori, generi o lingue. 1.2 riassume le funzioni definite in distribuzioni di frequenza. Queste espressioni hanno la forma f (w) per. o w. f () per. . dove f è una funzione che opera su una parola per calcolare la sua lunghezza o per convertirlo in maiuscolo. Per ora, non avete bisogno di capire la differenza tra le notazioni f (w) e w. f (). Invece, semplicemente imparare questo linguaggio Python, che esegue la stessa operazione su ogni elemento di una lista. Negli esempi precedenti, si passa attraverso ciascuna parola text1. assegnando ciascuno a turno alla variabile w ed eseguire l'operazione specificata sulla variabile. La notazione appena descritto è chiamato un quotlist comprehension. quot Questo è il nostro primo esempio di un linguaggio Python, una notazione fissa che usiamo abitualmente senza preoccuparsi di analizzare ogni volta. Mastering tali idiomi è una parte importante di diventare un programmatore Python fluente. Consente di tornare alla questione della dimensione del vocabolario, e applichiamo lo stesso linguaggio qui: Ora che non ci sono parole a doppio conteggio come questo e questo. che differiscono solo in capitalizzazione, weve spazzato 2.000 fuori dal conteggio vocabolario Siamo in grado di fare un passo ulteriore ed eliminare numeri e segni di punteggiatura dal conteggio vocabolario filtrando tutti gli elementi non alfabetici: Questo esempio è un po 'complicato: è solo caratteri minuscoli tutti gli elementi puramente alfabetici . Forse sarebbe stato più semplice solo per contare gli elementi minuscole solo, ma questo dà la risposta sbagliata (perché). Non preoccupatevi se non si sentono sicuri con la list comprehension ancora, dal momento che il youll vedere molti altri esempi insieme con le spiegazioni nei capitoli seguenti. Annidata Codice Blocks La maggior parte dei linguaggi di programmazione ci permettono di eseguire un blocco di codice quando un'espressione condizionale. o se dichiarazione, è soddisfatto. Abbiamo già visto esempi di test condizionali nel codice come w per w in sent7 se len (w) lt 4. Nel seguente programma, abbiamo creato una chiamata parola variabile che contiene il gatto valore stringa. L'istruzione if verifica se il test len ​​(parola) lt 5 è vero. È, così il corpo del if viene invocato e viene eseguita l'istruzione di stampa, la visualizzazione di un messaggio all'utente. Ricorda un rientro per la dichiarazione di stampa digitando quattro spazi. Questo è chiamato un ciclo perché Python esegue il codice in modo circolare. Si inizia eseguendo la parola assegnazione delle chiamate. efficace utilizzando la variabile di parola di nominare il primo elemento della lista. Poi, visualizza il valore della parola per l'utente. Successivamente, si risale al per la dichiarazione, ed esegue la parola assegnazione me. prima di visualizzare il nuovo valore per l'utente, e così via. Si continua in questo modo fino a che ogni elemento della lista è stato elaborato. Looping con Condizioni Ora possiamo combinare il se e per le dichiarazioni. Ci sarà un ciclo su ogni elemento della lista, e stampare la voce solo se finisce con la lettera l. Bene scegliere un altro nome per la variabile di dimostrare che Python doesnt cercare di dare un senso di nomi di variabili. Si noterà che se e per le dichiarazioni hanno due punti alla fine della linea, prima che inizi il rientro. Infatti, tutte le strutture di controllo Python terminano con i due punti. I due punti indica che l'istruzione corrente si riferisce al blocco frastagliata che segue. Possiamo anche specificare un'azione da intraprendere se la condizione della if non è soddisfatta. Qui vediamo la elif (else if) dichiarazione, e l'istruzione else. Si noti che questi hanno anche i due punti prima che il codice rientrato. 1.5 automatica del linguaggio naturale comprensione che abbiamo esplorato il linguaggio basso verso l'alto, con l'aiuto dei testi e il linguaggio di programmazione Python. Tuttavia, sono interessati a sfruttare la nostra conoscenza della lingua e della computazione con la costruzione di tecnologie linguistiche utili anche. Bene cogliere l'occasione ora fare un passo indietro dal nocciolo di codice al fine di dipingere un quadro più ampio di elaborazione del linguaggio naturale. A livello puramente pratico, tutti abbiamo bisogno di aiuto per navigare l'universo di informazioni rinchiuso nel testo sul Web. I motori di ricerca sono stati fondamentali per la crescita e la popolarità del Web, ma hanno alcune lacune. Ci vuole abilità, conoscenze, e un po 'di fortuna, per estrarre le risposte a domande come: Quali siti turistici posso visitare tra Philadelphia e Pittsburgh con un budget limitato Che cosa dicono gli esperti su fotocamere reflex digitali Quali previsioni sul mercato dell'acciaio sono state effettuate da credibili commentatori la scorsa settimana Ottenere un computer di rispondere comporta automaticamente una serie di attività di elaborazione delle lingue, tra cui l'estrazione delle informazioni, l'inferenza, e riepilogo, e dovrebbero essere effettuate su una scala e con un livello di robustezza che è ancora di là della nostra attuali capacità. Su un piano più filosofico, una sfida a lungo in piedi all'interno di intelligenza artificiale è stata quella di costruire macchine intelligenti, e una parte importante del comportamento intelligente è comprensione del linguaggio. Per molti anni questo obiettivo è stato visto come troppo difficile. Tuttavia, le tecnologie NLP diventano più maturi, e metodi robusti per l'analisi del testo illimitata diventare più diffusa, la prospettiva di comprensione del linguaggio naturale è riemersa come un obiettivo plausibile. In questa sezione vengono descritte alcune tecnologie comprensione del linguaggio, per dare un senso delle sfide interessanti che sono in attesa per voi. Disambiguazione In disambiguazione vogliamo capire quale senso di una parola è stata destinata in un determinato contesto. Considerare le parole ambigue servono e piatto: servire. aiutare con il cibo o bevande in possesso di un ufficio messo palla in piatto gioco. Naturalmente piatto di un dispositivo di comunicazione pasto in una frase che contiene la frase: ha servito il piatto. è possibile rilevare che entrambi servono e piatto vengono utilizzati con i loro significati alimentari. La sua improbabile che l'argomento di discussione spostata dallo sport alla stoviglie nello spazio di tre parole. In questo modo si avrebbe costretto a inventare immagini bizzarre, come un tennista professionista di prendere le loro frustrazioni su un tea-set di porcellana disposti accanto alla corte. In altre parole, abbiamo disambiguare automaticamente le parole utilizzando contesto, sfruttando il semplice fatto che le parole vicine sono strettamente legati significati. Come altro esempio di questo effetto contestuale, prendere in considerazione la parola per. che ha diversi significati, per esempio il libro di Chesterton (agentivo 8212 Chesterton è stato l'autore del libro) la coppa vicino alla stufa (locativo 8212 la stufa è dove la coppa è) e inviare da Venerdì (temporale 8212 Venerdì è il momento della dell'invio). Osservare (3c) che il significato della parola in corsivo ci aiuta a interpretare il significato di da. I bambini perduti sono stati trovati dai ricercatori (agentivo) I figli perduti sono stati trovati dalla montagna (locativo) I bambini perduti sono stati trovati nel pomeriggio (temporale) Pronoun risoluzione A profonda sorta di comprensione del linguaggio è quello di lavorare fuori quotwho ha cosa whomquot 8212 cioè di rilevare i soggetti e gli oggetti di verbi. Hai imparato a fare questo nella scuola elementare, ma la sua più difficile di quanto si possa pensare. Nella frase i ladri rubarono i dipinti, è facile dire che ha eseguito l'azione furto. Prendere in considerazione tre possibili seguenti frasi in (4c). e cercare di determinare ciò che è stato venduto, catturato, e ha trovato (un caso è ambiguo). I ladri hanno rubato i dipinti. Successivamente sono stati venduti. I ladri hanno rubato i dipinti. Successivamente sono stati catturati. I ladri hanno rubato i dipinti. Successivamente sono stati trovati. Rispondere a questa domanda tratta di trovare l'antecedente del pronome essi. sia ladri o dipinti. tecniche computazionali per affrontare questo problema includono risoluzione anafora 8212 identificazione di ciò che un pronome o una frase sostantivo si riferisce al 8212 e semantica etichettatura ruolo 8212 che identifica come un sintagma nominale si riferisce al verbo (in qualità di agente, paziente, strumento, e così via). Generazione di uscita Lingua Se siamo in grado di risolvere automaticamente tali problemi di comprensione del linguaggio, saremo in grado di passare ad attività che coinvolgono uscita linguaggio di generazione, come la questione segreteria e traduzione automatica. Nel primo caso, una macchina dovrebbe essere in grado di rispondere ad utenti domande relative alla raccolta di testi: Al fine di determinare se l'ipotesi è confermata dal testo, il sistema richiede la seguente conoscenze di: (i) se qualcuno è un autore di un libro, poi heshe ha scritto quel libro (ii) se qualcuno è un editore di un libro, poi heshe non ha scritto (tutti) quel libro (iii) se qualcuno è editore o autore di diciotto libri, quindi non si può concludere che heshe è autore di diciotto libri. Limitazioni della PNL Nonostante i progressi della ricerca condotta in compiti come la RTE, sistemi linguistici naturali che sono stati dispiegati per le applicazioni del mondo reale ancora non è possibile eseguire buon senso ragionamento o attingere la conoscenza del mondo in modo generale e robusto. Vediamo l'ora per questi problemi di intelligenza artificiale difficili da risolvere, ma nel frattempo è necessario vivere con alcune severe limitazioni sulle capacità di ragionamento e di conoscenza dei sistemi linguaggio naturale. Di conseguenza, fin dall'inizio, un obiettivo importante della ricerca PNL è stato quello di far progredire il difficile compito di tecnologie costruttive che quotunderstand lingua, quot usando ma potenti tecniche superficiali, invece di capacità di conoscenza e di ragionamento senza restrizioni. In effetti, questo è uno degli obiettivi di questo libro, e speriamo di equipaggiare con le conoscenze e le competenze necessarie per costruire sistemi NLP utili, e contribuire alla l'aspirazione a lungo termine della costruzione di macchine intelligenti. 1.6 I testi di sintesi sono rappresentati in Python utilizzando gli elenchi: Monty. Python. Possiamo usare l'indicizzazione, affettare, e la funzione len () su liste. Una parola quottokenquot è un aspetto particolare di una data parola in un testo una parola quottypequot è la forma unica della parola come una particolare sequenza di lettere. Contiamo gettoni parola utilizzando len (testo) e tipi di parole che usano len (set (testo)). Otteniamo il vocabolario di un testo t utilizzando ordinato (set (t)). Operiamo su ogni elemento di un testo utilizzando f (x) per x nel testo. Per ricavare il vocabolario, collasso caso distinzioni e ignorando la punteggiatura, possiamo impostare Write (w. lower () per w nel testo se w. isalpha ()). Trattiamo ogni parola in un testo utilizzando un'istruzione for, come ad w in t: o per parola nel testo:. Questo deve essere seguito dal carattere colon e un blocco indentato di codice, da eseguire ogni iterazione del ciclo. Ci prova una condizione con un'istruzione if: se len (parola) lt 5:. Questo deve essere seguito dal carattere due punti e un blocco indentato di codice, che deve essere eseguito solo se la condizione è vera. Una distribuzione di frequenza è un insieme di elementi lungo i loro conteggi di frequenza (ad esempio le parole di un testo e la loro frequenza di apparizione). Una funzione è un blocco di codice che è stato assegnato un nome e può essere riutilizzato. Le funzioni sono definite utilizzando la parola chiave def, come in mult def (x, y) xey sono parametri della funzione, e fungono da segnaposto per i valori effettivi dei dati. Una funzione viene chiamata specificando il suo nome seguito da uno o più argomenti tra parentesi, come questo: mult (3, 4). per esempio. len (testo1). 1.7 Ulteriori letture Questo capitolo ha introdotto nuovi concetti di programmazione, elaborazione del linguaggio naturale, e la linguistica, tutti mescolati insieme. Molti di loro sono consolidate nei seguenti capitoli. Tuttavia, si consiglia inoltre di consultare i materiali online forniti con questo capitolo (a nltk. org), compresi i collegamenti ad ulteriori materiali di sfondo e collegamenti ai sistemi di NLP on-line. È possibile, come anche di leggere su alcuni linguistica e concetti NLP-relativi a Wikipedia (ad esempio collocazioni, il test di Turing, la distinzione di tipo token). È necessario familiarizzare con la documentazione di Python disponibile all'indirizzo docs. python. org. compresi i molti tutorial e materiali di riferimento completi legati lì. Una guida per principianti Python è disponibile presso wiki. python. orgmoinBeginnersGuide. domande Varie Chi Python potrebbero trovare risposta nelle FAQ a python. orgdocfaqgeneral. Come approfondire NLTK, si potrebbe desiderare di iscriversi alla mailing list in cui vengono annunciate le nuove versioni del toolkit. There is also an NLTK-Users mailing list, where users help each other as they learn how to use Python and NLTK for language analysis work. Details of these lists are available at nltk. org . For more information on the topics covered in 1.5. and on NLP more generally, you might like to consult one of the following excellent books: Indurkhya, Nitin and Fred Damerau (eds, 2010) Handbook of Natural Language Processing (Second Edition) Chapman amp HallCRC. 2010. (Indurkhya amp Damerau, 2010) (Dale, Moisl, amp Somers, 2000) Jurafsky, Daniel and James Martin (2008) Speech and Language Processing (Second Edition). Prentice Hall. (Jurafsky amp Martin, 2008) Mitkov, Ruslan (ed, 2003) The Oxford Handbook of Computational Linguistics . Oxford University Press. (second edition expected in 2010). (Mitkov, 2002) The Association for Computational Linguistics is the international organization that represents the field of NLP. The ACL website ( aclweb. org ) hosts many useful resources, including: information about international and regional conferences and workshops the ACL Wiki with links to hundreds of useful resources and the ACL Anthology. which contains most of the NLP research literature from the past 50 years, fully indexed and freely downloadable. Some excellent introductory Linguistics textbooks are: (Finegan, 2007). (OGrady et al, 2004). (OSU, 2007). You might like to consult LanguageLog. a popular linguistics blog with occasional posts that use the techniques described in this book. 1.8 Exercises 9788 Try using the Python interpreter as a calculator, and typing expressions like 12 (4 1) . 9788 Given an alphabet of 26 letters, there are 26 to the power 10, or 26 10 . ten-letter strings we can form. That works out to 141167095653376L (the L at the end just indicates that this is Pythons long-number format). How many hundred-letter strings are possible 9788 The Python multiplication operation can be applied to lists. What happens when you type Monty. Python 20 . or 3 sent1 9788 Review 1.1 on computing with language. How many words are there in text2 . How many distinct words are there 9788 Compare the lexical diversity scores for humor and romance fiction in 1.1. Which genre is more lexically diverse 9788 Produce a dispersion plot of the four main protagonists in Sense and Sensibility . Elinor, Marianne, Edward, and Willoughby. What can you observe about the different roles played by the males and females in this novel Can you identify the couples 9788 Find the collocations in text5 . 9788 Consider the following Python expression: len(set(text4)) . State the purpose of this expression. Describe the two steps involved in performing this computation. 9788 Review 1.2 on lists and strings. Define a string and assign it to a variable, e. g. mystring My String (but put something more interesting in the string). Print the contents of this variable in two ways, first by simply typing the variable name and pressing enter, then by using the print statement. Try adding the string to itself using mystring mystring . or multiplying it by a number, e. g. mystring 3 . Notice that the strings are joined together without any spaces. How could you fix this 9788 Define a variable mysent to be a list of words, using the syntax mysent quotMyquot. quotsentquot (but with your own words, or a favorite saying). Use. join(mysent) to convert this into a string. Use split() to split the string back into the list form you had to start with. 9788 Define several variables containing lists of words, e. g. phrase1 . phrase2 . e così via. Join them together in various combinations (using the plus operator) to form whole sentences. What is the relationship between len(phrase1 phrase2) and len(phrase1) len(phrase2) 9788 Consider the following two expressions, which have the same value. Which one will typically be more relevant in NLP Why 9788 We have seen how to represent a sentence as a list of words, where each word is a sequence of characters. What does sent122 do Why Experiment with other index values. 9788 The first sentence of text3 is provided to you in the variable sent3 . The index of the in sent3 is 1, because sent31 gives us the . What are the indexes of the two other occurrences of this word in sent3 9788 Review the discussion of conditionals in 1.4. Find all words in the Chat Corpus ( text5 ) starting with the letter b. Show them in alphabetical order. 9788 Type the expression range(10) at the interpreter prompt. Now try range(10, 20) . range(10, 20, 2) . and range(20, 10, -2) . We will see a variety of uses for this built-in function in later chapters. 9681 Use text9.index() to find the index of the word sunset. Youll need to insert this word as an argument between the parentheses. By a process of trial and error, find the slice for the complete sentence that contains this word. 9681 Using list addition, and the set and sorted operations, compute the vocabulary of the sentences sent1 . sent8 . 9681 What is the difference between the following two lines Which one will give a larger value Will this be the case for other textsThe scikits. timeseries module is no longer undergoing active development. C'è una lista eccezionale di insetti che sono difficilmente possono essere risolti. Il piano è per le funzionalità di base di questo modulo da attuare in panda. Se si desidera vedere questo modulo in diretta su indipendentemente da panda, sentitevi liberi di fork del codice e prenderne il controllo. Il modulo scikits. timeseries fornisce classi e funzioni per la manipolazione, la segnalazione, e tracciando serie storiche di varie frequenze. Il focus è su un comodo accesso dei dati e la manipolazione sfruttando la funzionalità matematica esistente NumPy e SciPy. Se i seguenti scenari suona familiare a voi, allora è probabile trovare il modulo scikits. timeseries utile: Confronto molte serie tempo con diverse gamme di dati Creare diagrammi di serie storiche con le etichette degli assi in modo intelligente distanziati convertire una serie di tempo quotidiano (ad esempio i prezzi delle azioni.) a mensile prendendo il valore medio nel corso di ogni mese di lavoro con i dati che sono mancanti i valori determinare l'ultimo giorno lavorativo del monthquarteryear precedente ai fini di reporting Calcolare una deviazione standard in movimento in modo efficiente Questi sono solo alcuni degli scenari che sono fatti molto semplice con i scikits modulo. timeseries. Documentation

No comments:

Post a Comment