Der Prozess, Python-Code objektorientiert zu machen und zu verbessern

Der Prozess, Python-Code objektorientiert zu machen und zu verbessern

Sie können in Python objektorientiert programmieren. Ich möchte es nutzen, um die Bequemlichkeit und Lesbarkeit zu verbessern. Dieses Mal habe ich den Prozess der Erstellung eines Spaghetti-Code-Programms aufgezeichnet, das ich objektorientiert erstellt habe.

Was ist Objektorientierung?

"Objektorientiert" ist grob gesagt ** ein Objekt, eine Sammlung von Daten, Propatien und verwandten Aktionen (Verhalten, Methode). Die Idee ist, es in einer Packung zusammenzustellen. Die Anwendung dieser Idee auf die Programmierung erfordert zwei Prozesse: Objektorientierte Analyse (OOA) und Objektorientiertes Design (OOD).

Objektorientierte Analyse

Nehmen wir hier an, dass neulich Ethical Baysean Classifier objektorientiert ist. Der Inhalt dieses Programms ist im Grunde ein einfacher Klassifikator für naive Buchten. Nach dem Lesen des Textes wird er trainiert und der vom Benutzer eingegebene Text wird beschriftet. Beginnen wir mit einer objektorientierten Analyse dieses Programms. In der Phase der "objektorientierten Analyse" sollten Sie den Mechanismus und die Struktur des Systems verstehen und als Verhalten einer Reihe von Objekten interpretieren. In diesem Fall kann verstanden werden, dass das Objekt selbst nur ein "Klassifikator" ist, der Lerntext / Urteilstext Daten sind und der Lern- / Urteilsprozess eine Operation ist.

Objektorientiertes Design

Sobald Sie verstanden haben, wie das Programm mit objektorientierter Analyse funktioniert, müssen Sie im nächsten Schritt die ** Anforderungen ** definieren. Es gibt nur einen "Klassifikator" für das Objekt, die Daten können nach dem Lernen auf vier Arten von Lerntexten, Beurteilungstexten, jeder Beschriftung und geformten Daten eingegrenzt werden, und die Operation kann auf drei Arten eingegrenzt werden: Eingabe, Lernen und Beurteilung. ..

Verbesserter Code

Ethical_Baysean_Classifier-OOP.ipynb


import numpy as np
import matplotlib.pyplot as plt
from textblob import TextBlob
from textblob.classifiers import NaiveBayesClassifier 

class Classifier():
    
    def __init__(self):
        self.act_pos = []
        self.etc_pos = []
        self.etc_neg = []
        self.etc_user = []
        self.etc_user_label = []
        self.etc_user_label2 = []
        self.trained1 = []
        self.trained2 = []
    
        print("Classifier has initiated.")
    
    
    def input(self):
        with open("analysed/actual_statement_pos.txt","r", encoding="utf8", errors='ignore')as f:
            entire_txt = f.read()
            self.act_pos = entire_txt.splitlines()
            print("Text lines =", len(self.act_pos))    
        with open("analysed/ethical_statement_pos.txt","r", encoding="utf8", errors='ignore')as f:
            entire_txt2 = f.read()
            self.etc_pos = entire_txt2.splitlines()
            print("Text lines =", len(self.etc_pos)) 
        with open("analysed/ethical_statement_neg.txt","r", encoding="utf8", errors='ignore')as f:
            entire_txt3 = f.read()
            self.etc_neg = entire_txt3.splitlines()
            print("Text lines =", len(self.etc_neg))
        with open("analysed/ethical_statement_user.txt","r", encoding="utf8", errors='ignore')as f:
            entire_txt4 = f.read()
            self.etc_user = entire_txt4.splitlines()
            print("Text lines =", len(self.etc_user))
        
        
    def train(self):
        for i,item in enumerate(self.act_pos):
            self.trained1 = [ 
                (self.act_pos[i], "act"), 
                (self.etc_pos[i], "etc"), 
            ] 
        for i,item in enumerate(self.act_pos):
            self.trained2 = [ 
                (self.etc_pos[i], "etc_pos"), 
                (self.etc_neg[i], "etc_neg"), 
            ] 
        print("\n Classifier has trained for Actual/Ethical,Correct/Wrong distinction.")
        
        
    def classify(self):
        trained1 = self.trained1
        cl = NaiveBayesClassifier(trained1)
        
        print("\n Actual/Ethical distinction")
        
        for i,item in enumerate(self.act_pos):
            self.etc_user_label.append(cl.classify(self.etc_user[i]))
            print(self.etc_user[i],"<<- Text | Classified ->> ", self.etc_user_label[i])
            
            
        trained2 = self.trained2
        cl = NaiveBayesClassifier(trained2)
        
        print("\n Correct/Wrong distinction")
        
        for i,item in enumerate(self.act_pos):
            self.etc_user_label2.append(cl.classify(self.etc_user[i]))
            print(self.etc_user[i],"<<- Text | Classified ->> ", self.etc_user_label2[i])
            
clsf = Classifier()
clsf.input()
clsf.train()
clsf.classify()

Ausführungsergebnis

Classifier has initiated. Text lines = 10 Text lines = 10 Text lines = 10 Text lines = 10

Classifier has trained for Actual/Ethical,Correct/Wrong distinction.

