2012-05-11 17 views

risposta

77

Alla base di ciò, la principale differenza tra gli algoritmi di porter e lancaster è che lo stelo lancaster è significativamente più aggressivo rispetto allo stelo del porter. I tre principali algoritmi di derivazione oggi in uso sono Porter, Snowball (Porter2) e Lancaster (Paice-Husk), con il continuum di aggressività che segue sostanzialmente le stesse linee. Porter è l'algoritmo meno aggressivo, con le specifiche di ciascun algoritmo effettivamente abbastanza lungo e tecnico. Ecco una suddivisione per voi però:

Porter: stemmer più usato senza dubbio, anche uno degli stemmer più delicati. Uno dei pochi stemmer che in realtà ha un supporto Java che è un vantaggio, sebbene sia anche l'algoritmo più computazionalmente avanzato (non garantito da un margine molto significativo). È anche il più vecchio algoritmo di derivazione da un ampio margine.

Porter2: Quasi universalmente considerato come un miglioramento rispetto al portiere, e per una buona ragione. Lo stesso Porter ammette che è meglio del suo algoritmo originale. Tempo di calcolo leggermente più rapido rispetto al porter, con una comunità abbastanza grande attorno ad esso.

Lancaster: algoritmo di derivazione molto aggressivo, a volte per un errore. Con il portiere e la palla di neve, le rappresentazioni con gambo sono di solito abbastanza intuitive per un lettore, non così con Lancaster, poiché molte parole più brevi diventeranno totalmente offuscate. L'algoritmo più veloce qui, e ridurrà enormemente il tuo working set di parole, ma se vuoi più distinzione, non lo strumento che vorresti.

Onestamente, sento che la palla di neve è solitamente la strada da percorrere. Ci sono alcune circostanze in cui Lancaster ridurrà enormemente il tuo working set, il che può essere molto utile, tuttavia l'aumento marginale della velocità su palla di neve secondo me non merita la mancanza di precisione. Porter ha la maggior parte delle implementazioni e di solito è l'algoritmo predefinito, ma se puoi, usa la palla di neve.

+31

Palla di neve è in realtà un linguaggio progettato da Martin Porter per la definizione precisa di stemmer, non è di per sé un ostacolo. L'algoritmo a cui fai riferimento è noto come "English Stemmer" o "Porter2 Stemmer". È molto simile a "Porter Stemmer" ma con regole leggermente migliorate. Se si stanno facendo paragoni per la ricerca, "Porter" (originale) viene usato molto più spesso, ma se si desidera un'accuratezza pratica attenersi a "Porter2". "Paice-Husk" è uno stelo pesante per impostazione predefinita, ma utile se si rollano le proprie regole in quanto utilizza un file di regole separato. Il tempo di calcolo tra i 3 è praticamente insignificante. – TheManWithNoName

+0

@TheManWithNoName La risposta originale, riguardo a cosa fosse Palla di Neve, mi ha confuso perché non era quello che avevo letto. Grazie per aver chiarito la confusione. – Gerry

+3

Per il beneficio della risposta, la confusione tra il linguaggio Snowball e il supposto morso della Palla di Neve è ben distribuito. Ad esempio, NLTK utilizza la terminologia 'SnowballStemmer': http://www.nltk.org/howto/stem.html – juanmirocks

Problemi correlati