Dies ist der 70. Rekord von 100 Language Processing Knock 2015. Im Grunde war es fast dasselbe wie "Amateur-Sprachverarbeitung 100 Klopfen", also habe ich es nicht in den Block gepostet, aber "Kapitel 8: Maschinelles Lernen" wurde ernst genommen und in gewissem Maße geändert, daher habe ich es veröffentlicht. Ich werde. Ich werde hauptsächlich [Stanford NLP] verwenden (https://stanfordnlp.github.io/stanfordnlp/).
Verknüpfung | Bemerkungen |
---|---|
070.Daten erhalten und gestalten.ipynb | Antwortprogramm GitHub Link |
100 Klicks Amateur-Sprachverarbeitung:70 | Ich bin Ihnen immer zu Dank verpflichtet, wenn ich auf 100 Sprachverarbeitung klopfe |
Erste Schritte mit Stanford NLP mit Python | Der Unterschied zu Stanford Core NLP war leicht zu verstehen |
Art | Ausführung | Inhalt |
---|---|---|
OS | Ubuntu18.04.01 LTS | Es läuft virtuell |
pyenv | 1.2.15 | Ich benutze pyenv, weil ich manchmal mehrere Python-Umgebungen benutze |
Python | 3.6.9 | python3 auf pyenv.6.Ich benutze 9 3.7 oder 3.Es gibt keinen tiefen Grund, keine 8er-Serie zu verwenden Pakete werden mit venv verwaltet |
In diesem Kapitel [Satzpolaritätsdatensatz] von Movie Review Data, veröffentlicht von Bo Pang und Lillian Lee. v1.0](http://www.cs.cornell.edu/people/pabo/movie-review-data/rt-polaritydata.README.1.0.txt) wird verwendet, um den Satz positiv oder negativ zu machen. Arbeiten Sie an der Aufgabe (Polaritätsanalyse), um sie als (negativ) zu klassifizieren.
Mit Richtige Antwortdaten der Polaritätsanalyse für Sätze korrigieren Sie die Antwortdaten wie folgt. Erstellen Sie (sentiment.txt).
- Fügen Sie die Zeichenfolge "+1" am Anfang jeder Zeile in rt-polarity.pos ein (Polaritätsbezeichnung "+1", gefolgt von einem Leerzeichen gefolgt von positivem Anweisungsinhalt).
- Fügen Sie die Zeichenfolge "-1" am Anfang jeder Zeile in rt-polarity.neg ein (Polaritätsbezeichnung "-1" gefolgt von einem Leerzeichen gefolgt von einer negativen Anweisung).
- Verketten Sie den Inhalt von 1 und 2 oben und ordnen Sie die Zeilen zufällig neu an
Überprüfen Sie nach dem Erstellen von> sentiment.txt die Anzahl der positiven Beispiele (positive Sätze) und die Anzahl der negativen Beispiele (negative Sätze).
Vorsichtsmaßnahmen für die zu lesende Datei
Die Ordnerstruktur ist im Jupyter Notebook-Verzeichnis wie folgt. Originaldaten wird entpackt und platziert.
└── rt-polaritydata
├── rt-polarity.neg
└── rt-polarity.pos
import codecs
import random
FNAME_SMT = 'sentiment.txt'
pos_prefix = '+1'
neg_prefix = '-1'
result = []
def read_file(fname, prefix):
#Unbestätigt, ob es von der Open-Funktion ohne Verwendung von Codecs gelesen werden kann()
with codecs.open(fname, encoding='cp1252') as file: #Die Codierung ist Windows-1252
return ['{0} {1}'.format(prefix, line.strip()) for line in file]
#Positiv gelesen
result.extend(read_file('./rt-polaritydata/rt-polarity.pos', pos_prefix))
#Negativ gelesen
result.extend(read_file('./rt-polaritydata/rt-polarity.neg', neg_prefix))
random.shuffle(result)
with open(FNAME_SMT, 'w') as file_out:
file_out.write('\n'.join(result))
#Überprüfen Sie die Nummer
cnt_pos = 0
cnt_neg = 0
with open(FNAME_SMT) as file:
for line in file:
if line.startswith(pos_prefix):
cnt_pos += 1
elif line.startswith(neg_prefix):
cnt_neg += 1
print('pos:{}, neg:{}'.format(cnt_pos, cnt_neg))
Es ist im Grunde das Lesen und Schreiben von Dateien, also habe ich nicht viel getan, um es zu erwähnen. Ich verwende die "Codecs" -Bibliothek, um die Datei zu öffnen, aber dies ist nur eine Kopie des relevanten Teils von 100 Amateur-Sprachverarbeitungsklopfen: 70 Daher habe ich nicht überprüft, ob es mit der normalen "Öffnen" -Funktion möglich ist. Ich wollte die Codecs-Bibliothek jedoch in nachfolgenden Programmen nicht mehr verwenden, also habe ich sie in UTF-8 gespeichert. Trotzdem werden die Zeichen, die Umlaut enthalten, korrekt gespeichert.
Bei der Ausführung gibt die letzte Druckfunktion die Nummer wie unten gezeigt aus.
pos:5331, neg:5331
Recommended Posts