IQ Bot Custom Logic (Python): processus de remplacement efficace en boucle

Cet article explique comment améliorer l'efficacité en utilisant des boucles de traitement d'exclusion dans IQ Bot.

L'exclusion est une sorte de remplacement, donc l'idée est fondamentalement la même, mais je pense que le remplacement est probablement un peu plus difficile en termes de codage, alors je l'ai coupé ici.

Quand est-ce utile? ~ Remplacement ~

Dans le cas du traitement du remplacement en boucle, la rencontre la plus courante est "l'alignement du kana demi-largeur". ABBYY, l'un des moteurs OCR intégrés à IQ Bot, a tendance à être un peu faible dans la lecture des kana demi-largeur.

Si vous voulez simplement lire la demi-largeur en pleine largeur (ou vice versa), vous pouvez la corriger du côté RPA avec l'action de conversion japonaise demi-largeur ⇔ pleine largeur dans le Bot Store, mais "ga" est remplacé par "ka". Il y a des cas où il est lu comme "(ka + double guillemet)", et je pense qu'il est plus rapide de le faire avec Python que de le faire correctement avec RPA.

(Bien que vous puissiez écrire Python avec RPA)

Différence entre exclusion et remplacement

La différence entre l'exclusion et le remplacement est la suivante en termes de logique d'élément de champ.

Différence entre exclusion et remplacement


#Ceci est exclu
field_value = field_value.replace("Chaîne de caractères à exclure","")
#C'est le remplacement
field_value = field_value.replace("Chaîne de caractères avant remplacement","Chaîne de caractères après remplacement")

La grammaire de base est "remplacement", et l'exclusion est réalisée en remplaçant la "chaîne de caractères après remplacement" par "" "` (= chaîne de caractères vide).

Dans le cas de l'exclusion, la chaîne de caractères après remplacement était toujours fixée à "" ", donc les seuls éléments multiples étaient "" chaîne de caractères à exclure " (= chaîne de caractères avant remplacement). Ainsi, la séquence à boucler était OK avec la structure du tableau primaire.

Par contre, dans le cas du remplacement, il y a plusieurs avant et après remplacement, il faut donc mettre avant et après remplacement dans la séquence comme un ensemble. La structure du tableau secondaire.

C'est le point UP du niveau de difficulté.

Mais ne t'inquiète pas. Oui ... Non, je vais vous l'expliquer correctement.

Comment faire (en cas de remplacement)

Le processus de remplacement est complété par la structure suivante.

Concept de traitement de remplacement


replace_list = (("Chaîne de caractères avant remplacement 1","Chaîne de caractères après remplacement 1"),
               ("Chaîne de caractères avant remplacement 2","Chaîne de caractères après remplacement 2"),
               ("Chaîne de caractères avant remplacement 3","Chaîne de caractères après remplacement 3"))

for i in replace_list:
    field_value = field_value.replace(i[0],i[1])

replace_list a un taple à l'intérieur du tapple, c'est-à-dire qu'il a une structure de tableau quadratique.

