J'ai écrit le code dans la suite de la dernière fois. J'ai raccourci la partie qui est facile à voir et qui peut être écrite aussi courte que possible. Veuillez signaler toute erreur ou amélioration.
(Une addition) Puisque vous avez indiqué comment écrire le code, j'ai ajouté après l'édition 05, 06 et 09.
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".
05.py
def word_ngram(seq, n):
return ["-".join(seq.split()[i:i+n]) for i in range(len(seq.split())-n+1)]
def char_ngram(seq, n):
return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]
def main():
seq = "I am an NLPer"
word_2gram_list, char_2gram_list = word_ngram(seq, 2), char_ngram(seq, 2)
print(word_2gram_list)
print(char_2gram_list)
if __name__ == '__main__':
main()
['I-am', 'am-an', 'an-NLPer']
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
Le mot bi-gramme est affiché séparé par des tirets et le bi-gramme de caractère est affiché avec des espaces.
(Après modification ↓) Le word_ngram a été réécrit.
05.py
def word_ngram(seq, n):
words = seq.split()
return ["-".join(words[i:i+n]) for i in range(len(words)-n+1)]
def char_ngram(seq, n):
return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]
def main():
seq = "I am an NLPer"
word_2gram_list, char_2gram_list = word_ngram(seq, 2), char_ngram(seq, 2)
print(word_2gram_list)
print(char_2gram_list)
if __name__ == '__main__':
main()
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.
06.py
# coding:utf-8
def n_gram(seq, n):
return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]
def main():
X, Y = set(n_gram("paraparaparadise", 2)), set(n_gram("paragraph", 2))
print("X: " + str(X))
print("Y: " + str(Y))
print("Ensemble de somme: " + str(X.union(Y)))
print("Ensemble de produits: " + str(X.intersection(Y)))
print("Ensemble de différences: " + str(X.difference(Y)))
print("X contient-il du se?: " + str("se" in X))
print("Y inclut-il se?: " + str("se" in Y))
if __name__ == '__main__':
main()
X: {'pa', 'ar', 'di', 'se', 'ad', 'ap', 'is', 'ra'}
Y: {'pa', 'ar', 'ph', 'ap', 'ag', 'gr', 'ra'}
Ensemble de somme: {'di', 'se', 'ap', 'ag', 'pa', 'ar', 'ph', 'ad', 'is', 'gr', 'ra'}
Ensemble de produits: {'ap', 'ar', 'ra', 'pa'}
Ensemble de différences: {'is', 'ad', 'di', 'se'}
X contient-il du se?: True
Y inclut-il se?: False
Pour n_gram, j'ai utilisé char_ngram de 05.py tel quel.
(Après modification ↓) La partie imprimée a été réécrite.
06.py
# coding:utf-8
def n_gram(seq, n):
return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]
def main():
X, Y = set(n_gram("paraparaparadise", 2)), set(n_gram("paragraph", 2))
print("X: ", X)
print("Y: ", Y)
print("Ensemble de somme: ", X | Y)
print("Ensemble de produits: ", X & Y)
print("Ensemble de différences: ", X - Y)
print("X contient-il du se?: ", "se" in X)
print("Y inclut-il se?: ", "se" in Y)
if __name__ == '__main__':
main()
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.
07.py
# coding:utf-8
def ans(x, y, z):
return '{}de temps{}Est{}'.format(x, y, z)
def main():
x, y, z = 12, 'Température', 22.4
print(ans(x, y, z))
if __name__ == '__main__':
main()
Ce n'était pas si difficile. C'était un problème si je connaissais le format.
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. ・ S'il est en anglais inférieur, remplacez-le par le caractère (219 - code de caractère) ・ Les autres caractères sont affichés tels quels Utilisez cette fonction pour crypter / décrypter les messages en anglais.
08.py
# coding:utf-8
def cipher(seq):
return ''.join(chr(219-ord(i)) if i.islower() else i for i in seq)
def main():
seq = 'Is the order a rabbit?'
print("chiffrement: " + str(cipher(seq)))
print("Décryptage: " + str(cipher(cipher(seq))))
if __name__ == '__main__':
main()
chiffrement: Ih gsv liwvi z izyyrg?
Décryptage: Is the order a rabbit?
Avec islower (), on juge si tous les caractères qui sont sensibles à la casse sont inférieurs, et avec ord, le caractère → ascii, et avec le caractère chr, ascii →. Je ne pouvais pas penser à une phrase en anglais particulièrement bonne, alors j'ai décidé de la traiter de manière appropriée. ~~ J'aime les gens à l'intérieur de Cocoa ~~
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.
09.py
import random
def Typoglycemia(seq):
return " ".join((x[0] + "".join(random.sample(x[1:-1], len(x[1:-1]))) + x[-1]) if len(x) > 4 else x for i,x in enumerate(seq.split()))
def main():
s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind."
print(Typoglycemia(s))
if __name__ == '__main__':
main()
I coludn't bevelie that I cuold aultalcy urnteasndd what I was riednag : the pmenneaohl peowr of the hamun mdni.
Les caractères autres que le début et la fin de la chaîne de caractères ont été réorganisés aléatoirement avec random.sample sans duplication.
(Après modification ↓) La typoglycémie a été réécrite.
09.py
import random
def Typoglycemia(seq):
shuffle = lambda x: "".join(random.sample(x, len(x)))
typo = lambda x: x[0] + shuffle(x[1:-1]) + x[-1]
return " ".join(typo(x) if len(x) > 4 else x for x in seq.split())
def main():
s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind."
print(Typoglycemia(s))
if __name__ == '__main__':
main()
l'expression lambda est pratique. Je l'utiliserai quand il semblera utilisable dans le futur.
J'écrirai la suite quand j'en aurai envie.
Recommended Posts