[PYTHON] 100 Sprachverarbeitungsklopfen (2020): 00-09

Kapitel 1: Vorbereitende Bewegung

00. Umgekehrte Reihenfolge der Zeichenfolgen

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

01. "Patatokukashi"


"""
01."Patatoku Cassie"
1 der Zeichenkette "Patatokukashii",3,5,Nehmen Sie das 7. Zeichen heraus und erhalten Sie die verkettete Zeichenfolge.
"""
s = "Patatoku Kashii"
print(s[::2])
#Pat Auto

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

from functools import reduce

s1 = "Pat Auto"
s2 = "Taxi"

# method 1
res = [s1[i] + s2[i] for i in range(len(s1))]
print("".join(res))
#Patatoku Kashii

# method 2
res = [a + b for a, b in zip(s1, s2)]
print("".join(res))

# method 3
res = reduce(lambda a, b: a + b, zip(s1, s2))
print(res)


# reduce
def do_sum(x1, x2):
    return x1 + x2


print(reduce(do_sum, [1, 2, 3, 4]))  # 10
# (((1 + 2) + 3) + 4) => 10

03. Umfangsrate

"""
03.Pi
“Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.”
Teilen Sie den Satz in Wörter auf und erstellen Sie eine Liste, in der die Anzahl der Zeichen (im Alphabet) jedes Wortes von Anfang an in der Reihenfolge ihres Auftretens angeordnet ist.
"""
s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
for c in [",", "."]:
    s = s.replace(c, "")
words = s.split(" ")

print([len(word) for word in words])
# [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

04. Elementsymbol

"""
04.Elementsymbol
“Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.”
Wird in Worte zerlegt, 1, 5, 6, 7, 8, 9, 15, 16,Das 19. Wort nimmt den ersten Buchstaben und die anderen Wörter die ersten beiden Buchstaben.
Erstellen Sie ein assoziatives Array (Wörterbuchtyp oder Kartentyp) von der extrahierten Zeichenfolge bis zur Position des Wortes (wie viele Wörter von Anfang an).
"""

# Get words
s = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
for c in [",", "."]:
    s = s.replace(c, "")
words = s.split(" ")

# Make index
one_character_pos = [x - 1 for x in (1, 5, 6, 7, 8, 9, 15, 16, 19)]
index = {}
for i, word in enumerate(words):
    if i in one_character_pos:
        index[word[0]] = i
    else:
        index[word[:2]] = i
print(index)
# {'H': 0, 'He': 1, 'Li': 2, 'Be': 3, 'B': 4, 'C': 5, 'N': 6, 'O': 7, 'F': 8, 'Ne': 9, 'Na': 10, 'Mi': 11, 'Al': 12, 'Si': 13, 'P': 14, 'S': 15, 'Cl': 16, 'Ar': 17, 'K': 18, 'Ca': 19}

  1. n-gram
"""
05. n-gram
Aus einer bestimmten Sequenz (Zeichenfolge, Liste usw.) n-Erstellen Sie eine Funktion, die ein Gramm erstellt.
Mit dieser Funktion wird das Wort bi aus dem Satz "Ich bin ein NLPer"-Gramm, Zeichen bi-Holen Sie sich das Gramm.
"""
from typing import List, Sequence


def word_bigram(words: List[str]):
    return [words[i : i + 2] for i in range(len(words) - 1)]


def char_bigram(chars: str):
    return [chars[i : i + 2] for i in range(len(chars) - 1)]


s = "I am an NLPer"
print(word_bigram(s.split(" ")))
print(char_bigram(s))
# [['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
# ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']


# Generalization
def n_gram(seq: Sequence, n: int):
    return [seq[i : i + n] for i in range(len(seq) - n + 1)]


print(n_gram(s.split(" "), n=2))
print(n_gram(s, n=2))
# [['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
# ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']

06. Treffen

