в чем разница между «частотой термина» и «частотой документа»?

EDIT: это вопрос, который я в конечном итоге пытался задать: Понимание min_df и max_df в scikit CountVectorizer

Я читал документацию по scikit-learn CountVectorizer и заметил, что при обсуждении max_df нас интересует частота документирования для токенов:

max_df : float in range [0.0, 1.0] or int, default=1.0
When building the vocabulary ignore terms that have a document frequency strictly higher than the given threshold (corpus-specific stop words). If float, the parameter represents a proportion of documents, integer absolute counts. This parameter is ignored if vocabulary is not None.  

Но когда мы рассматриваем max_features, нас интересует частота терминов:

max_features : int or None, default=None
If not None, build a vocabulary that only consider the top max_features ordered by term frequency across the corpus.

Я в замешательстве: если мы используем max_df и говорим, что устанавливаем его на 10, разве мы не говорим: «Игнорировать любой токен, который появляется более 10 раз»?

И если мы установим max_features на 100, разве мы не говорим: «Используйте только те 100 токенов, которые имеют наибольшее количество появлений в корпусе»?

Если я правильно понял... тогда в чем разница между формулировками при использовании "частоты терминов" и "частоты документирования"?


person Monica Heddneck    schedule 18.01.2016    source источник
comment
Они в значительной степени совпадают с тем, что написано на банке: частота документов – это частота документов (документов, содержащих термин как часть всех документов), частота терминов – это частота терминов.   -  person pvg    schedule 18.01.2016
comment
en.wikipedia.org/wiki/Tf%E2%80%93idf   -  person BrenBarn    schedule 18.01.2016
comment
Я не понимаю, о какой разнице в формулировках вы говорите.   -  person BrenBarn    schedule 18.01.2016
comment
@pvg, значит, если термин имеет «частоту документа» 0,5, это означает, что он появился в половине текстов в корпусе? Это должно действительно испортить значения в idf, если мы используем max_df = 0,5.   -  person Monica Heddneck    schedule 18.01.2016
comment
@MonicaHeddneck: если вы используете max_df без разбора, то да, поэтому max_df применяется к стоп-словам, характерным для корпуса.   -  person Michael Foukarakis    schedule 18.01.2016
comment
Действительно! Я применяю стоп-слова самостоятельно, без использования инструментов scikit-learn. Я, наверное, убиваю свои жетоны!   -  person Monica Heddneck    schedule 18.01.2016
comment
@MonicaHeddneck, да.   -  person pvg    schedule 18.01.2016
comment
@pvg, так что на самом деле max_df применяется только к 318 стоп-словам, предоставленным stop_words в sklearn ?? Хам. Какое мне дело до того, в скольких документах появилось стоп-слово — я думаю, что что-то вроде «а» или «the», являющиеся стоп-словами по определению, должно быть полностью удалено, независимо от их max_df!   -  person Monica Heddneck    schedule 18.01.2016


Ответы (1)


Когда вы устанавливаете max_df на 10, вы говорите, что «игнорировать любой токен, который появляется в более чем 10 документах»... здесь вы не учитываете количество раз, когда токен появляется в каждом документе, а только количество документов, в которых он появляется. .

Когда вы устанавливаете max_features на 100, это означает «Упорядочить токены (в порядке убывания) по частоте терминов в корпусе (что означает, сколько раз токен появлялся в каждом документе в корпусе), а затем учитывать только первые 100 этих токенов"

person Kaustav Datta    schedule 18.01.2016
comment
Это неправильно — диапазон max_df составляет от 0,0 до 1,0. - person tripleee; 18.01.2016
comment
@tripleee: max_df может принимать либо число с плавающей запятой (доля документов), либо целое число (необработанное количество документов). - person BrenBarn; 18.01.2016
comment
это также может быть int в соответствии с описанием в вопросе ... в описании говорится, что если это int, то вы учитываете абсолютные значения ... я рассмотрел случай 10, так как это был пример, приведенный OP - person Kaustav Datta; 18.01.2016
comment
Но тогда какая интерпретация, если это поплавок в указанном диапазоне? Похоже, тогда это должно называться max_idf? - person tripleee; 18.01.2016
comment
@tripleee: Просто прочитайте документацию. - person BrenBarn; 18.01.2016
comment
в описании указано, что If float, the parameter represents a proportion of documents ... поэтому, если значение, скажем, 0,4, игнорируются токены, которые появляются более чем в 40% документов в корпусе. - person Kaustav Datta; 18.01.2016
comment
Я рад, что есть по крайней мере какая-то ценность, вытекающая из ужасно непопулярных вопросов. :( - person Monica Heddneck; 18.01.2016