[PYTHON] Ein Programm, das "Takenoko no Sato" automatisch zu "Kinoko no Yama" "korrekt" korrigiert.

Einführung-Einführung von wunderbaren Süßigkeiten und Existenz von spät abgebauten Produkten-

Wie Sie alle wissen, gibt es einen ** wunderbaren süßen ** namens "Mushroom Mountain" ** [^ 1]. Es handelt sich um eine Schokoladensnack-Süßware, die seit 1975 von Meiji Co., Ltd. hergestellt und verkauft wird. Es hat eine süße Form wie ein Pilz, wobei der Stielteil Cracker und der Schirmteil Schokolade ist. Es wurde gesagt, dass die beste Kombination über einen Entwicklungszeitraum von 5 Jahren ausprobiert und fehlerhaft war. Obwohl sie leicht zu halten und funktionell war, hatte sie viel Schokolade und eine mäßige Salzigkeit und Knusprigkeit. Die Cracker werden kombiniert, um den höchsten Geschmack zu erzielen **. Meiji-sama, der so wundervolle Süßigkeiten hergestellt hat, weckt meine Meinung wirklich nicht.

Andererseits erschien vier Jahre nach dem explosiven Treffer ** "Takenoko no Sato" ** ein ** ähnlich minderwertiges Produkt **. Vielleicht, weil die Entwicklungszeit kurz ist, die Schokolade um etwa 30% reduziert wurde, die Basis ein klumpiger und pudriger Keks ist, der schwer zu halten ist, und das Aussehen ist ein bambusförmiger Körper ohne Eigenschaften oder Schärfe, und es ist leicht zu verstehen Es ist ein verschlechtertes Produkt **. Obwohl die Gesamtmenge um mehr als 5% reduziert wurde, wurde der Preis erhöht und der Salzgehalt und die Verkürzung wurden erhöht, um die Schwäche des Punsches auszugleichen, und es wurde von Apothekern ** [^ 2] in Bezug auf die Ernährung kritisiert. Ich werde. Als Bonus werden Eier verwendet und Menschen mit Allergien können sie nicht essen, daher ist ** Sicherheit auch mit × ** gekennzeichnet. Es scheint, dass Meiji-sama auch versucht hat, einen Gewinn zu erzielen, indem er eine ** kostensparende Version ** herausgab, weil sich der Pilzhaufen so viel verkaufte. Da es sich um ein Unternehmen handelt, gibt es einige Aspekte, denen nicht geholfen werden kann. Ich möchte einen Blick auf das Herz des Verantwortlichen für die Entwicklung werfen.

Übrigens, wenn Sie den historischen Hintergrund wie oben beschrieben studieren, kann nichts ** Missverständnis ** auftreten, aber manchmal ** Neulinge ** achtlos die oben genannten Fakten. Wir können verdrehen und Aussagen machen, dass es einen Streit zwischen diesen Produkten gibt. ** Es ist beängstigend, es nicht zu wissen. ** ** ** Pilzberge werden von den Menschen durch einen überwältigenden Unterschied unterstützt, selbst in der jüngsten groß angelegten Umfrage [^ 3] im Januar 2020, und es sollte keinen Konflikt geben. Es ist eine strenge Tatsache, dass ** Mushroom Mountain eine unvergleichlich hohe Existenz ** ist. Ich wollte die Welt verbessern, indem ich die Schrift beseitigte, die dieser Tatsache widerspricht, und versuchte, ein Feuer des Konflikts zu erzeugen.

Deshalb habe ich ein Programm erstellt, das diesmal Fehler automatisch durch Sprachverarbeitung korrigiert, und ich hoffe, dass jeder es nutzen und für die Verwirklichung des Weltfriedens verbreiten wird.

[^ 1]: "Meiji Mushroom Mountain Co., Ltd." https://www.meiji.co.jp/sweets/chocolate/kinotake/products/kinokonoyama/ [^ 2]: "Was ist besser, Mushroom Mountain oder Takenoko no Sato? Ich habe den Apotheker gefragt." Https://liginc.co.jp/267503 [^ 3]: "Mushroom Mountain / Takenoko no Sato Nationale Parlamentswahl 2019" ~~ https://www.meiji.co.jp/sweets/chocolate/kinotake/cmp/2019senkyo/~~ Dies scheint gelöscht worden zu sein. → https://prtimes.jp/main/html/rd/p/000000012.000025200.html