"""
06.einstellen
Die Buchstaben bi in "paraparaparadise" und "Absatz" enthalten-Jeder Satz Gramm,
Finden Sie X und Y und finden Sie die Summen-, Produkt- und Differenzmengen von X und Y. Außerdem ein Bi namens "se"-Finden Sie heraus, ob Gramm in X und Y enthalten ist.
https://www.javadrive.jp/python/set/index6.html#section1
"""

from typing import Sequence


# Generalization
def n_gram(seq: Sequence, n: int):
    return [seq[i : i + n] for i in range(len(seq) - n + 1)]


x = set(n_gram("paraparaparadise", n=2))
y = set(n_gram("paragraph", n=2))
# x {'ar', 'ra', 'is', 'ap', 'pa', 'di', 'ad', 'se'}
# y {'ar', 'ra', 'is', 'ap', 'pa', 'di', 'ad', 'se'}

union_res = x.union(y)
intersection_res = x.intersection(y)
difference_res = x.difference(y)
print(union_res)
print(intersection_res)
print(difference_res)
# {'ar', 'ad', 'se', 'ph', 'pa', 'is', 'gr', 'di', 'ap', 'ra', 'ag'}
# {'ra', 'ar', 'pa', 'ap'}
# {'se', 'di', 'ad', 'is'}

07. Anweisungsgenerierung nach Vorlage

"""
07.Anweisungserstellung durch Vorlage Permalink
Argument x, y,Implementieren Sie eine Funktion, die z empfängt und die Zeichenfolge "y at x is z" zurückgibt.
Zusätzlich x=12, y="Temperatur", z=22.Überprüfen Sie als 4 das Ausführungsergebnis.
"""


def generate(x, y, z):
    return f"{x}von Zeit{y}Ist{z}"


x = 12
y = "Temperatur"
z = 22.4

print(generate(x, y, z))
#Die Temperatur um 12 Uhr ist 22.4

08. Kryptographie

"""
08.Geheimtext
Implementieren Sie die Funktionsverschlüsselung, die jedes Zeichen der angegebenen Zeichenfolge gemäß den folgenden Spezifikationen konvertiert.

Wenn es in Kleinbuchstaben ist(219 -Zeichencode)Ersetzen Sie durch das Zeichen
Geben Sie andere Zeichen so aus, wie sie sind
Verwenden Sie diese Funktion, um englische Nachrichten zu verschlüsseln / entschlüsseln.

Method:
ord: Zeichen → ASCII-Code
chr: ASCII-Code → Zeichen
"""


def cipher(string: str):
    result = ""
    for s in string:
        if s.islower():
            result += chr(219 - ord(s))
        else:
            result += s
    return result


print(cipher("This is a encrypted message"))
print(cipher("Tsrh rh z vmxibkgvw nvhhztv"))
# Tsrh rh z vmxibkgvw nvhhztv
# This is a encrypted message

  1. Typoglycemia
"""
09. Typoglycemia

Erstellen Sie ein Programm, das die Reihenfolge der anderen Zeichen zufällig neu anordnet, wobei das erste und das letzte Zeichen jedes Wortes für die Wortfolge durch Leerzeichen getrennt bleiben.
Wörter mit einer Länge von 4 oder weniger werden jedoch nicht neu angeordnet. Angemessener englischer Satz
(Zum Beispiel: "Ich konnte nicht glauben, dass ich tatsächlich verstehen konnte, was ich las.": the phenomenal power of the human mind .”)
Und überprüfen Sie das Ausführungsergebnis.
"""
import random


def generate_typoglycemia(words: list) -> list:
    res = []
    for word in words:
        if len(word) < 4:
            res.append(word)
        else:
            medium = "".join(random.sample(word[1:-1], k=len(word[1:-1])))  # method 1
            # medium = "".join(random.shuffle(list(word[1:-1])))  # method2
            res.append(word[0] + medium + word[-1])
    return res


s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
res = generate_typoglycemia(s.split())
print(" ".join(res))
# I clo'undt beevile taht I cuold alulctay urtnneadsd waht I was reanidg : the pmheoenanl poewr of the human mind .

