[PYTHON] 100 Sprachverarbeitung Knock Kapitel 1

Ich weiß nicht, wie viel ich tun kann. (vgl. Knock 100-Sprachverarbeitung 2015)

00. Umgekehrte Reihenfolge der Zeichenfolgen

# coding: utf-8

s = "stressed"

print(s[::-1])

01. "Patatokukashi"

# coding: utf-8

s = "Patatoku Kashii"

print(s[::2])

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

# coding: utf-8

s1 = 'Pat Auto'
s2 = 'Taxi'

s = ''.join([i+j for i, j in zip(s1, s2)])
print(s)

Sie können einen Iterator aus mehreren Iterables mit zip () erstellen.

Nachtrag

# coding: utf-8

s1 = 'Pat Auto'
s2 = 'Taxi'

s = ''.join(i+j for i, j in zip(s1, s2))
print(s)

Es ist nicht erforderlich, eine unnötige Liste mithilfe der Generatoreinschlussnotation zu erstellen.

03. Umfangsrate

# coding: utf-8
import re

s = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'

#Schließen Sie Kommas und Kommas aus und teilen Sie sie in eine wortweise Liste auf
s = re.sub('[,.]', '', s)
s = s.split()

#Zählen Sie die Anzahl der Zeichen und die Liste
result = []
for w in s:
    result.append(len(w))
    
print(result)

Nachtrag

# coding: utf-8
s = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'

#Nachdem Sie es in eine wortweise Liste zerlegt haben,.Schließen Sie die Anzahl der Zeichen aus und zählen Sie sie
result = [len(w.rstrip(',.')) for w in s.split()]

print(result)

Der Prozess des Initialisierens mit einer leeren Liste und des Drehens nach wird mit der Einschlussnotation neu geschrieben. rstrip () entfernt das angegebene Zeichen von rechts. Zeichen können zusammen angegeben werden.

04. Elementsymbol

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

Nachtrag

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

In dem Teil von "[: 1, wenn i in Ziel sonst 2]" habe ich mich gefragt, ob sonst in der Einschlussnotation verwendet werden kann, aber dies ist das Slice "[: x]" und der ternäre Operator "a if cond else b Eine Kombination von `.

  1. n-gram
# 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'))

Nachtrag

# 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'))

Dies wird in der initialisierten Liste auch mit "für" angehängt, sodass es mit der Einschlussnotation neu geschrieben werden kann. Ich bin nicht an die Einschlussnotation gewöhnt, daher habe ich den Eindruck, dass es schwierig ist, sie einzuschreiben und neu zu schreiben.

06. Treffen

# coding: utf-8
#Summensatz, Produktsatz, Differenzsatz von zwei Bigrams

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

07. Anweisungsgenerierung nach Vorlage

# coding: utf-8

def gen_sentence(x, y, z):
    return "{}von Zeit{}Ist{}".format(x, y, z)

x = 12
y = 'Temperatur'
z = 22.4
print(gen_sentence(x, y, z))

08. Kryptographie

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

Konvertieren Sie Zeichen mit "ord ()" in ganzzahlige Werte des Unicode-Codepunkts. Die Umkehrfunktion ist chr ().

Nachtrag

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

Sie können den ternären Operator und die Einschlussnotation für Dinge wie "Anhängen" durch "für" ersetzen, während Sie bedingt in die initialisierte Liste verzweigen. Wenn Sie wissen, dass es so etwas ist, können Sie es anscheinend lesen und schreiben.

  1. Typoglycemia
# 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]))

Es gibt verschiedene Stichprobenverfahren, aber Sie können numpy.random.choice verwenden, um zwischen Wiederherstellungsextraktion und Nicht-Wiederherstellungsextraktion zu wählen.

Nachtrag

# coding: utf-8

import random

def gen_typo(S):
    return ' '.join(
        s 
        #Gibt Wörter mit einer Länge von weniger als 4 zurück
        if len(s) <= 4 
        #Mische Wörter 5 oder länger und lasse den ersten und zweiten Buchstaben übrig
        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))

Dies wird auch mit der Einschlussnotation und dem ternären Operator umgeschrieben.