Beispiel für eine Fehlerkorrektur

Ich denke, es ist einfacher zu verstehen, wenn Sie sich die Realität ansehen. Deshalb zeige ich Ihnen zuerst ein Beispiel für die Bedienung.

Beispiel 1, das korrekt korrigiert werden konnte

Angenommen, Sie sehen den folgenden Tweet auf Twitter.

Takenoko no Sato ist köstlich. Ist es Gottes Essen?

**Armes Ding. ** Möglicherweise kennen Sie den historischen Hintergrund nicht, dass es sich um ein spät degradiertes Produkt handelt, oder Sie haben den Produktnamen versehentlich verwechselt. Wenn solche ** schädlichen Informationen ** an die Öffentlichkeit verbreitet werden, besteht die Sorge, dass sie sich nachteilig auf die Jugend auswirken und in Zukunft straffällig werden. Korrigieren Sie sie daher bitte korrekt.

$ python correct_mistakes.py "Takenoko no Sato ist köstlich. Ist es Gottes Essen?"
Korrekturergebnis:Der Pilzberg ist köstlich. Ist es Gottes Essen?

Auf diese Weise konnte ich den Satz ** überarbeiten, um alle zu überzeugen **.

Beispiel 2, das korrekt korrigiert werden konnte

Angenommen, Sie sehen als Nächstes die folgende Rezension bei Amazon.

Die Harmonie zwischen Schokolade und Basis ist wunderbar. Takenoko no Sato ist konkurrenzlos von anderen Süßigkeiten. ☆ 5.

** Es ist traurig. ** Das Ministerium für Bildung, Kultur, Sport, Wissenschaft und Technologie, das den Prozess des Erwerbs korrekter Kenntnisse in den Pflichtfächern der Grundschule nicht einschließt, ist möglicherweise schlecht. Die Verbreitung falscher Informationen ist gesetzlich verboten, was als ** Verbreitung von Gerüchten ** bezeichnet wird. Das Schreiben von Informationen, die Menschen an öffentlichen Orten nicht mögen, stört die Moral und Moral der Gesellschaft und kann auch ** Belästigung ** sein. Korrigieren Sie sie daher so, dass die Person, die sie geschrieben hat, keine Nachteile erleidet. Ich werde es dir geben.

$ python correct_mistakes.py "Die Harmonie zwischen Schokolade und Basis ist wunderbar. Takenoko no Sato ist konkurrenzlos von anderen Süßigkeiten. ☆ 5."
Korrekturergebnis:Die Harmonie zwischen Schokolade und Basis ist wunderbar. Pilzberge sind konkurrenzlos von anderen Süßigkeiten. ☆ 5.

Korrekt. Ich stimme vollkommen zu. Sie haben eine objektive Bewertung ohne Vorurteile vorgenommen **.

Beispiel 3, das korrekt korrigiert werden konnte

Angenommen, Sie sehen als weiteres Beispiel den folgenden Kommentar.

Pilzberg ist schlecht.

Wenn Sie ein anständiger reifer Erwachsener sind, ist das Schreiben von etwas wie dem oben genannten ** unmöglich oder inakzeptabel **, aber ich dachte, dass ich versehentlich die ursprüngliche Vollversion gegessen habe, indem ich ein später verschlechtertes Produkt gegessen habe. Es kann enden. Ich bin menschlich. Sie können einen Fehler machen. Indem Sie das Programm vollautomatisch anwenden, können Sie solche ** menschlichen Fehler ** beseitigen und die Welt zu einem besseren Ort machen.

$ python correct_mistakes.py "Pilzberg ist schlecht"
Korrekturergebnis:Takenokos Dorf ist schlecht.

Ich denke, es ist besser, ein großzügiges Herz zu haben, ohne zu viel zu tun, aber die Meinungsfreiheit wird durch die Verfassung garantiert, deshalb möchte ich eine solche Meinung akzeptieren. Überlegen. Es ist wichtig, die Unterschiede des anderen zu erkennen und die Vielfalt zu bewahren.

Implementierung

Wenn Sie ein weiser Leser sind, haben Sie möglicherweise bereits die ** "Gefällt mir" -Taste ** gedrückt, als Sie so weit gelesen haben, aber ich werde die Implementierung für alle Fälle vorstellen.

