[PYTHON] [Maschinelles Lernen] LDA-Themenklassifizierung mit Scikit-Learn

Informationen zur Klassifizierung von LDA-Themen

--LDA = latente Dirichelet-Zuordnung

In LDA gehört jedes Wort in einem Satz zu einem versteckten Thema (Thema, Kategorie), und es wird angenommen, dass der Satz aus diesem Thema gemäß einer gewissen Wahrscheinlichkeitsverteilung generiert wird und das Thema, zu dem es gehört, abgeleitet wird.

--Papier http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf ldapic.png

--alpha;: Parameter zum Abrufen des Themas --beta;: Parameter, um die Wörter im Thema zu erhalten --theta;: Polynomverteilungsparameter --w: Wort --z: Thema

Dieses Mal werde ich diese LDA verwenden, um zu überprüfen, ob Sätze nach Themen klassifiziert werden können.

Datensatz

20 Validiert mit Newsgroups

comp.graphics
comp.os.ms-windows.misc
comp.sys.ibm.pc.hardware
comp.sys.mac.hardware
comp.windows.x
rec.autos
rec.motorcycles
rec.sport.baseball
rec.sport.hockey
sci.crypt
sci.electronics
sci.med
sci.space
talk.politics.misc
talk.politics.guns
talk.politics.mideast
talk.religion.misc
alt.atheism
misc.forsale
soc.religion.christian

Lernen

from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.decomposition import LatentDirichletAllocation
import mglearn
import numpy as np

#data 
categories = ['rec.sport.baseball', 'rec.sport.hockey', \
                'comp.sys.mac.hardware', 'comp.windows.x']
twenty_train = fetch_20newsgroups(subset='train',categories=categories, \
                                            shuffle=True, random_state=42)
twenty_test = fetch_20newsgroups(subset='test',categories=categories, \
                                            shuffle=True, random_state=42)
tfidf_vec = TfidfVectorizer(lowercase=True, stop_words='english', \
                            max_df = 0.1, min_df = 5).fit(twenty_train.data)
X_train = tfidf_vec.transform(twenty_train.data)
X_test = tfidf_vec.transform(twenty_test.data)

feature_names = tfidf_vec.get_feature_names()
#print(feature_names[1000:1050])
#print()

# train
topic_num=4
lda =LatentDirichletAllocation(n_components=topic_num,  max_iter=50, \
                        learning_method='batch', random_state=0, n_jobs=-1)
lda.fit(X_train)

Überprüfen Sie den Status der Bestätigung unten

sorting = np.argsort(lda.components_, axis=1)[:, ::-1]
mglearn.tools.print_topics(topics=range(topic_num),
                           feature_names=np.array(feature_names),
                           topics_per_chunk=topic_num,
                           sorting=sorting,n_words=10)
topic 0       topic 1       topic 2       topic 3       
--------      --------      --------      --------      
nhl           window        mac           wpi           
toronto       mit           apple         nada          
teams         motif         drive         kth           
league        uk            monitor       hcf           
player        server        quadra        jhunix        
roger         windows       se            jhu           
pittsburgh    program       scsi          unm           
cmu           widget        card          admiral       
runs          ac            simms         liu           
fan           file          centris       carina 

--topic1: Windows-Computer --topic2: Mac-Computer --topic0: Baseball oder Hockey, kann nicht wie erwartet klassifiziert werden --topic3: Computerbezogen? Ich konnte nicht wie erwartet klassifizieren

Es wird davon ausgegangen, dass Thema1 und Thema2 in der Lernphase ordentlich klassifiziert werden können.

Inferenz

Für die Daten zur Schlussfolgerung habe ich einen englischen Artikel von Apple auf Wikipedia ausgeliehen. Setzen Sie einige Wikipedia-Artikel auf text11 und text12.

text11="an American multinational technology company headquartered in Cupertino, "+ \
        "California, that designs, develops, and sells consumer electronics,"+ \
        "computer software, and online services."
text12="The company's hardware products include the iPhone smartphone,"+ \
        "the iPad tablet computer, the Mac personal computer,"+ \
        "the iPod portable media player, the Apple Watch smartwatch,"+ \
        "the Apple TV digital media player, and the HomePod smart speaker."

Führen Sie die folgende Folgerung durch

