Qiita debütierte mit Dingen lol. Zuvor habe ich versucht, mithilfe der von NTT Communications bereitgestellten API zur Verarbeitung natürlicher Sprache / COTOHA automatisch eine Quiz-Qualitätssicherung zu generieren. Jedes Mal fand ein Geschenkprojekt mit Herrn Qiita statt, daher bin ich wirklich enttäuscht. Deshalb werde ich über die automatische Generierung von QS-Tests mithilfe von Nachrichtenartikeln schreiben.
*Google Colaboratory *Python3
Was ich tun möchte, ist zum Beispiel
Am 18. fand 27 aufeinanderfolgende Wochen lang eine Demonstration der Yellow Best-Bewegung in Frankreich statt, die gegen die Macron-Regierung protestierte. Nach Angaben des Innenministeriums ...
Wenn Sie Informationen wie "wer" und "wo" gut lesen können, wenn es einen Artikel wie gibt
Frage: Wo hat die Yellow Best Movement in der 18. und 27. Woche in Folge gegen die Macron-Administration protestiert? Antwort: Frankreich
Die Motivation ist, dass Sie automatisch Fragensätze und Antworten erstellen können. Lassen Sie COTOHA diesen "guten" Teil übernehmen.
Lassen Sie uns den Beispielsatzartikel von früher in die Syntaxanalyse von COTOHA werfen.
curl -H "Content-Type:application/json;charset=UTF-8" -H "Authorization:Bearer **Eigenes Token**" -X POST -d '{"sentence":"Am 18. fand 27 aufeinanderfolgende Wochen lang eine Demonstration der Yellow Best-Bewegung statt, die gegen die Macron-Regierung in Frankreich protestierte."}' "https://api.ce-cotoha.com/api/dev/nlp/v1/parse"
Die Antwort sieht so aus. Die morphologische Analyse wurde fest durchgeführt, und es konnte festgestellt werden, dass "Frankreich" "[" einzigartig "," Erde "]" ist.
{
"result" : [ {
"chunk_info" : {
"id" : 0,
"head" : 8,
"dep" : "D",
"chunk_head" : 0,
"chunk_func" : 1,
"links" : [ ]
},
"tokens" : [ {
"id" : 0,
"form" : "Frankreich",
"kana" : "Frankreich",
"lemma" : "Frankreich",
"pos" : "Substantiv",
"features" : [ "Einzigartig", "Boden" ],
"dependency_labels" : [ {
"token_id" : 1,
"label" : "case"
} ],
"attributes" : { }
}, {
"id" : 1,
"form" : "damit",
"kana" : "De",
"lemma" : "damit",
"pos" : "Fallassistent",
"features" : [ "Dauereinsatz" ],
"attributes" : { }
} ]
}, {
"chunk_info" : {
"id" : 1,
"head" : 2,
"dep" : "D",
"chunk_head" : 1,
"chunk_func" : 2,
"links" : [ ]
},
"tokens" : [ {
"id" : 2,
"form" : "Längezeichen",
"kana" : "Längezeichen",
"lemma" : "Längezeichen",
"pos" : "Substantiv",
"features" : [ ],
"attributes" : { }
}, {
"id" : 3,
"form" : "Verwaltung",
"kana" : "Seiken",
"lemma" : "Verwaltung",
"pos" : "Nomenklatursuffix",
"features" : [ "Substantiv" ],
"dependency_labels" : [ {
"token_id" : 2,
"label" : "compound"
}, {
"token_id" : 4,
"label" : "case"
} ],
"attributes" : { }
}, {
"id" : 4,
"form" : "Zu",
"kana" : "D.",
"lemma" : "Zu",
"pos" : "Fallassistent",
"features" : [ "Dauereinsatz" ],
"attributes" : { }
} ]
}
Andererseits scheint es derzeit schwierig zu sein, bis Macron der Name einer Person ist. Da die Phraseninformationen in einem Block namens "chunk_info" (großartig !!) enthalten sind, schreiben Sie den Originalartikel neu, wenn eine bestimmte Phrase einen Ortsnamen usw. enthält, sodass die Phrase (Ortsname) die Antwort ist. Wenn ja, sieht es aus wie ein Quiz.
Dieses Mal habe ich versucht, zwei Muster von Ortsname und Person einzugeben.
import collections
import requests
import json
#Eingabeanweisung
sentence = 'Am 18. fand 27 aufeinanderfolgende Wochen lang eine Demonstration der Yellow Best-Bewegung statt, die gegen die Macron-Regierung in Frankreich protestierte.'
url = 'https://api.ce-cotoha.com/api/dev/nlp/v1/parse'
headers = {'Content-Type':'application/json;charset=UTF-8','Authorization':'Bearer **Token**'}
payload={'sentence':sentence}
#Anfrage an COTOHA
r = requests.post(url, data=json.dumps(payload), headers=headers)
#Speichern Sie die Ergebnisse der Syntaxanalyse
data = r.json()
j = json.dumps(data["result"])
chunk_dic = json.loads(j, object_pairs_hook=collections.OrderedDict)
quiz_flug = 100
chunk_dic_len = len(chunk_dic)
token = ""
#Beurteilen Sie, ob der Name oder der Ortsname einer Person für jede Klausel enthalten ist. Wenn gefunden, machen Sie es zu einem Quizkandidaten
for i in range(chunk_dic_len):
dic = chunk_dic[i]
dic_len = len(dic["tokens"])
for j in range(dic_len):
if "Name" in dic["tokens"][j]["features"] and "Nachname" in dic["tokens"][j]["features"] and "Einzigartig" in dic["tokens"][j]["features"]:
#Beantworten Sie das Quiz
key_word = dic["tokens"][j]["form"]
#Variablen zum Extrahieren von Klauseln aus dem Originalartikel
for s in range(dic_len):
token = token + dic["tokens"][s]["form"]
quiz_flug = "0"
elif "Boden" in dic["tokens"][j]["features"] and "Einzigartig" in dic["tokens"][j]["features"]:
key_word = dic["tokens"][j]["form"]
for s in range(dic_len):
token = token + dic["tokens"][s]["form"]
quiz_flug = "1"
question_sentence = sentence[sentence.find(token):]
question_sentence = question_sentence.replace(token, '')
#Ändern Sie den Quizsatz für jede extrahierte Nomenklatur
if quiz_flug == "0":
question_sentence = question_sentence[:-1] + "Wer ist"
elif quiz_flug == "1":
question_sentence = question_sentence[:-1] + "Wo ist es?"
print("Problem:",question_sentence)
print("Antworten:",key_word)
Ausführungsergebnis
Frage: Wo hat die Yellow Best Movement in der 18. und 27. Woche in Folge gegen die Macron-Administration protestiert?
Antwort: Frankreich
Das Ziel ist vorerst erreicht.
Experimentieren Sie mit verschiedenen Artikeln.
・ Originalartikel ①
###
#Ehemalige Morgentochter. In Talent Private gab "Mutter von 4 Kindern" Nozomi Tsuji am 17. bekannt, dass sie "Tsuji-chan Nell" eröffnen und ihr YouTube-Debüt geben wird."
###
Frage: Wer hat am 17. "Tsuji-chan Nell" eröffnet und angekündigt, dass es sein YouTube-Debüt geben wird?
Antwort: Nozomi Tsuji
・ Originalartikel ②
###
#Eine führende Zeitung berichtete, dass Präsident Trump nicht im Voraus informiert worden war, und äußerte sich verärgert über die Rückkehr von 14 amerikanischen Passagieren auf einem Kreuzfahrtschiff, von dem bestätigt wurde, dass sie mit dem neuen Corona-Virus per Charterflugzeug infiziert sind. Es war.
###
Frage: Wo hat die führende Zeitung berichtet, dass Präsident Trump wütend war, ohne vorher darüber informiert zu werden, dass er 14 Personen in einem Charterflugzeug zurückgebracht hatte?
Antwort: Amerika
・ Originalartikel ③
###
#In Bezug auf die Burg Gifu, die als Bergburg bekannt ist, die Nobunaga Oda während der Zeit der Streitenden Staaten eroberte, gab die Stadt Gifu am 7. bekannt, dass sie die Steinmauer des Burgturms (die Basis des Burgturms) entdeckt hat, von der Nobunaga glaubte, sie sei durch Ausgrabungen errichtet worden.
###
Frage: Wo haben Sie am 7. angekündigt, dass Sie zum ersten Mal die Steinmauer des Burgturms (die Basis des Burgturms) entdeckt haben, die Nobunaga bei der Ausgrabungsuntersuchung errichtet zu haben scheint?
Antwort: Gifu City
Es ist schwer zu sagen, dass es eine perfekte Ausgabe ist, aber es ist ein potenzielles Ergebnis! Ich möchte die Genauigkeit verbessern und gleichzeitig die Regeln etwas genauer unter die Lupe nehmen! !!
Französische Demonstration ein halbes Jahr, verkleinern (Kyodo News) Nozomi Tsuji kündigt ihr Debüt auf YouTube "Mit meiner eigenen Erfahrung" an, um Informationen und Schönheitsinformationen für Mütter bereitzustellen (Oricon News) Rückkehr der infizierten Person, Herr Trump wird ohne vorherigen Bericht wütend (Nippon Television (NNN)) Merkmale von Nobunaga, Ishigaki (Asahi Shimbun), dem ersten bestätigten Burgturm in Gifu Castle
Recommended Posts