Das einfache Ersetzen der Saiten "Mushroom Mountain" und "Takenoko no Sato" funktioniert nicht. Der Grund ist zuallererst ** "Dieser Berg ist im Brandfall gefährlich" ** (Dieser Berg ist im Brandfall gefährlich) ** "Satomi Junge, der von diesem Mädchen geschlagen wurde" ** (Satomi Junge, der von diesem Kind geschlagen wurde) Wenn ein solcher Satz eingeht, besteht die Möglichkeit, dass die falsche Konvertierung ohne Berücksichtigung des Trennzeichens erfolgt. Dann entspricht es ** Blasphemie ** dem Berg der Pilze, so dass es notwendig ist, "Berg der Pilze" und "Sato des Bambus" als richtige Nomenklatur richtig zu extrahieren. Zweitens muss der Prozess danach unterteilt werden, ob er ergänzt oder veraltet ist. ** Wenn Sie es loben, können Sie definitiv beurteilen, dass es "Mushroom Mountain" ist **, und wenn Sie es loben, können Sie beurteilen, dass es nicht "Mushroom Mountain" ist **.

Wir implementieren diese gut, indem wir ** Verarbeitung natürlicher Sprache ** durchführen. Es gibt verschiedene Möglichkeiten, eine Verarbeitung in natürlicher Sprache durchzuführen, aber dieses Mal werde ich COTOHA API verwenden.

Abgesehen davon wurde bestätigt, dass ** Qiita **, der diesen Artikel schreibt, und ** NTT Communications Co., Ltd. , der Entwickler der COTOHA-API, ** Mushroom Mountains ** sind. Ich werde. Derzeit arbeiten die beiden Unternehmen an einer Kampagne. Eine der Auszeichnungen ist "Kampagne". Dies liegt daran, dass es " Machen Sie einen Haufen Pilze **" (+ iPad) enthält. Infolgedessen können Qiita-Leser verstehen, dass ** alle Pilze empfohlen werden **, sodass Sie diesen Artikel mit Sicherheit schreiben können.

Übrigens gibt es viele Sprachverarbeitungsfunktionen, die von der COTOHA-API bereitgestellt werden, aber dieses Mal werden wir "proprietäre Nomenklatur-Extraktions-API" und "Emotionsschätzungs-API" verwenden.

  1. Stellen Sie fest, ob "Mushroom Mountain" und "Takenoko no Sato" in der richtigen Nomenklatur-API enthalten sind
  2. Beurteilen Sie, ob es negativ oder positiv ist, mit der Emotionsschätzungs-API im enthaltenen Satz. ** Wenn "Pilzberg" enthalten und negativ ist, ersetzen Sie die Zeichenkette **, ** "Takenoko no Sato". Wenn es enthalten und positiv ist, ersetzen Sie die Zeichenfolge ** Der Prozess wird ausgeführt. Dieses Mal haben wir Score = 0,5 als Schwellenwert verwendet, um zu beurteilen, ob es positiv oder negativ war.
Code unten (zum Vergrößern anklicken)

correct_mistakes.py



import requests
import json
import sys

BASE_URL = "https://api.ce-cotoha.com/api/dev/"
CLIENT_ID = "ID erhalten durch COTOHA API"
CLIENT_SECRET = "PASS mit COTOHA API erhalten"


def auth(client_id, client_secret):
    token_url = "https://api.ce-cotoha.com/v1/oauth/accesstokens"
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8"
    }

    data = {
        "grantType": "client_credentials",
        "clientId": client_id,
        "clientSecret": client_secret
    }
    r = requests.post(token_url,
                      headers=headers,
                      data=json.dumps(data))
    return r.json()["access_token"]

def ne(sentence, access_token):
    base_url = BASE_URL
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8",
        "Authorization": "Bearer {}".format(access_token)
    }
    data = {
        "sentence": sentence,
    }
    r = requests.post(base_url + "nlp/v1/ne",
                      headers=headers,
                      data=json.dumps(data))
    return r.json()


def sentiment(sentence, access_token):
    base_url = BASE_URL
    headers = {
        "Content-Type": "application/json",
        "charset": "UTF-8",
        "Authorization": "Bearer {}".format(access_token)
    }
    data = {
        "sentence": sentence,
    }
    r = requests.post(base_url + "nlp/v1/sentiment",
                      headers=headers,
                      data=json.dumps(data))
    return r.json()


