** Twitter présente l'intelligence artificielle et des articles écrits dans d'autres médias **, donc si vous voulez en savoir plus sur l'intelligence artificielle, etc. ** N'hésitez pas à suivre! ** **
<! - <Mis à jour le 25/02 (mar.)> ** Ajout de la syntaxe Shinjiro Koizumi [https://qiita.com/omiita/items/0f811f15e569bf2539b8#6-%E7%95%AA%E5%A4% 96% E7% B7% A8% E5% B0% 8F% E6% B3% 89% E9% 80% B2% E6% AC% A1% E9% 83% 8E% E6% A7% 8B% E6% 96% 87) Fait. ** ->
Au Premier ministre Abe ** "Je recrute, mais je ne recrute pas" ** remarque Inspiré par **, j'ai créé un programme qui convertit automatiquement les phrases saisies en phrases qui sont "recruter mais pas recruter" **!
Si vous entrez «Recruter des personnes», la phrase sera convertie en «Nous recrutons des personnes, mais nous ne recrutons pas».
Exemple de voir des fleurs de cerisier
$ python abe.py "Voir les fleurs de cerisier"
Je vois les fleurs de cerisier, mais je ne les ai pas vues
| Ce que j'ai utilisé | Utilisation | 
|---|---|
| Python 3.7.0 | code | 
| COTOHA API | Analyse morphologique et calcul de similarité | 
| WordNet | Synonymes | 
| Dictionnaire IPA | Formulaire d'utilisation verbale | 







<détails>  Import COTOHA Main config.ini Inspiré par M. Shinjiro Koizumi ** "J'ai dit que j'y réfléchissais, mais j'y réfléchis." ** Remarque ** J'ai créé un programme qui convertit automatiquement la phrase saisie dans la syntaxe Shinjiro Koizumi! ** ** ** Si ce qui précède est appelé syntaxe Abe Shinzo **, la syntaxe Abe Shinzo est appelée "phrase affirmative + phrase négative similaire". D'un autre côté, ** la syntaxe de Shinjiro Koizumi est simplement "phrase affirmative + phrase affirmative similaire" **, et j'ai dit qu'elle est similaire à la syntaxe de ** Shinzo Abe, mais elle est similaire **. (Cela change simplement la manière de rejoindre l'étape 3.6.) Nous avons créé un programme qui convertit automatiquement une phrase en une phrase qui dit "nous recrutons mais ne recrutons pas"!
** Nous sollicitons des "likes" et des "commentaires", mais pas **.
(S'il y a une phrase qui vous intéresse, quelle sera la sortie, je vais l'essayer, alors n'hésitez pas à commenter!) 
            Recommended Posts
            
            
            
              abe.py
# -*- coding:utf-8 -*-
import os
import urllib.request
import json
import configparser
import codecs
import csv
import sys
import sqlite3
from collections import namedtuple
import types
abe.py
#/_/_/_/_/_/_/_/_/_/_/_/_/COTOHA_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#Le code de cette partie est tiré d'ici.
# https://qiita.com/gossy5454/items/83072418fb0c5f3e269f
class CotohaApi:
    #Initialisation
    def __init__(self, client_id, client_secret, developer_api_base_url, access_token_publish_url):
        self.client_id = client_id
        self.client_secret = client_secret
        self.developer_api_base_url = developer_api_base_url
        self.access_token_publish_url = access_token_publish_url
        self.getAccessToken()
    #Obtenez un jeton d'accès
    def getAccessToken(self):
        #Spécification d'URL d'acquisition de jeton d'accès
        url = self.access_token_publish_url
        #Spécification d'en-tête
        headers={
            "Content-Type": "application/json;charset=UTF-8"
        }
        #Demander les spécifications du corps
        data = {
            "grantType": "client_credentials",
            "clientId": self.client_id,
            "clientSecret": self.client_secret
        }
        #Encoder la spécification du corps de la requête en JSON
        data = json.dumps(data).encode()
        #Demande de génération
        req = urllib.request.Request(url, data, headers)
        #Envoyez une demande et recevez une réponse
        res = urllib.request.urlopen(req)
        #Obtenir le corps de la réponse
        res_body = res.read()
        #Décoder le corps de la réponse à partir de JSON
        res_body = json.loads(res_body)
        #Obtenir un jeton d'accès à partir du corps de la réponse
        self.access_token = res_body["access_token"]
    #API d'analyse syntaxique
    def parse(self, sentence):
        #Spécification de l'URL de l'API d'analyse syntaxique
        url = self.developer_api_base_url + "v1/parse"
        #Spécification d'en-tête
        headers={
            "Authorization": "Bearer " + self.access_token,
            "Content-Type": "application/json;charset=UTF-8",
        }
        #Demander les spécifications du corps
        data = {
            "sentence": sentence
        }
        #Encoder la spécification du corps de la requête en JSON
        data = json.dumps(data).encode()
        #Demande de génération
        req = urllib.request.Request(url, data, headers)
        #Envoyez une demande et recevez une réponse
        try:
            res = urllib.request.urlopen(req)
        #Que faire si une erreur se produit dans la demande
        except urllib.request.HTTPError as e:
            #Si le code d'état est 401 Non autorisé, réacquérir le jeton d'accès et demander à nouveau
            if e.code == 401:
                print ("get access token")
                self.access_token = getAccessToken(self.client_id, self.client_secret)
                headers["Authorization"] = "Bearer " + self.access_token
                req = urllib.request.Request(url, data, headers)
                res = urllib.request.urlopen(req)
            #Si l'erreur est différente de 401, la cause est affichée.
            else:
                print ("<Error> " + e.reason)
        #Obtenir le corps de la réponse
        res_body = res.read()
        #Décoder le corps de la réponse à partir de JSON
        res_body = json.loads(res_body)
        #Obtenir le résultat de l'analyse à partir du corps de la réponse
        return res_body
    #API de calcul de similarité
    def similarity(self, s1, s2):
        #Spécification de l'URL de l'API de calcul de similarité
        url = self.developer_api_base_url + "v1/similarity"
        #Spécification d'en-tête
        headers={
            "Authorization": "Bearer " + self.access_token,
            "Content-Type": "application/json;charset=UTF-8",
        }
        #Demander les spécifications du corps
        data = {
            "s1": s1,
            "s2": s2
        }
        #Encoder la spécification du corps de la requête en JSON
        data = json.dumps(data).encode()
        #Demande de génération
        req = urllib.request.Request(url, data, headers)
        #Envoyez une demande et recevez une réponse
        try:
            res = urllib.request.urlopen(req)
        #Que faire si une erreur se produit dans la demande
        except urllib.request.HTTPError as e:
            #Si le code d'état est 401 Non autorisé, réacquérir le jeton d'accès et demander à nouveau
            if e.code == 401:
                print ("get access token")
                self.access_token = getAccessToken(self.client_id, self.client_secret)
                headers["Authorization"] = "Bearer " + self.access_token
                req = urllib.request.Request(url, data, headers)
                res = urllib.request.urlopen(req)
            #Si l'erreur est différente de 401, la cause est affichée.
            else:
                print ("<Error> " + e.reason)
        #Obtenir le corps de la réponse
        res_body = res.read()
        #Décoder le corps de la réponse à partir de JSON
        res_body = json.loads(res_body)
        #Obtenir le résultat de l'analyse à partir du corps de la réponse
        return res_body
Convertir en connexion continue
abe.py
#/_/_/_/_/_/_/_/_/_/_/_/_/CONVERSION_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
def convert(word):
    file_name = "./data/Verb.csv"
    with open(file_name,"r") as f:
        handler = csv.reader(f)
        for row in handler:
            if word == row[10]: #Découverte des paroles de la partie
                if "Connexion continue" in row[9]: #Découverte de l'utilisation
                    return row[0]
    return None
Synonymes
abe.py
#/_/_/_/_/_/_/_/_/_/_/_/_/SYNONYM_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#Le code de cette partie est tiré d'ici.
# https://www.yoheim.net/blog.php?q=20160201
conn = sqlite3.connect("./data/wnjpn.db")
Word = namedtuple('Word', 'wordid lang lemma pron pos')
def getWords(lemma):
  cur = conn.execute("select * from word where lemma=?", (lemma,))
  return [Word(*row) for row in cur]
Sense = namedtuple('Sense', 'synset wordid lang rank lexid freq src')
def getSenses(word):
  cur = conn.execute("select * from sense where wordid=?", (word.wordid,))
  return [Sense(*row) for row in cur]
Synset = namedtuple('Synset', 'synset pos name src')
def getSynset(synset):
  cur = conn.execute("select * from synset where synset=?", (synset,))
  return Synset(*cur.fetchone())
def getWordsFromSynset(synset, lang):
  cur = conn.execute("select word.* from sense, word where synset=? and word.lang=? and sense.wordid = word.wordid;", (synset,lang))
  return [Word(*row) for row in cur]
def getWordsFromSenses(sense, lang="jpn"):
  synonym = {}
  for s in sense:
    lemmas = []
    syns = getWordsFromSynset(s.synset, lang)
    for sy in syns:
      lemmas.append(sy.lemma)
    synonym[getSynset(s.synset).name] = lemmas
  return synonym
def getSynonym (word):
    synonym = {}
    words = getWords(word)
    if words:
        for w in words:
            sense = getSenses(w)
            s = getWordsFromSenses(sense)
            synonym = dict(list(synonym.items()) + list(s.items()))
    return synonym
abe.py
#/_/_/_/_/_/_/_/_/_/_/_/_/MAIN_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
if __name__ == '__main__':
    #Obtenez l'emplacement du fichier source
    APP_ROOT = os.path.dirname(os.path.abspath( __file__)) + "/"
    #Obtenir la valeur définie
    config = configparser.ConfigParser()
    config.read(APP_ROOT + "config.ini")
    CLIENT_ID = config.get("COTOHA API", "Developer Client id")
    CLIENT_SECRET = config.get("COTOHA API", "Developer Client secret")
    DEVELOPER_API_BASE_URL = config.get("COTOHA API", "Developer API Base URL")
    ACCESS_TOKEN_PUBLISH_URL = config.get("COTOHA API", "Access Token Publish URL")
    #Instanciation de l'API COTOHA
    cotoha_api = CotohaApi(CLIENT_ID, CLIENT_SECRET, DEVELOPER_API_BASE_URL, ACCESS_TOKEN_PUBLISH_URL)
    #Déclaration à analyser
    if len(sys.argv) >= 2:
        sentence = sys.argv[1]
    else:
        raise TypeError
    #Prenez un verbe de la phrase originale et convertissez-le en une connexion de forme continue
    result = cotoha_api.parse(sentence)
    ret = ""
    verb = ""
    for chunk in result["result"]:
        for token in chunk["tokens"]:
            if token["pos"] == "Tronc de verbe":
                verb = token["lemma"]
                form = token["form"]
                conv_verb = convert(verb)
                if conv_verb==None:
                    ret += form
                else:
                    ret += conv_verb
                if ret[-1] == "Hmm":
                    ret += "Mais"
                else:
                    ret += "Oui mais"
                break
            else:
                ret += token["form"]
    #Prendre des synonymes pour les verbes
    synonym = getSynonym(verb)
    noun = ""
    sim = 0.
    #Extraire les synonymes de la nomenclature la plus similaire
    for syns in synonym.values():
        for syn in syns:
            result = cotoha_api.parse(syn)['result'][0]['tokens'][0]
            if result['pos'] == 'nom':
                cand = result['form']
                cand_sim = cotoha_api.similarity(sentence, cand+'Faire')['result']['score']
                if cand_sim > sim:
                    noun = result['form']
                    sim = cand_sim
    ret += noun
    ret += "Pas fini"
    #Sortie finale
    print(ret)
config.ini
#Pour utiliser l'API COTOHA, inscrivez-vous auprès de l'API COTOHA pour obtenir un ID et SECRET,
# config.Vous devez créer un fichier ini.
# https://api.ce-cotoha.com/contents/index.html
[COTOHA API]
Developer API Base URL: https://api.ce-cotoha.com/api/dev/nlp/
Developer Client id: IDIDIDIDIDIDIDIDIDIDIDIDIDIDIDI
Developer Client secret: SECRETSECRETSECRETSECRET
Access Token Publish URL: https://api.ce-cotoha.com/v1/oauth/accesstokens
5. Je l'ai essayé, mais je ne l'ai pas fait.
$ python abe.py "boire de l'alcool"
Je bois, mais je ne le suis pas
$ python abe.py "Rentrer à la maison"
Je suis à la maison, mais je ne suis pas à la maison
$ python abe.py "Voir les fleurs de cerisier"
Je vois les fleurs de cerisier, mais je ne les ai pas vues
$ python abe.py "Manger des sushis"
Je mange des sushis, mais je ne mange pas
$ python abe.py "Invitez à la veille"
J'ai été invité à la veille, mais je ne l'ai pas fait.
 ** Autres choses que j'ai essayées ** (cliquez)  summary> 
$ python abe.py "Reste à l'hotel"
Je reste à l'hôtel, mais je ne reste pas
$ python abe.py "répondez aux questions"
A répondu à la question mais pas de réponse
$ python abe.py "Dormir la nuit"
Je dors la nuit, mais je ne dors pas
$ python abe.py "Faire un tour dehors"
Je marche dehors, mais je ne marche pas
$ python abe.py "Voir le net"
Je regarde le net, mais je n'ai pas vérifié
$ python abe.py "Acheter de la viande"
J'achète de la viande, mais pas
$ python abe.py "Brûle le feu"
Feu brûlant, mais pas brûlant
6. <Édition supplémentaire> Syntaxe de Shinjiro Koizumi


6.1 J'ai dit que j'essayais, mais j'essayais
$ python sexy.py 'Je tiens une promesse'
J'ai dit que je tenais ma promesse, mais je la tenais.
$ python sexy.py 'Hospitalité aux étrangers'
J'ai dit que je recevais des étrangers, mais je leur souhaite la bienvenue.
$ python sexy.py 'Faites une pause dans l'entreprise'
J'ai dit que j'étais absent du travail, mais je me reposais.
$ python sexy.py 'Résoudre les problèmes environnementaux'
J'ai dit que je travaillais sur les questions environnementales, mais j'y suis confronté.
$ python sexy.py 'Détruire NHK'
J'ai dit que vous détruisez nhk, mais vous le détruisez.
7. Résumé mais non résumé
8. Je le vois, mais je n'y fais pas référence