Data Science Analysen mit natürlicher Sprache “programmieren”

In einem früheren Blogbeitrag (http://www.stoeckl.ai/werden-softwareentwickler-durch-ai-software-ersetzt/) habe ich auch bereits darüber geschrieben, und die Frage aufgeworfen, ob es in Zukunft Programmierer (teilweise) ersetzen wird.

Ich habe nun im Bereich von Analysen im Data Science Bereich ein konkretes Experiment gemacht, um zu testen, ob hier ein Einsatz möglich ist. Die Aufgabe war dabei keinen Programmcode zu schreiben, um die Aufgaben zu erledigen, sondern Anweisungen in Englischer Sprache zu geben. Das Codex System musste das in Programmcode übersetzen, der dann ausgeführt wurde.

Ein Beispiel für eine Aufgabe:

So eine Anweisung an das Codex System sah dann zum Beispiel so aus:

“Load the gensim package make a corpus of documents from the column ‘text’ of the dataframe, and a dictionary from the tokenized documents and train a LDA model on it.”

Das ergab dann zum Beispiel folgenden Programmcode in der Sprache Python:

import gensim

from gensim import corpora, models

# Tokenize the documents

tokenized_docs = [doc.split() for doc in df[‘text’]]

# Create a dictionary from the tokenized documents

dictionary = corpora.Dictionary(tokenized_docs)

# Create a corpus from the tokenized documents

corpus = [dictionary.doc2bow(doc) for doc in tokenized_docs]

# Train the LDA model

lda_model = models.LdaModel(corpus, num_topics=10, id2word=dictionary, passes=10)

# Print the top terms for each topic

for idx, topic in lda_model.print_topics(-1):

    print(‘Topic: {} nWords: {}’.format(idx, topic))

Diese Anweisungen führen hier zum Beispiel eine sogenanne Topicanalyse auf Textdokumenten durch. Das Programm läuft korrekt und erledigt die Aufgabe. Details zum Experiment können Sie in meinem Artikel nachlesen.

Oberfläche OpenAI Codex (Quelle: https://openai.com/blog/openai-codex/)

Was habe ich dabei gelernt?

Die Anweisungen müssen den Prozess, der als Code generiert werden soll, genau beschreiben. Dies erfordert etwas Experimentierfreude und nicht weniger Know-how als das Schreiben des Codes von Hand. Der Hauptvorteil liegt darin, dass man nicht alle Details der Syntax kennen muss und sich damit einige Zeit erspart.

Zudem muss die Eingabeaufforderung sehr sorgfältig gewählt werden. Manchmal führen kleine Änderungen in der Eingabeaufforderung zu nicht nachvollziehbaren Änderungen im Ergebnis. 

Außerdem ist es sehr wichtig, dass die Algorithmen vom Autor beherrscht werden, und auch die benötigten Programmpakete müssen dabei bekannt sein. Das Sprachmodell macht in etwa das Gleiche, als wenn man die richtige Texteingabe in der Google-Suche verwendet, die gefundenen Ergebnisse von Stackoverflow nimmt und die Codeschnipsel zusammensetzt. Allerdings auf eine schnellere und komfortablere Art und Weise.