[PYTHON] 100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)

introduction

"[Traitement du langage Knock 100](http: //www.cl.ecei) publié dans Inui / Okazaki Laboratory de l'Université de Tohoku .tohoku.ac.jp / nlp100 /) »est connu comme un ensemble de problèmes pour les étudiants et les adultes qui travaillent qui étudient le traitement du langage.

Je suis donc également étudiant à l'Université de Tohoku, donc bien que ma spécialisation soit différente, j'ai essayé Knock 100 language processing.

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

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

[résultat] desserts

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.

words = "Patatoku Kashii"
print(words[::2])

[résultat] Voiture Pat

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

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

word1 = "Voiture Pat"
word2 = "Taxi"
for i in range(4):
    print(word1[i]+word2[i],end="")

[résultat] Patatoku Kashii

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

PI = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
PI = PI.replace('.','')
PI = PI.replace(',','')
PI = PI.split()
ans = [len(num) for num in PI]
ans

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

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 la paix. Arthur King Can." 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.

element = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
dict = {}
list = [1,5,6,7,8,9,15,16,19]
for i,j in enumerate(element.split()):
    if i+1 in list:
        dict[i+1] = j[0]
    else:
        dict[i+1] = j[0:2]
print(dict)

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

  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 n_gram(target, n):
    result = []
    for i in range(len(target) - n + 1):
        result.append(target[i:i + n])
    return result

target = "I am an NLPer"
words_target = target.split()

print("[Mot bi-gram]")
print(n_gram(words_target, 2))
print("[Personnage bi-gram]") 
print(n_gram(target, 2))

[résultat] [Word bi-gramme] [['I', 'am'], ['am', 'an'], ['an', 'NLPer']] [Caractère bi-gramme] ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']

06. Réunion

Trouvez l'ensemble des caractères bi-grammes contenus dans "paraparaparadise" et "paragraphe" comme X et Y, respectivement, et trouvez les ensembles somme, produit et différence de X et Y, respectivement. En outre, découvrez si le bi-gram'se'est inclus dans X et Y.

def n_gram(target, n):
    result = []
    for i in range(0,len(target) - n + 1):
        result.append(target[i:i + n])
    return result

text_x = "paraparaparadise"
text_y = "paragraph"

set_x = set(n_gram(text_x, 2))
set_y = set(n_gram(text_y, 2))

print("X:",end="")
print(set_x)
print("Y:",end="")
print(set_y)

print("----")

print("[Ensemble de somme]")
# print(set_x | set_y)Mais d'accord
print(set_x.union(set_y))

print("[Ensemble de produits]")
# print(set_x & set_y)Mais d'accord
print(set_x.intersection(set_y))

print("[Ensemble de différences]")
# print(set_x - set_y)Mais d'accord
print(set_x.difference(set_y))

print("----")

print("se in X: ",end="")
print('se' in set_x)
print("se in Y: ",end="")
print('se' in set_y)

[résultat] X:{'ar', 'ap', 'ad', 'di', 'ra', 'pa', 'se', 'is'} Y:{'ar', 'ap', 'ag', 'gr', 'ph', 'ra', 'pa'} ---- [Ensemble de somme] {'ar', 'ap', 'ag', 'ad', 'gr', 'ph', 'di', 'ra', 'pa', 'se', 'is'} [Ensemble de produits] {'pa', 'ar', 'ap', 'ra'} [Ensemble de différences] {'is', 'ad', 'di', 'se'} ---- se in X: True se in Y: 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 createSentence(x,y,z):
    print("{}de temps".format(x) + y + "Est{}".format(z))

createSentence(12,"Température",22.4)

[résultat] La température à 12h00 est de 22,4

08. Cryptographie

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 minuscules
  • Afficher les autres caractères tels quels Utilisez cette fonction pour crypter / décrypter les messages en anglais.
def cipher(s):
    result =''
    for i in s:
        if i.islower():
            result += chr(219-ord(i))
        else:
            result += i
    return result

text = "Man is but a reed, the most feeble thing in the nature, but he is a thinking reed. "
cipher(text)

