Я запізнююсь на цю вечірку, але я грався з поняттями tc-idf (я хочу наголосити на слові "концепція", тому що я не слідкував за жодними книгами для фактичних розрахунків; тому вони можуть бути дещо відключені, і, безумовно, легше виконується з такими пакунками, як {tm: Text Mining Package}, як було сказано), і я думаю, що я отримав, можливо, пов'язане з цим питанням, або, в будь-якому випадку, це може бути хорошим місцем для його опублікування.
SET-UP: У мене є корпус з 5довгих пунктів , які вибираються зі друкованих засобів масової інформації, text 1через 5такі , як The New York Times . Нібито, це дуже маленьке «тіло», крихітна бібліотека, так би мовити, але записи в цій «цифровій» бібліотеці не випадкові: перший і п’ятий записи стосуються футболу (або «футболу» для «соціального клубу» (?) тут), а точніше про найбільшу команду сьогодні. Так, наприклад, text 1починається як ...
"Протягом останніх дев'яти років Мессі привів ФК" Барселона "до національних та міжнародних титулів, побиваючи окремі рекорди способами, які здаються потойбічним ..."
Дуже хороша! З іншого боку, ви напевно хочете пропустити вміст у трьох записах між ними. Ось приклад ( text 2):
"Протягом декількох годин по всьому Техасу, пан Рубіо припустив, що містер Трамп мочився в штанах і використовував нелегальних іммігрантів, щоб виправити його невпинні повідомлення в Twitter ..."
Тож що робити, щоб за всяку ціну уникнути "серфінгу" від " text 1до" text 2, продовжуючи радіти літературі про всемогутній ФК "Барселона" text 5?
TC-IDF: Я виділив слова в кожному textна довгі вектори. Потім підраховували частоту кожного слова, створюючи п’ять векторів (по одному на кожний text), у яких textпідраховували лише слова, що зустрічаються у відповідних - усі інші слова, що належать іншим texts, оцінювались в нуль. Наприклад, у першому фрагменті text 1його вектору було б число 1 для слова "Мессі", а "Трамп" - 0. Це частина ТС .
Частина idf також була розрахована окремо для кожного text, і в результаті вийшло 5 "векторів" (я думаю, я розглядав їх як кадри даних), що містять логарифмічні перетворення підрахунків документів (на жаль, від нуля до п'яти, враховуючи нашу маленьку бібліотеку ), що містить задане слово як у:
01log(No. documents1+No. docs containing a word) . Кількість документів дорівнює 5. Ось частина, яка може відповідати ОП: для кожного розрахунку idf textрозглянутий документ був виключений з підрахунку . Але якщо слово з'явилося у всіх документах, її IDF був ще завдяки в знаменнику - наприклад , слова «в» мав значення 0, так як він присутній у всіх с.01text
Запис мудра множенням для кожного було значенням кожного слова для кожного з елементів бібліотеки - локально поширені, глобально рідкісні слова .tc×idftext
ПОРІВНЯННЯ: Тепер справа в тому, щоб виконати крапкові продукти серед цих "векторів важливості слова".
Передбачувано, точковий твір text 1з " text 5було" 13.42645, а text 1v. text2Був лише 2.511799.
Незграбний код R (нічого не наслідувати) знаходиться тут .
Знову ж таки, це дуже рудиментарне моделювання, але я думаю, що це дуже графічно.