Background [Qiita x COTOHA API präsentieren Plan] Ich machte mir darüber Sorgen und beschloss, es für eine Weile zu benutzen.
MeCab oder KNP sind berühmte Bibliotheken für die Verarbeitung natürlicher Sprache, aber ich schämte mich, die COTOHA-API bei dieser Veranstaltung zum ersten Mal zu kennen.
Motive Es mag persönlich eine kleine Hürde sein, aber ich habe zuerst versucht, die Korrespondenzanalyse-API zu verwenden. Bei dieser Analyse werden Synonyme ("Ich", "Sie", "Er" usw.) und Anweisungen ("Das", "Dies") in Sätzen durch solche Personen und Objekte ersetzt. Der Grund für die Verwendung ist, dass ich es als erste Phase verwenden wollte, um zu klären, wer was getan hat, und es dann zu verarbeiten, wenn ich Zeit hatte.
Ist die Veranstaltung Mitte März? .. ..
Wird es rechtzeitig sein?
Environment
Development
import requests
import json
import time
import sys
#---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 ---"
def getToken():
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 coreference(token, sentence):
header = {
"Authorization": "Bearer {}".format(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
if __name__ == "__main__":
if len(sys.argv) != 2:
sys.exit()
message = sys.argv[1]
token = getToken()
time.sleep(0.5)
print(coreference(token, message))
Als Fluss Get Token-> Rufen Sie jede API auf, die Sie verwenden möchten Es gibt zwei.
Curl macht das gleiche in Python.
$ curl -X POST -H "Content-Type:application/json" -d '{
"grantType": "client_credentials",
"clientId": "[clientid]",
"clientSecret": "[clientsecret]"
}' [Access Token Publish URL
]
$ curl -H "Content-Type:application/json;charset=UTF-8" -H "Authorization:Bearer [access_token]" -X POST -d '{
"document": --Geben Sie hier den zu analysierenden Text ein--
}' "[Developer API Base URL]/nlp/v1/coreference"
Consequence
Lassen Sie uns mit zwei Sätzen analysieren.
$ python main.py Yamada kaufte Cup Nudeln. Er aß köstlich.
{'result': {'coreference': [{'representative_id': 0, 'referents': [{'referent_id': 0, 'sentence_id': 0, 'token_id_from': 0, 'token_id_to': 0, 'form': 'Yamada'}, {'referent_id': 1, 'sentence_id': 0, 'token_id_from': 10, 'token_id_to': 10, 'form': 'er'}]}], 'tokens': [['Yamada', 'Kun', 'Ist', 'Tasse', 'Nudeln', 'Zu', 'Kaufen', 'Tsu', 'Ta', '。', 'er', 'Ist', 'Köstlich', 'damit', 'Zu', 'Essen', 'Hand', 'ich', 'Ta', '。']]}, 'status': 0, 'message': 'OK'}
$ python main.py Yamada gab Saito eine Tasse Nudeln. Er aß köstlich.
{'result': {'coreference': [{'representative_id': 0, 'referents': [{'referent_id': 0, 'sentence_id': 0, 'token_id_from': 0, 'token_id_to': 0, 'form': 'Yamada'}, {'referent_id': 1, 'sentence_id': 0, 'token_id_from': 13, 'token_id_to': 13, 'form': 'er'}]}], 'tokens': [['Yamada', 'Du', 'Ist', 'Saito', 'Du', 'Zu', 'Tasse', 'Nudeln', 'Zu', 'Watari', 'Shi', 'Ta', '。', 'er', 'Ist', '美味Shi', 'damit', 'Zu', 'Essen', 'Hand', 'ich', 'Ta', '。']]}, 'status': 0, 'message': 'OK'}
Consideration
Yamada kaufte Cup Nudeln. Er aß köstlich. `` Dann '' Koreferenz ': [{' repräsentative_ID ': 0,' Referenten ': [{' referent_id ': 0,' Satz_ID ': 0,' token_id_from ': 0,' token_id_to ': 0,' form ':' Yamada ' }, {'referent_id': 1, 'satz_id': 0, 'token_id_from': 10, 'token_id_to': 10, 'form': 'he'}]
Sie können sehen, dass "Yamada-he" verbunden ist.
Aber,
Yamada gab Saito eine Tasse Nudeln. Er aß köstlich. `` Dann '' Koreferenz ': [{' repräsentative_ID ': 0,' Referenten ': [{' referent_id ': 0,' Satz_ID ': 0,' token_id_from ': 0,' token_id_to ': 0,' form ':' Yamada ' }, {'referent_id': 1, 'satz_id': 0, 'token_id_from': 13, 'token_id_to': 13, 'form': 'he'}]
Und "Yamada-er" sind verbunden und nicht "Saito-er".
In diesem Fall hat Yamada die Cup-Nudeln auch dann gegessen, wenn Sie sie übergeben haben.
Es ist Gouda, der denkt: schreien :.
Comparation -> KNP
Ich werde versuchen, ob es KNP war. http://lotus.kuee.kyoto-u.ac.jp/~ryohei/zero_anaphora/index.cgi
Das ist
Saito-he
Es scheint, dass es richtig erkannt wird, weil es ist.
aber, `Yamada gab Saito eine Tasse Nudeln. Ich habe es köstlich gegessen. `` Wenn ich das Synonym lösche und analysiere, wird es zu "Yamada-he" und es wird nicht richtig erkannt.
Conclusion
Dieses Mal haben wir die Korrespondenz analysiert, wenn sie als direkte Korrespondenz bezeichnet wird und die Synonyme explizit geschrieben sind, aber oft nicht im Text geschrieben sind. http://adsmedia.hatenablog.com/entry/2017/02/20/084846 Es gibt indirekte Korrespondenz, Korrespondenz außerhalb der Welt, Nullkorrespondenz usw.
Das Genom wurde alle in den 2000er Jahren analysiert, aber ich weiß nicht, wie ich es herstellen soll. Es gibt Typen, aber es gibt unzählige Kombinationen.
Die natürliche Sprache kann auch von einem Satz zum Worttyp unterscheiden, kann aber dennoch wie eine Kollatierungsanalyse untersucht werden. Es gibt viele. Als eine der Methoden kann es für Benutzer schwierig sein, Quellen zu sammeln und maschinelles Lernen anzuwenden, um Wörter zu schreiben, die nicht im Satz enthalten sind. Es ist, als würde Saito Cup-Nudeln essen, mit einer Wahrscheinlichkeit von 80%, unter verschiedenen Charakteren zu sein. : Roboter:
PostScript
Verwenden Sie als Nächstes Syntaxanalyse, um ein Produkt zu analysieren oder zu erstellen.
Recommended Posts