Hvordan skrive en e-post Miner for Python

Hvordan skrive en e-post Miner for Python


Mining e-post er et middel for å trekke ut informasjon, for eksempel antall ord, setninger, eller rikdom av abonnentens ordforråd, fra teksten i e-posten. Skrive en e-post gruvearbeider med Python krever mange "bevegelige deler" i form av Python utvidelser, kalt pakker, som laster ned e-postmeldinger av av servere. Meldinger blir konvertert til strenger, slik at andre Python pakker kan analysere dem og vise hva de finner. Dette er en svært komplisert oppgave som krever mer enn et forbigående uformell kunnskap om Python programmering. Derfor fortsette med forsiktighet og tålmodighet.

Bruksanvisning

1 Åpne en terminal session og type python -V ved ledeteksten for å sjekke at du har Python 2.6 eller høyere, men ikke 3.0 eller høyere. Versjoner 2.6 eller 2.7 er ideelle fordi de er kompatible med NLTK og PyYAML. Besøk Python pakker indeksen siden; finne og laste ned PyYAML og NLTK pakker. Unzip / untar dem. Endre katalogen til PyYAML katalogen. På kommandolinjen skriver du: sudo python setup.py installere. Det skal se slik ut:

Min-datamaskin: PyYAML-3.2.0 Me $ sudo python setup.py installere

Du vil bli bedt om å oppgi et passord. Skriv det, og trykk på returknappen. Følg denne fremgangsmåten for hver Python-pakken du installerer.

2 Last ned e-postmeldinger for parsing med følgende linjer med kode:

! / Usr / local / bin / python

import poplib, getpass, sys, mailconfig

mailserver = mailconfig.popservername

Mailuser = mailconfig.popusername

mailpasswd = getpass.getpass ( 'Passord for% s?'% mailserver)

server = poplib.POP3 (mailserver)

server.user (Mailuser)

server.pass_ (mailpasswd)

print (server.getwelcome ())

msgCount, msgBytes = server.stat ()

print ( 'Det er', msgCount, 'postmeldinger i', msgBytes, 'bytes')

print (server.list ())

print ( '-' * 80)

input ( '[Trykk Enter])

for jeg er innenfor rekkevidde (msgCount):

hdr, melding, oktetter = server.retr (i + 1)

for linje i meldingen: print (line.decode ())

lese ( '-' * 80)

hvis jeg <msgCount - 1:

Dette skriptet vil koble til pop3 e-postserveren, spørre deg om brukernavn og passord, telle antall meldinger på serveren og lese dem inn i minnet.

3 Mine e-postmeldinger ved å konvertere hver melding til en streng, en innfødt datatype i Python, som kan søkes med Python String metoder, vanlig uttrykk motor, og Natural Language Toolkit:

m = msgCount [1]

s = str (m)

fra email.parser import parser

import nltk

import re

4 Utvinne den første meldingen om informasjon av interesse. Finn ut hvor mange ord er i meldingen ved å skrive inn følgende kommando:

linse)

Det vil returnere en heltallsverdi for antall ord. For å finne hver setning med ordet boliglån, skriver du inn følgende NLTK kommando:

s.concordance ( "boliglån")

Dette vil returnere hver setning med ordet boliglån i det; svært nyttig for detektiver undersøke boliglån svindel.