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 5długimi paragrafach zaczerpniętych z mediów drukowanych, text 1przez 5takich 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 1zaczyna 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 1do text 2czasu, ciesząc się nadal literaturą o wszechmogącym FC Barcelona text 5?
TC-IDF: Wyizolowałem słowa w każdym textna 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 textzliczono tylko słowa napotkane w odpowiednim słowie - wszystkie pozostałe słowa należące do innych texts zostały wycenione na zero. Na przykład w pierwszym fragmencie text 1jego 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 texti 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)text01text
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 1z text 5był 13.42645, podczas gdy text 1v. text2Był 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.