Motive [Derzeitiger Plan für die Qiita x COTOHA-API] Dies ist ein verwandter Beitrag.
Ich habe versucht, eine andere API zu verwenden als Problem, dass mir Schokolade nicht gemacht wird, selbst wenn ich mit der COTOHA-API zusammenarbeite.
Diesmal Extraktion eindeutiger Ausdrücke (/ nlp / v1 / ne) API.
Mit MeCab habe ich das Gefühl, dass ich den Namen der Person nicht extrahieren konnte, ohne die richtige Nomenklatur zu lernen und sie im Wörterbuch zu registrieren. Auch KNP scheint eine gute Genauigkeit zu haben, aber das Paket selbst ist schwer. : Schrei: Wenn eine morphologische Analyse durchgeführt wird, ist es auch möglich, selbst den Teil des Verteilers genau auszugeben, ob der maschinell erlernte Verteiler ausgezeichnet ist, aber ich bin der Meinung, dass dies nicht der Fall ist, wenn ich die Nomenklatur klassifizieren könnte, die häufig im Satz vorkommt. Ich werde. COTOHA klassifiziert die Nomenklatur nur nach API im Detail.
Um leicht zu versuchen, wie weit die richtige Nomenklatur extrahiert werden kann, habe ich versucht, den Namen der Person und den Namen der Technik aus dem Sportartikel auszugeben.
Environment
Dataset Tokyo Sports Das Auswahlkriterium ist ein wichtiger Grund dafür, dass diese Sportzeitung in Ihrem Wohngebiet nicht erhältlich ist. : camera_with_flash:
Method Wie oben erwähnt COTOHA API-spezifische Extraktion https://api.ce-cotoha.com/contents/reference/apireference.html#parsing_io_part Ich benutze.
Der Spieler (die Person) ist "x [" Klasse "] ==" PSN "und x [" erweiterte_Klasse "] ==" ", der Name der Technik ist" x ["Klasse"] == "ART" und x ["erweiterte_Klasse". "] im [
"Doctrine_Method_Other"] Es wird mit extrahiert.
Doctrine_Method_Other` bedeutet (Hauptmethode name_other).
Name | Erläuterung |
---|---|
ORG | Name der Organisation |
PSN | Name der Person |
LOC | Ort |
ART | Einzigartiger Name |
DAT | Datumsdarstellung |
TIM | Zeitdarstellung |
NUM | Numerische Darstellung |
MNY | Betragsausdruck |
PCT | Prozentualer Ausdruck |
OTH | Andere |
Development
Script
import argparse
import requests
from bs4 import BeautifulSoup
import json
#---Holen Sie sich diese 4 Parameter in 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)
#Abkürzung ist ausgeschlossen
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()
#API-Objekt erstellen
cotoha = COTOHA()
#Artikel von URL abrufen(Tokio Sportspezifikationen)
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")
#Extraktionsbedingung
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"]
#Spieler ausgeben
print(extract_norn_list(cotoha, contents, is_person))
#Name der Ausgabetechnik
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
Führen Sie mit zwei Artikeln aus.
https://www.tokyo-sports.co.jp/prores/njpw/1682622/
dataset
In der IWGP / US-Schwergewichtsmeisterschaft, die an der größten Abendkasse des Jahres "Wrestle Kingdom 14" (Tokyo Dome am 5.) stattfand, war Champion John Moxley (34) der IWGP-Tag-Champion Juice Robinson (30). Er lehnte die Herausforderung ab und gelang seine erste Verteidigung.
Beim Tokyo Dome Tournament am Abend zuvor (4.) gewann Moxley den Titel von Reims Archer (32) zurück. Juice gewann die Tag Championship in Kombination mit David Finley (26). Am nächsten Tag war es ein entscheidender Kampf zwischen den neuen Champions, aber Moxley hatte Juice letzten Juni den Thron abgenommen und erklärt, dass er sich in der Nacht zuvor auf dem Ring niederlassen würde.
In der Anfangsphase übernahm Juice die Führung, aber Moxley nahm einen Stuhl vor dem Veranstaltungsort heraus und schlug ihm auf den Rücken. Außerdem beißt es auf die Stirn des Saftes. Ein rauer Mann, der während der WWE-Ära als "verrückter Hund" tobte, gewann sein Tempo gewaltsam zurück.
Saft konterte mit einer gewagten Hochwinkel-Kraftbombe, aber der Champion feuerte eine Reihe unerwarteter Angriffe mit einer vierförmigen Eisensäule eines vierbeinigen Charakters ab. Der Herausforderer ist Deutscher vom Lawinenhirnbuster bis zu Jack Hammer. Ich bin Moxleys Deslider (DDT mit zwei Armen) ausgewichen und habe ihn mit Lariart ausgestanzt.
Der Champion blitzt jedoch ein starkes laufendes Knie aus der zerschmetterten Schlacht. Nachdem er die Fruchtfleischreibung des Saftes zurückgedreht hatte, explodierte er einen tödlichen Deslider aus dem DDT und nahm 3 Zählungen nach 12 Minuten und 48 Sekunden vor.
Nach dem Match wurde das Lied zum Eingangsthema gespielt und Minoru Suzuki (51) erschien plötzlich. Beim Hiroshima-Turnier am 8. Dezember letzten Jahres wurde ich von einem Deslider aus einer Moschee getroffen, und ich kann meinen Ärger nicht mit einem schroffen Blick verbergen. Nachdem er das Trikot auf der Blumenstraße ausgezogen und sich auf den Kampf vorbereitet hatte, traf er den Champion und den Ellbogen am Ring. Minoru, der mächtig ist, KOed Moxley mit einem Gotch-Rammgerät aus bloßer Strangulation.
Minoru griff nach dem Mikrofon und erklärte den Krieg: "An wen verkaufst du den Kampf, diese Schafgarbe? Ich bin Minoru Suzuki, ein professioneller Wrestler. Ich werde diesen Kampf kaufen!" Der Ausbruch eines "Tollwut" gegen "Bösewicht" über dem US-Thron gab einen gefährlichen Geruch ab.
Minorus Geschichte "An wen verkaufen Sie Kämpfe? Hey. Ich habe darauf gewartet, dass Sie vor mich kommen. John Moxley ... Nein, John Boy, passen Sie auf mich auf. Ich werde Sie töten."
Juices Geschichte "Hier endet alles. John Moxley war heute stärker als ich. Ich konnte es nicht noch einmal übertreffen. Ich habe heute nach dem gestrigen Spiel an heute gedacht. Bis dahin das heutige Spiel. Daran habe ich nicht gedacht. "
output
['John Moxley', 'Lance Archer', 'David Finley', 'Minoru Suzuki', 'John Boy']
['Fuß 4 Zeichen Konsolidierung', 'Lawine', 'Jack Hammer', 'Lariart', 'Nackte Strangulation']
https://www.tokyo-sports.co.jp/prores/njpw/1681815/
dataset
Tetsuya Naito (37) besiegte Champion Jay White (27) bei der IWGP Intercontinental (IC) Championship, die an der größten Abendkasse von New Japan Pro-Wrestling "Wrestle Kingdom 14" (Tokyo Dome am 4.) stattfand. Zusätzlich zur Wiedererlangung des Titels erreichte er am 5. beim Tokyo Dome-Turnier ein Doppeltitel-Match mit dem IWGP-Schwergewichts-Champion (Gewinner von Okada Kazuchika gegen Kota Iibushi).
Beim Kobe-Turnier im September letzten Jahres gegen Jay verloren und letztes Jahr zum zweiten Mal vom IC-Titel gefallen. Beim "Pro-less Grand Prize" der Tokyo Sports Newspaper erlebte er auch die Demütigung der Nominierung "0". Eine große Menge wartet jedoch auf die Auferstehung des "außer Kontrolle geratenen Mannes". Als er sich von Anfang an mit einem großen Naito-Anruf den Rücken drückte, gab er Jay einen gnadenlosen Boo.
Naito übernahm die Führung, indem er mit einer Schürze außerhalb des Veranstaltungsortes auf einen Nackenbrecher schoss. Jays zweite Außenstraße zieht jedoch Naitos Bein von außen und stört das Tempo. Der Champion konzentrierte sich auf Naitos linkes Knie und griff an. Naito springt aus der Ecke und wehrt sich mit Frankensteiner. Es ist ein Drop-Kick in geringer Höhe, der nach dem Spucken auf das Gesicht des Gegners aufgespießt wird.
Es schien, als würde dies das Tempo halten, aber er war in Qual, nachdem er Jays DDT gegessen hatte und wurde erneut auf seinem linken Knie angegriffen. Es wird mit einem Rückfall aus der Halle geworfen, und die Minderwertigkeit ändert sich nicht. Darüber hinaus wurden die Knie mit dem Charakter des hinteren Fußes 4 gestrafft.
Naito bricht zur Not das Seil und verzerrt sein Gesicht. Als ich entkommen konnte, war es ein Gegenangriff. Darüber hinaus der Ansturm von Spine Buster, Rotary DDT, Lawine Frankensteiner und Gloria. Die Außenstraße brach in die Lücke ein, als der Schiedsrichter aufgrund eines Unfalls ausfiel, aber er wurde von einem Schleichangriff zurückgeschlagen.
Naito, der das Spiel spielte, feuerte eine Reihe von Destino im Coryend-Stil ab. Nachdem er Jays tödlichen Klingenläufer (verwandeltes Gesichtsquetschen) vollständig verhindert hatte, nahm er schließlich 3 Zählungen mit dem ganzen Körper von Destino vor.
Umkehrsieg in der heftigen Schlacht von 33 Minuten 54 Sekunden. Der "unkontrollierbare Mann", der sich seit Januar letzten Jahres für zwei Kronen mit IWGP und IC einsetzt, wird die große Bühne der Generation herausfordern, die Wiederbelebung abzuschließen.
[Naitos Geschichte] "Der Zweck dieser Zwei-Spiele-Serie ist nicht, diesen Gürtel zu nehmen. Ich bin froh, dass der Kunde" Glückwunsch an Naito "sagte. Aber Tranquilo. Es ist nicht der Zweck dieser Zeit, also da. Nun, welches ist der Gegner von morgen? Mein Plan ist Okada. Ideal ist Okada. Komm schon. "
[Jay Whites Geschichte] "Wo ist er (Naito) hingegangen ... Ich war leider einer der Nebenspieler in der Geschichte, die jeder gemacht hat. Jeder wollte, dass Jay White verliert. Es muss gewesen sein. Naito, den du magst, hat gewonnen. Warum lachst du nicht? Mein neuer Destino ... Das Schicksal beginnt morgen. "
output
['Tetsuya Naito', 'Jay White', 'Okada Kazuchika', 'Kota Iibushi', 'Destino...Schicksal']
['Halsabschneider', 'Zurück fallen', 'Fuß 4 Zeichen Konsolidierung', 'Wirbelsäulen-Buster']
Consideration
――Die Namen der Spieler werden mit Ausnahme von "Destino ... Fate" extrahiert. Es scheint, dass allgemeine Personennamen ohne Probleme klassifiziert werden können.
――Es ist ein technischer Name, der jedoch leider nicht in der COTOHA-API-Klassifizierung enthalten ist. Die Kombination, die aus der Ausgabe der API mehrmals am besten extrahiert zu werden scheint, war class: ART, extended_class: Doctrine_Method_Other
, also habe ich versucht, sie auszugeben, aber ich habe versucht, sie auszugeben, aber" High Angle Power Bomb "und" Coryend Type Destino " "Ist nicht abgedeckt. Wenn Sie als zweite Bedingung "Klasse: ART, erweiterte_Klasse: Produkt" hinzufügen, wird ein anderer Name als der Name der Technik extrahiert, sodass 100% streng waren: müde_gesicht:
――Wenn es sich eher um ein Fachbuch als um einen Sportartikel handelt, kann es effektiv sein. Dies liegt daran, dass die folgenden Typparameter zur API hinzugefügt werden können. (Nur für Enterprise-Benutzer, daher gegen Gebühr erhältlich.)
param | name |
---|---|
IT | Computer / Information / Kommunikation |
automobile | Wagen |
chemistry | Chemie- und Erdölindustrie |
company | Unternehmen |
construction | Tiefbau und Bau |
economy | Wirtschaft / Gesetze |
energy | Kraft / Energie |
institution | Institution / Organisation |
machinery | Maschine |
medical | Medizin |
metal | Nicht Eisen / Metall |
PostScript Ich sagte, dass die Genauigkeit der Extraktion von Personennamen gut ist, aber aus irgendeinem Grund wurde der kürzlich pensionierte "Beast God Thunder Liger" nicht korrekt extrahiert. Es wurde als "ART: Unique object name" klassifiziert. : japanese_ogre: Ist es nicht besser, die Mitarbeiter des Talentverzeichnisses zu entsenden und zu unterstützen? Als: Sushi :.
Recommended Posts