Verändern die Eingabe in tf-idf
Format TfidfVectorizer
verwenden. Sie können dann eine Entfernungsmetrik (Kosinus, euklidisch, Manhattan, ...) verwenden, um das Dokument zu berechnen, das Ihrer Eingabe am nächsten ist.
Jedes der Dokumente sollte dasselbe Vokabular verwenden. Ich nehme an, dass Ihre 8 Dokumentenvektoren die gleiche Länge haben? Das von Ihnen erstellte Objekt sklearn_tfidf
verfügt über das Attribut vocabulary_
, das alle Wörter enthält, die in den Vektoren verwendet werden. Ihre Eingabeabfrage sollte so reduziert werden, dass nur diese Wörter enthalten sind.
Beispiel
Document1: dogs are cute
Document2: cats are awful
führt zu einem Wortschatz von [dogs, cats, are, cute, awful]
. Eine Abfrage, die andere Wörter als diese 5 enthält, kann nicht verwendet werden. Zum Beispiel, wenn Ihre Abfrage cute animals
ist, hat die animals
keine Bedeutung, weil es nicht in einem der Dokumente gefunden werden kann. Die Abfrage reduziert sich somit auf folgenden Vektor: [0,0,0,1,0]
seit cute
ist das einzige Wort, das in den Dokumenten gefunden werden kann.
Mit dem besten Dokument meinst du das nächste Dokument zur Eingabe von Abfragen? Sie müssen 'TfidfVectorizer' anpassen, um eine Abfrage einzugeben und dann die Entfernung zum Vektor aus den 7 Dokumenten zu finden, die Sie haben (dies kann Kosinusabstand/euklidischer Abstand sein). – titipata
@titipat danke für den Ansatz. Aber wie ich verstehe, sollte die Länge der Vektoren gleich sein, um irgendeinen der erwähnten Abstände zu finden. Wie werde ich das tun? – user3235169