Jestem spóźniony na tę imprezę, ale bawiłem się koncepcjami tc-idf (chcę podkreślić słowo „koncepcja”, ponieważ nie śledziłem żadnych książek do faktycznych obliczeń; więc mogą być nieco nie na pewno i zdecydowanie łatwiejsze do przeprowadzenia z pakietami {tm: Text Mining Package}
, jak wspomniano), i myślę, że to, co otrzymałem, może być związane z tym pytaniem lub, w każdym razie, może to być dobre miejsce do opublikowania go.
SET-UP: Mam korpus z 5
długimi paragrafach zaczerpniętych z mediów drukowanych, text 1
przez 5
takich jak The New York Times . Podobno jest to bardzo małe „ciało”, że tak powiem, mała biblioteka, ale wpisy w tej „cyfrowej” bibliotece nie są przypadkowe: Pierwsze i piąte wpisy dotyczą piłki nożnej (lub „piłki nożnej” w przypadku „klubu towarzyskiego” (?) tutaj), a dokładniej o dzisiejszym najlepszym zespole. Na przykład text 1
zaczyna się jako ...
„W ciągu ostatnich dziewięciu lat Messi doprowadził FC Barcelona do krajowych i międzynarodowych tytułów, jednocześnie pobijając indywidualne rekordy w sposób, który wydaje się nieziemski ...”
Bardzo dobrze! Z drugiej strony zdecydowanie chciałbyś pominąć zawartość trzech wpisów pomiędzy. Oto przykład ( text 2
):
„W ciągu kilku godzin w Teksasie pan Rubio zasugerował, że pan Trump oddał mocz w spodniach i użył nielegalnych imigrantów, aby wykasować swoje nieustające wiadomości na Twitterze ...”
Co więc zrobić, aby za wszelką cenę uniknąć „surfowania” od czasu text 1
do text 2
czasu, ciesząc się nadal literaturą o wszechmogącym FC Barcelona text 5
?
TC-IDF: Wyizolowałem słowa w każdym text
na długie wektory. Następnie policzył częstotliwość każdego słowa, tworząc pięć wektorów (po jednym dla każdego text
), w których text
zliczono tylko słowa napotkane w odpowiednim słowie - wszystkie pozostałe słowa należące do innych text
s zostały wycenione na zero. Na przykład w pierwszym fragmencie text 1
jego wektor miałby liczbę 1 dla słowa „Messi”, podczas gdy „Trump” miałby 0. To była część tc .
Część idf została również obliczona osobno dla każdego text
i dała 5 „wektorów” (myślę, że potraktowałem je jak ramki danych), zawierające logarytmiczne przekształcenia liczby dokumentów (niestety, tylko od zera do pięciu, biorąc pod uwagę naszą małą bibliotekę ) zawierające dane słowo jak w:
log( Nie. Dokumentów1+Nie. Dokumenty zawierające słowo)text
01text
tc × idftext
PORÓWNANIA: Teraz wystarczyło wykonać produkty kropkowe wśród tych „wektorów o znaczeniu słownym”.
Jak można się spodziewać, iloczyn iloczynu text 1
z text 5
był 13.42645
, podczas gdy text 1
v. text2
Był tylko 2.511799
.
Niezgrabny kod R (nic do naśladowania) jest tutaj .
Ponownie, jest to bardzo prosta symulacja, ale myślę, że jest bardzo graficzna.