Recommended Posts

100 Sprachverarbeitungsklopfen 03 ~ 05
100 Sprachverarbeitungsklopfen (2020): 40
100 Sprachverarbeitungsklopfen (2020): 32
100 Sprachverarbeitungsklopfen (2020): 35
100 Sprachverarbeitungsklopfen (2020): 47
100 Sprachverarbeitungsklopfen (2020): 39
100 Sprachverarbeitungsklopfen (2020): 26
100 Sprachverarbeitungsklopfen (2020): 34
100 Sprachverarbeitungsklopfen (2020): 42
100 Sprachverarbeitungsklopfen (2020): 49
100 Sprachverarbeitungsklopfen 06 ~ 09
100 Sprachverarbeitungsklopfen (2020): 43
100 Sprachverarbeitungsklopfen (2020): 24
100 Sprachverarbeitungsklopfen (2020): 10-19
100 Sprachverarbeitungsklopfen (2020): 30
100 Sprachverarbeitungsklopfen (2020): 00-09
100 Sprachverarbeitungsklopfen (2020): 31
100 Sprachverarbeitungsklopfen (2020): 48
100 Sprachverarbeitungsklopfen (2020): 44
100 Sprachverarbeitungsklopfen (2020): 41
100 Sprachverarbeitungsklopfen (2020): 37
100 Sprachverarbeitungsklopfen (2020): 25
100 Sprachverarbeitungsklopfen (2020): 23
100 Sprachverarbeitungsklopfen (2020): 33
100 Sprachverarbeitungsklopfen (2020): 20
100 Sprachverarbeitungsklopfen (2020): 27
100 Sprachverarbeitungsklopfen (2020): 46
100 Sprachverarbeitungsklopfen (2020): 21
100 Sprachverarbeitungsklopfen (2020): 36
100 Amateur-Sprachverarbeitungsklopfen: 41
100 Amateur-Sprachverarbeitungsklopfen: 71
100 Amateur-Sprachverarbeitungsklopfen: 56
100 Amateur-Sprachverarbeitungsklopfen: 50
100 Amateur-Sprachverarbeitungsklopfen: 59
100 Amateur-Sprachverarbeitungsklopfen: 70
100 Amateur-Sprachverarbeitungsklopfen: 62
100 Amateur-Sprachverarbeitungsklopfen: 60
100 Amateur-Sprachverarbeitungsklopfen: 30
100 Amateur-Sprachverarbeitungsklopfen: 06
100 Amateur-Sprachverarbeitungsklopfen: 84
100 Amateur-Sprachverarbeitungsklopfen: 81
100 Amateur-Sprachverarbeitungsklopfen: 33
100 Amateur-Sprachverarbeitungsklopfen: 46
100 Amateur-Sprachverarbeitungsklopfen: 88
100 Amateur-Sprachverarbeitungsklopfen: 89
100 Amateur-Sprachverarbeitungsklopfen: 40
100 Amateur-Sprachverarbeitungsklopfen: 45
100 Amateur-Sprachverarbeitungsklopfen: 43
100 Amateur-Sprachverarbeitungsklopfen: 55
100 Amateur-Sprachverarbeitungsklopfen: 22
100 Amateur-Sprachverarbeitungsklopfen: 61
100 Amateur-Sprachverarbeitungsklopfen: 94
100 Amateur-Sprachverarbeitungsklopfen: 54
100 Amateur-Sprachverarbeitungsklopfen: 04
100 Amateur-Sprachverarbeitungsklopfen: 63
100 Amateur-Sprachverarbeitungsklopfen: 78
100 Amateur-Sprachverarbeitungsklopfen: 12
100 Amateur-Sprachverarbeitungsklopfen: 14
100 Amateur-Sprachverarbeitungsklopfen: 08
100 Amateur-Sprachverarbeitungsklopfen: 42
100 Sprachverarbeitungsklopfen ~ Kapitel 1