Je ne sais pas ce que je peux faire. (cf. Knock 100 language processing 2015)
# coding: utf-8
s = "stressed"
print(s[::-1])
# coding: utf-8
s = "Patatoku Kashii"
print(s[::2])
# coding: utf-8
s1 = 'Voiture Pat'
s2 = 'Taxi'
s = ''.join([i+j for i, j in zip(s1, s2)])
print(s)
Vous pouvez créer un itérateur à partir de plusieurs itérables avec zip ()
.
Postscript
# coding: utf-8
s1 = 'Voiture Pat'
s2 = 'Taxi'
s = ''.join(i+j for i, j in zip(s1, s2))
print(s)
Il n'est pas nécessaire de créer une liste inutile en utilisant la notation d'inclusion du générateur.
# coding: utf-8
import re
s = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
#Excluez les virgules et les virgules, puis décomposez-les en une liste mot par mot
s = re.sub('[,.]', '', s)
s = s.split()
#Comptez le nombre de caractères et listez
result = []
for w in s:
result.append(len(w))
print(result)
Postscript
# coding: utf-8
s = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
#Après l'avoir décomposé en une liste mot par mot,.Exclure et compter le nombre de caractères
result = [len(w.rstrip(',.')) for w in s.split()]
print(result)
Le processus d'initialisation avec une liste vide et de rotation pour est réécrit avec la notation d'inclusion. rstrip ()
supprime le caractère spécifié de la droite. Les caractères peuvent être spécifiés ensemble.
# coding: utf-8
s = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'.split()
target = [1, 5, 6, 7, 8, 9, 15, 16, 19]
result ={}
for i in range(len(s)):
if i + 1 in target:
result[i+1] = s[i][:1]
else:
result[i+1] = s[i][:2]
print(result)
Postscript
# coding: utf-8
s = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
target = 1, 5, 6, 7, 8, 9, 15, 16, 19
result = [w[: 1 if i in target else 2] for i, w in enumerate(s.split(), 1)]
print(result)
Dans la partie de [: 1 if i in target else 2]
, je me demandais si else peut être utilisé dans la notation d'inclusion, mais c'est la tranche [: x]
et l'opérateur ternaire ʻa if cond else b Une combinaison de `.
# coding: utf-8
def n_gram(n, s):
result = []
for i in range(0, len(s)-n+1):
result.append(s[i:i+n])
return result
print(n_gram(2, 'I am an NLPer'))
Postscript
# coding: utf-8
def n_gram(n, s):
return [s[i:i+n] for i in range(0, len(s)-n+1)]
print(n_gram(2, 'I am an NLPer'))
C'est aussi «for» et «append» dans la liste initialisée, donc il peut être réécrit avec la notation d'inclusion. Je ne suis pas habitué à la notation d'inclusion, j'ai donc l'impression qu'il est difficile de l'écrire et de la réécrire.
# coding: utf-8
#Ensemble de somme, ensemble de produits, ensemble de différence de deux bigrammes
def bi_gram(s):
result = []
for i in range(0, len(s)-1):
result.append(s[i:i+2])
return result
s1 = 'paraparaparadise'
s2 = 'paragraph'
X = set(bi_gram(s1))
Y = set(bi_gram(s2))
print("X = ", X)
print("Y = ", Y)
print("union: ", X | Y) # union
print("intersection: ", X & Y) # intersection
print("difference: ", X - Y) # difference
if "se" in X:
print("X contain 'se'.")
else:
print("X doesn't contain 'se'.")
if "se" in Y:
print("Y contain 'se'.")
else:
print("Y doesn't contain 'se'.")
# coding: utf-8
def gen_sentence(x, y, z):
return "{}de temps{}Est{}".format(x, y, z)
x = 12
y = 'Température'
z = 22.4
print(gen_sentence(x, y, z))
# coding: utf-8
def cipher(S):
result = []
for i in range(len(S)):
if(S[i].islower()):
result.append(chr(219 - ord(S[i])))
else:
result.append(S[i])
return ''.join(result)
S = "abcDe"
print(cipher(S))
print(cipher(cipher(S)))
Convertit les caractères en valeurs entières du point de code Unicode avec ʻord () `. La fonction inverse est «chr ()».
Postscript
# coding: utf-8
def cipher(S):
return ''.join(chr(219 - ord(c)) if c.islower() else c for c in S)
S = "abcDe"
print(cipher(S))
print(cipher(cipher(S)))
Vous pouvez remplacer l'opérateur ternaire et la notation d'inclusion par des choses comme «ajouter» avec «pour» pendant le branchement conditionnel à la liste initialisée. Si vous savez que c'est une telle chose, il semble que vous puissiez le lire et l'écrire.
# coding: utf-8
import numpy.random as rd
def gen_typo(S):
if len(S) <= 4:
return S
else:
idx = [0]
idx.extend(rd.choice(range(1, len(S)-1), len(S)-2, replace=False))
idx.append(len(S)-1)
result = []
for i in range(len(S)):
result.append(S[idx[i]])
return ''.join(result)
s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
s = s.split()
print(' '.join([gen_typo(i) for i in s]))
Il existe différentes méthodes d'échantillonnage aléatoire, mais vous pouvez utiliser numpy.random.choice
pour choisir entre l'extraction par restauration et l'extraction sans restauration.
Postscript
# coding: utf-8
import random
def gen_typo(S):
return ' '.join(
s
#Renvoie les mots d'une longueur inférieure à 4
if len(s) <= 4
#Mélangez les mots de 5 ou plus, en laissant les première et deuxième lettres
else s[0] + ''.join(random.sample(s[1:-1], len(s)-2)) + s[-1]
for s in S.split()
)
S = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
print(gen_typo(S))
Ceci est également réécrit avec la notation d'inclusion et l'opérateur ternaire.
De plus, «random.sample (population, k)» restaure et extrait de façon aléatoire «k» éléments de «population» (séquence ou ensemble).
Recommended Posts