Tf что это: Что такое tf — Значение слова «tf» – TF card — что это? 🚩 Комплектующие и аксессуары

характеристики, сравнение с SD, как выбрать

Кто владеет информацией, то владеет миром. Однако владеть мало, нужно еще уметь сохранить и защитить. Для этих целей и были созданы карты памяти. Сегодня наука продвинулась далеко, и от самого старого формата SD Card емкостью всего 2 ГБ перешла к трем форм-факторам (стандартам карты, описывающим ее расположение, размеры и т. д.):

- Стандартная SD-карта

- Mini SD

- Micro SD

Миниатюрная версия SD, TransFlash (далее - TF), с восьми контактным разъемом используется в обиходе с начала двухтысячных. Позже компания SanDisk переименовала TF в microSD. Сегодня можно встретить уже модифицированные версии формата – SDHC, SDXC.

Использовать TF карту (модуль памяти) можно на iPod, PDA, DigitalCamera, смартфоне, ноутбуке, игровых приставках, синтезаторах, цифровом фотоаппарате и на других электронных гаджетах. Тем не менее, она будет медленнее запускаться на GPS, портативных музыкальных плеерах и пластинах с флэш-памятью, чем на смартфонах.

Используя TF на своем телефоне, вы можете расширять память, перемещать данные на другое устройство и внешний носитель ПК, обмениваться фотографиями или музыкой.

Характеристики TF

Размеры TF-карты значительно меньше mini-SD и RC-MMS – 15х11х1 мм. Во время разработки компания SanDisk встроила чип MLC, поэтому габариты получились рекордно маленькими.

Объем памяти начинается от 128 Мб, поставляется также в 256 МБ, 512 МБ, 1 ГБ, 2 ГБ, 4 ГБ, 6 ГБ, 8 ГБ, 16 ГБ, 32 Гб, 64 ГБ, 128 ГБ.

Перед покупкой карты емкостью 32 ГБ и более, убедитесь, что ваше устройство поддерживает SDXC. Если ваше устройство «потянет» 128 ГБ, то лучше выбрать именно такую емкость, а не 64 ГБ. Последняя обойдется дороже.

Раньше скорость приема у MicroSD/TF составляла всего 5,3 Мбит/с. Со временем скорость модифицировали до 10 Мбит/с, а в названии появилась надпись «Ultra II».

Распространенные классы, то есть градации минимальных скоростей для записи, бывают от 2-го до 16-го. Чем выше класс, тем быстрее работает карта. Притом скорость чтения всегда превосходит этот показатель.

Как выбрать класс TF (MicroSD):

- 2 – для аудио-, видеоплееров и небольших гаджетов;

- 4 – для «мыльниц», делающих снимки JPG, и видеокамер;

- 6 – для полупрофессиональных зеркальных фотоаппаратов, записывающих в JPG и RAW;

- 10 – для записи Full HD в формате RAW, просмотра фильмов и прохождения игр на планшете или ноутбуке.

Также есть UHS Speed Class 1 (U1) и UHS Speed Class 3 (U3). U1 позволяет записывать FullHD-видео, а скорость не опускается ниже 10 МБ/с. U3 – скорость не менее 30 МБ/с, плюс возможность записи 4К видео.

Иногда производители указывают скоростные показатели в виде множителей. Тогда нужно умножить приведенное значение, например, 40х, на 0,15. Получится 40 х 0,15 = 6 МБ/с.

В TF встроена защита содержимого от изменения/стирания данных. Эта функция объясняется тем, что получить доступ к информации могут только авторизированные пользователи.

TF-карта может работать в режиме чтения. Для отключения записи контента есть обратимые и необратимые команды хоста.

Важная особенность – TF-карта полностью совместима с MicroSD. Это значит, что устройство, работающее с MicroSD, будет работать и с TF. Интересно, что у всех стандартов обычно работает только прямая совместимость, то есть поддержка старых форматов.

Сравнение TF и SD

Если MicroSD – это всего лишь другое название TF, то могут ли эти форматы чем-то отличаться? Некоторая разница между ними есть:

