Motive [Plan actuel de l'API Qiita x COTOHA] Ceci est un article connexe.
J'ai essayé d'utiliser une API différente de Le problème qui me donne du chocolat n'est pas fait même si je collabore avec l'API COTOHA.
Cette fois Extraction d'expressions uniques (/ nlp / v1 / ne) API.
Avec MeCab, j'ai l'impression que je ne pourrais pas extraire le nom de la personne sans apprendre la nomenclature appropriée et l'enregistrer dans le dictionnaire. En outre, KNP semble avoir une bonne précision, mais le paquet lui-même est lourd. : crier: De plus, lorsque l'analyse morphologique est effectuée, il est possible d'indiquer avec précision même la partie du distributeur si le distributeur appris par machine est excellent, mais je pense que ce n'est pas le cas si je pouvais classer la nomenclature qui apparaît beaucoup dans la phrase. Je vais. COTOHA classe la nomenclature en détail uniquement par API.
Afin d'essayer facilement jusqu'où la nomenclature appropriée peut être extraite, j'ai essayé de sortir le nom de la personne et le nom de la technique de l'article sportif.
Environment
Dataset Tokyo Sports Les critères de sélection sont une raison noble pour laquelle ce journal sportif n'est pas disponible dans la région où vous habitez. : camera_with_flash:
Method Comme mentionné ci-dessus Extraction spécifique API COTOHA https://api.ce-cotoha.com/contents/reference/apireference.html#parsing_io_part J'utilise.
Le joueur (personne) est x [" class "] ==" PSN "et x [" extended_class "] ==" "
, le nom de la technique est x ["class"] == "ART" et x ["extended_class" "] dans [ "Doctrine_Method_Other"]
Il est extrait avec. Doctrine_Method_Other
signifie (méthode principale name_other).
Nom | La description |
---|---|
ORG | Nom de l'organisation |
PSN | Nom d'une personne |
LOC | endroit |
ART | Nom unique |
DAT | Représentation de la date |
TIM | Représentation du temps |
NUM | Représentation numérique |
MNY | Expression de montant |
PCT | Expression de pourcentage |
OTH | Autre |
Development
Script
import argparse
import requests
from bs4 import BeautifulSoup
import json
#---Obtenez ces 4 paramètres dans Portal---
PUBLISH_URL = "--- get your parameter ---"
CLIENT_ID = "--- get your parameter ---"
CLIENT_SECRET = "--- get your parameter ---"
BASE_URL = "--- get your parameter ---"
class COTOHA:
def __init__(self):
self._token = self._getAccessToken()
def _getAccessToken(self):
header = {"Content-Type": "application/json"}
contents = {
"grantType": "client_credentials",
"clientId": CLIENT_ID,
"clientSecret": CLIENT_SECRET
}
raw_res = requests.post(PUBLISH_URL, headers=header, json=contents)
response = raw_res.json()
return response["access_token"]
def compose(self, sentence):
header = {
"Authorization": "Bearer {}".format(self._token),
"Content-Type": "application/json"
}
contents = {
"sentence": sentence
}
raw_res = requests.post(
BASE_URL +
"nlp/v1/parse",
headers=header,
json=contents)
response = raw_res.json()
return response
def properNoun(self, sentence):
header = {
"Authorization": "Bearer {}".format(self._token),
"Content-Type": "application/json"
}
contents = {
"sentence": sentence
}
raw_res = requests.post(
BASE_URL +
"nlp/v1/ne",
headers=header,
json=contents)
response = raw_res.json()
return response
def keyword(self, sentence):
header = {
"Authorization": "Bearer {}".format(self._token),
"Content-Type": "application/json"
}
contents = {
"document": sentence
}
raw_res = requests.post(
BASE_URL +
"nlp/v1/keyword",
headers=header,
json=contents)
response = raw_res.json()
return response
def coreference(self, sentence):
header = {
"Authorization": "Bearer {}".format(self._token),
"Content-Type": "application/json"
}
contents = {
"document": sentence
}
raw_res = requests.post(
BASE_URL +
"nlp/v1/coreference",
headers=header,
json=contents)
response = raw_res.json()
return response
def extract_norn_list(_apiobj, contents, condition):
dst = []
for p in contents:
items = _apiobj.properNoun(p.text)["result"]
_raw = list(filter(condition, items))
# print(_raw)
#L'abréviation est exclue
for _p in _raw:
name = _p["form"]
_exist = False
for pname in dst:
if name in pname:
_exist = True
if not _exist:
dst.append(name)
return dst
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--url")
args = parser.parse_args()
#Créer un objet API
cotoha = COTOHA()
#Obtenir des articles depuis l'URL(Spécifications sportives de Tokyo)
res = requests.get(args.url)
soup = BeautifulSoup(res.text, 'html.parser')
title_text = soup.find('title').get_text()
contents = soup.find('div', {"class": "detail-content"}).find_all("p")
#Condition d'extraction
def is_person(x): return x["class"] == "PSN" and x["extended_class"] == ""
def is_attack(x): return x["class"] == "ART" and x["extended_class"] in [
"Doctrine_Method_Other"]
#Lecteur de sortie
print(extract_norn_list(cotoha, contents, is_person))
#Nom de la technique de sortie
print(extract_norn_list(cotoha, contents, is_attack))
if __name__ == "__main__":
main()
Command
python main.py --url https://www.tokyo-sports.co.jp/prores/ddt/1754700/
Consequence
Exécutez avec deux articles.
https://www.tokyo-sports.co.jp/prores/njpw/1682622/
dataset
Dans le championnat IWGP / US Heavyweight, qui s'est déroulé au plus grand box-office de l'année "Wrestle Kingdom 14" (Tokyo Dome le 5), le champion John Moxley (34 ans) était le champion du tag IWGP Juice Robinson (30 ans). Il a rejeté le défi et a réussi sa première défense.
Lors du Tokyo Dome Tournament la veille (4e), Moxley a repris le titre à Reims Archer (32). Juice a remporté le championnat Tag en combinaison avec David Finley (26). Le lendemain, c'était une bataille décisive entre les nouveaux champions, mais Moxley avait pris le trône de Juice en juin dernier et avait déclaré qu'il s'installerait sur le ring la nuit précédente.
Au début, Juice a pris les devants, mais Moxley a pris une chaise à l'extérieur de la salle et lui a frappé le dos. De plus, il mord sur le front du jus. Un homme brutal qui s'est déchaîné en tant que «chien fou» pendant l'ère de la WWE a repris de force son rythme.
Juice a contre-attaqué avec une bombe électrique audacieuse à grand angle, mais le champion a lancé une série d'attaques inattendues avec un pilier de fer en forme de quatre à partir d'un personnage à quatre pattes. Le challenger est allemand, de l'avalanche brain buster à Jack Hammer. J'ai évité le Deslider de Moxley (DDT de type à double bras) et l'ai frappé avec Lariart.
Cependant, le champion montre un genou puissant après la bataille fracassante. Il a inversé le frottement de la pulpe du jus et a fait exploser un deslider mortel du DDT, prenant 12 minutes 48 secondes et 3 comptes.
Après le match, la chanson thème d'entrée a été jouée et Minoru Suzuki (51 ans) est soudainement apparu. Lors du tournoi d'Hiroshima le 8 décembre de l'année dernière, il a été frappé par un deslider d'une mosquée, et il ne peut pas cacher sa colère avec un regard dur. Après avoir enlevé le maillot sur la route des fleurs et se préparer pour la bataille, il a rencontré le champion et le coude sur le ring. Minoru, qui est puissant, a mis Moxley KO avec un pilote de pile de type Gotch par strangulation nue.
Minoru attrapa le micro et déclara la guerre: "A qui vendez-vous le combat, cette Yarrow! Je suis Minoru Suzuki, un lutteur professionnel. J'achèterai ce combat!" L'épidémie de «rage» contre «méchant» sur le trône américain a dégagé une odeur dangereuse.
L'histoire de Minoru "A qui vendez-vous des combats? Hé. J'attendais que vous veniez devant moi. John Moxley ... Non, John Boy, prends soin de moi. Je te tuerai."
L'histoire de Juice "Tout se termine ici. John Moxley était plus fort que moi aujourd'hui. Je ne pouvais plus le surpasser. J'ai pensé à aujourd'hui après le match d'hier. Jusque-là, le match d'aujourd'hui. Je n'y ai pas pensé. "
output
['John Moxley', 'Lance Archer', 'David Finley', 'Minoru Suzuki', 'John Boy']
['Consolidation des caractères du pied 4', 'avalanche', 'Jack Hammer', 'Lariart', 'Strangulation nue']
https://www.tokyo-sports.co.jp/prores/njpw/1681815/
dataset
Tetsuya Naito (37 ans) a battu le champion Jay White (27 ans) au championnat IWGP Intercontinental (IC) qui s'est tenu au plus grand box-office de New Japan Pro-Wrestling "Wrestle Kingdom 14" (Tokyo Dome le 4). En plus de regagner le titre, il s'est qualifié pour un double match pour le titre avec le champion poids lourd IWGP (vainqueur d'Okada Kazuchika VS Kota Iibushi) au Tokyo Dome Tournament le 5.
Perdu contre Jay au tournoi de Kobe en septembre de l'année dernière, et est tombé du titre IC pour la deuxième fois l'année dernière. Lors du «Pro-less Grand Prize» établi par le Tokyo Sports Newspaper, il a également connu l'humiliation de la nomination «0». Cependant, une grande foule attend la résurrection de «l'homme incontrôlable». Quand il a repoussé son dos avec un gros appel Naito depuis le début, il a donné à Jay un huée impitoyable.
Naito a pris les devants en tirant sur un brise-cou à l'aide d'un tablier à l'extérieur de la salle. Cependant, la deuxième route extérieure de Jay tire la jambe de Naito de l'extérieur et perturbe le rythme. Le champion s'est concentré sur le genou gauche de Naito et a attaqué. Naito saute du coin et se bat avec Frankensteiner. C'est un coup de pied tombant à basse altitude qui est embroché après avoir craché sur le visage de l'adversaire.
Il semblait que cela garderait le rythme, mais il était à l'agonie après avoir mangé du DDT de Jay et a de nouveau été attaqué au genou gauche. Il est jeté hors de la salle avec une toile de fond, et l'infériorité ne change pas. De plus, les genoux ont été resserrés avec le caractère du pied arrière 4.
Naito dans un gros pincement brise la corde tout en déformant son visage. Quand j'ai réussi à m'échapper, c'était un coup de pied de contre-attaque. En outre, l'assaut du spine buster, du DDT rotatif, de l'avalanche Frankensteiner et de Gloria. La route extérieure a fait irruption dans l'espace lorsque l'arbitre est tombé à cause d'un accident, mais il a repoussé avec une attaque sournoise.
Naito, qui a joué le jeu, a tiré une série de Destino de type Coryend. Après avoir complètement empêché le coureur de lame mortel de Jay (écrasement du visage transformé), il a finalement pris 3 chefs d'accusation avec tout le corps de Destino.
Victoire inversée dans la bataille acharnée de 33 minutes 54 secondes. «L'homme incontrôlable» qui prône l'ambition de remporter deux couronnes avec l'IWGP et IC depuis janvier de l'année dernière défiera la grande scène de la génération pour achever le renouveau.
[L'histoire de Naito] "Le but de cette série de deux jeux n'est pas de prendre cette ceinture. Je suis content que le client ait dit" Félicitations à Naito. "Mais Tranquilo. Ce n'est pas le but de cette fois, alors là. Eh bien, quel est l'adversaire de demain? Mon plan est okada. L'idéal est okada. Allez. "
[Histoire de Jay White] "Où est-ce qu'il (Naito) est allé ... J'étais malheureusement l'un des acteurs secondaires de l'histoire que tout le monde a faite. Tout le monde voulait que Jay White perde. Ça a dû l'être. Naito, qui tu aimes, a gagné. Pourquoi tu ne ris pas. Mon nouveau Destino ... Le destin commence demain. "
output
['Tetsuya Naito', 'Jay White', 'Okada Kazuchika', 'Kota Iibushi', 'Destino...destin']
['Brise-cou', 'Toile de fond', 'Consolidation des caractères du pied 4', 'Buster de colonne vertébrale']
Consideration
――Les noms des joueurs sont extraits à l'exception de "Destino ... Fate". Il semble que les noms généraux des personnes puissent être classés sans problème.
――C'est un nom technique, mais malheureusement, il n'apparaît pas dans la classification API COTOHA. La combinaison qui semble être la plus extractible de la sortie de l'API à plusieurs reprises était class: ART, extended_class: Doctrine_Method_Other
, donc j'ai essayé de la sortir, mais j'ai essayé de la sortir, mais" bombe à fort angle "" corriend type Destino "N'est pas couvert. Si vous ajoutez class: ART, extended_class: Product
comme deuxième condition, autre que le nom de la technique sera extrait, donc 100% était strict: fatigue_face:
――S'il s'agit d'un livre spécialisé plutôt que d'un article sportif, cela peut être efficace. En effet, les paramètres de type suivants peuvent être ajoutés à l'API. (Uniquement pour les utilisateurs Enterprise ,,, donc il peut être utilisé s'il est payé.)
param | name |
---|---|
IT | Informatique / Information / Communication |
automobile | Voiture |
chemistry | Industrie chimique et pétrolière |
company | Compagnie |
construction | Génie civil et construction |
economy | Économie / lois |
energy | Puissance / énergie |
institution | Institution / organisation |
machinery | machine |
medical | Médicament |
metal | Non-fer / métal |
PostScript J'ai dit que la précision de l'extraction du nom de personne est bonne, mais pour une raison quelconque, le "Beast God Thunder Liger" récemment retiré n'a pas été extrait correctement. Il a été classé comme "ART: Nom d'objet unique". : japonais_ogre: N'est-il pas préférable d'envoyer et de soutenir le personnel du répertoire des talents: réflexion:. Comme: sushi:.
Recommended Posts