Ich habe einen Code erstellt, um die japanische Abhängigkeit mit Cabocha zu überprüfen. Vorerst habe ich versucht, die Beziehung zwischen Nomenklatur und Adjektiven zu extrahieren.
Informationen zur Installation von CaboCha in der Windows-Umgebung finden Sie im Blog von mima_ita. Setzen Sie Cabocha in Windows ein und analysieren Sie die Abhängigkeit mit Python
Ich habe die natürliche Sprache nicht professionell studiert und sie nicht in Artikeln usw. recherchiert, aber ich werde im Folgenden die Ideen nur von Amateuren beschreiben.
Wenn Sie sich auf Nomenklatur, Verben und Adjektive konzentrieren und einfach die Beziehung zum Teil des vorherigen Wortes betrachten, können Sie diese in die folgenden Muster unterteilen.
Auf dieser Grundlage habe ich einen Code erstellt, um die Beziehung zwischen Nomenklatur und Adjektiven zu ermitteln. Unten ist der Code.
python
# coding: utf-8
import CaboCha
import xml.etree.ElementTree as ET
from collections import defaultdict
def get_reputation(ET_tree):
flag = None
reputation = defaultdict(str)
for el in ET_tree.findall(".//chunk"):
tok = el.find("tok")
feature = tok.attrib["feature"].strip().split(',')
part = feature[0]
typ = feature[1]
if part=='Substantiv' and \
(typ=='Allgemeines' or typ=='Proprietäre Nomenklatur'):
reputation["object"]=tok.text
if part=='Adjektiv': reputation['adjective']=feature[6]
link = el.attrib["link"]
if link=='-1': break
while 1:
res = get_next_chunk(link,part)
if res==None: break
part, typ, word, link = res
if part=='Substantiv' and \
(typ=='Allgemeines' or typ=='Proprietäre Nomenklatur'):
reputation["object"]=word
if part=='Adjektiv':
reputation['adjective'] = word
if reputation["object"]!=None:
flag=1
break
if flag==1: break
print reputation["object"]
print reputation["adjective"]
def get_next_chunk(linkid, ex_part):
if linkid=='-1': return None
this_chunk = ET_tree.find(".//chunk[@id='%s']" % linkid)
#print this_chunk.attrib
link = this_chunk.attrib["link"]
tok = this_chunk.find('tok')
feature = tok.attrib["feature"].strip().split(',')
if ex_part=='Substantiv':
if feature[0]=='Substantiv':
return feature[0], feature[1], tok.text, link
elif feature[0]=='Verb' or feature[0]=='Adjektiv':
return feature[0], feature[1], feature[6], link
elif ex_part=='Verb':
if feature[0]=='Substantiv':
return feature[0], feature[1], tok.text, link
elif ex_part=='Adjektiv':
if feature[0]=='Substantiv':
return feature[0], feature[1], tok.text, link
if __name__=='__main__':
c = CaboCha.Parser('--charset=UTF8')
sentence = "Der interessanteste Artikel in der Juni-Ausgabe von Courier, "Einführung in die" freien Künste ", um Spaß zu lernen", war ein Artikel von Hidehiro Ikegami. "Wie man ein Gemälde sieht" ist extrem wichtig, nicht wahr?"
tree = c.parse(sentence)
#print tree.toString(CaboCha.FORMAT_TREE)
#print tree.toString(CaboCha.FORMAT_LATTICE)
print tree.toString(CaboCha.FORMAT_XML)
ET_tree = ET.fromstring(tree.toString(CaboCha.FORMAT_XML))
get_reputation(ET_tree)
Ich bekomme nur den ersten Token für jeden Chunk, denn wenn ich ihn gut in Chunks aufteilen kann, sollte der erste Token ein aussagekräftiges Wort haben.
Der interessanteste Artikel in der Juni-Ausgabe von Courier, "Einführung in die" freien Künste ", um Spaß zu lernen", war ein Artikel von Hidehiro Ikegami. "Wie man ein Gemälde sieht" ist extrem wichtig, nicht wahr? 』\
Ich habe versucht, den Satz mit CaboCha zu analysieren. Das Folgende ist die XML-Ausgabe des Analyseergebnisses von CaboCha.
<sentence>
<chunk id="0" link="1" rel="D" score="0.328005" head="0" func="1">
<tok id="0" feature="Substantiv,Allgemeines,*,*,*,*,*,*,*,Wikipedia">Kurier</tok>
<tok id="1" feature="Partikel,Union,*,*,*,*,von,Nein,Nein">von</tok>
</chunk>
<chunk id="1" link="4" rel="D" score="0.018011" head="3" func="3">
<tok id="2" feature="Substantiv,Anwalt möglich,*,*,*,*,Juni,Rokugatsu,Rokugatsu">Juni</tok>
<tok id="3" feature="Substantiv,Suffix,Allgemeines,*,*,*,Problem,Gehen,Gehen">Problem</tok>
</chunk>
<chunk id="2" link="3" rel="D" score="1.140087" head="5" func="5">
<tok id="4" feature="Symbol,Klammern öffnen,*,*,*,*,「,「,「">「</tok>
<tok id="5" feature="Adjektiv,Unabhängigkeit,*,*,Adjektiv・イ段,Kontinuierliche Verbindung,angenehm,Tanoshiku,Tanoshiku">Glücklich</tok>
</chunk>
<chunk id="3" link="4" rel="D" score="2.891449" head="6" func="6">
<tok id="6" feature="Verb,Unabhängigkeit,*,*,Fünf Schritte / Ba-Linie,Grundform,lernen,Manab,Manab">lernen</tok>
</chunk>
<chunk id="4" link="6" rel="D" score="1.654218" head="10" func="12">
<tok id="7" feature="Symbol,Klammern öffnen,*,*,*,*,『,『,『">『</tok>
<tok id="8" feature="Substantiv,Allgemeines,*,*,*,*,Geisteswissenschaften,Kyoyo,Kyoyo">Geisteswissenschaften</tok>
<tok id="9" feature="Symbol,In Klammern geschlossen,*,*,*,*,』,』,』">』</tok>
<tok id="10" feature="Substantiv,Verbindung ändern,*,*,*,*,beginnen,Newmon,Newmon">beginnen</tok>
<tok id="11" feature="Symbol,In Klammern geschlossen,*,*,*,*,」,」,」">」</tok>
<tok id="12" feature="Partikel,格Partikel,Allgemeines,*,*,*,damit,De,De">damit</tok>
</chunk>
<chunk id="5" link="6" rel="D" score="2.796273" head="13" func="13">
<tok id="13" feature="Substantiv,Anwalt möglich,*,*,*,*,Ichiban,Ichiban,Ichiban">Ichiban</tok>
</chunk>
<chunk id="6" link="8" rel="D" score="1.346988" head="16" func="17">
<tok id="14" feature="Adjektiv,Unabhängigkeit,*,*,Adjektiv・アウオ段,Kontinuierliche Verbindung,Interessant,Komisch,Komisch">Interessant</tok>
<tok id="15" feature="Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta">Ta</tok>
<tok id="16" feature="Substantiv,Nicht unabhängig,Allgemeines,*,*,*,von,Nein,Nein">von</tok>
<tok id="17" feature="Partikel,係Partikel,*,*,*,*,Ist,C.,Beeindruckend">Ist</tok>
<tok id="18" feature="Symbol,Lesepunkt,*,*,*,*,、,、,、">、</tok>
</chunk>
<chunk id="7" link="8" rel="D" score="3.189624" head="21" func="22">
<tok id="19" feature="Substantiv,固有Substantiv,Name der Person,Nachname,*,*,Ikegami,Ikegami,Ikegami">Ikegami</tok>
<tok id="20" feature="Substantiv,固有Substantiv,Name der Person,Name,*,*,Britisch und westlich,Hidehiro,Hidehiro">Britisch und westlich</tok>
<tok id="21" feature="Substantiv,Suffix,Name der Person,*,*,*,Herr.,Sonne,Sonne">Herr.</tok>
<tok id="22" feature="Partikel,Union,*,*,*,*,von,Nein,Nein">von</tok>
</chunk>
<chunk id="8" link="11" rel="D" score="-0.885691" head="23" func="23">
<tok id="23" feature="Substantiv,Allgemeines,*,*,*,*,Artikel,Fasan,Fasan">Artikel</tok>
<tok id="24" feature="Symbol,Phrase,*,*,*,*,。,。,。">。</tok>
</chunk>
<chunk id="9" link="10" rel="D" score="4.381583" head="26" func="27">
<tok id="25" feature="Symbol,Klammern öffnen,*,*,*,*,「,「,「">「</tok>
<tok id="26" feature="Substantiv,Allgemeines,*,*,*,*,Malerei,Kaiga,Kaiga">Malerei</tok>
<tok id="27" feature="Partikel,Union,*,*,*,*,von,Nein,Nein">von</tok>
</chunk>
<chunk id="10" link="11" rel="D" score="-0.885691" head="29" func="31">
<tok id="28" feature="Verb,Unabhängigkeit,*,*,Ein Schritt,Kontinuierlicher Typ,sehen,Mi.,Mi.">Sie sehen</tok>
<tok id="29" feature="Substantiv,Suffix,Allgemeines,*,*,*,Wie,Kata,Kata">Wie</tok>
<tok id="30" feature="Symbol,In Klammern geschlossen,*,*,*,*,」,」,」">」</tok>
<tok id="31" feature="Partikel,格Partikel,Gemeinsame Sprache,*,*,*,Was,Itte,Itte">Was</tok>
</chunk>
<chunk id="11" link="-1" rel="D" score="0.000000" head="33" func="36">
<tok id="32" feature="Substantiv,Verbindung ändern,*,*,*,*,Transzendenz,Chozetsu,Chozetsu">Transzendenz</tok>
<tok id="33" feature="Substantiv,Adjektiv Verbstamm,*,*,*,*,Wichtig,Daiji,Daiji">Wichtig</tok>
<tok id="34" feature="Hilfsverb,*,*,*,Besondere,Grundform,Ist,Da,Da">Ist</tok>
<tok id="35" feature="Partikel,終Partikel,*,*,*,*,Yo,Yo,Yo">Yo</tok>
<tok id="36" feature="Partikel,終Partikel,*,*,*,*,Hallo,Ne,Ne">Hallo</tok>
<tok id="37" feature="Symbol,Phrase,*,*,*,*,。,。,。">。</tok>
</chunk>
</sentence>
Der in jedem Block enthaltene Link zeigt die Zuordnung zur folgenden Block-ID.
Ich konnte die Beziehung von "Kurier" <- "interessant" erwerben. Mit dem obigen Code können Sie jedoch nur eine Beziehung erhalten. Wenn Sie also mehr als eine haben, müssen Sie mehr entwickeln. ..
Wir entschuldigen uns für die Unannehmlichkeiten, aber wenn Sie einen Fehler machen, würden wir uns freuen, wenn Sie darauf hinweisen könnten.