1. Карты MicroSD поддерживают режим SDIO, а значит, могут работать с GPS и NFS. TF не выполняет задания, не связанные с сохранением сводки действий.

2. На SD-карте безопасность может переключаться, что недоступно для TF. Однако, с помощью адаптера TF легко преобразовать в SD.

3. Стандартная SD имеет размер 24х32х2,1. Соответственно, и емкость карты больше, чем у TF, - до 2 ТБ. TransFlash поддерживает до 128 ГБ.

Помимо указанных факторов, не существует технической разницы между TF и MicroSD. Каждая из этих карт может использоваться в устройствах, предназначенных для другой.

Топ-3 MicroSD/TF карты на 2019 год

Карта памяти SAMSUNG 32 Гб TF Micro SD UHS-I U1

Карта SAMSUNG класса 10, UHS-I U1 имеет скорость чтения 95 МБ/с и записи 20 МБ/с. От нее стоит ожидать высокой производительности и гарантии качества EVO Plus.

Предусмотрено 7 500 фотографий или 4 часа Full HD с переносом 3ГБ видео на ПК не более 1 минуты.

Выдерживает 72 часа в морской воде, рентгеновское излучение, холод до – 25 °C и жару до 85 °C.

Карта памяти Kingston 32 Гб TF Micro SD UHS-I U1 Class10

Карта Kingston емкостью 32 Гб 10-го класса уступает предыдущей модели по скорости чтения (80 МБ/с) и записи (20 МБ/с).

Позволяет записывать HD видео (1080) и делать фото в движении, использовать в видеорегистраторе, на ноутбуке и планшете.

По надежности аналогичен SAMSUNG 32 Гб TF Micro SD UHS-I U1.

Карта памяти SanDisk 32 Гб TF Micro SD UHS-I U1 Class10 Ultra

Карта памяти емкостью 32 ГБ, класса 10, со скорость чтения 80 МБ/с и записи 15 МБ/с станет отличным дополнением для смартфона Android или планшета.

Через Google Play можно установить приложение SanDisk, чтобы просматривать и делать резервные копии всех файлов на телефоне.

Радует также ударопрочная и водонепроницаемая конструкция карты.

Последнее: при покупке карты памяти не стоит экономить, а выбирать проверенного производителя. Иначе рискуете столкнуться с некачественным товаром и невзначай потерять гигабайты нужной информации.

 

Что такое TF-IDF | Блог Миндубаева Рамазана

Автор: admin Рубрика: 100 дней

Что такое TF-IDF

#SPEAKIN #day68 — Продвижение школы английского языка «SPEAKIN»

💡 TF-IDF

📌 Что это такое?

TF-IDF — алгоритм использующийся для расчета важности слова в документе = веса слова.

TF-IDF — это term frequency-inverse document frequency, по русский — частотность терминов-обратная частотность документов.

Формулу можно посмотреть в Википедии — https://ru.wikipedia.org/wiki/TF-IDF.

📌 Зачем это нужно знать?

Это простой и удобный способ оценить важность термина для какого-либо документа относительно всех остальных документов. Принцип такой — если слово встречается в каком-либо документе часто, при этом встречаясь редко во всех остальных документах — это слово имеет большую значимость для данного документа.

📌 Чем хороша эта метрика?

1. Неважные слова, например, предлоги или междометия — получат очень низкий вес TF-IDF (потому что часто встречаются во всех документах), а важные слова получают высокий вес, т.к. редко встречаются.

2. Легко посчитать.

📌 Где можно применять эту метрику?

1. Формирование Title
2. Выявление важных слов и стоп-слов в документах
3. Использовать для улучшения работы классификаторов тональности
4. Анкоры ссылок
5. Формирование подзаголовков
и т.д.

📌 В некотором документе Х, содержащем 100 слов, есть слово «лингвист», которое встречается 5 раз. Таким образом, TF слова «лингвист» равняется 5 / 100 или 0.05. А теперь представим, что всего у нас есть 1000 документов (включая документ Х), и слово «лингвист» встречается в 10 из них. Таким образом, IDF слова «лингвист» равняется lg (1000/10) или 2. Таким образом, TF-IDF слова «лингвист» равняется 2 * 0.05 или 0.1.