Außerdem wird "random.sample (Population, k)" zufällig wiederhergestellt und "k" -Elemente aus "Population" (Sequenz oder Menge) extrahiert.

Recommended Posts

100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Sprachverarbeitung Knock Kapitel 1
100 Sprachverarbeitung Knock 2020 Kapitel 3
100 Sprachverarbeitung Knock 2020 Kapitel 2
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
100 Sprachverarbeitungsklopfen (2020): 28
100 Sprachverarbeitungsklopfen (2020): 38
100 Sprachverarbeitung klopfen 00 ~ 02
100 Sprachverarbeitung Knock 2020 Kapitel 2: UNIX-Befehle
100 Sprachverarbeitung Knock 2015 Kapitel 5 Abhängigkeitsanalyse (40-49)
100 Sprachverarbeitung Knock Kapitel 1 in Python
100 Sprachverarbeitung Knock 2020 Kapitel 4: Morphologische Analyse
100 Sprachverarbeitung Knock 2020 Kapitel 9: RNN, CNN
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 3
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
100 Sprachverarbeitungsklopfen: Kapitel 1 Vorbereitungsbewegung
100 Sprachverarbeitung Knock 2020 Kapitel 6: Maschinelles Lernen
100 Sprachverarbeitung Knock Kapitel 4: Morphologische Analyse
100 Sprachverarbeitung Knock 2020 Kapitel 10: Maschinelle Übersetzung (90-98)
100 Sprachverarbeitung Knock 2020 Kapitel 5: Abhängigkeitsanalyse
100 Sprachverarbeitung Knock 2020 Kapitel 7: Word Vector
100 Sprachverarbeitung Knock 2020 Kapitel 8: Neuronales Netz
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 1
100 Sprachverarbeitung Knock 2020 Kapitel 1: Vorbereitende Bewegung
100 Sprachverarbeitung Knock Kapitel 1 von Python
100 Sprachverarbeitung Knock 2020 Kapitel 3: Reguläre Ausdrücke
100 Language Processing Knock 2015 Kapitel 4 Morphologische Analyse (30-39)
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 2
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 4
100 Sprachverarbeitung klopfen 2020 [00 ~ 39 Antwort]
100 Sprachverarbeitung klopfen 2020 [00-79 Antwort]
100 Sprachverarbeitung klopfen 2020 [00 ~ 69 Antwort]
100 Amateur-Sprachverarbeitungsklopfen: 17
100 Sprachverarbeitung klopfen 2020 [00 ~ 49 Antwort]
100 Sprachverarbeitung Knock-52: Stemming
100 Sprachverarbeitungsklopfen ~ Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 07
100 Sprachverarbeitung klopft Kapitel 2 (10 ~ 19)
100 Amateur-Sprachverarbeitungsklopfen: 09
100 Amateur-Sprachverarbeitungsklopfen: 47
100 Sprachverarbeitung Knock-53: Tokenisierung
100 Amateur-Sprachverarbeitungsklopfen: 97
100 Sprachverarbeitung klopfen 2020 [00 ~ 59 Antwort]
100 Amateur-Sprachverarbeitungsklopfen: 67
Ich habe mit GiNZA v3.1 Kapitel 4 100 Sprachverarbeitungsklopfen 2020 durchgeführt
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
[Programmierer-Neuling "100 Sprachverarbeitung klopfen 2020"] Lösen Sie Kapitel 1
100 Sprachverarbeitungsklopfen mit Python 2015
100 Sprachverarbeitung Knock-51: Wortausschnitt
100 Sprachverarbeitung Knock-58: Extraktion von Taple
100 Sprachverarbeitung Knock-57: Abhängigkeitsanalyse
100 Sprachverarbeitung Knock UNIX-Befehle in Kapitel 2
100 Sprachverarbeitung Klopfen Sie auf reguläre Ausdrücke, die Sie in Kapitel 3 gelernt haben
100 Sprachverarbeitung Knock-50: Satzumbruch
100 Sprachverarbeitung Knock-25: Vorlagenextraktion
Sprachverarbeitung 100 Knock-87: Wortähnlichkeit
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020
100 Sprachverarbeitung Knock-56: Co-Referenz-Analyse
Lösen von 100 Sprachverarbeitungsklopfen 2020 (01. "Patatokukashi")