[PYTHON] Das stimmt, lass es uns essen. [Verarbeitung natürlicher Sprache beginnend mit Kyoto Ben]

Einführung

Ich werde zum ersten Mal die Verarbeitung natürlicher Sprache durchführen. Es ist aufregend. Dieser Artikel ist [Qiita x COTOHA API aktueller Plan] Lassen Sie uns den Text mit COTOHA API analysieren! ](Https://zine.qiita.com/event/collaboration-cotoha-api/?utm_source=qiita&utm_medium=banner). ~~ Ich möchte zu viele Preise! ~~ Ich war pünktlich zum Posten.

Das Hauptthema sofort. Was nun.

Zunächst werde ich kurz vorstellen, was zu tun ist. Der folgende wurde ↓ gemacht

python3 bubuduke.py "Hetaxo"
"Sei nicht gut"

Ich werde einen Kyoto-Ventilübersetzer wie diesen herstellen. Bubu-Zuke ist köstlich! Yay! bubu.jpg

Ablauf dieses Artikels

--Versuchen Sie vorerst, die COTOHA-API zu verwenden (ich habe sie zum ersten Mal verwendet) --Was ist die Verarbeitung natürlicher Sprache?

Wenn Sie dies bemerken, haben Sie mit diesem Ablauf ein praktisches Werkzeug wie das oben beschriebene. Sehr leicht.

Stellen Sie die COTOHA-API vorerst zur Verfügung

Registrieren Sie sich jetzt kostenlos unter hier. Senden Sie Ihre E-Mail-Adresse und erstellen Sie ein Konto. Melden Sie sich an, wenn Sie können. Dann sehen Sie diesen Bildschirm. (Werbung bisher) cotohaapi.png

Für diese Site werde ich die ID erst später verwenden, also ist dies das Ende.

Was ist die Verarbeitung natürlicher Sprache?

Einfach ausgedrückt, um die Wörter (= natürliche Sprache) zu verarbeiten, die Menschen normalerweise verwenden. Nein, ist es nicht so wie es ist? Das Schwierige daran ist, dass ** natürliche Sprachen, insbesondere Japanisch, nicht genau definiert sind **.

Japanisch ist nicht gut definiert

"Nicht genau definiert" bedeutet, dass die Definition keine eindeutige Interpretation oder keinen eindeutigen Wert zuweist. Sie können sich hier mehrere Interpretationen für einen Satz vorstellen.

Betrachten Sie ein einfaches Beispiel. Wie folgt.  toilet.png Niemand denkt, dass Sie keine Kacke werfen sollten, wenn Sie dies sehen. Wenn Sie jedoch versuchen, diesen Satz wörtlich mit Pseudocode zu schreiben, sieht es so aus.

wenn Schuppen== "Toilettenpapier" then
Sie können vergießen

Das? Ich habe das Gefühl, ich kann es nicht ablegen.

Das Kyoto-Ventil ist das ultimative.

Das Kyoto-Ventil, für das ich mich dieses Mal entschieden habe. Zum Beispiel so.  bubuduke.png

Oben ist der berühmte Bubu-Zuke. Bubu-zuke sollte Ocha-zuke in Kyoto Ben bedeuten. Trotzdem bedeutet der Rat, in Bubu zu beizen, dass Sie nach Hause gehen sollten. Ich verstehe nicht.

Wie auch immer, Kyoto Ben ist heimtückisch

Lassen Sie mich Ihnen ein weiteres Beispiel geben.   tokei.png

Es tut mir leid, die Entgleisung ist lang. Es gibt viele andere ekelhafte Kyoto-Wörter, aber ich werde sie weglassen. Wenn Sie interessiert sind, finden Sie wahrscheinlich verschiedene hier. Kurz gesagt, ** Kyoto Ben ist heimtückisch und ist die Höhe von Wörtern, die nicht genau definiert sind. ** **.

Bei der Verarbeitung natürlicher Sprache werden Wörter und Syntax anhand von Informationen aus diesen natürlichen Sprachen verarbeitet. Schließlich erkläre ich nur die natürliche Sprache. Von nun an werden wir eine natürliche Sprache namens Japanisch verarbeiten und einen Bot implementieren, der auf einen solch heimtückischen Kyoto-Ventil- "Stil" antworten kann.

Versuchen Sie, den Text in natürlicher Sprache zu verarbeiten

Ignorieren Sie den Teil, der den Bot vorerst ausmacht, und fahren Sie mit der Verarbeitung natürlicher Sprache fort. ~~ Um ehrlich zu sein, das ist die Essenz, also musst du nichts anderes lesen. ~~ Die Essenz stammt von hier, aber COTOHA war so erstaunlich, dass es bald endete.

Probe 1

Akzeptieren Sie die Eingabe vorerst und versuchen Sie, sie leicht zu verarbeiten. Dies ist eine Demo, die Sätze empfängt und nur die Nomenklatur zurückgibt. Ich bezog mich auf Meisterwerk. Die Leistung von Library ist so unvollständig, dass dies ohne Wissen möglich ist. Stellen Sie zuerst die Bibliothek.

pip install git+https://github.com/obilixilido/cotoha-nlp.git
Dies ist der Code, den ich erstellt habe.

samplecode1.py


from cotoha_nlp.parse import Parser

parser = Parser("Client ID",
  "Client secret",
  "https://api.ce-cotoha.com/api/dev/nlp",
  "https://api.ce-cotoha.com/v1/oauth/accesstokens"
)
s = parser.parse(input())

print(" ".join([token.form for token in s.tokens if token.pos in  ["Substantiv"]]))

Ich werde es später noch einmal veröffentlichen, aber ich habe den Beispielcode auf GitHub veröffentlicht. Schauen Sie also auch dort nach. Lassen Sie uns diesen Code ausführen. Wenn Sie in der Reihenfolge "Python-Dateiname Zeichenkette" eingeben, wird das Ergebnis der Verarbeitung der Zeichenkette zurückgegeben.

python samplecode1.py Frühling ist Akebono. Ja, lass uns nach Kyoto gehen.

Dann wird es zurückkommen.

>>Frühling Akebono Kyoto

Was denken Sie. Mit so viel Code konnte ich eine gute Verarbeitung natürlicher Sprache durchführen. Es ist zu gefährlich. ~~ Ich verstehe nichts. ~~

Kyoto Ben "Wind" Konvertierungsskript abgeschlossen

Als nächstes möchte ich mit der Implementierung des Kyoto Benfu-Bots beginnen. Wenn es eine japanische Übersetzung gibt, die der extrahierten Nomenklatur entspricht, geben Sie das Kyoto-Ventil zurück. Hier ist der Ablauf für gewöhnliche japanische Eingaben. image.png

Ich werde kratzen, also werde ich eine kleine Bibliothek einrichten.

pip3 install requests
pip3 install beautifulsoup4
Es sieht so aus.

bubuduke.py


from cotoha_nlp.parse import Parser
import requests
from bs4 import BeautifulSoup
import re

parser = Parser("Client ID",
  "Client secret",
  "https://api.ce-cotoha.com/api/dev/nlp",
  "https://api.ce-cotoha.com/v1/oauth/accesstokens"
)
# input
s = parser.parse(input())

# get nouns
nouns = [token.form for token in s.tokens if token.pos in  ["Substantiv"]]

# web scraping
r = requests.get('https://iirou.com/kazoekata/')
soup = BeautifulSoup(r.content, "html.parser")
block = soup.find_all("p")

# output
for noun in nouns:
  for tag in block:
    if noun in str(tag):
      #Schneiden Sie das Kyoto-Ventil im Inneren des starken Etiketts aus
      output = re.findall('<strong>.*</strong>', str(tag))
      out = output[0]
      out = out.replace("<strong>", "")
      out = out.replace("</strong>", "")
      print(out)

Sofort ausführen.

python bubuduke.py "Nervig"

Der heimtückische Kyoto Ben ist zurück!

>>"Junge Dame, du kannst gut Klavier spielen w"

Dies ist das Ende des Teils zur Verarbeitung natürlicher Sprache. Nächstes Mal mache ich einfach einen Bot. Das Genre wird sich ändern und dieser Artikel endet hier.

Was ich nächstes Mal machen möchte

Ich möchte es zu einem LINE-Bot machen. Ich möchte die Genauigkeit noch etwas verbessern. Ich möchte Wörter aufgreifen, die nicht genau übereinstimmen. Bisher gibt es nur sehr wenige Wörter, die übereinstimmen. Ich werde das nächste Mal wieder darüber schreiben.

abschließend

Repository des diesmal verwendeten Codes Referenz Schließlich ist die offizielle Referenz die beste für jede Sprache, Bibliothek, jedes Framework usw.

Vielen Dank für das Lesen bis zum Ende. ~~ Ich möchte zu viele Preise ~~ LGTM bitte. Wenn LGTM dies nicht akzeptiert dieser Bereich Bitte beziehen Sie sich darauf.

Recommended Posts

Das stimmt, lass es uns essen. [Verarbeitung natürlicher Sprache beginnend mit Kyoto Ben]
Lassen Sie uns die Verarbeitung natürlicher Sprache mit der COTOHA-API genießen
Studieren Sie die Verarbeitung natürlicher Sprache mit Kikagaku
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
3. Verarbeitung natürlicher Sprache durch Python 2-1. Netzwerk für das gleichzeitige Auftreten
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
3. Verarbeitung natürlicher Sprache durch Python 2-2. Koexistenznetzwerk [mecab-ipadic-NEologd]
[Python] Ich habe mit der Verarbeitung natürlicher Sprache ~ Transformatoren ~ gespielt
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Python: Verarbeitung natürlicher Sprache
RNN_LSTM2 Verarbeitung natürlicher Sprache
Verarbeitung natürlicher Sprache 3 Wortkontinuität
Verarbeitung natürlicher Sprache 2 Wortähnlichkeit
Erstellen Sie mit BERT + LightGBM + optuna ganz einfach ein Modell für die Verarbeitung natürlicher Sprache
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
Fassen Sie mit tf.data.Dataset api zusammen, wie Text (Verarbeitung natürlicher Sprache) vorverarbeitet wird
Fallstudie zur Verarbeitung natürlicher Sprache: Worthäufigkeit in 'Anne mit einem E'
[Word2vec] Lassen Sie uns das Ergebnis der Verarbeitung von Unternehmensbewertungen in natürlicher Sprache visualisieren