# predict
test1=[text11,text12]
X_test1 = tfidf_vec.transform(test1)
lda_test1 = lda.transform(X_test1)
for i,lda in enumerate(lda_test1):
    print("### ",i)
    topicid=[i for i, x in enumerate(lda) if x == max(lda)]
    print(text11)
    print(lda," >>> topic",topicid)
    print("")

Ergebnis

###  0
an American multinational technology company headquartered in Cupertino, California, that designs, develops, and sells consumer electronics,computer software, and online services.
[0.06391161 0.06149079 0.81545564 0.05914196]  >>> topic [2]

###  1
an American multinational technology company headquartered in Cupertino, California, that designs, develops, and sells consumer electronics,computer software, and online services.
[0.34345051 0.05899806 0.54454404 0.05300738]  >>> topic [2]

Es kann gesagt werden, dass alle Sätze, die sich auf MAC (Apfel) beziehen, korrekt klassifiziert wurden, da gefolgert wurde, dass sie wahrscheinlich zu Thema2 (Mac-Computer) gehören.

Recommended Posts

[Maschinelles Lernen] LDA-Themenklassifizierung mit Scikit-Learn
Klassifikation des maschinellen Lernens
Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Überwachtes maschinelles Lernen (Klassifikation / Regression)
[Maschinelles Lernen] Textklassifizierung mit dem Transformer-Modell (Aufmerksamkeitsbasierter Klassifikator)
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Klassifikation und Regression beim maschinellen Lernen
SVM versucht maschinelles Lernen mit Scikit-Learn
100 Sprachverarbeitung Knock-73 (mit Scikit-Learn): Lernen
Anwendungsentwicklung mit Azure Machine Learning
Maschinelles Lernen
[Maschinelles Lernen] Cluster-Yahoo-News-Artikel mit MLlib-Themenmodell (LDA).
scikit-learn Verwendung der Zusammenfassung (maschinelles Lernen)
[Maschinelles Lernen] FX-Vorhersage unter Verwendung des Entscheidungsbaums
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung
Zusammenfassung der Klassifizierung und Implementierung von Algorithmen für maschinelles Lernen
Aktienkursprognose mit maschinellem Lernen (Return Edition)
[Maschinelles Lernen] Regressionsanalyse mit Scicit Learn
EV3 x Pyrhon Maschinelles Lernen Teil 3 Klassifizierung
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 2
Algorithmus für maschinelles Lernen (von der Klassifizierung in zwei Klassen bis zur Klassifizierung in mehreren Klassen)
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 3
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
Klassifizieren Sie Informationen zum maschinellen Lernen nach Themenmodellen
Ich habe versucht, verschiedene Methoden für maschinelles Lernen (Vorhersagemodell) mithilfe von Scicit-Learn zu implementieren
Betreutes Lernen (Klassifizierung)
[Übersetzung] scikit-learn 0.18 Einführung in maschinelles Lernen durch Tutorial scikit-learn
[Memo] Maschinelles Lernen
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
Beispiel für maschinelles Lernen
[Maschinelles Lernen] Extrahieren Sie ähnliche Wörter mechanisch mit WordNet
Kausales Denken mit maschinellem Lernen (Organisation von Methoden des kausalen Denkens)
Was ich über KI / maschinelles Lernen mit Python gelernt habe (1)
Erstellen Sie maschinelle Lernprojekte mit explosiver Geschwindigkeit mithilfe von Vorlagen
[Maschinelles Lernen] SVM sowohl aus Scikit-Lernen als auch aus Mathematik verstehen
Einfaches maschinelles Lernen mit Scikit-Learn und Flask ✕ Web App
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Was ich über KI / maschinelles Lernen mit Python gelernt habe (3)
Maschinelles Lernen mit Bildern der Kategorie Caffe -1 unter Verwendung eines Referenzmodells
Tech-Circle Beginnen wir mit der Anwendungsentwicklung durch maschinelles Lernen (Selbststudium)
[Maschinelles Lernen] Versuchen Sie, Objekte mithilfe der selektiven Suche zu erkennen
Praktisches maschinelles Lernen mit Scikit-Learn und TensorFlow-TensorFlow gab auf-
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Was ich über KI / maschinelles Lernen mit Python gelernt habe (2)
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Maschinelles Lernen unterstützt Vektormaschine
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens