Ich komme zu spät zu dieser Party, aber ich habe mit den Konzepten von tc-idf gespielt (ich möchte das Wort 'concept' hervorheben, weil ich für die eigentlichen Berechnungen keinen Büchern gefolgt bin; sie sind also möglicherweise etwas abweichend und definitiv einfacher durchgeführt mit Paketen wie {tm: Text Mining Package}
, wie erwähnt), und ich denke, was ich bekommen habe, könnte mit dieser Frage zusammenhängen, oder auf jeden Fall könnte dies ein guter Ort sein, um sie zu posten.
SET-UP: Ich habe einen Korpus von 5
langen Absätzen von gedruckten Medien entnommen, text 1
durch 5
wie die New York Times . Angeblich ist es ein sehr kleiner "Körper", sozusagen eine winzige Bibliothek, aber die Einträge in dieser "digitalen" Bibliothek sind nicht zufällig: Die ersten und fünften Einträge befassen sich mit Fußball (oder "Fußball" für "Social Club"). (?) hier) und genauer gesagt über das größte Team von heute. So text 1
beginnt zum Beispiel als ...
"In den letzten neun Jahren hat Messi den FC Barcelona zu nationalen und internationalen Titeln geführt und dabei einzelne Rekorde auf eine Weise gebrochen, die jenseits der Welt zu liegen scheint ..."
Sehr schön! Auf der anderen Seite möchten Sie auf jeden Fall den Inhalt der drei dazwischen liegenden Einträge überspringen. Hier ist ein Beispiel ( text 2
):
"Innerhalb weniger Stunden in ganz Texas schlug Herr Rubio vor, dass Herr Trump in seine Hosen gepinkelt und illegale Einwanderer eingesetzt habe, um seine unaufhörlichen Twitter-Nachrichten abzuhören ..."
Was also zu tun , um jeden Preis „Surfen“ aus der zu vermeiden , text 1
zu text 2
, während sie weiterhin in der Literatur über allmächtiges Barcelona FC freuen in text 5
?
TC-IDF: Ich habe die Wörter in jedem text
in lange Vektoren unterteilt. Zählte dann die Häufigkeit jedes Wortes und erzeugte fünf Vektoren (einen für jedes text
), in denen nur die Wörter text
gezählt wurden, die in dem entsprechenden angetroffen wurden - alle anderen Wörter, die zu anderen text
s gehörten, wurden mit Null bewertet. Im ersten Snippet von text 1
zum Beispiel hätte sein Vektor eine Zählung von 1 für das Wort "Messi", während "Trump" 0 hätte. Dies war der tc- Teil.
Der IDF- Teil wurde auch für jeden einzeln berechnet text
und ergab 5 "Vektoren" (ich glaube, ich habe sie als Datenrahmen behandelt), die die logarithmischen Transformationen der Anzahl der Dokumente enthielten (leider nur von null auf fünf, angesichts unserer kleinen Bibliothek) ) mit einem bestimmten Wort wie in:
Log( Nr. Dokumente1+Nr. Dokumente, die ein Wort enthalten). Die Anzahl der Dokumente ist 5. Hier kommt der Teil, der das OP beantworten kann: Für jede IDF-Berechnung wurde der betreffendetext
Teil von der Zählung ausgeschlossen . Aber wenn ein Wort in allen Dokumenten auftauchte, war sein Idf still0 Danke an die 1im Nenner - zB das Wort "the" hatte die Bedeutung 0, weil es in allen text
s vorhanden war.
Die eintrittsweise Multiplikation von tc × idffür jeden text
war die Wichtigkeit jedes Wortes für jeden der Bibliothekselemente - lokal vorherrschende, weltweit seltene Wörter .
VERGLEICHE: Jetzt ging es nur noch darum, zwischen diesen "Vektoren von Wortbedeutung" Punktprodukte zu erzeugen .
Wie vorauszusehen war , das Skalarprodukt text 1
mit text 5
war 13.42645
, während text 1
v. text2
Nur war 2.511799
.
Der klobige R-Code (nichts zu imitieren) ist hier .
Auch dies ist eine sehr rudimentäre Simulation, aber ich denke, es ist sehr anschaulich.