[PYTHON] 100 coups de traitement linguistique (2020): 00-09

Chapitre 1: Mouvement préparatoire

00. Ordre inverse des chaînes

s = "stressed"
print(s[::-1])

01. «Patatokukashi»


"""
01.«Patatoku Cassie»
1 de la chaîne de caractères "Patatokukashii",3,5,Retirez le 7ème caractère et obtenez la chaîne de caractères concaténée.
"""
s = "Patatoku Kashii"
print(s[::2])
#Voiture Pat

02. "Patcar" + "Tax" = "Patatokukasie"

from functools import reduce

s1 = "Voiture Pat"
s2 = "Taxi"

# method 1
res = [s1[i] + s2[i] for i in range(len(s1))]
print("".join(res))
#Patatoku Kashii

# method 2
res = [a + b for a, b in zip(s1, s2)]
print("".join(res))

# method 3
res = reduce(lambda a, b: a + b, zip(s1, s2))
print(res)


# reduce
def do_sum(x1, x2):
    return x1 + x2


print(reduce(do_sum, [1, 2, 3, 4]))  # 10
# (((1 + 2) + 3) + 4) => 10

03. Taux circonférentiel

"""
03.Pi
“Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.”
Décomposez la phrase en mots et créez une liste dans laquelle le nombre de caractères (dans l'alphabet) de chaque mot est organisé par ordre d'apparition depuis le début.
"""
s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
for c in [",", "."]:
    s = s.replace(c, "")
words = s.split(" ")

print([len(word) for word in words])
# [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

04. Symbole d'élément

"""
04.Symbole d'élément
“Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.”
Est décomposé en mots, 1, 5, 6, 7, 8, 9, 15, 16,Le 19e mot prend la première lettre et les autres mots prennent les deux premières lettres.
Créez un tableau associatif (type dictionnaire ou type map) à partir de la chaîne de caractères extraite jusqu'à la position du mot (quel nombre de mots depuis le début).
"""

# Get words
s = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
for c in [",", "."]:
    s = s.replace(c, "")
words = s.split(" ")

# Make index
one_character_pos = [x - 1 for x in (1, 5, 6, 7, 8, 9, 15, 16, 19)]
index = {}
for i, word in enumerate(words):
    if i in one_character_pos:
        index[word[0]] = i
    else:
        index[word[:2]] = i
print(index)
# {'H': 0, 'He': 1, 'Li': 2, 'Be': 3, 'B': 4, 'C': 5, 'N': 6, 'O': 7, 'F': 8, 'Ne': 9, 'Na': 10, 'Mi': 11, 'Al': 12, 'Si': 13, 'P': 14, 'S': 15, 'Cl': 16, 'Ar': 17, 'K': 18, 'Ca': 19}

  1. n-gram
"""
05. n-gram
À partir d'une séquence donnée (chaîne, liste, etc.) n-Créez une fonction qui crée un gramme.
En utilisant cette fonction, le mot bi de la phrase "Je suis un PNL"-gramme, caractère bi-Obtenez le gramme.
"""
from typing import List, Sequence


def word_bigram(words: List[str]):
    return [words[i : i + 2] for i in range(len(words) - 1)]


def char_bigram(chars: str):
    return [chars[i : i + 2] for i in range(len(chars) - 1)]


s = "I am an NLPer"
print(word_bigram(s.split(" ")))
print(char_bigram(s))
# [['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
# ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']


# Generalization
def n_gram(seq: Sequence, n: int):
    return [seq[i : i + n] for i in range(len(seq) - n + 1)]


print(n_gram(s.split(" "), n=2))
print(n_gram(s, n=2))
# [['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
# ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']

06. Réunion

"""
06.ensemble
Les lettres bi contenues dans «paraparaparadise» et «paragraphe»-Chaque ensemble de gramme,
Trouvez X et Y, et trouvez les ensembles de somme, de produit et de différence de X et Y. De plus, un bi appelé 'se'-Découvrez si gramme est inclus dans X et Y.
https://www.javadrive.jp/python/set/index6.html#section1
"""

from typing import Sequence


# Generalization
def n_gram(seq: Sequence, n: int):
    return [seq[i : i + n] for i in range(len(seq) - n + 1)]


x = set(n_gram("paraparaparadise", n=2))
y = set(n_gram("paragraph", n=2))
# x {'ar', 'ra', 'is', 'ap', 'pa', 'di', 'ad', 'se'}
# y {'ar', 'ra', 'is', 'ap', 'pa', 'di', 'ad', 'se'}

union_res = x.union(y)
intersection_res = x.intersection(y)
difference_res = x.difference(y)
print(union_res)
print(intersection_res)
print(difference_res)
# {'ar', 'ad', 'se', 'ph', 'pa', 'is', 'gr', 'di', 'ap', 'ra', 'ag'}
# {'ra', 'ar', 'pa', 'ap'}
# {'se', 'di', 'ad', 'is'}

07. Génération de déclaration par modèle

"""
07.Génération de déclaration par modèle Permalien
Argument x, y,Implémentez une fonction qui reçoit z et renvoie la chaîne "y at x is z".
De plus, x=12, y="Température", z=22.Comme 4, vérifiez le résultat de l'exécution.
"""


