pip install multi-rake Wenn die Installation aufgrund von cld narrowing conversions fehlschlägt, kann sie mit installiert werden
CFLAGS= " -Wno-narrowing " pip install multi-rakeEnglisch Text, wir geben weder eine explizit Sprache noch eine Liste von Stoppwörtern an (integrierte Liste wird verwendet).
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),Text geschrieben in Esperanto (Artikel über den Liberalismus). Es gibt keine Liste von Stoppwörtern für diese Sprache, sie werden aus dem bereitgestellten Text generiert.
text besteht aus drei ersten Absätzen der Einführung. text_for_stopwords - Alle anderen Text.
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)] # propertyWir sind also in der Lage, ein anständiges Ergebnis ohne expliziten Stopwords zu erzielen.
Initialisieren Sie das Rake -Objekt
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 - Wort wird ausgewählt, um Teil des Schlüsselworts zu sein, wenn seine Länge> = min_chars ist. Standard 3
MAX_WORDS - Maximale Anzahl von Wörtern in der Phrase, die als Schlüsselwort angesehen wird. Standard 3
MIN_FREQ - Mindestanzahl von Auseinandersetzungen einer Phrase, die als Schlüsselwort betrachtet werden soll. Standard 1
LACHE_CODE - Geben Sie Sprachcode als Zeichenfolge an, um integrierte Stopwords zu verwenden. Siehe Liste der verfügbaren Sprachen. Wenn die Sprache nicht angegeben ist, wird der Algorithmus versucht, die Sprache mit CLD2 zu bestimmen und entsprechende ein integrierte Stoppword zu verwenden. Standard Keine
STOPWORDS - Geben Sie eine eigene Sammlung von Stoppwörtern an (vorzugsweise als festgelegt, niedriger). Überschreiben Sie language_code , wenn es angegeben wurde. Standard Keine
Behalten Sie language_code und stopwords , da None und Stoppwörter aus dem bereitgestellten Text generiert werden.
LANG_DETECT_Threshold - Schwelle für die Wahrscheinlichkeit einer erkannten Sprache in CLD2 (0-100). Standard 50
MAX_WORDS_UNKNOWN_LANG - Das gleiche wie max_words , wird jedoch verwendet, wenn die Sprache unbekannt ist und Stoppwords aus dem bereitgestellten Text generiert werden. Normalerweise wird das beste Ergebnis erzielt, wenn spezifisch eingestellter Satz von Stoppwörtern verwendet wird, im Falle der Abwesenheit und Verwendung generierter Stoppwörter, die sich daraus ergibt, dass Schlüsselwörter nicht so hübsch sind, und es kann beispielsweise eine gute Idee sein, beispielsweise 2-Word-Schlüsselwörter für unbekannte Sprachen und 3-Word-Schlüsselwörter für Sprachen mit vordefinierten Stopwörtern zu erstellen. Standard 2
generated_stopwords_percentile - Um Stoppwörter zu generieren, erstellen wir die Verteilung jedes Wortes im Text nach Frequenz. Wörter über diesem Perzentil (0 - 100) werden als Kandidaten angesehen, um Stoppwörter zu werden. Standard 80
generated_stopwords_max_len - maximale Zeichenlänge generierter Stoppwörter. Standard 3
generated_stopwords_min_freq - Mindestfrequenz generierter Stoppwörter in der Verteilung. Standard 2
Rake -Objekt in Text anwenden.
keywords = rake . apply (
text ,
text_for_stopwords = None ,
)Text - Zeichenfolge mit Text, aus dem Schlüsselwörter generiert werden sollten.
text_for_stopwords - Zeichenfolge mit Text enthält, die neben text zur Erstellung von Stoppwörtern verwendet werden. Zum Beispiel haben Sie Artikel mit Einführung und mehreren Unterabschnitten. Sie wissen, dass Sie für Ihre Zwecke aus der Einführung ausreichen, Sie wissen weder eine Textsprache noch haben Sie eine Liste von Stoppwörtern. Daher können Stoppwörter aus dem Text selbst erzeugt werden und je mehr Text Sie haben, desto besser. Sie können text=introduction, text_for_stopwords=rest_of_your_text .
Rake -Algorithmus funktioniert wie in Rose, S., Engel, D., Cramer, N. & Cowley, W. (2010). Automatische Schlüsselwort -Extraktion aus einzelnen Dokumenten. In MW Berry & J. Kogan (Hrsg.), Text Mining: Theorie und Anwendungen: John Wiley & Sons
Diese Implementierung unterscheidet sich durch ihre mehrsprachige Unterstützung von anderen. Grundsätzlich können Sie Text angeben, ohne seine Sprache zu kennen (sie sollte mit kyrillischen oder lateinischen Alphabeten geschrieben werden), ohne explizite Liste von Stoppwörtern und ein anständiges Ergebnis. Das beste Ergebnis wird zwar mit gründlich konstruierter Liste von Stoppwörtern erzielt.
Was passiert unter der Motorhaube:
text und text_for_stopwords generiert Wir generieren Stoppwörter, indem wir die Frequenzverteilung von Wörtern in Text erstellen und sie mit Parametern generated_stopwords_percentile , generated_stopwords_max_len , generated_stopwords_min_freq filtern. Wir werden sie nicht perfekt erzeugen, aber es ist ziemlich leicht, Artikel und Präpositionen zu finden, da sie normalerweise aus 3-4 Zeichen bestehen und häufig auftreten. Diese Stoppwörter in Verbindung mit Interpunktionsgräben ermöglichen es uns, anständige Ergebnisse für Sprachen zu erzielen, die wir nicht verstehen.
Während der Rake -Initialisierung sollte nur Sprachcode verwendet werden.
Das Repository hat Verluses, Tests und Abdeckung konfiguriert.
Erstellen Sie eine neue virtuelle Umgebung im Ordner multi_rake, um sie zu verwenden.
python3 -m venv env
source env/bin/activate
make install-dev # install dependencies
make lint # run linter
make test # run tests and coverage Rake -Algorithmus: Rose, S., Engel, D., Cramer, N. & Cowley, W. (2010). Automatische Schlüsselwort -Extraktion aus einzelnen Dokumenten. In MW Berry & J. Kogan (Hrsg.), Text Mining: Theorie und Anwendungen: John Wiley & Sons
Als Basis -Rake -Implementierung durch FabiANVF wurde verwendet.
Stoppwörter: TREC-KBA, rangiert NL