Поисковая система не использует TF-IDF напрямую, но рассчитывает и применяет данный фактор в связке с другими алгоритмами.

❗ Итог: понимания алгоритмы поисковых систем ваши сайты будут выше.

Полезное:
1. Посмотреть веса слов актуальные на 2010 год согласно базе Яндекса можно посмотреть тут — http://tools.promosite.ru/old/weight.php .

2. https://ru.megaindex.com/a/textanalysis — текстовый анализатор
3. http://isemantic.ru — текстовый анализатор

IDF - это... Что такое TF-IDF?

TF-IDF (от англ. TF — term frequency, IDF — inverse document frequency) — статистическая мера, используемая для оценки важности слова в контексте документа, являющегося частью коллекции документов или корпуса. Вес некоторого слова пропорционален количеству употребления этого слова в документе, и обратно пропорционален частоте употребления слова в других документах коллекции.

Мера TF-IDF часто используется в задачах анализа текстов и информационного поиска, например, как один из критериев релевантности документа поисковому запросу, при расчёте меры близости документов при кластеризации.

Структура формулы

TF (term frequency — частота слова) — отношение числа вхождения некоторого слова к общему количеству слов документа. Таким образом, оценивается важность слова в пределах отдельного документа.

,

где есть число вхождений слова в документ, а в знаменателе — общее число слов в данном документе.

IDF (inverse document frequency — обратная частота документа) — инверсия частоты, с которой некоторое слово встречается в документах коллекции. Учёт IDF уменьшает вес широкоупотребительных слов. Для каждого уникального слова в пределах конкретной коллекции документов существует только одно значение IDF.

,[1]

где

  • |D| — количество документов в корпусе;
  • — количество документов, в которых встречается (когда ).

Выбор основания логарифма в формуле не имеет значения, поскольку изменение основания приводит к изменению веса каждого слова на постоянный множитель, что не влияет на соотношение весов.

Таким образом, мера TF-IDF является произведением двух сомножителей:

Большой вес в TF-IDF получат слова с высокой частотой в пределах конкретного документа и с низкой частотой употреблений в других документах.

Числовое применение

Существуют различные формулы, основанные на методе TF-IDF. Они отличаются коэффициентами, нормировками, использованием логарифмированных шкал. В частности, поисковая система Яндекс долгое время использовала нормировку по самому частотному термину в документе

[источник не указан 734 дня].

Одной из наиболее популярных формул является формула BM25.

Пример

Если документ содержит 100 слов и слово[2] «заяц» встречается в нём 3 раза, то частота слова (TF) для слова «заяц» в документе будет 0,03 (3/100). Один из вариантов вычисления частоты документа (DF) определяется как количество документов содержащих слово «заяц», разделенное на количество всех документов. Таким образом, если «заяц» содержится в 1000 документов из 10 000 000 документов, то частота документа (DF) будет равной 0,0001 (1000/10000000). Для расчета окончательного значения веса слова необходимо разделить TF на DF (или умножить на IDF). В данном примере, TF-DF вес для слова «заяц» в выбранном документе будет 300 (0,03/0,0001).

Применение в модели векторного пространства

Мера TF-IDF часто используется для представления документов коллекции в виде числовых векторов, отражающих важность использования каждого слова из некоторого набора слов (количество слов набора определяет размерность вектора) в каждом документе. Подобная модель называется векторной моделью (VSM) и даёт возможность сравнивать тексты, сравнивая представляющие их вектора в какой либо метрике (евклидово расстояние, косинусная мера, манхэттенское расстояние, расстояние Чебышева и др.), т. е. производя кластерный анализ.

Примечания

  1. В некоторых вариантах формулы не используется логарифмирование.
  2. Обычно перед анализом документа слова приводятся морфологическим анализатором к нормальной форме.

