pip install multi-rake Если установка не удастся из -за narrowing conversions ошибки cld , чем она может быть установлена с
CFLAGS= " -Wno-narrowing " pip install multi-rakeТекст на английском языке, мы не указываем явный язык или список стоп-слов (используется встроенный список).
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 состоит из трех первых абзацев введения. text_for_stopwords - все остальное текст.
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)] # propertyТаким образом, мы можем получить приличный результат без явного набора стоп -слов.
Инициализировать объект граблей
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 - слово выбирается как часть ключевого слова, если его длина> = min_chars. По умолчанию 3
MAX_WORDS - Максимальное количество слов в фразе считается ключевым словом. По умолчанию 3
min_freq - минимальное количество событий фразы, которая должна считаться ключевым словом. По умолчанию 1
Language_code - Предоставьте языковой код в качестве строки для использования встроенного набора стоп -слов. Смотрите список доступных языков. Если язык не указан, алгоритм попытается определить язык с помощью CLD2 и использовать соответствующий набор встроенных стоп-слов. По умолчанию нет
Стоп слов - предоставьте собственную коллекцию стоп -слов (предпочтительно, как установлено, в более низком уровне). Переопределяет language_code , если он был указан. По умолчанию нет
Сохраните language_code и stopwords так как None , а остаточные слова будут генерироваться из предоставленного текста.
LANG_DETECT_THRESHOLD - Порог вероятности обнаружения языка в CLD2 (0-100). По умолчанию 50
max_words_unknown_lang - то же самое, что и max_words , но будет использоваться, если язык неизвестен, а остаточные слова генерируются из приведенного текста. Обычно лучший результат получается, когда используется специально изготовленный набор стоп-слов, в случае его отсутствия и использования сгенерированных стоп-слов, полученных в результате ключевых слов, могут быть не такими красивыми, и это может быть хорошей идеей, например, создавать ключевые слова с двумя словами для неизвестных языков и ключевых слов с 3 словами для языков с предсказанными наборами стоп-слов. По умолчанию 2
Gened_stopwords_percentile - Для генерации стоп -слов Мы создаем распределение каждого слова в тексте по частоте. Слова выше этого процентиля (0 - 100) будут считаться кандидатами, чтобы стать остановками. По умолчанию 80
Gened_stopwords_max_len - Максимальная длина символов сгенерированных стоп -слов. По умолчанию 3
GEDEST_STOPWORDS_MIN_FREQ - Минимальная частота сгенерированных стоп -слов в распределении. По умолчанию 2
Применить объект Grafe к тексту.
keywords = rake . apply (
text ,
text_for_stopwords = None ,
)Текст - строка, содержащая текст, из которого должны быть сгенерированы ключевые слова.
text_for_stopwords - строка, содержащая текст, который будет использоваться для генерации стоп -слов наряду с text . Например, у вас есть статья с введением и несколькими подразделами. Вы знаете, что для ваших целей ключевые слова от введения будет достаточно, вы не знаете язык текста, и у вас нет списка стоп -слов. Таким образом, стоп -слова могут быть сгенерированы из самого текста и чем больше у вас текста, тем лучше. Чем вы можете указать text=introduction, text_for_stopwords=rest_of_your_text .
Algorithm Работает, как описано в Rose, S., Engel, D., Cramer, N. & Cowley, W. (2010). Автоматическое извлечение ключевых слов из отдельных документов. В MW Berry & J. Kogan (Eds.),
Эта реализация отличается от других благодаря своей многоязычной поддержке. В основном вы можете предоставить текст, не зная его языка (он должен быть написан с кириллическими или латинскими алфавитами), без явного списка стоп -слов и получить приличный результат. Хотя лучший результат достигается с тщательно построенным списком стоп -слов.
Что происходит под капюшоном:
text и text_for_stopwords Мы генерируем стоп -слова, создавая частотное распределение слов в тексте и фильтруя их с помощью параметров, generated_stopwords_percentile , generated_stopwords_max_len , generated_stopwords_min_freq . Мы не сможем создать их идеально, но довольно легко найти статьи и предлоги, потому что обычно они состоят из 3-4 символов и часто появляются. Эти стоп -слова в сочетании с делимитерами пунктуации позволяют нам получить приличные результаты для языков, которых мы не понимаем.
Во время граблей инициализации следует использовать только языковой код.
Репозиторий настроил Linter, тесты и покрытие.
Создайте новую виртуальную среду в папке Multi_Rake, чтобы использовать ее.
python3 -m venv env
source env/bin/activate
make install-dev # install dependencies
make lint # run linter
make test # run tests and coverage Algorithm Rake: Rose, S., Engel, D., Cramer, N. & Cowley, W. (2010). Автоматическое извлечение ключевых слов из отдельных документов. В MW Berry & J. Kogan (Eds.),
В качестве базисного реализации граблей была использована FabianVF.
Стоп слов: trec-kba, ранжирование NL