2012-05-11 105 views

Respuesta

77

En lo básico, la mayor diferencia entre los algoritmos de portador y Lancaster es que el lancaster es significativamente más agresivo que el portamuestra. Los tres principales algoritmos de derivación actualmente en uso son Porter, Snowball (Porter2) y Lancaster (Paice-Husk), con el continuum de agresividad básicamente siguiendo esas mismas líneas. Porter es el algoritmo menos agresivo, con los detalles específicos de cada algoritmo siendo bastante largos y técnicos. Sin embargo, aquí hay un desglose para usted:

Porter: sin duda, la lexadora más utilizada es también una de las lentillas más suaves. Es uno de los pocos stemmers que en realidad tiene soporte para Java, lo que es una ventaja, aunque también es el más intensivo computacionalmente de los algoritmos (concedido no por un margen muy significativo). También es el algoritmo de derivación más antiguo por un amplio margen.

Porter2: Casi universalmente considerado como una mejora sobre el portero, y por una buena razón. El propio Porter admite que es mejor que su algoritmo original. Tiempo de cálculo ligeramente más rápido que el portero, con una comunidad bastante grande a su alrededor.

Lancaster: Algoritmo de arranque muy agresivo, a veces hasta un error. Con porter y snowball, las representaciones de tallo suelen ser bastante intuitivas para un lector, no así con Lancaster, ya que muchas palabras más cortas quedarán totalmente ofuscadas. El algoritmo más rápido aquí, reducirá enormemente el conjunto de palabras que trabajas, pero si quieres más distinción, no la herramienta que deseas.

Honestamente, creo que Snowball suele ser el camino a seguir. Hay ciertas circunstancias en las que Lancaster recortará enormemente su conjunto de trabajo, lo que puede ser muy útil; sin embargo, en mi opinión, el aumento marginal de velocidad sobre la bola de nieve no justifica la falta de precisión. Sin embargo, Porter tiene la mayoría de las implementaciones y, por lo general, es el algoritmo de acceso predeterminado, pero si puede, use bola de nieve.

+31

Bola de nieve es en realidad un lenguaje diseñado por Martin Porter para la definición precisa de los proyectiles, no es en sí mismo un tallo. El algoritmo al que se refiere se conoce como "English Stemmer" o "Porter2 Stemmer". Es muy similar a "Porter Stemmer" pero con reglas ligeramente mejoradas. Si está realizando comparaciones para la investigación, "Porter" (original) se usa con mucha más frecuencia, pero si desea precisión práctica, siga con "Porter2". "Paice-Husk" es un generador de gran tamaño por defecto, pero es útil si se implementan sus propias reglas ya que emplea un archivo de reglas por separado. El tiempo de cálculo entre los 3 es bastante trivial. – TheManWithNoName

+0

@TheManWithNoName La respuesta original, en cuanto a lo que Snowball era, me confundió porque no era lo que había leído. Gracias por aclarar la confusión. – Gerry

+3

En beneficio de la respuesta, la confusión entre el lenguaje Snowball y el supuesto generador de bolas Snowball está bien difundida. Por ejemplo, NLTK usa la terminología 'SnowballStemmer': http://www.nltk.org/howto/stem.html – juanmirocks

Cuestiones relacionadas