[PYTHON] 100 coups au traitement du langage naturel Chapitre 1 Mouvement préparatoire (première moitié)

Résolu "100 knocks of natural language processing 2015" publié sur la page Web du laboratoire Inui-Okazaki de l'Université Tohoku Je vais y aller, donc je vais le résumer comme un compte rendu.

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

Les chaînes de caractères spécifiées peuvent être affichées dans l'ordre inverse. Le mot clé est "Extended Slices".

# -*- coding: utf-8 -*-
__author__ = 'todoroki'

string = "stressed"
print string[::-1]
#=> desserts

Le point est `` [:: -1] ''. Je pense que c'est une bonne idée d'écrire ceci lorsque vous obtenez l'inversion d'une chaîne. Vous pouvez voir pourquoi cela se produit en regardant la partie pertinente de la documentation officielle de Python. J'omettrai l'explication.

</ i> 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.

Cela peut également être résolu avec "Extended Slices".

# -*- coding: utf-8 -*-
__author__ = 'todoroki'

string = u"Patatoku Kashii"
print string[::2]
#=>Voiture Pat

Il est affiché en découpant du début à la fin de la chaîne de caractères par incréments de 2 caractères.

</ i> 02. "Pat car" + "Tax" = "Patatokukasie"

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

Ce problème utilise la fonction "zip".

# -*- coding: utf-8 -*-
__author__ = 'todoroki'

string1 = u"Voiture Pat"
string2 = u"Taxi"
ans = u""

for a, b in zip(string1, string2):
    ans += a + b
print ans
#=>Patatoku Kashii

Étant donné que la fonction zip est une fonction qui renvoie le i-ème élément de chaque séquence sous forme de taple, deux objets séquence peuvent être gérés en parallèle à l'aide de la fonction zip.

</ i> 03. Circonférence

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

# -*- coding: utf-8 -*-
__author__ = 'todoroki'

string = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
ans = []

for s in string.split():
    s = s.replace(",", "").replace(".", "")
    ans.append(len(s))
print ans
#=> [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

Utilisez la méthode split () '' pour découper la cible avec le caractère spécifié. Si rien n'est spécifié, un délimiteur vide est appliqué. Puisque, '' et . sont sur le chemin, remplacez-les avant de compter le nombre de caractères.

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

# -*- coding: utf-8 -*-
__author__ = 'todoroki'

string = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
index = [1, 5, 6, 7, 8, 9, 15, 16, 19]
ans = {}
for i, s in enumerate(string.split(), 1):
    if i in index:
        ans[s[0]] = i
    else:
        ans[s[0:2]] = i
print ans
#=> {'Be': 4, 'C': 6, 'B': 5, 'Ca': 20, 'F': 9, 'S': 16, 'H': 1, 'K': 19, 'Al': 13, 'Mi': 12, 'Ne': 10, 'O': 8, 'Li': 3, 'P': 15, 'Si': 14, 'Ar': 18, 'Na': 11, 'N': 7, 'Cl': 17, 'He': 2}

Pour le mot spécifié, deux caractères sont extraits par découpage. La valeur de départ du compteur peut être spécifiée en spécifiant le deuxième argument de la fonction enumerate ([[reference]] [[reference]](http://docs.python.jp/2/library/functions.html# qui semble être une fonction de python2.6) énumérer)).

Recommended Posts