Actual/Ethical distinction We must not be late. <<- Text | Classified ->> etc We must fight against odds. <<- Text | Classified ->> etc We must take the evil with the good. <<- Text | Classified ->> etc We must consider the gravity of the situation. <<- Text | Classified ->> etc We must have high ideals. <<- Text | Classified ->> etc We must keep calm. <<- Text | Classified ->> etc We must try to find him, <<- Text | Classified ->> etc We must not forget that day. <<- Text | Classified ->> etc We must protect that. <<- Text | Classified ->> etc We must always provide against accidents. <<- Text | Classified ->> etc

Correct/Wrong distinction We must not be late. <<- Text | Classified ->> etc_neg We must fight against odds. <<- Text | Classified ->> etc_pos We must take the evil with the good. <<- Text | Classified ->> etc_pos We must consider the gravity of the situation. <<- Text | Classified ->> etc_pos We must have high ideals. <<- Text | Classified ->> etc_pos We must keep calm. <<- Text | Classified ->> etc_pos We must try to find him, <<- Text | Classified ->> etc_pos We must not forget that day. <<- Text | Classified ->> etc_neg We must protect that. <<- Text | Classified ->> etc_pos We must always provide against accidents. <<- Text | Classified ->> etc_pos

Sie können jedes objektorientierte Programm mit nur vier Codezeilen ausführen.

Recommended Posts

Der Prozess, Python-Code objektorientiert zu machen und zu verbessern
Der Prozess der Installation von Atom und der Ausführung von Python
Die Geschichte von Python und die Geschichte von NaN
Das Ergebnis der Erstellung eines Kartenalbums italienischer Jungvermählten in Python und dessen Weitergabe
[PEP8] Übernehmen Sie den Python-Quellcode und schreiben Sie ihn ordentlich
Konvertieren Sie das Ergebnis von Python Optparse, um es zu diktieren und zu verwenden
Installation von Visual Studio Code und Installation von Python
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
Legen Sie den Prozessnamen des Python-Programms fest
[Python] Ruft den Zeichencode der Datei ab
Verarbeiten Sie die mit Redshift entladene gzip-Datei mit Python of Lambda, gzipen Sie sie erneut und laden Sie sie in S3 hoch
Zusammenfassung der Unterschiede zwischen PHP und Python
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Angeben des Bereichs von Ruby- und Python-Arrays
Senden Sie Google Mail am Ende des Vorgangs [Python]
[Python] Lesen Sie den Quellcode von Flasche Teil 1
Links und Memos von Python-Zeichencodezeichenfolgen
Code zum Überprüfen des Betriebs von Python Matplot lib
Liste des zu verschiebenden und zu merkenden Python-Codes
Konvertieren Sie den Zeichencode der Datei mit Python3
Berücksichtigung der Stärken und Schwächen von Python
Darstellung von Containern in einem verschachtelten Rahmen (schematisch) in Jupyter und was ich bei der Erstellung untersucht habe
der Zen von Python
Die Geschichte von Python ohne Inkrement- und Dekrementoperatoren.
Ermitteln und verarbeiten Sie die Codierung der Textdatei automatisch
Python - Erläuterung und Zusammenfassung der Verwendung der 24 wichtigsten Pakete
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Ich habe mir die Versionen von Blender und Python angesehen
[Python3] Machen Sie einen Screenshot einer Webseite auf dem Server und schneiden Sie sie weiter zu
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
Auf dem Weg zum Ruhestand von Python2
[Python] Herons Formelfunktionalisierung und Berechnung der maximalen Fläche
Erläutern Sie den Code von Tensorflow_in_ROS
Die Geschichte von Python und die Geschichte von NaN
Geben Sie die Bilddaten mit Flask of Python zurück und zeichnen Sie sie in das Canvas-Element von HTML
2.x, 3.x Serienzeichencode von Python
[Python] Ich habe das Spiel von pip installiert und versucht zu spielen
Lassen Sie uns den Code des in Python [VS Code] geschriebenen automatischen E2E-Tests statisch überprüfen und formatieren.
Anhängen an den Python-Prozess des SSH-Ziels und Debuggen
Der Websocket von toio (nodejs) und python / websocket stellen keine Verbindung her.
Ich möchte die Natur von Python und Pip kennenlernen
Objektorientiert in C-Sprache: "○ ✕ game" wurde überarbeitet und nach Python portiert
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Über die Funktionen von Python
Quellinstallation und Installation von Python
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Übersicht über die virtuelle Python-Umgebung und deren Erstellung
Die Kraft der Pandas: Python
Ich habe versucht, den Code des Python-Anfängers (Schüler der Mittelstufe) in objektorientiertes Knuspriges umzuwandeln
[Python] Die Rolle des Sterns vor der Variablen. Teilen Sie den Eingabewert und weisen Sie ihn einer Variablen zu
Zählen Sie die Anzahl der thailändischen und arabischen Zeichen in Python gut
Hinweis: Holen Sie sich das erste und letzte Element von Python OrderedDict zerstörungsfrei
Messen Sie die Testabdeckung von Push-Python-Code auf GitHub.
Verschrotten Sie den Zeitplan von Hinatazaka 46 und spiegeln Sie ihn in Google Kalender wider
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Erste Python ② Versuchen Sie, Code zu schreiben, während Sie die Funktionen von Python untersuchen