pip install multi-rake Si l'installation échoue en raison narrowing conversions des erreurs cld , elle peut être installée avec
CFLAGS= " -Wno-narrowing " pip install multi-rakeTexte anglais, nous ne spécifions pas explicitement la langue ni la liste des mots d'arrêt (la liste intégrée est utilisée).
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),Texte écrit en espéranto (article sur le libéralisme). Il n'y a pas de liste de mots d'arrêt pour cette langue, ils seront générés à partir du texte fourni.
text se compose de trois premiers paragraphes d'introduction. text_for_stopwords - tous les autres texte.
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)] # propertyAinsi, nous pouvons obtenir un résultat décent sans ensemble explicite de mots d'arrêt.
Initialiser l'objet 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 - le mot est sélectionné pour faire partie du mot-clé si sa longueur est> = min_chars. Par défaut 3
MAX_WORDS - Nombre maximum de mots en phrase considérée comme un mot-clé. Par défaut 3
MIN_FREQ - Nombre minimum de survenants d'une phrase pour être considéré comme un mot-clé. Par défaut 1
Language_Code - Fournir du code de langue en tant que chaîne pour utiliser un ensemble intégré de mots d'arrêt. Voir la liste des langues disponibles. Si le langage n'est pas spécifié, l'algorithme essaiera de déterminer la langue avec CLD2 et d'utiliser un ensemble correspondant de mots d'arrêt intégrés. None par défaut
MOTS D'ÉTAPHE - Fournir la propre collection de mots d'arrêt (de préférence en tant que jeu, LowerCasé). Remplace language_code si elle a été spécifiée. None par défaut
Gardez language_code et stopwords car None et les mots d'arrêt seront générés à partir du texte fourni.
Lang_detect_Threshold - Seuil pour la probabilité de langue détectée dans CLD2 (0-100). Par défaut 50
MAX_WORDS_UNKNOWN_LANG - Identique à max_words mais sera utilisé si le langage est inconnu et que les mots d'arrêt sont générés à partir du texte fourni. Habituellement, le meilleur résultat est obtenu lorsque un ensemble de mots d'arrêt spécifiquement conçue est utilisé, en cas d'absence et d'utilisation des mots d'arrêt générés, les mots clés résultant peuvent ne pas être aussi jolis et qu'il peut être une bonne idée, par exemple, de produire des mots clés à 2 mots pour les langages inconnus et les mots clés à 3 mots pour les langues avec des ensembles de mots d'arrêt prédéfinis. Par défaut 2
généré_stopwords_percentile - Pour générer des mots d'arrêt, nous créons la distribution de chaque mot en texte par fréquence. Les mots au-dessus de ce centile (0 - 100) seront considérés comme des candidats pour devenir des mots arrêtés. Par défaut 80
généré_stopwords_max_len - longueur de caractères maximale des mots arrêtés générés. Par défaut 3
généré_stopwords_min_freq - fréquence minimale des mots d'arrêt générés dans la distribution. Par défaut 2
Appliquer un objet Rake au texte.
keywords = rake . apply (
text ,
text_for_stopwords = None ,
)Texte - chaîne contenant du texte à partir duquel les mots clés doivent être générés.
text_for_stopwords - chaîne contenant du texte qui sera utilisé pour la génération de mots arrêtés à côté text . Par exemple, vous avez un article avec introduction et plusieurs sous-sections. Vous savez que pour vos fins, les mots clés de l'introduction suffiront, vous ne connaissez pas la langue de texte ni vous avez la liste des mots d'arrêt. Ainsi, les mots d'arrêt peuvent être générés à partir du texte lui-même et plus vous avez de texte, mieux c'est. Que vous pouvez spécifier text=introduction, text_for_stopwords=rest_of_your_text .
L'algorithme de Rake fonctionne comme décrit dans Rose, S., Engel, D., Cramer, N., et Cowley, W. (2010). Extraction automatique des mots clés à partir de documents individuels. Dans MW Berry & J. Kogan (éd.), Text Mining: Theory and Applications: John Wiley & Sons
Cette implémentation est différente des autres par son support multilingue. Fondamentalement, vous pouvez fournir du texte sans connaître sa langue (il doit être écrit avec des alphabets cyrilliques ou latins), sans liste explicite de mots d'arrêt et obtenir un résultat décent. Bien que le meilleur résultat soit obtenu avec une liste de mots arrêtés en profondeur.
Ce qui se passe sous le capot:
text et text_for_stopwords Nous générons des mots d'arrêt en créant une distribution de fréquence des mots dans le texte et en les filtrant avec des paramètres generated_stopwords_percentile , generated_stopwords_max_len , generated_stopwords_min_freq . Nous ne pourrons pas les générer parfaitement, mais il est assez facile de trouver des articles et des prépositions, car généralement ils se composent de 3 à 4 caractères et apparaissent fréquemment. Ces mots d'arrêt, associés à des délimiteurs de ponctuation, nous permettent d'obtenir des résultats décents pour les langues que nous ne comprenons pas.
Pendant l'initialisation de Rake, seul le code linguistique doit être utilisé.
Le référentiel a configuré un linter, des tests et une couverture.
Créez un nouvel environnement virtuel dans le dossier multi_rake afin de l'utiliser.
python3 -m venv env
source env/bin/activate
make install-dev # install dependencies
make lint # run linter
make test # run tests and coverage Algorithme de Rake: Rose, S., Engel, D., Cramer, N., et Cowley, W. (2010). Extraction automatique des mots clés à partir de documents individuels. Dans MW Berry & J. Kogan (éd.), Text Mining: Theory and Applications: John Wiley & Sons
En tant que base, la mise en œuvre de Rake par Fabianvf a été utilisée.
MOTS DE MOTS: TREC-KBA, classe NL