Я запізнююсь на цю вечірку, але я грався з поняттями 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
підраховували лише слова, що зустрічаються у відповідних - усі інші слова, що належать іншим text
s, оцінювались в нуль. Наприклад, у першому фрагменті 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 1
v. text2
Був лише 2.511799
.
Незграбний код R (нічого не наслідувати) знаходиться тут .
Знову ж таки, це дуже рудиментарне моделювання, але я думаю, що це дуже графічно.