pip install multi-rake Se a instalação falhar devido a narrowing conversions de erro cld , pode ser instalado com
CFLAGS= " -Wno-narrowing " pip install multi-rakeTexto em inglês, não especificamos o idioma explicitamente nem a lista de palavras de parada (a lista interna é usada).
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 em Esperanto (artigo sobre liberalismo). Não há lista de palavras de parada para esse idioma, elas serão geradas a partir do texto fornecido.
text consiste em três primeiros parágrafos de introdução. text_for_stopwords - todos os outros 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)] # propertyPortanto, somos capazes de obter resultado decente sem um conjunto explícito de palavras -paradas.
Inicialize o objeto de 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 - o word é selecionado para fazer parte da palavra -chave se seu comprimento for> = min_chars. Padrão 3
max_words - Número máximo de palavras na frase considerada uma palavra -chave. Padrão 3
min_freq - número mínimo de ocorrências de uma frase a ser considerado uma palavra -chave. Padrão 1
Idioma_code - Forneça código de idioma como string para usar o conjunto de palavras -parada interno. Consulte Lista de idiomas disponíveis. Se o idioma não for especificado, o algoritmo tentará determinar a linguagem com o CLD2 e usar o conjunto correspondente de palavras de parada internas. Padrão Nenhum
Palavras de parada - Forneça a própria coleção de palavras de parada (de preferência como definido, com base inferior). Substitui language_code se foi especificado. Padrão Nenhum
Keep language_code e stopwords como None e as palavras de parada serão geradas a partir do texto fornecido.
LANG_DETECT_THREHOLD - limite para obter probabilidade de linguagem detectada no CLD2 (0-100). Padrão 50
max_words_unknown_lang - o mesmo que max_words , mas será usado se o idioma for desconhecido e as palavras de parada forem geradas a partir do texto fornecido. Geralmente, o melhor resultado é obtido quando o conjunto de palavras de parada especificamente criado é usado, no caso de sua ausência e uso de palavras-chave geradas que as palavras-chave resultantes podem não ser tão bonitas e pode ser uma boa ideia, por exemplo, produzir palavras-chave de duas palavras para idiomas desconhecidos e palavras-chave de três palavras para idiomas com conjuntos predefinidos de palavras de parada. Padrão 2
Gerado_stopwords_percentile - Para gerar palavras de parada, criamos a distribuição de cada palavra no texto por frequência. Palavras acima desse percentil (0 - 100) serão consideradas candidatos para se tornarem palavras de parada. Padrão 80
gerado_stopwords_max_len - comprimento máximo do caractere das palavras de parada geradas. Padrão 3
gerado_stopwords_min_freq - frequência mínima de palavras de parada geradas na distribuição. Padrão 2
Aplique o objeto RAKE ao texto.
keywords = rake . apply (
text ,
text_for_stopwords = None ,
)Texto - String contendo texto a partir do qual as palavras -chave devem ser geradas.
text_for_stopwords - string contendo texto que será usado para geração de palavras de parada ao lado text . Por exemplo, você tem artigo com introdução e várias subseções. Você sabe que, para seus propósitos, as palavras -chave da introdução serão suficientes, você não conhece a linguagem do texto nem a lista de palavras de parada. Portanto, as palavras de parada podem ser geradas a partir do próprio texto e quanto mais texto você tiver, melhor. Do que você pode especificar text=introduction, text_for_stopwords=rest_of_your_text .
O algoritmo de rake funciona conforme descrito em Rose, S., Engel, D., Cramer, N., & Cowley, W. (2010). Extração automática de palavras -chave de documentos individuais. Em MW Berry e J. Kogan (Eds.), Minina de texto: Teoria e Aplicações: John Wiley & Sons
Essa implementação é diferente dos outros por seu suporte multilíngue. Basicamente, você pode fornecer texto sem conhecer seu idioma (ele deve ser escrito com alfabetos cirílico ou latino), sem lista explícita de palavras -paradas e obter resultado decente. Embora o melhor resultado seja alcançado com uma lista de palavras de parada completamente construída.
O que está acontecendo sob o capô:
text e text_for_stopwords Geregamos palavras de parada criando distribuição de frequência de palavras no texto e filtrando -as com parâmetros generated_stopwords_percentile , generated_stopwords_max_len , generated_stopwords_min_freq . Não poderemos gerá-los perfeitamente, mas é fácil encontrar artigos e preposições, porque geralmente eles consistem em 3-4 caracteres e aparecem com frequência. Essas palavras de parada, juntamente com os delimitadores de pontuação, permitem obter resultados decentes para idiomas que não entendemos.
Durante a inicialização do ancinho, somente o código do idioma deve ser usado.
O repositório configurou Linter, testes e cobertura.
Crie um novo ambiente virtual dentro da pasta Multi_Rake para usá -lo.
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 Rake: Rose, S., Engel, D., Cramer, N., & Cowley, W. (2010). Extração automática de palavras -chave de documentos individuais. Em MW Berry e J. Kogan (Eds.), Minina de texto: Teoria e Aplicações: John Wiley & Sons
Como uma implementação de rake de base por FabianVF, foi utilizado.
Palavras de parada: Trec-kba, classifica NL