J'ai essayé Language processing 100 knock 2020. Des liens vers d'autres chapitres peuvent être trouvés à ici, et le code source peut être trouvé à ici.
Récupère une chaîne dans laquelle les caractères de la chaîne "accentués" sont disposés à l'envers (de la fin au début).
<détails> Sortie dans l'ordre inverse à l'aide de tranches.
Il est intéressant de pouvoir écrire facilement de telles opérations. Retirez les 1er, 3e, 5e et 7e caractères de la chaîne de caractères "Patatokukashi" et récupérez la chaîne de caractères concaténée. <détails> Puisque le nombre impair est retiré, "step" est mis à "2". Récupérez la chaîne de caractères "Patatokukashi" en reliant alternativement les caractères "Pattocar" + "Tax" depuis le début. <détails> Au début, j'ai pensé à boucler avec ʻindex Décomposez la phrase "Maintenant j'ai besoin d'un verre, alcoolique bien sûr, après les lourdes conférences de mécanique quantique." En mots, et créez une liste du nombre de caractères (alphabétiques) de chaque mot par ordre d'apparition. <détails> J'ai essayé d'utiliser la notation d'inclusion de liste. Cela peut être pratique car vous pouvez écrire en quelques lignes lors de la création d'une nouvelle liste. Décomposez la phrase "Salut, il a menti parce que le bore ne pouvait pas oxyder le fluor. Les nouvelles nations pourraient également signer la clause de sécurité de paix. Arthur King peut." En mots 1, 5, 6, 7, 8, 9, 15, 16, Le 19e mot est le premier caractère, et les autres mots sont les deux premiers caractères, et le tableau associatif (type dictionnaire ou type de carte) de la chaîne de caractères extraite à la position du mot (quel nombre de mots depuis le début) Créer. <détails> J'ai l'impression que le code est un peu long ... Si les règles sont suivies, la partie No.05 n-gram Créez une fonction qui crée un n-gramme à partir d'une séquence donnée (chaîne, liste, etc.). Utilisez cette fonction pour obtenir le mot bi-gramme et la lettre bi-gramme à partir de la phrase "Je suis un PNL". <détails> Utilisez Trouvez l'ensemble des bi-grammes de caractères contenus dans "paraparaparadise" et "paragraphe" comme X et Y, respectivement, et trouvez les ensembles de somme, de produit et de différence de X et Y, respectivement. En outre, découvrez si le bi-gram'se' est inclus dans X et Y. <détails> Il semble que vous puissiez aussi utiliser ʻunion () Implémentez une fonction qui prend les arguments x, y, z et renvoie la chaîne "y at x is z". De plus, définissez x = 12, y = «température», z = 22,4 et vérifiez le résultat de l'exécution. <détails> rien de spécial. Implémentez la fonction de chiffrement qui convertit chaque caractère de la chaîne de caractères donnée avec les spécifications suivantes.
・ Remplacer par (219 --character code) caractères si les lettres minuscules
・ Les autres caractères sont affichés tels quels
Utilisez cette fonction pour crypter / décrypter les messages en anglais. <détails> Il semble que ce soit du code Atbash. Il sera restauré en passant deux fois la fonction No.09 Typoglycemia Créez un programme qui réorganise aléatoirement 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. Donnez une phrase en anglais appropriée (par exemple, "Je ne pouvais pas croire que je pouvais réellement comprendre ce que je lisais: le pouvoir phénoménal de l'esprit humain.") Et vérifiez le résultat de l'exécution. <détails> En plus de [Upura / nlp100v2020 100 language processing knock 2020] est résolu avec Python](https://github.com/upura/nlp100v2020)
Résumé du traitement du langage amateur à 100 coups
Recommended Posts
000.py
str = 'stressed'
print(str[::-1])
# -> desserts
N ° 01 «Patatokukashi»
001.py
str = "Patatoku Kashii"
print(str[0:8:2])
# ->Voiture Pat
No.02 "Pat car" + "Tax" = "Patatokukashi"
002.py
str1 = "Voiture Pat"
str2 = "Taxi"
print(''.join([s1 + s2 for s1, s2 in zip(str1, str2)]))
# ->Patatoku Kashii
, Il semble que vous puissiez gérer plusieurs fonctions à la fois en utilisant la fonction
zip`.N ° 03 Taux circonférentiel
003.py
sentense = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
print([len(item) for item in sentense.replace(',', "").replace('.', "").split(' ')])
# -> [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
Symbole d'élément n ° 04
004.py
str = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
str = str.split()
num = [1, 5, 6, 7, 8, 9, 15, 16, 19]
dict = {}
for i_str in range(0, len(str)):
if i_str + 1 == 12:
dict[str[11][:3:2]] = 12 # 'Mg'Sortie de
elif i_str + 1 in num:
dict[str[i_str][:1]] = i_str + 1
else:
dict[str[i_str][:2]] = i_str + 1
print(dict)
# -> {'H': 1, 'He': 2, 'Li': 3, 'Be': 4, 'B': 5, 'C': 6, 'N': 7, 'O': 8, 'F': 9, 'Ne': 10, 'Na': 11, 'Mg': 12, 'Al': 13, 'Si': 14, 'P': 15, 'S': 16, 'Cl': 17, 'Ar': 18, 'K': 19, 'Ca': 20}
Mg
sera sortie comme Mi
et je suis curieux, donc je la traite avec l'instruction ʻif`.
005.py
def n_gram(list, n):
return ["".join(list[list_i: list_i + n]) for list_i in range(len(list) - n + 1)]
sentence = "I am an NLPer"
print(f"Mot bi-gran: {n_gram(sentence.split(), 2)}")
print(f"Personnage bi-gram: {n_gram(sentence, 2)}")
# ->Mot bi-gran: ['Iam', 'aman', 'anNLPer']
#Personnage bi-gram: ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
join
pour joindre les éléments de la liste. Le mot bi-gramme et le caractère bi-gramme font un traitement similaire, alors j'ai essayé de les rendre fonctionnels, mais je pense que j'ai été capable de bien les écrire.Ensemble n ° 06
006.py
str1 = "paraparaparadise"
str2 = "paragraph"
def n_gram(list, n):
return {"".join(list[list_i: list_i + n]) for list_i in range(len(list) - n + 1)}
X = n_gram(str1, 2)
Y = n_gram(str2, 2)
print(f"Ensemble de somme:{X | Y}")
print(f"Ensemble de produits:{X & Y}")
print(f"Ensemble de différences:{X - Y}")
se = {"se"}
print(f"Est-ce inclus dans X? :{se <= X}")
print(f"Est-ce inclus dans Y? :{se <= Y}")
# ->Ensemble de somme:{'ph', 'di', 'ar', 'gr', 'ad', 'is', 'se', 'ap', 'pa', 'ra', 'ag'}
#Ensemble de produits:{'ra', 'ap', 'ar', 'pa'}
#Ensemble de différences:{'is', 'di', 'se', 'ad'}
#Est-ce inclus dans X? : Vrai
#Est-ce inclus dans Y? : Faux
, ʻintersection ()
et difference ()
pour les ensembles de somme, les brasseurs de saké et les ensembles de différences.No.07 Génération de phrases par modèle
007.py
def templete(x, y, z):
return f"{x}de temps{y}Est{z}"
print(templete(12, "Température", 22.4))
# ->La température à 12 heures est de 22.4
Code n ° 08
008.py
def cipher(sentence):
return "".join([chr(219 - ord(ch)) if ch.islower() else ch for ch in sentence])
sen = "FireWork"
print(cipher(sen))
print(cipher(cipher(sen)))
# -> FrivWlip
# FireWork
cipher
.
009.py
import random
sentence = "I couldn’t believe that I could actually understand what I was reading : the phenomenal power of the human mind."
new_sent = ""
for item in sentence.split():
if len(item) > 4:
new_item = []
new_item.extend(item[0])
new_item.extend(random.sample(item[1:-1], len(item) - 2))
new_item.extend(item[-1])
item = new_item
new_sent += "".join(item) + " "
print(new_sent)
# -> I could’nt blveeie that I cuold atlculay utnresnadd what I was renadig : the pamohneenl pewor of the human mdin.
random.sample
, il y a random.shuffle
comme fonction pour organiser les éléments de la liste de manière aléatoire. La fonction shuffle
trie la liste d'origine, donc je pense que le code peut être un peu plus court.référence