Ausbruch des Corona-Virus und heutzutage nur dunkle Nachrichten ...: schwerwiegend: → Wenn Sie nur die guten Nachrichten sehen, sollten Sie sich positiv fühlen!
Eine Chrome-Erweiterung, die es schwieriger macht, Google-Suchergebnisse zu sehen, wenn der Inhalt dunkler wird. Chrome Store: Opty github
Dunkle Seite | Helle Seite |
---|---|
Installieren Sie einfach die Chrome-Erweiterung von hier und suchen Sie! Referenz: So installieren Sie die Erweiterung
Personal: 2 Studenten (Tomohiro Inoue, Goshi Watanabe) Produktionsdauer: 1 Tag Cloud Functions Python 3.7 JavaScript MeCab
Teilen Sie einen Satz in Wörter auf und beurteilen Sie, ob jedes Element hell oder dunkel ist.
MeCab wird verwendet, um Sätze in Wörter zu zerlegen. Zum Beispiel
morph.py
import MeCab
tagger = MeCab.Tagger()
result = tagger.parse('Das neue Koronavirus ist weltweit ausgebrochen.')
print(result)
Wenn Sie den Prozess ausführen
Neue Nomenklatur,Allgemeines,*,*,*,*,Neues Modell,Singata,Singata
Corona Substantiv,Allgemeines,*,*,*,*,Corona,Corona,Corona
Virus Nomen,Allgemeines,*,*,*,*,Virus,Virus,Virus
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga
Welt Nomen,Allgemeines,*,*,*,*,Welt,Sekai,Sekai
Zielnomenklatur,Suffix,Adjektiv Verbstamm,*,*,*,Ziel,Text,Text
Hilfs,Adjunct,*,*,*,*,Zu,D.,D.
Großes Präfix,Nomenverbindung,*,*,*,*,Groß,sterben,sterben
Trendige Nomenklatur,Verbindung ändern,*,*,*,*,Trend,Ryukou,Ryuko
Shi Verb,Unabhängigkeit,*,*,Sahen / Suru,Kontinuierlicher Typ,Machen,Shi,Shi
Der Assistent,Verbindungsassistent,*,*,*,*,Hand,Te,Te
Ich verb,Nicht unabhängig,*,*,Ein Schritt,Kontinuierlicher Typ,Ist,ich,ich
Masu Hilfsverb,*,*,*,Spezial / Masse,Grundform,Masu,Forelle,Forelle
.. Symbol,Phrase,*,*,*,*,。,。,。
EOS
Es ist wie zerlegt. Extrahieren Sie die nicht verwendete Form jedes Wortes aus dem zerlegten Ergebnis und verwenden Sie es.
[Japanisches Bewertungspolaritätswörterbuch](http://www.cl.ecei.tohoku.ac.jp/index.php?Open], veröffentlicht vom Inui Suzuki Laboratory der Tohoku University zur Bestimmung der Helligkeit von Elementen % 20Resources% 2FJapanese% 20Sentiment% 20Polarity% 20Dictionary) wurde verwendet.
In diesem Wörterbuch werden japanische Wörter in positiv (hell) oder negativ (dunkel) eingeteilt, und die Nomenklatur wird in drei Ebenen eingeteilt: p (positiv), n (negativ) und e (keine).
wago.121808.pn
Negativ (Erfahrung)
Negativ (Erfahrung) aufgeben
Negativ (Erfahrung)
Negativ (Erfahrung)
Negativ (Erfahrung)
pn.csv.m3.120408.trim
Danke p ~ Es gibt / verbessert (Existenz / Natur)
Danke p ~ Es gibt / verbessert (Existenz / Natur)
Danke Ärger n ~ wird / wird (Bewertung / Emotion) subjektiv
So sein wie es ist (Bewertung / Gefühl) Subjektivität
Wie es ist, wird / wird (Bewertung / Emotion) subjektiv
Jede Komponente des Satzes wird durch 1 ersetzt, wenn sie positiv ist, -1, wenn sie negativ ist, und ansonsten durch 0, und der Durchschnitt wird als Helligkeit des Satzes verwendet.
Nachfolgend sind die Punkte aufgeführt, auf die ich während der Entwicklung gestoßen bin.
Ich dachte leicht, ich sollte den Satz in Wörter unterteilen und das Polaritätswörterbuch mit den Wörtern als Schlüssel durchsuchen, aber es war nicht so einfach. Im Polaritätswörterbuch wird nicht nur ein einzelnes Wort wie "gut" registriert, sondern auch ein Element, das aus zwei oder mehr Wörtern besteht (in diesem Fall "gut" + "nicht"), wie "schlecht". Aus diesem Grund habe ich das Wörterbuch so umstrukturiert, dass es nach Elementen durchsucht werden kann, die aus mehreren Wörtern bestehen, und es vor der Verwendung in Eingriff gebracht.
main.py
#Im Wörterbuch speichern
for line in pn_noun_file:
line = line.replace('\n', '').split('\t')
if line[1] == 'e': #Ignorieren Sie Linien, die weder positiv noch negativ sind
continue
#Eine Liste von Wörtern, die im Polaritätswörterbuch registriert sind und in Grundformen konvertiert wurden
basic_form = convert_to_basic_form(line[0])
#Ignorieren Sie Zeilen, für die die Grundform nicht erhalten werden kann, und Zeilen, für die die Grundform ein Zeichen ist
if not basic_form:
continue
elif len(basic_form) == 1 and len(basic_form[0]) == 1:
continue
key = basic_form[0]
if key not in pn_dict:
pn_dict[key] = {}
#Gespeichert als eine Kombination aus Helligkeit und einer Kombination von Grundformen
pn_dict[key][(',').join(basic_form)] = 1 if line[1] == 'p' else - 1
Während "schlecht" als negatives Element im Polaritätswörterbuch registriert ist, wird "nicht lustig" nicht registriert, so dass es als positives Wort beurteilt wird, indem nur auf den Teil "Spaß" reagiert wird. Es war. Wenn dies nicht der Fall ist, wird der Helligkeitswert des vorherigen Teils invertiert.
main.py
#PN Urteil. Gibt den durchschnittlichen PN-Wert des angeforderten Elements zurück.
def calc_pn(basic_form):
pn_dict = pickle.load(open('pn.pkl', 'rb'))
pn_values = [] #Speichert den PN-Beurteilungswert jedes Elements im Text
while basic_form:
pn_value = 0
del_num = 1 #Nummer, die aus der Liste entfernt werden soll
beginning = basic_form[0] #Setzen Sie das erste Wort auf Schlüssel
if beginning in pn_dict:
for index, word in enumerate(basic_form):
if word == "。" or word == "、": #Wenn der Satz bricht, hören Sie auf
break
if index == 0:
joined_basic_forms = beginning
else:
joined_basic_forms += ',' + word
if word == "Abwesend" and del_num == index: #Positive negative Umkehrung erforderlich
print('reverse')
pn_value *= -1
del_num = index + 1
if joined_basic_forms in pn_dict[beginning]:
pn_value = pn_dict[beginning][joined_basic_forms]
del_num = index + 1
pn_values.append(pn_value)
del basic_form[0:del_num]
return sum(pn_values) / len(pn_values)
Ich hatte etwas Zeit, um auf Korona zu verzichten, also machte ich es als Studie während der Frühlingsferien. Andere sind in Entwicklung! Wenn Sie möchten, folgen Sie bitte LGTM und Twitter!
Erweiterung: Opty Twitter: Tomohiro Inoue, Takeshi Watanabe
Recommended Posts