if __name__ == "__main__":
    sentence = "Pilzberg ist köstlich. Ist es Gottes Essen?"
    args = sys.argv
    if len(args) >= 2:
        sentence = str(args[1])

    access_token = auth(CLIENT_ID, CLIENT_SECRET)

    kinoko_flg=False
    kinoko_begin_pos=0
    takenoko_flg=False
    takenoko_begin_pos=0
    suginoko_flg=False

    ne_result  = ne(sentence,access_token)
    sentiment_result  = sentiment(sentence,access_token)

    for chunks in ne_result['result']:
      if chunks['form'] == "Berg der Pilze":
        kinoko_flg = True
        kinoko_begin_pos = chunks['begin_pos']
      elif chunks['form'] == "Takenoko no Sato":
        takenoko_flg = True    
        takenoko_begin_pos = chunks['begin_pos'] 
      elif chunks['form'] == "Suginoko Village":
        suginoko_flg = True    
  
    if kinoko_flg == True and sentiment_result['result']['sentiment'] == "Negative" and sentiment_result['result']['score'] > 0.5:
      print(sentence[:kinoko_begin_pos] + 'Takenoko no Sato' + sentence[kinoko_begin_pos+5:])
    elif takenoko_flg ==True and sentiment_result['result']['sentiment'] == "Positive" and sentiment_result['result']['score'] > 0.5:
      print(sentence[:takenoko_begin_pos] + 'Berg der Pilze' + sentence[takenoko_begin_pos+6:])
    elif suginoko_flg == True:
      print("Wer bist du")
    else:
      print(sentence)

Verschiedene Ergebnisse

$ python correct_mistakes.py "Ich liebe Takenoko no Sato"
Ich liebe den Pilzberg
$ python correct_mistakes.py "Pilzberg ist das Beste! Es ist großartig, zuerst Schokolade und nur Kekse zu essen!"
Pilzberg ist das Beste! Es ist großartig, zuerst Schokolade und nur Kekse zu essen!
$ python correct_mistakes.py "Ich esse dieses Dorf Takenoko"
Ich esse jetzt einen Berg Pilze
$ python correct_mistakes.py "Ich denke, es ist ein Berg von Pilzen, weil man ihn essen kann, ohne sich die Hände schmutzig zu machen."
Ich denke, es ist ein Berg von Pilzen, weil man ihn essen kann, ohne sich die Hände schmutzig zu machen.
$ python correct_mistakes.py "Ich brauche keinen Berg Pilze, weil er billig ist."
Ich brauche Takenoko no Sato nicht, weil es billig ist.
#Fügen Sie im Kommentarbereich ein Beispiel hinzu(2/25)
$ python correct_mistakes.py "Der Seetang dieses Yamamoto-Berges war zu dieser Zeit der schlimmste"
Der Seetang dieses Yamamoto-Berges war zu dieser Zeit der schlimmste
$ python correct_mistakes.py "Suginoko Village"
Wer bist du

Zusammenfassung

Ich konnte ein Programm erstellen, das die Notation automatisch auf die richtige korrigiert. Indem Sie dieses Programm auf Systeme und Anwendungen überall anwenden und es vollautomatisch anwenden, können Sie ** die Gesellschaft verbessern und eine friedliche Welt ohne Konflikte schaffen **. Ich denke, das Beste ist, dass der ** Anbieter ** dieses Programm anwendet und ** den gesamten übermittelten Text ** korrigiert **, also habe ich ein solches ** Gesetz ** für die Regierung erlassen. Ich hätte es gerne. Jeder kann zu Aktivitäten beitragen, um die Welt friedlich zu machen, indem er sie an verschiedenen Orten wie Slack, Twitter, Geschäftssystemen und internen Makros verwendet. Bitte kooperieren Sie.

Ich denke auch, dass die Person, die für die Entwicklung der COTOHA-API verantwortlich ist, einen Beitrag zur Gesellschaft leisten kann, indem sie diese Funktion selbst als API bereitstellt und sie auch als ** CSR ** schreiben kann. Bitte erwägen Sie daher, einen solchen Service auf jeden Fall bereitzustellen. Bitte gib mir. Bitte geben Sie mir auch "Let's make! Mushroom Mountain" und ** Zusatzpreis iPad **.

Schließlich hoffe ich, dass dieser Text alle erreicht, die einen Streit haben werden, und darüber nachdenken wird.

Recommended Posts