[PYTHON] [Traitement du langage 100 coups 2020] Chapitre 1: Mouvement préparatoire

introduction

Version 2020 de 100 coups de traitement du langage, qui est célèbre comme une collection de problèmes de traitement du langage naturel, a été publié. Cet article résume les résultats de la résolution du Chapitre 1: Mouvement préparatoire des chapitres 1 à 10 suivants. ..

--Chapitre 1: Mouvement préparatoire

Préparation préalable

Nous utilisons Google Colaboratory pour obtenir des réponses. Pour plus d'informations sur la configuration et l'utilisation de Google Colaboratory, consultez cet article. Le cahier contenant les résultats d'exécution des réponses suivantes est disponible sur github.

Chapitre 1: Mouvement préparatoire

00. Ordre inverse des chaînes

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

str = 'stressed'
ans = str[::-1]

print(ans)

production


desserts

Extraire la chaîne avec Python

01. «Patatokukashi»

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.

str = 'Patatoku Kashii'
ans = str[::2]

print(ans)

production


Voiture Pat

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

Obtenez la chaîne de caractères "Patatokukashi" en reliant alternativement les caractères "Pattocar" + "Tax" depuis le début.

str1 = 'Voiture Pat'
str2 = 'Taxi'
ans = ''.join([i + j for i, j in zip(str1, str2)])

print(ans)

production


Patatoku Kashii

Comment utiliser les fonctions Python et zip: Obtenez plusieurs éléments de liste à la fois Comment utiliser la notation d'inclusion de liste Python Concaténer et combiner des chaînes avec Python

03. Taux circonférentiel

Décomposez la phrase "Maintenant, j'ai besoin d'un verre, alcoolique bien sûr, après les lourdes conférences sur la mécanique quantique."

import re

str = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
str = re.sub('[,\.]', '', str)  # ,Quand.Retirer
splits = str.split()  #Créer une liste mot par mot séparée par des espaces
ans = [len(i) for i in splits]

print(ans)

production