[résultat] 'Mzm rh yfg z ivvw, gsv nlhg uvvyov gsrmt rm gsv mzgfiv, yfg sv rh z gsrmprmt ivvw. '

  1. 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. 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 typoglycemia(target):
    res = []
    for s in target.split():
        if len(s) < 5:
            res.append(s)
        else:
            head = s[0]
            tail = s[-1]
            inner = list(s[1:-1])
            random.shuffle(inner)
            res.append(head+"".join(inner)+tail)
    return " ".join(res)

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

[résultat] I cud'lont bivleee that I colud aaclutly unnsetadrd what I was rindaeg : the phnomeneal pwoer of the human mind .

à la fin

Veuillez signaler toute erreur. Je le réparerai.

Recommended Posts

100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)
[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é)
PNL100: Chapitre 1 Mouvement préparatoire
100 Language Processing Knock 2020 Chapitre 1
Python: traitement du langage naturel
100 Traitement du langage Knock Chapitre 1
100 coups de traitement du langage ~ Chapitre 1
Le traitement de 100 langues frappe le chapitre 2 (10 ~ 19)
RNN_LSTM2 Traitement du langage naturel
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 traitements du langage naturel frappent Chapitre 4 Analyse morphologique (première moitié)
100 traitements du langage naturel frappent Chapitre 3 Expressions régulières (première moitié)
100 traitements du langage naturel frappent Chapitre 4 Analyse morphologique (seconde moitié)
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
Traitement du langage naturel 1 Analyse morphologique
100 traitements du langage naturel frappent Chapitre 3 Expressions régulières (seconde moitié)
100 traitements du langage naturel frappent Chapitre 6 Traitement de texte en anglais (seconde moitié)
Traitement du langage naturel 3 Continuité des mots
J'ai essayé de résoudre la version 2020 de 100 coups de traitement de langue [Chapitre 1: Mouvement préparatoire 00-04]
100 traitements du langage naturel frappent Chapitre 6 Traitement de texte anglais (première moitié)
Le traitement du langage naturel à 100 coups
J'ai essayé de résoudre la version 2020 de 100 traitements linguistiques [Chapitre 1: Mouvement préparatoire 05-09]
Traitement du langage naturel 2 similitude de mots
100 points de traitement du langage naturel Chapitre 5 Analyse des dépendances (premier semestre)
100 points de traitement du langage naturel Chapitre 2 Bases des commandes UNIX (deuxième moitié)
100 points de traitement du langage naturel Chapitre 2 Bases des commandes UNIX (première moitié)
Étudiez le traitement du langage naturel avec Kikagaku
100 Language Processing Knock 2020 Chapitre 2: Commandes UNIX
100 Language Processing Knock 2015 Chapitre 5 Analyse des dépendances (40-49)
[Traitement du langage 100 coups 2020] Chapitre 3: Expressions régulières
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
Traitement du langage naturel pour les personnes occupées
100 coups de traitement du langage 2020: Chapitre 4 (analyse morphologique)
100 Language Processing Knock 2020 Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 9: RNN, CNN
[Traitement du langage 100 coups 2020] Chapitre 5: Analyse des dépendances
[Traitement du langage naturel] Prétraitement avec le japonais
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 3
100 traitements de langage avec Python (chapitre 3)
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)
100 Language Processing Knock 2020 Chapitre 6: Apprentissage automatique
100 Traitement du langage Knock Chapitre 4: Analyse morphologique
[Traitement du langage 100 coups 2020] Chapitre 7: Vecteur Word
100 Language Processing Knock 2020 Chapitre 10: Traduction automatique (90-98)
100 Language Processing Knock 2020 Chapitre 5: Analyse des dépendances
100 Language Processing Knock 2020: Chapitre 3 (expression régulière)
100 Traitement du langage Knock 2020 Chapitre 7: Vecteur de mots
100 Language Processing Knock 2020 Chapitre 8: Neural Net
[Traitement du langage 100 coups 2020] Chapitre 8: Réseau neuronal
[Traitement du langage 100 coups 2020] Chapitre 2: Commandes UNIX
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 1
[Traitement du langage 100 coups 2020] Chapitre 9: RNN, CNN
100 Language Processing Knock Chapitre 1 par Python
Se préparer à démarrer le traitement du langage naturel