def generate(x, y, z):
    return f"{x}de temps{y}Est{z}"


x = 12
y = "Température"
z = 22.4

print(generate(x, y, z))
#La température à 12 heures est de 22.4

08. Cryptographie

"""
08.Cryptogramme
Implémentez le chiffrement de fonction qui convertit chaque caractère de la chaîne de caractères donnée selon les spécifications suivantes.

Si c'est en lettres minuscules(219 -Code de caractère)Remplacer par le personnage
Afficher les autres caractères tels quels
Utilisez cette fonction pour crypter / décrypter les messages en anglais.

Method:
ord: caractère → code ASCII
chr: code ASCII → caractère
"""


def cipher(string: str):
    result = ""
    for s in string:
        if s.islower():
            result += chr(219 - ord(s))
        else:
            result += s
    return result


print(cipher("This is a encrypted message"))
print(cipher("Tsrh rh z vmxibkgvw nvhhztv"))
# Tsrh rh z vmxibkgvw nvhhztv
# This is a encrypted message

  1. Typoglycemia
"""
09. Typoglycemia

Créez un programme qui réorganise de manière aléatoire l'ordre des autres caractères, en laissant le premier et le dernier caractère de chaque mot pour la chaîne de mots séparés par des espaces.
Cependant, les mots d'une longueur de 4 ou moins ne sont pas réorganisés. Phrase anglaise appropriée
(Par exemple, "Je ne pouvais pas croire que je pouvais réellement comprendre ce que je lisais": the phenomenal power of the human mind .”)
Et vérifiez le résultat de l'exécution.
"""
import random


def generate_typoglycemia(words: list) -> list:
    res = []
    for word in words:
        if len(word) < 4:
            res.append(word)
        else:
            medium = "".join(random.sample(word[1:-1], k=len(word[1:-1])))  # method 1
            # medium = "".join(random.shuffle(list(word[1:-1])))  # method2
            res.append(word[0] + medium + word[-1])
    return res


s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
res = generate_typoglycemia(s.split())
print(" ".join(res))
# I clo'undt beevile taht I cuold alulctay urtnneadsd waht I was reanidg : the pmheoenanl poewr of the human mind .

Recommended Posts

100 traitements linguistiques frappent 03 ~ 05
100 coups de traitement linguistique (2020): 40
100 coups de traitement linguistique (2020): 32
100 coups de traitement linguistique (2020): 35
100 coups de traitement linguistique (2020): 47
100 coups de traitement linguistique (2020): 39
100 coups de traitement linguistique (2020): 26
100 coups de traitement linguistique (2020): 34
100 coups de traitement linguistique (2020): 42
100 coups de traitement linguistique (2020): 49
Le traitement de 100 langues frappe 06 ~ 09
100 coups de traitement linguistique (2020): 43
100 coups de traitement linguistique (2020): 24
100 coups de traitement linguistique (2020): 10-19
100 coups de traitement linguistique (2020): 30
100 coups de traitement linguistique (2020): 00-09
100 coups de traitement linguistique (2020): 31
100 coups de traitement linguistique (2020): 48
100 coups de traitement linguistique (2020): 44
100 coups de traitement linguistique (2020): 41
100 coups de traitement linguistique (2020): 37
100 coups de traitement linguistique (2020): 25
100 coups de traitement linguistique (2020): 23
100 coups de traitement linguistique (2020): 33
100 coups de traitement linguistique (2020): 20
100 coups de traitement linguistique (2020): 27
100 coups de traitement linguistique (2020): 46
100 coups de traitement linguistique (2020): 21
100 coups de traitement linguistique (2020): 36
100 coups de traitement du langage amateur: 41
100 coups de traitement du langage amateur: 71
100 coups de traitement du langage amateur: 56
100 coups de traitement du langage amateur: 50
100 coups de traitement du langage amateur: 59
100 coups de traitement du langage amateur: 70
100 coups de traitement du langage amateur: 62
100 coups de traitement du langage amateur: 60
100 coups de langue amateur: 30
100 coups de langue amateur: 06
100 coups de traitement du langage amateur: 84
100 coups de traitement du langage amateur: 81
100 coups de langue amateur: 33
100 coups de traitement du langage amateur: 46
100 coups de traitement du langage amateur: 88
100 coups de traitement du langage amateur: 89
100 coups de traitement du langage amateur: 40
100 coups de traitement du langage amateur: 45
100 coups de traitement du langage amateur: 43
100 coups de traitement du langage amateur: 55
100 coups de traitement du langage amateur: 22
100 coups de traitement du langage amateur: 61
100 coups de traitement du langage amateur: 94
100 coups de traitement du langage amateur: 54
100 coups de langue amateur: 04
100 coups de traitement du langage amateur: 63
100 coups de traitement du langage amateur: 78
100 coups de traitement du langage amateur: 12
100 coups de traitement du langage amateur: 14
100 coups de langue amateur: 08
100 coups de traitement du langage amateur: 42
100 coups de traitement du langage ~ Chapitre 1