[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

Remplacer la chaîne par Python Split strings in Python Obtenez la taille des objets de différents types avec la fonction len de Python

04. Symbole d'élément

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. Créer.

str = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
splits = str.split()
one_ch = [1, 5, 6, 7, 8, 9, 15, 16, 19]  #Liste de nombres de mots pour extraire un caractère
ans = {}
for i, word in enumerate(splits):
  if i + 1 in one_ch:
    ans[word[:1]] = i + 1  #Obtenez 1 caractère si dans la liste
  else:
    ans[word[:2]] = i + 1  #Sinon, obtenez 2 caractères
    
print(ans)

production


{'H': 1, 'He': 2, 'Li': 3, 'Be': 4, 'B': 5, 'C': 6, 'N': 7, 'O': 8, 'F': 9, 'Ne': 10, 'Na': 11, 'Mi': 12, 'Al': 13, 'Si': 14, 'P': 15, 'S': 16, 'Cl': 17, 'Ar': 18, 'K': 19, 'Ca': 20}

Traitement en boucle par Python pour instruction Comment utiliser Python, énumérer: obtenir des éléments de liste et des index Comment écrire une branche conditionnelle par instruction if en Python Dict () et wave brackets pour créer un dictionnaire en Python, notation d'inclusion de dictionnaire

  1. 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".

def ngram(n, lst):
    return set(zip(*[lst[i:] for i in range(n)]))

str = 'I am an NLPer'
words_bi_gram = ngram(2, str.split())
chars_bi_gram = ngram(2, str)

print('Mot bi-gram:', words_bi_gram)
print('Personnage bi-gram:', chars_bi_gram)

production


Mot bi-gram: {('am', 'an'), ('I', 'am'), ('an', 'NLPer')}
Personnage bi-gram: {('I', ' '), (' ', 'N'), ('e', 'r'), ('a', 'm'), (' ', 'a'), ('n', ' '), ('L', 'P'), ('m', ' '), ('P', 'e'), ('N', 'L'), ('a', 'n')}

Définir et appeler des fonctions en Python Python, opération de définition avec le type de jeu

06. Réunion

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.

Ici, la fonction ngram créée en 05 est réutilisée.

str1 = 'paraparaparadise'
str2 = 'paragraph'
X = ngram(2, str1)
Y = ngram(2, str2)
union = X | Y
intersection = X & Y
difference = X - Y

print('X:', X)
print('Y:', Y)
print('Ensemble de somme:', union)
print('Ensemble de produits:', intersection)
print('Ensemble de différences:', difference)
print('X contient-il se:', {('s', 'e')} <= X)
print('Y contient-il se:', {('s', 'e')} <= Y)

production


X: {('a', 'r'), ('a', 'p'), ('s', 'e'), ('p', 'a'), ('r', 'a'), ('i', 's'), ('d', 'i'), ('a', 'd')}
Y: {('p', 'h'), ('a', 'r'), ('a', 'p'), ('p', 'a'), ('g', 'r'), ('r', 'a'), ('a', 'g')}
Ensemble de somme: {('p', 'h'), ('a', 'r'), ('a', 'p'), ('s', 'e'), ('p', 'a'), ('g', 'r'), ('r', 'a'), ('i', 's'), ('a', 'g'), ('d', 'i'), ('a', 'd')}
Ensemble de produits: {('p', 'a'), ('r', 'a'), ('a', 'r'), ('a', 'p')}
Ensemble de différences: {('d', 'i'), ('i', 's'), ('a', 'd'), ('s', 'e')}
X contient-il se: True
Y contient-il se: False

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

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.

def generate_sentence(x, y, z):
  print('{}À l'époque{}Est{}'.format(x, y, z))

generate_sentence(12, 'Température', 22.4)

production


À 12 heures, la température est de 22.4

Conversion de format avec Python, format

08. Cryptographie

Implémentez la fonction de chiffrement qui convertit chaque caractère de la chaîne de caractères donnée selon les spécifications suivantes. Remplacer par (219 --character code) caractères si minuscules Afficher les autres caractères tels quels Utilisez cette fonction pour crypter / décrypter les messages en anglais.

def cipher(str):
  rep = [chr(219 - ord(x)) if x.islower() else x for x in str]
  
  return ''.join(rep)

message = 'the quick brown fox jumps over the lazy dog'
message = cipher(message)
print('chiffrement:', message)
message = cipher(message)
print('Décryptage:', message)

production


chiffrement: gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
Décryptage: the quick brown fox jumps over the lazy dog

Convertir les points de code et les caractères Unicode avec Python Liste des méthodes de chaîne de caractères pour manipuler les majuscules et les minuscules en Python

  1. 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.

import random

def shuffle(words):
  splits = words.split()
  if len(splits) > 4:
    splits = splits[:1] + random.sample(splits[1:-1], len(splits) - 2) + splits[-1:]

  return ' '.join(splits)

words = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind."
ans = shuffle(words)

print(ans)

production


I what could I reading human : phenomenal the couldn't of understand that believe was the power I actually mind.

Mélanger les éléments de la liste avec Python

en conclusion

Traitement du langage 100 coups sont conçus pour que vous puissiez apprendre non seulement le traitement du langage naturel lui-même, mais également le traitement des données de base et l'apprentissage automatique général. Même ceux qui étudient l'apprentissage automatique dans des cours en ligne pourront pratiquer de très bons résultats, alors essayez-le.

Recommended Posts

[Traitement du langage 100 coups 2020] Chapitre 1: Mouvement préparatoire
100 Language Processing Knock: Chapitre 1 Mouvement préparatoire
100 Language Processing Knock 2020 Chapitre 1: Mouvement préparatoire
100 coups au traitement du langage naturel Chapitre 1 Mouvement préparatoire (seconde moitié)
100 coups au traitement du langage naturel Chapitre 1 Mouvement préparatoire (première moitié)
Le traitement de 100 langues frappe le chapitre 2 (10 ~ 19)
100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)
100 traitements linguistiques frappent 03 ~ 05
100 coups de traitement linguistique (2020): 32
100 coups de traitement linguistique (2020): 35
[Traitement du langage 100 coups 2020] Chapitre 3: Expressions régulières
100 coups de traitement linguistique (2020): 47
100 coups de traitement linguistique (2020): 39
100 traitements du langage naturel frappent le chapitre 4 Commentaire
[Traitement du langage 100 coups 2020] Chapitre 6: Machine learning
100 coups de traitement linguistique (2020): 22
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): 29
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): 45
100 coups de traitement linguistique (2020): 10-19
[Traitement du langage 100 coups 2020] Chapitre 7: Vecteur Word
100 coups de traitement linguistique (2020): 30
100 coups de traitement linguistique (2020): 00-09
100 Language Processing Knock 2020: Chapitre 3 (expression régulière)
100 coups de traitement linguistique (2020): 31
[Traitement du langage 100 coups 2020] Chapitre 8: Réseau neuronal
100 coups de traitement linguistique (2020): 48
[Traitement du langage 100 coups 2020] Chapitre 2: Commandes UNIX
100 coups de traitement linguistique (2020): 44
100 coups de traitement linguistique (2020): 41
100 coups de traitement linguistique (2020): 37
[Traitement du langage 100 coups 2020] Chapitre 9: RNN, CNN
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
[Traitement du langage 100 coups 2020] Chapitre 4: Analyse morphologique
100 coups de traitement linguistique (2020): 46
100 coups de traitement linguistique (2020): 21
100 coups de traitement linguistique (2020): 36
J'ai essayé de résoudre la version 2020 de 100 coups de traitement de langue [Chapitre 1: Mouvement préparatoire 00-04]
J'ai essayé de résoudre la version 2020 de 100 traitements linguistiques [Chapitre 1: Mouvement préparatoire 05-09]
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: 24
100 coups de traitement du langage amateur: 50
100 coups de traitement du langage amateur: 59
100 coups de traitement du langage amateur: 70
PNL100: Chapitre 1 Mouvement préparatoire
100 coups de traitement du langage amateur: 62
100 coups de traitement du langage amateur: 60
100 Language Processing Knock 2020 Chapitre 1
100 coups de traitement du langage amateur: 92