Dans ʻidans la boucle for,(" chaîne de caractères avant remplacement 1 "," chaîne de caractères après remplacement 1 ")pour le premier traitement,(" "pour le deuxième traitement L'enfant taple est entré comme chaîne de caractères avant le remplacement 2 "," chaîne de caractères après le remplacement 2 ")`.

Le mécanisme est que les éléments d'index 0 (ʻi [0] / avant remplacement) et 1 (ʻi [1] / après remplacement) sont retirés du ʻi et passés à l'argument de remplacer`. ..

Traitement d'alignement Kana demi-largeur

À propos, la logique de correction du kana demi-largeur donnée dans l'exemple au début est une telle image.

Processus de remplacement pour kana demi-largeur


replace_list = (('Puissance"','Géorgie'),('Ki"','Gi'),('Ku"','Gu'),('Ke"','Ge'),('Ko"','Aller'),
               ('Un service"','le'),('Shi"','le'),('Su"','Zu'),('Se"','Ze'),('Alors"','Zo'),
               ('Ta"','Da'),('Ji"','Di'),('Tsu"','Zu'),('Te"','De'),('À"','Faire'),
               ('C"','Ba'),('salut"','Bi'),('Fu"','Bu'),('F"','Être'),('E"','Bo'),
               ('Ha °','Pennsylvanie'),('Salut °','Pi'),('° F','Pu'),('° F','Pe'),('Ho °','Po'))

for i in replace_list:
    field_value = field_value.replace(i[0],i[1])

En supposant que le point de turbidité est lu comme "" "(double citation) et le point de semi-turbidité est lu comme" ° "(degré), il s'agit d'un processus d'alignement sur un kana pleine largeur.

En réalité, la lecture des points troubles et des points semi-troubles fluctue souvent un peu plus.

Il est efficace d'appliquer ce processus après avoir unifié les résultats de lecture des points troubles et des points semi-troubles par un traitement de remplacement normal tout en regardant les résultats OCR.

Et une table? (Remplacement)

Dans le cas d'une table, vous pouvez modifier le contenu de la boucle for pour la table, cela devrait donc fonctionner comme suit.

Processus de remplacement (pour les tables)


replace_list = (("Chaîne de caractères avant remplacement 1","Chaîne de caractères après remplacement 1"),
               ("Chaîne de caractères avant remplacement 2","Chaîne de caractères après remplacement 2"),
               ("Chaîne de caractères avant remplacement 3","Chaîne de caractères après remplacement 3"))

for i in replace_list:
    df['Nom de colonne'] = df['Nom de colonne'].str.replace(i[0],i[1])

Mais ce qui précède n'est pas très beau ... Suis-je le seul à ressentir?

Je ferais ça.

Processus de remplacement (pour les tables)



replace_list = (("Chaîne de caractères avant remplacement 1","Chaîne de caractères après remplacement 1"),
               ("Chaîne de caractères avant remplacement 2","Chaîne de caractères après remplacement 2"),
               ("Chaîne de caractères avant remplacement 3","Chaîne de caractères après remplacement 3"))

def table_replace(x,y):
    for i in y:
        x = x.y(i[0],i[1])
    return x

df['Nom de colonne'] = df['Nom de colonne'].apply(table_replace,y=replace_list)

Si tu fais ça

--Lorsque vous souhaitez appliquer la même combinaison de chaînes de caractères à remplacer, mais à des colonnes différentes --Lorsque vous souhaitez modifier la combinaison de chaînes de caractères que vous souhaitez remplacer en fonction de la colonne

Il sera possible de réagir avec souplesse à de tels cas.

Processus de remplacement (pour les tables)



replace_listA = (("Chaîne de caractères avant remplacement 1","Chaîne de caractères après remplacement 1"),
               ("Chaîne de caractères avant remplacement 2","Chaîne de caractères après remplacement 2"),
               ("Chaîne de caractères avant remplacement 3","Chaîne de caractères après remplacement 3"))

replace_listB = (("Chaîne de caractères avant remplacement a","Chaîne de caractères après remplacement a"),
               ("Chaîne de caractères avant remplacement b","Chaîne de caractères après remplacement b"),
               ("Chaîne de caractères avant remplacement c","Chaîne de caractères après remplacement c"))


def table_replace(x,y):
    for i in y:
        x = x.y(i[0],i[1])
    return x

df['Nom de colonne 1'] = df['Nom de colonne 1'].apply(table_replace,y=replace_listA)
df['Nom de colonne 1'] = df['Nom de colonne 1'].apply(table_replace,y=replace_listB)
df['Nom de colonne 2'] = df['Nom de colonne 2'].apply(table_replace,y=replace_listA)
df['Nom de colonne 3'] = df['Nom de colonne 3'].apply(table_replace,y=replace_listB)

C'est le point.

Appliquer les remplacements replace_listA et replace_listB au nom de colonne 1 Seul remplacer par replace_listA est appliqué au nom de colonne 2 Voici un exemple dans lequel seul le remplacement par replace_listB est appliqué au nom de colonne 3.

c'est tout!

Hmmm, n'était-ce pas difficile?

Si vous avez des questions, laissez un commentaire sur cet article ou contactez-nous via DM sur Twitter.

Recommended Posts

IQ Bot Custom Logic (Python): rationaliser le traitement de remplacement en boucle
IQ Bot Custom Logic (Python): processus de remplacement efficace en boucle
IQ Bot Custom Logic (Python): rationalisez les exclusions dans les boucles
Clé de base de logique personnalisée IQ Bot
Logique personnalisée IQ Bot: attribution de valeur fixe
Résumé du traitement lié à la logique personnalisée IQ Bot
Réécrire des éléments dans une boucle de listes (Python)
Utilisez une page d'erreur personnalisée avec python / tornado
Créer un modèle d'antenne cadre en Python dans KiCad
Créer un bot de collecte de données en Python à l'aide de Selenium
Tri personnalisé en Python3
J'ai implémenté une commande de remplacement de type Vim dans Slackbot #Python
Boucle sur un générateur qui renvoie un itérateur de date en Python
Logique personnalisée IQ Bot: correction des habitudes de lecture courantes sur les dates
Prendre une capture d'écran en Python
Créer un dictionnaire en Python
Créer un bookmarklet en Python
Dessinez un cœur en Python
Facile! Implémenter un bot Twitter qui s'exécute sur Heroku en Python
À propos de psd-tools, une bibliothèque capable de traiter des fichiers psd en Python
Logique personnalisée IQ Bot: supprimez les n dernières lignes du tableau
Ecrire une dichotomie en Python
Appuyez sur une commande en Python (Windows)
Créer un conteneur DI avec Python
Dessinez une matrice de diagramme de dispersion avec python
ABC166 en Python A ~ C problème
Gérer les demandes dans un processus distinct
Créer un fichier binaire en Python
Résoudre ABC036 A ~ C avec Python
Ecrire un graphique à secteurs en Python
Ecrire le plugin vim en Python
Écrire une recherche de priorité en profondeur en Python
Implémentation d'un algorithme simple en Python 2
Résoudre ABC037 A ~ C avec Python
Exécutez un algorithme simple en Python
Dessinez un diagramme CNN en Python
Créer une chaîne aléatoire en Python
Logique gacha simple écrite en Python
Lors de l'écriture d'un programme en Python
Modèle d'espace d'états personnalisé en Python
Créer un bot LINE avec Django
J'ai créé un bot Discord en Python qui se traduit quand il réagit
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Écrivez un "bot" de scraping web sans tête de base en Python avec Beautiful Soup 4
Logique personnalisée IQ Bot: application fractionnée (appliquer à la table, inclure le contrôle des erreurs)
IQ Bot Custom Logic: 5 choses que vous pourriez être surpris quand quelqu'un qui parle une autre langue touche pour la première fois Python