Je vais faire du traitement du langage naturel pour la première fois. C'est exitant. Cet article est [Plan actuel de l'API Qiita x COTOHA] Analysons le texte avec l'API COTOHA! ](Https://zine.qiita.com/event/collaboration-cotoha-api/?utm_source=qiita&utm_medium=banner). ~~ Je veux trop de prix! ~~ J'étais à temps pour poster.
Tout d'abord, je présenterai brièvement ce qu'il faut faire. Le suivant a été fait ↓
python3 bubuduke.py "Hetaxo"
"Ne sois pas bon"
Je vais faire un traducteur de valve Kyoto comme celui-ci. Bubu-zuke est délicieux! Yay!
Avec ce flux, si vous le remarquez, vous disposez d'un outil pratique comme celui ci-dessus. Très facile.
Inscrivez-vous maintenant gratuitement à partir ici. Envoyez votre adresse e-mail et créez un compte. Connectez-vous si vous le pouvez. Ensuite, vous verrez cet écran. (Publicité jusqu'à présent)
Quant à ce site, je n'utiliserai l'ID que plus tard, c'est donc la fin.
Pour le dire très simplement, traiter les mots (= langage naturel) que les humains utilisent habituellement. Non, n'est-ce pas comme ça? Ce qui est difficile à ce sujet, c'est que ** les langues naturelles, en particulier le japonais, ne sont pas bien définies **.
«Pas bien défini» signifie que la définition n'attribue pas d'interprétation ou de valeur unique. Vous pouvez penser à plusieurs interprétations d'une phrase ici.
Prenons un exemple simple. Comme suit. Personne ne voit cela et pense qu'il n'est pas bon de faire caca. Cependant, si vous essayez d'écrire cette phrase littéralement avec un pseudo-code, ce sera comme ça.
si jeté== "Papier toilette" then
Vous pouvez jeter
cette? J'ai l'impression que je ne peux pas me débarrasser de ça.
La valve Kyoto que j'ai décidé de manipuler cette fois. Par exemple, comme ça.
Ci-dessus se trouve le célèbre Bubu-zuke. Bubu-zuke devrait signifier Ocha-zuke à Kyoto Ben. Même ainsi, être conseillé de cornichons à Bubu signifie que vous devriez rentrer chez vous. Je ne comprends pas.
Laissez-moi vous donner un autre exemple.
Je suis désolé, le déraillement est long. Il y a beaucoup d'autres mots dégoûtants de Kyoto, mais je les omettrai. Si vous êtes intéressé, je pense que vous pouvez en trouver divers ici. En bref, ** Kyoto Ben est insidieux et est le comble des mots qui ne sont pas bien définis. ** **
Dans le traitement du langage naturel, les mots et la syntaxe sont traités par rapport aux informations de ces langages naturels. Après tout, je n'explique que le langage naturel. Désormais, nous traiterons un langage naturel appelé japonais et implémenterons un robot capable de répondre à un "style" de valve de Kyoto aussi insidieux.
Ignorez la partie qui fait le bot pour le moment et procédez au traitement du langage naturel. ~~ Pour être honnête, c'est l'essence même, vous n'avez donc rien à lire d'autre. ~~ L'essence vient d'ici, mais COTOHA était si incroyable qu'elle s'est terminée bientôt.
Pour le moment, acceptez l'entrée et essayez de la traiter légèrement. Il s'agit d'une démo qui reçoit des phrases et ne renvoie que la nomenclature. J'ai fait référence à Masterpiece. La puissance de Library est si incomplète que cela peut être fait sans rien savoir. Tout d'abord, mettez la bibliothèque.
pip install git+https://github.com/obilixilido/cotoha-nlp.git
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 ["nom"]]))
Je le publierai à nouveau plus tard, mais j'ai publié l'exemple de code sur GitHub, alors jetez-y également un œil.
Exécutons ce code. Si vous entrez dans l'ordre de chaîne de caractères du nom de fichier python
, le résultat du traitement de la chaîne de caractères sera renvoyé.
python samplecode1.py Spring est Akebono. Oui, allons à Kyoto.
Ensuite, il reviendra.
>>Printemps Akebono Kyoto
Qu'est-ce que tu penses. Avec autant de code, j'ai pu faire un bon traitement du langage naturel. C'est trop dangereux. ~~ Je ne comprends rien. ~~
Ensuite, je voudrais commencer à implémenter le bot Kyoto Benfu. Grattage depuis le site précédent, s'il existe une traduction japonaise qui correspond à la nomenclature extraite, retournez la valve Kyoto. Voici le flux de fabrication à partir d'une entrée japonaise ordinaire.
Je vais gratter, alors je vais mettre dans une petite bibliothèque.
pip3 install requests
pip3 install beautifulsoup4
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 ["nom"]]
# 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):
#Découpez la valve Kyoto à l'intérieur de l'étiquette forte
output = re.findall('<strong>.*</strong>', str(tag))
out = output[0]
out = out.replace("<strong>", "")
out = out.replace("</strong>", "")
print(out)
Exécutez immédiatement.
python bubuduke.py "Ennuyeux"
L'insidieux Kyoto Ben est de retour!
>>«Jeune femme, tu es douée pour jouer du piano»
C'est la fin de la partie traitement du langage naturel. La prochaine fois, je ferai juste un bot. Le genre va changer et cet article se termine ici.
Je veux en faire un bot LINE. Je veux améliorer un peu plus la précision. Je veux ramasser des mots qui ne correspondent pas exactement. Il y a très peu de mots qui correspondent jusqu'à présent. J'écrirai à nouveau à ce sujet la prochaine fois.
Dépôt de code utilisé cette fois Référence Après tout, la référence officielle est la meilleure pour n'importe quelle langue, bibliothèque, framework, etc.
Merci d'avoir lu jusqu'au bout. ~~ Je veux trop de prix ~~ LGTM s'il vous plaît. Si LGTM ne l'accepte pas, cette zone Veuillez vous y référer.
Recommended Posts