Buona tecnica per la tokenizzazione del testo di ricerca

8

Stiamo cercando un modo per tokenizzare del testo nello stesso modo in cui lo farebbe un motore di ricerca.

Il motivo per cui stiamo facendo questo è che possiamo eseguire alcune analisi statistiche sui token. Il linguaggio che stiamo usando è python, quindi preferirei una tecnica che funziona in quel linguaggio, ma probabilmente potrebbe impostare qualcosa per usare un'altra lingua se necessario.

Esempio

Token originale:

We have some great burritos!

Più semplificato: (rimuovi plurali e punteggiatura)

We have some great burrito

Ancora più semplificato: (rimuovi le parole superflue)

great burrito

Miglior: (riconosce il significato positivo e negativo):

burrito -positive-
    
posta Chris Dutrow 15.11.2012 - 19:41
fonte

1 risposta

7

Python ha un ottimo toolkit per il linguaggio naturale, NLTK . Supporta la tokenizzazione delle parole fuori dagli schemi:

>>> import nltk
>>> input = 'We have some great burritos!'
>>> tokens = nltk.word_tokenize(input)
>>> tokens
['We', 'have', 'some', 'great', 'burritos', '!']
>>> nltk.pos_tag(tokens)
[('We', 'PRP'), ('have', 'VBP'), ('some', 'DT'), ('great', 'JJ'), ('burritos', 'NNS'), ('!', '.')]

L'ultima struttura include tag in linguaggio naturale, che ti consentono di eliminare parole dalla considerazione in base alla loro classificazione. Probabilmente vorrai concentrarti sui tag JJ (aggettivo) e NN -prefixed (sostantivo).

Da lì in avanti puoi applicare stemming e individuare aggettivi positivi e negativi .

Credo che per la classificazione degli aggettivi, tuttavia, avresti bisogno di creare il tuo corpus dalle risorse online come questo ; la libreria ti fornisce gli strumenti per questo.

Ecco un esempio di derivazione usando l'algoritmo Porter:

>>> from nltk.stem.porter import PorterStemmer
>>> PorterStemmer().stem('burritos')
'burrito'

O'Reilly ha pubblicato un libro sulla biblioteca, ora disponibile online .

    
risposta data 15.11.2012 - 21:21
fonte

Leggi altre domande sui tag