Литература

  • Дж Солтон. Динамические библиотечно-поисковые системы. М.: - Мир, 1979.
  • Salton, G. and McGill, M. J. 1983 Introduction to modern information retrieval. McGraw-Hill, ISBN 0-07-054484-0.
  • Salton, G., Fox, E. A. and Wu, H. 1983 Extended Boolean information retrieval. Commun. ACM 26, 1022—1036.
  • Salton, G. and Buckley, C. 1988 Term-weighting approaches in automatic text retrieval. Information Processing & Management 24(5): 513—523
  • Федоровский А.Н, Костин М. Ю. Mail.ru на РОМИП-2005 // в сб. «Труды РОМИП’2005» Труды третьего российского семинара по оценке методов информационного поиска. Под ред. И. С. Некрестьянова, стр. 106—124, Санкт-Петербург: НИИ Химии СПбГУ, 2005.
  • М. В. Губин. Модели и методы представления текстового документа в системах информационного поиска

См. также

Ссылки

карта памяти TF и карта памяти SDHC это одно и тоже? расскажите в чем различия карт памяти

Нет конечно, TF - это Trance Flash то есть формат и типоразмер карты памяти, по другому стандарт называется microSD, раньше называли TF щас перешли на MicroSD. Карта памяти SDHC - это сокращение Secure Digital High Capacity то есть карта SD большой ёмкости, а по размерам она большая, то есть это совершенно разные вещи, тебе нужна карта Micro SDHC а не полноразмерная SD скорее всего

Существуют четыре поколения карт памяти данного формата (совместимы сверху вниз) : SD 1.0 — от 8 МБ до 2 ГБ SD 1.1 — до 4 ГБ SDHC — до 32 ГБ SDXC — до 2 ТБ есть аппараты - работают с этими буквами и скоростями есть кому это все пофиг - что TF что SDHC

<a rel="nofollow" href="http://ru.wikipedia.org/wiki/Карта_памяти" target="_blank" >Карты памяти TF (micro SD 4,8,16 и 32Gb)</a>

TF карта памяти - это microSD объёмом до 2ГБ без поддержки режима SDIO. Режим SDIO позволяет картам microSD выполнять задания без памяти (сохранения сводки действий), такие как Bluetooth, GPS и NFC.

TF - это... Что такое TF?

TF

Определение

TF(Term Frequency) — частота данного слова в данном документе.

Формула


В числителе стоит количество появлений рассматриваемого слова, в знаменателе — сумма количеств появлений всех слов.

Описание

Эта величина используется для предотвращения увеличения веса более длинных документов, в которых слово может встречаться большее количество раз, несмотря на свою, возможно, небольшую важность в документе. TF показывает истинную важность слова для документа.

Пример

Для примера рассмотрим два текста и покажем полезность частоты слова [[топор]], в сравнении с его количеством появления. Для простоты будем за слово считать только существительные, либо прилагательные образованные от них.

Отрывок из романа Федора Михайловича Достоевского «Преступление и Наказание»:

Иголка и нитки были у него уже давно приготовлены и лежали в столике, в бумажке. Что же касается петли, то это была очень ловкая его собственная выдумка: петля назначалась для топора. Нельзя же было по улице нести топор в руках. А если под пальто спрятать, то все-таки надо было рукой придерживать, что было бы приметно. Теперь же, с петлей, стоит только вложить в нее лезвие топора, и он будет висеть спокойно, подмышкой изнутри, всю дорогу. Запустив же руку в боковой карман пальто, он мог и конец топорной ручки придерживать, чтоб она не болталась; а так как пальто было очень широкое, настоящий мешок, то и не могло быть приметно снаружи, что он что-то рукой, через карман, придерживает.

Отрывок из статьи в Википедии «Боевой топор»:

Древнейшее подобное топору орудие, — «тесло», — появилось около 20 тыс. лет назад и представляло собой широкую дубину, в отверстие которой вклеивался острый камень. То есть, в отсутствие возможности сверления камня, не топорище вставлялось в топор, а топор в топорище.

Вычислим TF(топор) для обоих текстов.

