pip install multi-rake Si la instalación falla debido a narrowing conversions de errores cld , de lo que se puede instalar con
CFLAGS= " -Wno-narrowing " pip install multi-rakeTexto en inglés, no especificamos explícitamente el idioma ni la lista de palabras de parada (se utiliza la lista incorporada).
from multi_rake import Rake
text_en = (
'Compatibility of systems of linear constraints over the set of '
'natural numbers. Criteria of compatibility of a system of linear '
'Diophantine equations, strict inequations, and nonstrict inequations '
'are considered. Upper bounds for components of a minimal set of '
'solutions and algorithms of construction of minimal generating sets '
'of solutions for all types of systems are given. These criteria and '
'the corresponding algorithms for constructing a minimal supporting '
'set of solutions can be used in solving all the considered types of '
'systems and systems of mixed types.'
)
rake = Rake ()
keywords = rake . apply ( text_en )
print ( keywords [: 10 ])
# ('minimal generating sets', 8.666666666666666),
# ('linear diophantine equations', 8.5),
# ('minimal supporting set', 7.666666666666666),
# ('minimal set', 4.666666666666666),
# ('linear constraints', 4.5),
# ('natural numbers', 4.0),
# ('strict inequations', 4.0),
# ('nonstrict inequations', 4.0),
# ('upper bounds', 4.0),
# ('mixed types', 3.666666666666667),Texto escrito en Esperanto (artículo sobre liberalismo). No hay una lista de palabras de parada para este idioma, se generarán a partir del texto proporcionado.
text consta de tres primeros párrafos de introducción. text_for_stopwords - todos los demás texto.
text = (
'Liberalismo estas politika filozofio aŭ mondrigardo konstruita en '
'ideoj de libereco kaj egaleco. Liberaluloj apogas larĝan aron de '
'vidpunktoj depende de sia kompreno de tiuj principoj, sed ĝenerale '
'ili apogas ideojn kiel ekzemple liberaj kaj justaj elektoj, '
'civitanrajtoj, gazetara libereco, religia libereco, libera komerco, '
'kaj privata posedrajto. Liberalismo unue iĝis klara politika movado '
'dum la Klerismo, kiam ĝi iĝis populara inter filozofoj kaj '
'ekonomikistoj en la okcidenta mondo. Liberalismo malaprobis heredajn '
'privilegiojn, ŝtatan religion, absolutan monarkion kaj la Didevena '
'Rajto de Reĝoj. La filozofo John Locke de la 17-a jarcento ofte '
'estas meritigita pro fondado de liberalismo kiel klara filozofia '
'tradicio. Locke argumentis ke ĉiu homo havas naturon rekte al vivo, '
'libereco kaj posedrajto kaj laŭ la socia '
'kontrakto, registaroj ne rajtas malobservi tiujn rajtojn. '
'Liberaluloj kontraŭbatalis tradician konservativismon kaj serĉis '
'anstataŭigi absolutismon en registaroj per reprezenta demokratio kaj '
'la jura hegemonio.'
)
rake = Rake ( max_words_unknown_lang = 3 )
keywords = rake . apply ( text , text_for_stopwords = other_text )
print ( keywords )
# ('serĉis anstataŭigi absolutismon', 9.0) # sought to replace absolutism
# ('filozofo john locke', 8.5), # philosopher John Locke
# ('locke argumentis', 4.5) # Locke argues
# ('justaj elektoj', 4.0), # fair elections
# ('libera komerco', 4.0), # free trade
# ('okcidenta mondo', 4.0), # western world
# ('ŝtatan religion', 4.0), # state religion
# ('absolutan monarkion', 4.0), # absolute monarchy
# ('didevena rajto', 4.0), # Dominican Rights
# ('socia kontrakto', 4.0), # social contract
# ('jura hegemonio', 4.0), # legal hegemony
# ('mondrigardo konstruita', 4.0) # worldview built
# ('vidpunktoj depende', 4.0), # views based
# ('sia kompreno', 4.0), # their understanding
# ('tiuj principoj', 4.0), # these principles
# ('gazetara libereco', 3.5), # freedom of press
# ('religia libereco', 3.5), # religious freedom
# ('privata posedrajto', 3.5), # private property
# ('libereco', 1.5), # liberty
# ('posedrajto', 1.5)] # propertyPor lo tanto, podemos obtener un resultado decente sin un conjunto explícito de palabras de parada.
Inicializar el objeto Rake
from multi_rake import Rake
rake = Rake (
min_chars = 3 ,
max_words = 3 ,
min_freq = 1 ,
language_code = None , # 'en'
stopwords = None , # {'and', 'of'}
lang_detect_threshold = 50 ,
max_words_unknown_lang = 2 ,
generated_stopwords_percentile = 80 ,
generated_stopwords_max_len = 3 ,
generated_stopwords_min_freq = 2 ,
)Min_chars : la palabra se selecciona para formar parte de la palabra clave si su longitud es> = min_chars. Predeterminado 3
Max_words : el número máximo de palabras en la frase considerada como una palabra clave. Predeterminado 3
Min_freq - Número mínimo de ocurrencias de una frase a considerar una palabra clave. Predeterminado 1
Language_code : proporcione código de idioma como cadena para usar un conjunto incorporado de palabras de parada. Ver lista de idiomas disponibles. Si el lenguaje no se especifica, el algoritmo intentará determinar el lenguaje con CLD2 y use el conjunto correspondiente de palabras de parada incorporadas. Ninguno predeterminado
Palabras de parada : proporcione la propia colección de palabras de parada (preferiblemente como establecidas, LowerCased). Anula language_code si se especificó. Ninguno predeterminado
Mantenga language_code y stopwords ya que None y las palabras de parada se generarán a partir del texto proporcionado.
lang_detect_threshold - umbral para la probabilidad de lenguaje detectado en CLD2 (0-100). Predeterminado 50
max_words_unknown_lang : lo mismo que max_words , pero se usará si el lenguaje es desconocido y las palabras de parada se generan a partir del texto proporcionado. Por lo general, el mejor resultado se obtiene cuando se usa específicamente el conjunto de palabras de parada, en el caso de su ausencia y el uso de las palabras de parada generadas que las palabras clave resultantes pueden no ser tan bonitas y puede ser una buena idea, por ejemplo, producir palabras clave de 2 palabras para lenguajes desconocidos y palabras clave de 3 palabras para lenguajes con conjuntos predefinidos de paradas de palabras. Valor predeterminado 2
generado_stopwords_percentile : para generar palabras de parada creamos distribución de cada palabra en texto por frecuencia. Las palabras por encima de este percentil (0 - 100) se considerarán candidatos para convertirse en palabras de parada. Valor predeterminado 80
generado_stopwords_max_len - longitud máxima del carácter de las palabras de parada generadas. Predeterminado 3
generado_stopwords_min_freq - frecuencia mínima de las palabras de parada generadas en la distribución. Valor predeterminado 2
Aplicar objeto de rastrillo al texto.
keywords = rake . apply (
text ,
text_for_stopwords = None ,
)Texto : cadena que contiene texto desde el cual se deben generar palabras clave.
text_for_stopwords : cadena que contiene texto que se utilizará para la generación de palabras de parada junto con text . Por ejemplo, tiene un artículo con introducción y varias subsecciones. Usted sabe que para sus propósitos, las palabras clave de la introducción serán suficientes, no conoce el lenguaje del texto ni tiene una lista de palabras de parada. Por lo tanto, se pueden generar palabras de parada a partir del texto mismo y cuanto más texto tenga, mejor. De lo que puede especificar text=introduction, text_for_stopwords=rest_of_your_text .
El algoritmo de Rake funciona como se describe en Rose, S., Engel, D., Cramer, N. y Cowley, W. (2010). Extracción automática de palabras clave de documentos individuales. En MW Berry y J. Kogan (Eds.), Minería de texto: teoría y aplicaciones: John Wiley & Sons
Esta implementación es diferente de otros por su soporte multilingüe. Básicamente, puede proporcionar texto sin conocer su lenguaje (debe escribirse con alfabetos cirílicos o latinos), sin una lista explícita de palabras de parada y obtener resultados decentes. Aunque el mejor resultado se logra con una lista completamente construida de palabras de parada.
Lo que está pasando debajo del capó:
text y text_for_stopwords Generamos palabras de parada creando una distribución de frecuencia de palabras en el texto y filtrándolas con los parámetros generated_stopwords_percentile , generated_stopwords_max_len , generated_stopwords_min_freq . No podremos generarlos perfectamente, pero es bastante fácil encontrar artículos y preposiciones, porque generalmente consisten en 3-4 caracteres y aparecen con frecuencia. Estas palabras de parada, junto con delimitadores de puntuación, nos permiten obtener resultados decentes para los idiomas que no entendemos.
Durante la inicialización del rastrillo, solo se debe utilizar el código de idioma.
El repositorio ha configurado un linter, pruebas y cobertura.
Cree un nuevo entorno virtual dentro de la carpeta Multi_rake para usarlo.
python3 -m venv env
source env/bin/activate
make install-dev # install dependencies
make lint # run linter
make test # run tests and coverage Algoritmo de rastrillo: Rose, S., Engel, D., Cramer, N. y Cowley, W. (2010). Extracción automática de palabras clave de documentos individuales. En MW Berry y J. Kogan (Eds.), Minería de texto: teoría y aplicaciones: John Wiley & Sons
Como una base de implementación de rastrillo de Fabianvf se utilizó.
Palabras de parada: Trec-KBA, clasifica a NL