Вимірювання подібності документа


21

Для кластеризації (текстових) документів потрібен спосіб вимірювання подібності між парами документів.

Дві альтернативи:

  1. Порівняйте документи як термінові вектори, використовуючи косинулогічну подібність - і TF / IDF як коефіцієнти зважування для термінів.

  2. Порівняйте кожен розподіл вірогідності документів, використовуючи f-дивергенцію, наприклад, дивергенцію Куллбека-Лейблера

Чи є якась інтуїтивна причина віддати перевагу одному методу іншому (якщо припустити середній розмір документа в 100 термінів)?

Відповіді:


23

У текстових документах функції векторів можуть бути дуже великими розмірами та рідкісними під будь-яким із стандартних зображень (мішок слів, TF-IDF тощо). Вимірювання відстаней безпосередньо під таким поданням не може бути надійним, оскільки відомо, що за дуже високих розмірів відстань між будь-якими двома точками починає виглядати однаково. Один із способів вирішити це - зменшити розмірність даних за допомогою PCA або LSA ( Latent Semantic Analysis ; також відомий як Latent Semantic Indexing ), а потім виміряти відстані в новому просторі. Використовувати щось на зразок LSA над PCA є вигідним, оскільки воно може дати змістовне уявлення з точки зору "смислових понять", крім вимірювання відстаней у просторі нижчих розмірів.

Порівняння документів на основі розподілу ймовірностей зазвичай проводиться спочатку обчисленням тематичного розподілу кожного документа (використовуючи щось на зразок прихованого розподілу Діріхле ), а потім обчисленням певного розбіжності (наприклад, розбіжності KL) між тематичними розподілами пари документів. Зрештою, це схоже на те, щоб спочатку зробити LSA, а потім виміряти відстані в просторі LSA, використовуючи KL-дивергенцію між векторами (замість косинусної подібності).

Дивергенція KL - це міра відстані для порівняння розподілів, тому може бути кращим, якщо представлення документа відбувається з точки зору деякого розповсюдження (що часто насправді трапляється - наприклад, документи, представлені у вигляді розподілу за темами, як у LDA). Також зауважте, що при такому поданні записи у векторі ознак будуть дорівнювати одиниці (оскільки ви в основному трактуєте документ як розподіл за темами або смисловими поняттями).

Також дивіться пов’язану нитку тут .


Спасибі. Чи вимагає LDA, щоб ви знали теми заздалегідь? У нашому випадку ми не знаємо, до якої теми належить кожен Документ, і ми будемо використовувати міру подібності для виконання кластеризації (EM-G-Means або GAAC)
Joel

@ Ebony1 Ніцца посилання на LSA, я зробив подібний відповідь деякий час назад в stats.stackexchange.com/questions/369 / ...
хл

1
@Joel: Ні, LDA не передбачає, що ви знаєте теми кожного документа заздалегідь. BTW, щоб було зрозуміло, LDA представляє кожен документ як суміш тем, а не лише однією темою. Тож кожна тема сприятиме деякому дробу в документах (а окремі дроби підсумовують 1). В основному LDA передбачає, що кожне слово в документі породжене якоюсь темою.
ebony1

@ebony - спасибі! Загрожуючи перефразовувати запитання та повторювати себе, чи вимагає LDA, щоб ви знали кількість дискретних тем?
Джоель

Так. Але є варіанти LDA (HDP-LDA), які не вимагають вказувати кількість тем. Дивіться цей документ: cse.buffalo.edu/facturing/mbeal/papers/hdp.pdf
ebony1

0

Ви можете спробувати цей Інтернет-сервіс щодо подібності документа косинуса http://www.scurtu.it/documentS Sličity.html

import urllib,urllib2
import json
API_URL="http://www.scurtu.it/apis/documentSimilarity"
inputDict={}
inputDict['doc1']='Document with some text'
inputDict['doc2']='Other document with some text'
params = urllib.urlencode(inputDict)    
f = urllib2.urlopen(API_URL, params)
response= f.read()
responseObject=json.loads(response)  
print responseObject

2
Будь ласка, надайте більше деталей.
Сіань
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.