Топор — 4
Рука — 4
Пальто — 3
Петля — 3
Карман — 2
Иголка — 1
Нитка — 1
Стол — 1
Бумажка — 1
Выдумка — 1
Улица — 1
Лезвие — 1
Подмышка — 1
Дорога — 1
Ручка — 1
Мешок — 1
Топор — 3
Камень — 2
Камень — 2
Топорище — 2
Орудие — 1
Тесло — 1
Дубина — 1
Отверстие — 1
Возможность — 1
Сверление — 1
Отсутствие — 1

В отрывке из романа "Преступление и Наказание" слово топор присутствует 4 раза, в то время как в отрывке из статьи в Википедии всего 3. При использовании количества появлений в качестве меры, вес романа будет больше веса статьи. Поэтому требуется нормирование количества появлений, то есть частота появлений. TF статьи больше TF романа, поэтому если пользователю необходимо найти информацию боевом топоре, то поисковая система использующая TF сработает лучше.

.tf - это... Что такое .tf?

Все языкиАнглийскийРусскийКитайскийНемецкийФранцузскийИспанскийШведскийИтальянскийЛатинскийФинскийКазахскийГреческийУзбекскийВаллийскийАрабскийБелорусскийСуахилиИвритНорвежскийПортугальскийВенгерскийТурецкийИндонезийскийПольскийКомиЭстонскийЛатышскийНидерландскийДатскийАлбанскийХорватскийНауатльАрмянскийУкраинскийЯпонскийСанскритТайскийИрландскийТатарскийСловацкийСловенскийТувинскийУрдуФарерскийИдишМакедонскийКаталанскийБашкирскийЧешскийКорейскийГрузинскийРумынский, МолдавскийЯкутскийКиргизскийТибетскийИсландскийБолгарскийСербскийВьетнамскийАзербайджанскийБаскскийХиндиМаориКечуаАканАймараГаитянскийМонгольскийПалиМайяЛитовскийШорскийКрымскотатарскийЭсперантоИнгушскийСеверносаамскийВерхнелужицкийЧеченскийШумерскийГэльскийОсетинскийЧеркесскийАдыгейскийПерсидскийАйнский языкКхмерскийДревнерусский языкЦерковнославянский (Старославянский)МикенскийКвеньяЮпийскийАфрикаансПапьяментоПенджабскийТагальскийМокшанскийКриВарайскийКурдскийЭльзасскийАбхазскийАрагонскийАрумынскийАстурийскийЭрзянскийКомиМарийскийЧувашскийСефардскийУдмурдскийВепсскийАлтайскийДолганскийКарачаевскийКумыкскийНогайскийОсманскийТофаларскийТуркменскийУйгурскийУрумскийМаньчжурскийБурятскийОрокскийЭвенкийскийГуараниТаджикскийИнупиакМалайскийТвиЛингалаБагобоЙорубаСилезскийЛюксембургскийЧерокиШайенскогоКлингонский

 

Все языкиРусскийАнглийскийДатскийТатарскийНемецкийЛатинскийКазахскийУкраинскийВенгерскийТурецкийТаджикскийПерсидскийИспанскийИвритНорвежскийКитайскийФранцузскийИтальянскийПортугальскийАрабскийПольскийСуахилиНидерландскийХорватскийКаталанскийГалисийскийГрузинскийБелорусскийАлбанскийКурдскийГреческийСловенскийИндонезийскийБолгарскийВьетнамскийМаориТагальскийУрдуИсландскийХиндиИрландскийФарерскийЛатышскийЛитовскийФинскийМонгольскийШведскийТайскийПалиЯпонскийМакедонскийКорейскийЭстонскийРумынский, МолдавскийЧеченскийКарачаевскийСловацкийЧешскийСербскийАрмянскийАзербайджанскийУзбекскийКечуаГаитянскийМайяАймараШорскийЭсперантоКрымскотатарскийОсетинскийАдыгейскийЯкутскийАйнский языкКхмерскийДревнерусский языкЦерковнославянский (Старославянский)ТамильскийКвеньяАварскийАфрикаансПапьяментоМокшанскийЙорубаЭльзасскийИдишАбхазскийЭрзянскийИнгушскийИжорскийМарийскийЧувашскийУдмурдскийВодскийВепсскийАлтайскийКумыкскийТуркменскийУйгурскийУрумскийЭвенкийскийЛожбанБашкирскийМалайскийМальтийскийЛингалаПенджабскийЧерокиЧаморроКлингонскийБаскскийПушту

