AI Artificial Intelligence

Viele Teile ergeben ein Ganzes! Die Kunst unwichtige Details zu vermeiden!

Eine Kategorie vorhersagen

Jedes Wort ist wichtig, aber ein Dokument zu kategorisieren ist genauso interessant. Ein Dokument kategorisieren bedeutet, herauszufinden, in welche Kategorie ein Wort fällt. Man will zun Beispiel vorhersagen in welche Kategorie ein Satz fällt. Zum Beispiel eMail, Sport, Geschäfte etc.

Im folgenden Beispiel werden 20 "newsgroup - Datasets" aus der Scikit-learn Python Biblliothek verwendet.

Datei: KategorieVorhersagen.py

# Kategorien in einem Text bestimmen
# 2022 Ehrenfried Stuhlpfarrer
# Erforderliche Paket importieren
from sklearn.datasets import fetch_20newsgroups
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer

# Definition von 5 verschiedenen Kategorien
c_map = {"talk.religion.misc": "Religion", "rec.autos": "Autos", "rec.sport.hockey": "Hockey", "sci.electronics": "Electonics", "sci.space": "space"}
# Das Trainingsset erzeugen
t_data = fetch_20newsgroups(subset="train", categories=c_map.keys(), shuffle=True, random_state=5)
# Ein vektorielles Zählsystem bauen und die Begriffe extrahieren
v_count = CountVectorizer()
train_tc = v_count.fit_transform(t_data.data)
print("\nDimensionierung der Trainingsdaten:", train_tc.shape)
# Transformer tf-idf generieren
tfidf = TfidfTransformer()
train_tfidf = tfidf.fit_transform(train_tc)
# Die Testdaten festlegen
input_data =[
'Columbia is the name of a space shuttle',
'Hindu, isai, Sikh, Muslim all are religions',
'We shoul drive safely',
'Puck is a round disk made of hard rubber',
'Television, Microwave, Mixer Grinder, Refrigrator, all uses electricity'
]
# Naive Bayes Klassifizierer trainieren
classifier = MultinomialNB().fit(train_tfidf, t_data.target)
# Die Eingabedaten mit dem CountVectoricer transformieren
input_tc = v_count.transform(input_data)
# Die vektorisierten Daten mit dem tf-idf transfomieren
input_tfidf = tfidf.transform(input_tc)
# Die Ausgaben vorhersagen
predictions = classifier.predict(input_tfidf)
for sent, category in zip(input_data, predictions):
print('\nThe Input Data is:', sent, '\n Category:', \
c_map[t_data.target_names[category]])
-------------------------------------------------------------------------
Dimensionierung der Trainingsdaten: (2755, 39297)

The Input Data is: Columbia is the name of a space shuttle 
 Category: space

The Input Data is: Hindu, isai, Sikh, Muslim all are religions 
 Category: Religion

The Input Data is: We shoul drive safely 
 Category: Autos

The Input Data is: Puck is a round disk made of hard rubber 
 Category: Hockey

The Input Data is: Television, Microwave, Mixer Grinder, Refrigrator, all uses electricity 
 Category: Electonics

KI

Copyright © 2022. All Rights Reserved. Ehrenfried Stuhlpfarrer