Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    47

    [Python] Inserire algoritmo di lesk

    Ciao ragazzi imploro il vostro aiuto, sono da un paio di ore su questo codice e non riesco proprio a venirne fuori.
    Devo usare l'algoritmo di lesk per il disambiguation del testo.
    Ho già implementato la funzione per il preprocessing del testo e quello che mi ritrovo attualmente è un testo pulito e nella seguente forma:
    tokens
    codice:
    [('I', 'PRP'), ('love', 'VBP'), ('you', 'PRP'), ('for', 'IN'), ('supporting', 'VBG'), ('me', 'PRP'), ('every', 'DT'), ('day', 'NN')]
    tokens no stop
    codice:
    [('I', 'PRP'), ('love', 'VBP'), ('supporting', 'VBG'), ('every', 'DT'), ('day', 'NN')]
    tokens stemmed
    codice:
    [(u'I', 'PRP'), (u'love', 'VBP'), (u'support', 'VBG'), (u'everi', 'DT'), (u'day', 'NN')]
    al fine della mia analisi, le parole per me significative sono : nomi (NN), verbi (VBP), aggettivi (JJ) e avverbi(RB). Vorrei innanzitutto creare una funzione che presi in ingresso questi tweet mi ritorna solo le parole che a me servono... come posso fare?
    La mia idea sarebbe:
    codice:
    def return_tag(tokens_t):
            for t,part in tokens_t:
                    if part==("NN") or part==("JJ") or part==("VB") or part ==("RB"):
                            return tokens_t
    ma è completamente sbagliata potreste aiutarmi'?'????
    Ultima modifica di MItaly; 06-02-2016 a 15:48

  2. #2
    La tua funzione è sbagliata dato che restituisci tutta la lista che ti è stata passata (quindi non l'hai filtrata) appena incontri una parola che ti interessa. Puoi riscriverla così:
    codice:
    def return_tag(tokens_t):
        ret = []
        for t,part in tokens_t:
            if part==("NN") or part==("JJ") or part==("VB") or part ==("RB"):
                ret.append((t,part))
        return ret
    Ti puoi risparmiare quell'if gigante mettendo i termini che ti interessano in un set:
    codice:
    def return_tag(tokens_t):
        interesting_types = set(["NN", "JJ", "VB", "RB")
        ret = []
        for t,part in tokens_t:
            if part in interesting_types:
                ret.append((t,part))
        return ret
    Infine, quel for con l'if che accumula risultati è esattamente il pattern della list comprehension:
    codice:
    def return_tag(tokens_t):
        interesting_types = set(["NN", "JJ", "VB", "RB")
        return [(t,part) for t,part in tokens_t if part in interesting_types]
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2014
    Messaggi
    47
    Grazie mille sei stato molto molto utile. Grazie mille!

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.