TF-IDF с примерами кода: просто и понятно

Здесь я расскажу и покажу в примерах на Python, зачем и как считать стандартный TF-IDF, а также его вариации. Примеры я буду давать по ходу объяснения. Чтобы их понять, нужно иметь представления о базовых понятиях языка программирования Python в версии 2.х либо 3.х (основные типы данных, основные структуры данных, цикл-ветвление, функция, основы генераторов списков и словарей) и понимать, как применять класс Counter из стандартной библиотеки collections

Что это вообще такое?

О том, что же такое TF-IDF, можно прочитать, например, в Википедии. Да и формулу там же можно посмотреть, поэтому теории я коснусь по минимуму, показав больше примеров.

Если кратко, то TF-IDF это  term frequency-inverse document frequency или, ежели на великом и могучем, частотность терминов-обратная частотность документов. Впрочем, это я зря, непереведенное смотрелось лучше.

Зачем это нужно?

Это простой и удобный способ оценить важность термина для какого-либо документа относительно всех остальных документов. Принцип такой — если слово встречается в каком-либо документе часто, при этом встречаясь редко во всех остальных документах — это слово имеет большую значимость для того самого документа.

Чем хороша эта метрика?

1. Слова, неважные для вообще всех документов, например, предлоги или междометия — получат очень низкий вес TF-IDF (потому что часто встречаются во всех-всех документах), а важные — высокий.

2. Её просто считать

Для чего же можно применять эту метрику?

1. Выявление важных слов и стоп-слов в документах

2. Некоторые расширения этой формулы можно использовать для улучшения работы классификаторов тональности

Принцип работы

Term Frequency

TF  — это частотность термина, которая измеряет, насколько часто термин встречается в документе. Логично предположить, что в длинных документах термин может встретиться в больших количествах, чем в коротких, поэтому абсолютные числа тут не катят. Поэтому применяют относительные — делят количество раз, когда нужный термин встретился в тексте, на общее количество слов в тексте.

То есть:

TF термина а = (Количество раз, когда термин а встретился в тексте / количество всех слов в тексте)

В виде кода это будет выглядеть так:

import collections

def compute_tf(text):
#На вход берем текст в виде списка (list) слов
    #Считаем частотность всех терминов во входном массиве с помощью 
    #метода Counter библиотеки collections
    tf_text = collections.Counter(text)
    for i in tf_text:
        #для каждого слова в tf_text считаем TF путём деления
        #встречаемости слова на общее количество слов в тексте
        tf_text[i] = tf_text[i]/float(len(text))
    #возвращаем объект типа Counter c TF всех слов текста
    return tf_text

text = ['hasta', 'la', 'vista', 'baby', 'la', 'vista', 'la']
print compute_tf(text)
Out: Counter({'la': 0.42857142857142855, 'vista': 0.2857142857142857, 
'hasta': 0.14285714285714285, 'baby': 0.14285714285714285})
Inverse Document Frequency

IDF — это обратная частотность документов. Она измеряет непосредственно важность термина. То есть, когда мы считали TF, все термины считаются как бы равными по важности друг другу. Но всем известно, что, например, предлоги встречаются очень часто, хотя практически не влияют на смысл текста. И что с этим поделать? Ответ прост — посчитать IDF. Он считается как логарифм от общего количества документов, делённого на количество документов, в которых встречается термин а.

То есть:

IDF термина а = логарифм(Общее количество документов / Количество документов, в которых встречается термин а)

Логарифм, кстати, можно брать любой — потому что TF-IDF является относительной мерой; то есть веса терминов не выражаются в каких-то единицах, а существуют друг относительно друга. Я, например, обычно беру натуральный или десятичный.

В виде кода это будет выглядеть так:

import math

def compute_idf(word, corpus):
#на вход берется слово, для которого считаем IDF
#и корпус документов в виде списка списков слов
        #количество документов, где встречается искомый термин
        #считается как генератор списков
        return math.log10(len(corpus)/sum([1.0 for i in corpus if word in i]))
        
texts = [['pasta', 'la', 'vista', 'baby', 'la', 'vista'], 
['hasta', 'siempre', 'comandante', 'baby', 'la', 'siempre'], 
['siempre', 'comandante', 'baby', 'la', 'siempre']]
print compute_idf('pasta', texts)
Out: 0.47712125472
Term Frequency — Inverse Document Frequency

А затем мы умножаем TF на IDF и получаем — барабанная дробь — TF-IDF!

TF-IDF термина а = (TF термина а) * (IDF термина а)

В виде кода это будет выглядеть так:

Мы обходим каждый текст в корпусе текстов, считаем для него TF всех слов, находящихся в нем. Затем для каждого слова считаем IDF и умножаем его на уже посчитанный TF. Полученный словарь (dictionary) мы добавляем в список, чтобы сохранить такой же порядок текстов, какой был на входе. И возвращаем этот список словарей с посчитанными TF-IDF для каждого термина.

from collections import Counter
import math

def compute_tfidf(corpus):

def compute_tf(text):

tf_text = Counter(text)

for i in tf_text:

tf_text[i] = tf_text[i]/float(len(text))

return tf_text

def compute_idf(word, corpus):

return math.log10(len(corpus)/sum([1.0 for i in corpus if word in i]))

 

documents_list = []

for text in corpus:

tf_idf_dictionary = {}

computed_tf = compute_tf(text)

for word in computed_tf:

tf_idf_dictionary[word] = computed_tf[word] * compute_idf(word, corpus)

documents_list.append(tf_idf_dictionary)

return documents_list

corpus = [[‘pasta’, ‘la’, ‘vista’, ‘baby’, ‘la’, ‘vista’],
[‘hasta’, ‘siempre’, ‘comandante’, ‘baby’, ‘la’, ‘siempre’],
[‘siempre’, ‘comandante’, ‘baby’, ‘la’, ‘siempre’]]

print compute_tfidf(corpus)

Out: [{‘pasta’: 0.11928031367991561, ‘baby’: 0.0, ‘vista’: 0.23856062735983122, ‘la’: 0.0},
{‘hasta’: 0.09542425094393249, ‘comandante’: 0.03521825181113625, ‘siempre’: 0.0704365036222725,
‘baby’: 0.0, ‘la’: 0.0},
{‘comandante’: 0.04402281476392031, ‘baby’: 0.0, ‘siempre’: 0.08804562952784062, ‘la’: 0.0}]

Умозрительный пример (в котором мы применяем десятичный логарифм)

В некотором документе Х, содержащем 100 слов, есть слово «лингвист», которое встречается 5 раз. Таким образом, TF слова «лингвист» равняется 5 / 100 или 0.05. А теперь представим, что всего у нас есть 1000 документов (включая документ Х), и слово «лингвист» встречается в 10 из них. Таким образом, IDF слова «лингвист» равняется lg(1000/10) или 2. Таким образом, TF-IDF слова «лингвист» равняется 2 * 0.05 или 0.1

Естественно, вместо документов у нас легко могут быть какие-нибудь абстрактные категории или конкретные ящики, а вместо слов — абстрактные объекты или конкретные фрукты: TF-IDF — вполне универсальная метрика для измерения важности.

Некоторые расширения TF-IDF

В некоторых случаях TF-IDF может считаться по-иному (если вдруг не нравится работа стандартного алгоритма — можно и поэкспериментировать!)

Расширения TF

1. Можно считать TF бинарно, т.е. просто проверять наличие термина в тексте и присваивать единицу, если термин в тексте есть.

def compute_tf(text):
    tf_text = {i: 1 for i in text}
    return tf_text

text = ['hasta', 'la', 'vista', 'baby', 'la', 'vista']
print compute_tf(text) 
Out: {'hasta': 1, 'baby': 1, 'vista': 1, 'la': 1}

2.Можно считать TF без нормализации, то есть брать просто частоту встречаемости слова в тексте без деления этой частоты на общее количество слов в тексте

from collections import Counter

def compute_tf(text):
    tf_text = Counter(text)
    return tf_text

text = ['hasta', 'la', 'vista', 'baby', 'la', 'vista']
print compute_tf(text) 
Out: Counter({'vista': 2, 'la': 2, 'hasta': 1, 'baby': 1})

3. Можно нормализовать частоту встречаемости слова с помощью логарифма таким образом, что

TF термина а = 1 + логарифм(Количество раз, когда термин а встретился в тексте)

.

from collections import Counter
import math

def compute_tf(text):
    tf_text = Counter(text)
    for i in tf_text:
        tf_text[i] = 1 + math.log10(tf_text[i])
    return tf_text

text = ['hasta', 'la', 'vista', 'baby', 'la', 'vista']
print compute_tf(text) 
Out: Counter({'vista': 1.3010299956639813, 'la': 1.3010299956639813, 
    'hasta': 1.0, 'baby': 1.0})

4. Можно проводить двойную нормализацию частоты встречаемости слова таким образом, что

TF термина а = 0.5 + 0.5 * (Количество раз, когда термин а встретился в тексте / Количество раз, когда встретился самый частотный термин этого текста)

.

from collections import Counter

def compute_tf(text):
    tf_text = Counter(text)
    for i in tf_text:
        tf_text[i] = 0.5 + (0.5 * (tf_text[i]/tf_text.most_common(1)[0][1]))
    return tf_text

text = ['hasta', 'la', 'vista', 'baby', 'la', 'vista']
print compute_tf(text) 
Out: Counter({'vista': 1.0, 'la': 1.0, 'hasta': 0.5, 'baby': 0.5})

Этот вариант полезен для измерения частотности терминов в корпусе текстов, где очень большие тексты соседствуют с очень маленькими — данный вид измерения TF нивелирует возможную ошибку, вызванную влиянием размера текста.

Расширения IDF

1. Можно вообще его не учитывать — считать всегда единицей и всё.

2. Можно произвести смягчение (smoothing) IDF — считать как в стандартном виде, только добавлять единицу в скобках, то есть

IDF термина а = логарифм(1 + (Общее количество документов / Количество документов, в которых встречается термин а))

.

import math

def compute_idf(word, corpus):
    return math.log10(1 + (len(texts))/float(sum([1 for i in corpus if word in i])))
    

texts = [['pasta', 'la', 'vista', 'baby', 'la', 'vista'], 
['hasta', 'siempre', 'comandante', 'baby', 'la', 'siempre'], 
['siempre', 'comandante', 'baby', 'la', 'siempre']]
print compute_idf('pasta', texts)
Out: 0.602059991328

3. Можно извратиться сильнее и считать IDF так:

IDF термина а = логарифм(1 + (Количество раз, когда встретился самый частотный термин среди тех документов, в которых встречается термин а / Количество документов, в которых встречается термин а))

.

from collections import Counter
import math

def compute_idf(word, corpus):
    data = [Counter(i) for i in corpus if word in i]
    final_counter = Counter()
    for i in data:
        final_counter += i
    most_common_word = final_counter.most_common(1)[0][1]
    return math.log10(1 + (most_common_word/float(sum([1 for i in corpus if word in i]))))

texts = [['pasta', 'la', 'vista', 'baby', 'la', 'vista'], 
['hasta', 'siempre', 'comandante', 'baby', 'la', 'siempre'], 
['siempre', 'comandante', 'baby', 'la', 'siempre']]
print compute_idf('pasta', texts)
Out: 0.47712125472

Этот вариант расчёта IDF призван снизить влияние размера документов на получающийся IDF терминов.

На практике эти расширения используют нечасто, особенно те, которые для расчёта IDF. Чаще всего используют второй, третий и четвертый варианты расчета TF со стандартным способом расчёта IDF.

В следующей статье я планирую коснуться интересных расширений стандартного алгоритма TF-IDF, который можно (а иногда даже и нужно) использовать для классификации тональности

Полезные ссылки

Очень понятная теория TF-IDF (англ)

Еще один хороший туториал с примерами (англ)