2011-10-06 28 views
6

Ho testo memorizzato in una stringa python.Identificazione di parole e frasi importanti nel testo

What I Want

  1. Per identificare le parole chiave in quel testo.
  2. per identificare N-gram in quel testo (idealmente più di solo bi e tri grammi).

Tenete a mente ...

  • Il testo potrebbe essere di piccole dimensioni (ad esempio Tweet dimensioni)
  • Il testo potrebbe essere di mezzo (ad esempio articolo giornalistico dimensioni)
  • Il testo potrebbe essere grande (ad esempio libro o capitolo di dimensioni)

Cosa I have

sto già utilizzando nltk per rompere il corpus in token e rimuovere parole non significative:

# split across any non-word character 
    tokenizer = nltk.tokenize.RegexpTokenizer('[^\w\']+', gaps=True) 

    # tokenize 
    tokens = tokenizer.tokenize(text) 

    # remove stopwords 
    tokens = [w for w in tokens if not w in nltk.corpus.stopwords.words('english')] 

Sono consapevole del BigramCollocationFinder e TrigramCollectionFinder che fa exaclty quello che sto cercando per quei due casi.

La questione

ho bisogno di consigli per n-grammi di ordine superiore, migliorando il tipo di risultati che provengono da BCF e TCF, e consigli sul modo migliore per identificare le parole chiave individuali più uniche.

Grazie mille!

risposta

1

Per quanto il modo migliore per identificare le parole chiave individuali più uniche, tfidf è la misura totale. Quindi, hai in qualche modo l'integrazione di un motore di ricerca (o fai un semplice indice invertito personalizzato che è dinamico e mantiene le frequenze dei termini, le frequenze dei documenti) per calcolare in modo efficiente e al volo tfidf.

Come per i N-grammi, perché non si crea un parser personalizzato utilizzando un approccio "finestra" (la finestra è di lunghezza N) che identifica, per esempio, il più frequente di essi? (basta tenere ogni N-gram come chiave in un dizionario con valore o frequenza o punteggio (basato su tfidf dei singoli termini))

+0

Spero di non re-inventare le ruote dove possibile (tf-idf I posso solo supporre che sia fatto da qualche parte in nltk ma sto avendo qualche problema a capire i ganci). Simile per N-grammi, anche se mi sto rapidamente rendendo conto che se voglio più di trilogrammi, la ruota non è stata necessariamente implementata (e, onestamente, più di tre grammi probabilmente non sono utili) – slifty

+0

Credo sia fondamentale . Durante l'elaborazione del corpus, il calcolo di tf, df può essere eseguito rapidamente e un DB può aiutare a memorizzare l'indice invertito. Ancora meglio, implementa un indice invertito posizionale. N-grammi sono deprecati :). – hymloth

Problemi correlati