Le processus de création et d'amélioration du code Python orienté objet

Le processus de création et d'amélioration du code Python orienté objet

Vous pouvez faire de la programmation orientée objet en Python. Je voudrais m'en servir pour améliorer la commodité et la lisibilité. Cette fois, j'ai enregistré le processus de création d'un programme de code spaghetti que j'ai créé orienté objet.

Qu'est-ce que l'orientation objet?

"Object-Oriented" est, en gros, ** un objet, une collection de données, de propriétés et d'actions associées (comportement, méthode). L'idée est de le rassembler dans un pack. L'application de cette idée à la programmation nécessite deux processus: l'analyse orientée objet (OOA) et la conception orientée objet (OOD).

Analyse orientée objet

Supposons ici que l'autre jour, Ethical Baysean Classifier est orienté objet. Le contenu de ce programme est essentiellement un simple classificateur de baies naïves. Après avoir lu le texte, il est formé et le texte saisi par l'utilisateur est étiqueté. Commençons par une analyse orientée objet de ce programme. Ce que vous devez faire à l'étape de «l'analyse orientée objet» est de ** comprendre le mécanisme et la structure du système et de l'interpréter comme le comportement d'une série d'objets **. Dans ce cas, on peut comprendre que l'objet lui-même n'est qu'un "classificateur", le texte d'apprentissage / texte de jugement est une donnée et le processus d'apprentissage / de jugement est une opération.

Conception orientée objet

Une fois que vous comprenez comment le programme fonctionne avec l'analyse orientée objet, l'étape suivante consiste à définir les ** exigences **. Il n'y a qu'un seul "classificateur" pour l'objet, les données peuvent être réduites à quatre types de texte d'apprentissage, de texte de jugement, chaque étiquette et de données mises en forme après l'apprentissage, et l'opération peut être réduite à trois types: entrée, apprentissage et jugement. ..

Code amélioré

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()

Résultat d'exécution

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

Vous pouvez exécuter n'importe quel programme orienté objet avec seulement quatre lignes de code.

Recommended Posts

Le processus de création et d'amélioration du code Python orienté objet
Le processus d'installation d'Atom et de l'exécution de Python
L'histoire de Python et l'histoire de NaN
Le résultat de la création d'un album de cartes de jeunes mariés italiens en Python et de son partage
[PEP8] Reprenez le code source Python et écrivez-le proprement
Convertissez le résultat de python optparse en dict et utilisez-le
Installation du code Visual Studio et installation de python
[Python3] Réécrire l'objet code de la fonction
Définissez le nom du processus du programme Python
[Python] Récupère le code de caractère du fichier
Traitez le fichier gzip UNLOADed avec Redshift avec Python de Lambda, gzipez-le à nouveau et téléchargez-le sur S3
Résumé des différences entre PHP et Python
La réponse de "1/2" est différente entre python2 et 3
Spécification de la plage des tableaux ruby et python
Envoyer Gmail à la fin du processus [Python]
[Python] Lire le code source de Bottle Part 1
Liens et mémos de chaînes de code de caractères Python
Code pour vérifier le fonctionnement de Python Matplot lib
Liste de code Python à déplacer et à mémoriser
Convertir le code de caractère du fichier avec Python3
Prise en compte des forces et faiblesses de Python
Représenter des conteneurs dans un cadre imbriqué (schéma) dans Jupyter, et ce que j'ai étudié en cours de création
le zen de Python
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
Déterminer et traiter automatiquement l'encodage du fichier texte
Python - Explication et résumé de l'utilisation des 24 meilleurs packages
Visualisez la gamme d'insertions internes et externes avec python
J'ai vérifié les versions de Blender et Python
[Python3] Prenez une capture d'écran d'une page Web sur le serveur et recadrez-la davantage
Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Vers la retraite de Python2
[Python] Fonctionnalisation de la formule de Heron et calcul de la surface maximale
Expliquez le code de Tensorflow_in_ROS
L'histoire de Python et l'histoire de NaN
Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
2.x, 3.x code de caractères des séries python
[Python] J'ai installé le jeu depuis pip et j'ai essayé de jouer
Vérifions et formons statiquement le code du test automatique E2E écrit en Python [VS Code]
Attacher au processus Python de la destination SSH et déboguer
Le websocket de toio (nodejs) et python / websocket ne se connecte pas.
Je veux connaître la nature de Python et pip
Orienté objet en langage C: "○ ✕ game" a été refacturé et porté en Python
[Astuces] Problèmes et solutions dans le développement de python + kivy
À propos des fonctionnalités de Python
Installation source et installation de Python
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Vue d'ensemble de l'environnement virtuel Python et comment le créer
Le pouvoir des pandas: Python
J'ai essayé de remodeler le code de Python débutant (lycéen) en crunchy orienté objet
[Python] Le rôle de l'astérisque devant la variable. Divisez la valeur d'entrée et affectez-la à une variable
Comptez bien le nombre de caractères thaïlandais et arabes en Python
Remarque: obtenez les premier et dernier éléments de Python OrderedDict de manière non destructive
Mesurez la couverture de test du code python poussé sur GitHub.
Racler le calendrier de Hinatazaka 46 et le refléter dans Google Agenda
[Introduction à Python] J'ai comparé les conventions de nommage de C # et Python.
Premier python ② Essayez d'écrire du code tout en examinant les fonctionnalités de python