Skip to content
editor-kanbun.html 23.7 KiB
Newer Older
<!DOCTYPE html><head><meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<title>CoNLL-U SVG Editor for 漢文 by 安岡孝一, October 9, 2022.</title>
<script src="conllusvgview.js"></script>
<script src="conllusvgedit.js"></script>
<script src="conllusvgload.js"></script>
<script>
conllusvg.kanbun=new Object();
conllusvg.kanbun.checkURL=function(textid,pushid,statid){
  var h=location.href;
  var i=h.indexOf("#");
  if(i>0&&h.length-i>0){
    h=h.slice(i+1);
    conllusvg.loadRemote(textid,h);
    conllusvg.kanbun.timer=setTimeout("clearTimeout(conllusvg.kanbun.timer);conllusvg.kanbun.checkLinks('"+textid+"')",1000);
    if(h.indexOf("/api/v4/projects/")<0)
      return;
    if(h.indexOf("/repository/files/")<0)
      return;
    i=h.indexOf("/raw?ref=");
    if(i<0)
      return;
    conllusvg.kanbun.gitlabURL=h.substring(0,i)+"?branch="+h.slice(i+9);
    h=h.substring(0,i);
    conllusvg.kanbun.gitlabFile=h.slice(h.lastIndexOf("/")+1);
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    if(pushid==null||statid==null)
      return;
    i=document.getElementById(pushid);
    i.value="push GitLab";
    i.setAttribute("onclick","conllusvg.kanbun.pushGitLab('conllu')");
    i=document.getElementById(statid);
    i.setAttribute("onchange",null);
    i.value=decodeURIComponent(conllusvg.kanbun.gitlabFile);
    conllusvg.kanbun.status=i;
  }
}
conllusvg.kanbun.mecabUD=function(textid,t){
  var c=conllusvg.main[textid];
  var s="/db-machine/~yasuoka/cgi-bin/ud-kanbun.cgi?";
  if(t.value==null)
    s=s+encodeURIComponent(t.textContent);
  else
    s=s+encodeURIComponent(t.value);
  conllusvg.loadRemote(textid,s,true);
}
conllusvg.kanbun.hideShow=function(textid,button){
  var tx=document.getElementById(textid);
  if(button.value=="hide CoNLL-U"){
    tx.style.display="none";
    button.value="show CoNLL-U";
  }
  else{
    tx.style.display="block";
    button.value="hide CoNLL-U";
  }
}
conllusvg.kanbun.consultCHISE=function(textid,z){
  var c=conllusvg.main[textid];
  var ix=c.event.index;
  var s="http://www.chise.org/est/view/entry@zh-classical/rep.id=";
  var t=c.nodes[ix].form;
  var i,j;
  for(i=0;i<t.length;i++){
    j=t.charCodeAt(i);
    if(j>=55296&&j<=56319)
      j=(j-55287)*1024+t.charCodeAt(++i);
    s=s+"u"+j.toString(16).toUpperCase();
  }
  window.open(s);
}
Koichi Yasuoka's avatar
Koichi Yasuoka committed
conllusvg.kanbun.consultUD=function(textid,z){
  var c=conllusvg.main[textid];
  var ix=c.event.index;
  var s="/db-machine/~yasuoka/cgi-bin/ud-kanbun-linksearch.cgi?";
  var t=c.nodes[ix].form;
  var f=c.nodes[c.links[ix].from].form;
  s=s+"to="+encodeURIComponent(t)+"&from="+encodeURIComponent(f);
  window.open(s);
}
conllusvg.kanbun.saveLocal=function(textid){
  var c=conllusvg.main[textid];
  var k,s;
  conllusvg.clearSVG(textid);
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  if(conllusvg.kanbun.status!=null)
    conllusvg.kanbun.status.value="";
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  conllusvg.kanbun.addGloss(textid);
  conllusvg.renum(textid);
  conllusvg.esrap(textid);
  conllusvg.parse(textid);
  conllusvg.makeNodes(textid);
  s="\n";
  for(k=c.nodes.length-1;k>=0;k--){
    if(c.nodes[k].id!=1)
      s=c.nodes[k].form+s;
    else{
      s="# text = "+c.nodes[k].form+s+c.nodes[k].id;
      conllusvg.insertTextline(textid,c.nodes[k].textlineid,1,s);
      s="\n";
    }
  }
  if(conllusvg.kanbun.gitlabFile!=null){
    k=decodeURIComponent(conllusvg.kanbun.gitlabFile);
    if(c.files==null)
      c.files=new Object();
    c.files.filename=k.slice(k.lastIndexOf("/")+1);
  }
  conllusvg.view(c.svg,textid);
  conllusvg.kanbun.checkLinks(textid);
  conllusvg.saveLocal(textid);
}
Koichi Yasuoka's avatar
Koichi Yasuoka committed
conllusvg.kanbun.pushGitLab=function(textid){
  var c=conllusvg.main[textid];
  var tx=document.getElementById(textid);
  var i,k,s;
  conllusvg.clearSVG(textid);
  if(conllusvg.kanbun.status!=null)
    conllusvg.kanbun.status.value="";
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  conllusvg.kanbun.addGloss(textid);
  conllusvg.renum(textid);
  conllusvg.esrap(textid);
  conllusvg.parse(textid);
  conllusvg.makeNodes(textid);
  s="\n";
  for(k=c.nodes.length-1;k>=0;k--){
    if(c.nodes[k].id!=1)
      s=c.nodes[k].form+s;
    else{
      s="# text = "+c.nodes[k].form+s+c.nodes[k].id;
      conllusvg.insertTextline(textid,c.nodes[k].textlineid,1,s);
      s="\n";
    }
  }
  conllusvg.view(c.svg,textid);
  conllusvg.kanbun.checkLinks(textid);
  s=conllusvg.kanbun.gitlabURL+"&commit_message=API+editor-kanbun+"+conllusvg.kanbun.gitlabFile+"&content=";
  if(tx.value==null)
    s=s+encodeURIComponent(tx.textContent);
  else
    s=s+encodeURIComponent(tx.value);
  i=document.cookie.indexOf("conllusvg.kanbun.privateToken=");
  k="";
  if(i>=0){
    k=document.cookie.slice(i+30);
    i=k.indexOf(";");
    if(i>=0)
      k=k.substring(0,i);
  }
  if(k=="")
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    k=prompt("GitLab private token:","");
  if(k>"")
    conllusvg.kanbun.privateToken=k;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  else if(conllusvg.kanbun.status!=null)
    conllusvg.kanbun.status.value="push GitLab failed";
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  else
    alert("push GitLab failed");
  conllusvg.kanbun.request=new XMLHttpRequest();
  conllusvg.kanbun.request.addEventListener("load",conllusvg.kanbun.onLoad);
  if(s.length<8000){
    conllusvg.kanbun.request.open("PUT",s);
    conllusvg.kanbun.request.setRequestHeader("Private-Token",k);
    conllusvg.kanbun.request.send();
  }
  else{
    i=s.indexOf("?");
    conllusvg.kanbun.request.open("PUT",s.substring(0,i));
    conllusvg.kanbun.request.setRequestHeader("Private-Token",k);
    conllusvg.kanbun.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    conllusvg.kanbun.request.send(s.slice(i+1).replace(/%20/g,"+"));
}
conllusvg.kanbun.onLoad=function(e){
  if(conllusvg.kanbun.request.status==200){
    if(conllusvg.kanbun.status!=null){
      conllusvg.kanbun.status.value="push GitLab succeeded";
      conllusvg.kanbun.timer=setTimeout("clearTimeout(conllusvg.kanbun.timer);conllusvg.kanbun.status.value=''",5000);
    }
    document.cookie="conllusvg.kanbun.privateToken="+conllusvg.kanbun.privateToken+";secure";
  }
  else{
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    if(conllusvg.kanbun.status!=null)
      conllusvg.kanbun.status.value="push GitLab failed: "+conllusvg.kanbun.request.status;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    else
      alert("push GitLab failed: status "+conllusvg.kanbun.request.status);
    document.cookie="conllusvg.kanbun.privateToken=;max-age=0";
  }
  conllusvg.kanbun.request.removeEventListener("load",conllusvg.kanbun.onLoad);
}
conllusvg.kanbun.connectForm=function(textid,z){
  var c=conllusvg.main[textid];
  var ix=c.event.index;
  var t,i,j;
  i=ix;
  j=ix-1;
  if(ix==0){
    if(c.nodes[1]==null)
      return;
    i=j=1;
  }
  if(c.nodes[i-1].form=="_")
    t=c.nodes[i].form;
  else if(c.nodes[i].form=="_")
    t=c.nodes[i-1].form;
  else
    t=c.nodes[i-1].form+c.nodes[i].form;
  conllusvg.insertTextline(textid,c.nodes[j].textlineid,2,t);
  if(c.nodes[i-1].lemma=="_")
    t=c.nodes[i].lemma;
  else if(c.nodes[i].lemma=="_")
    t=c.nodes[i-1].lemma;
  else
    t=c.nodes[i-1].lemma+c.nodes[i].lemma;
  conllusvg.insertTextline(textid,c.nodes[j].textlineid,3,t);
  conllusvg.deleteNode(textid,z);
}
conllusvg.kanbun.divideForm=function(textid,z){
  var c=conllusvg.main[textid];
  var ix=parseInt(c.event.index);
  var s=c.nodes[ix].form;
  var t=c.nodes[ix].lemma;
  var i,j,k;
  conllusvg.duplicateNode(textid,z);
  if(c.nodes[ix]==null)
    return;
  if(c.nodes[ix].form!=s||c.nodes[ix].lemma!=t)
    return;
  if(c.nodes[ix+1]==null)
    return;
  if(c.nodes[ix+1].form!=s||c.nodes[ix+1].lemma!=t)
    return;
  i=s.charCodeAt(0);
  j=(i>=55296&&i<=56319)?2:1;
  if(s.length>j){
    c.nodes[ix].form=s.substring(0,j);
    conllusvg.insertTextline(textid,c.nodes[ix].textlineid,2,s.substring(0,j));
    c.nodes[ix+1].form=s.slice(j);
    conllusvg.insertTextline(textid,c.nodes[ix+1].textlineid,2,s.slice(j));
    conllusvg.writeNodesSVG(textid);
  }
  i=t.charCodeAt(0);
  j=(i>=55296&&i<=56319)?2:1;
  if(t.length>j){
    c.nodes[ix].lemma=t.substring(0,j);
    conllusvg.insertTextline(textid,c.nodes[ix].textlineid,3,t.substring(0,j));
    c.nodes[ix+1].lemma=t.slice(j);
    conllusvg.insertTextline(textid,c.nodes[ix+1].textlineid,3,t.slice(j));
  }
}
conllusvg.kanbun.checkLinks=function(textid){
  var c=conllusvg.main[textid];
  var t,f,d,p,x,k;
  for(t in c.links){
    if(c.links[t].svg!=null){
      d=c.links[t].deprel;
      f=c.links[t].from;
      p=0;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&d=="case"&&f-t<0){
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	if(c.links[f]!=null){
	  if(c.links[f].from-f<0){
	    k=c.nodes[f].deprel;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	    if(k=="obj"||k=="clf"||k=="compound"||k=="conj"||k=="flat")
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	      p=1;
	  }
	}
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      }
      if(p==0&&d=="cc"){
	if(c.nodes[f].deprel!="conj")
	  p=1;
      }
      if(p==0&&d=="nmod"){
        k=c.nodes[t].upostag;
	if(k=="NOUN"||k=="PROPN"||k=="PART"||k=="SYM")
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	  p=0;
	else
	  p=1;
      }
      if(p==0&&(d=="clf"||d=="compound"||d=="flat")){
Koichi Yasuoka's avatar
Koichi Yasuoka committed
        k=c.nodes[t].upostag;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	if(k=="NOUN"||k=="PROPN"||k=="PRON"||k=="NUM"||k=="PART")
      if(p==0&&(d=="det"||d=="expl")){
Koichi Yasuoka's avatar
Koichi Yasuoka committed
        k=c.nodes[t].upostag;
	if(k=="PRON")
	  p=0;
	else
	  p=1;
      }
      if(p==0&&(d=="case"||d=="mark")){
        k=c.nodes[t].upostag;
	if(k=="ADP"||k=="SCONJ"||k=="PART")
	  p=0;
	else
	  p=1;
      }
      if(p==0&&d=="aux"){
	if(c.nodes[t].upostag!="AUX")
	  p=1;
      }
      if(p==0&&(d=="discourse"||d=="discourse:sp")){
        k=c.nodes[t].upostag;
	if(k=="PART"||k=="INTJ")
	  p=0;
	else
	  p=1;
      }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&d=="nummod"){
        k=c.nodes[t].upostag;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	if(k!="NUM")
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&d.indexOf("obl")==0){
	k=c.nodes[t].xpostag;
	if(k=="n,名詞,時,*"){
	  if(d!="obl:tmod")
	    p=1;
	}
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	else if(k.indexOf("n,数詞,")<0){
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	  if(d=="obl:tmod")
	    p=1;
	}
      }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&d=="advmod"){
        k=c.nodes[t].upostag;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
        if(k!="ADV"&&k!="VERB"&&k!="NUM"&&k!="CCONJ"&&k!="PART")
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&d=="flat:vv"){
        k=c.nodes[t].upostag;
        if(k!="ADV"&&k!="VERB"&&k!="AUX")
	  p=1;
      }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&d=="det"){
        k=c.nodes[f].upostag;
	if(k=="ADV")
	  p=1;
      }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&(d=="nmod"||d=="compound"||d=="flat"||d=="amod")){
        k=c.nodes[f].upostag;
	if(k=="NOUN"||k=="PROPN"||k=="PRON"||k=="NUM"||k=="PART")
	  p=0;
	else
	  p=1;
      }
      if(p==0&&(d=="obj"||d=="iobj"||d=="ccomp"||d=="xcomp")){
        k=c.nodes[f].upostag;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	if(k=="VERB"||k=="AUX"||k=="NUM")
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&(d=="flat:vv"||d=="flat"||d=="compound")){
	if(f-t==1||t-f==1){
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	  if(c.nodes[f].form==c.nodes[t].form&&c.nodes[f].upostag==c.nodes[t].upostag)
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      if(p==0&&d=="compound:redup"){
	if(c.nodes[f].form!=c.nodes[t].form)
	  p=1;
      }
      if(p==0&&(d=="ccomp"||d=="csubj"||d=="advcl"||d=="acl")){
	p=1;
	for(x in c.links){
	  if(c.links[x].from==t){
	    p=0;
	    break;
	  }
	}
      }
      if(p==0&&d=="mark"){
	p=1;
	for(x in c.links){
	  if(t!=x&&c.links[x].from==f){
	    p=0;
	    break;
	  }
	}
      }
      if(p==0&&(d=="nsubj"||d=="obj"||d.indexOf("obl")==0||d=="amod"||d=="advmod")){
	for(x in c.links){
	  if(c.links[x].from==t){
	    k=c.links[x].deprel;
	    if(k=="nsubj"||k=="obj"||k.indexOf("obl")==0||k=="aux"){
	      p=1;
	      break;
	    }
	  }
	}
      }
      if(p==0&&d=="case"){
	for(x in c.links){
	  if(c.links[x].from==f){
	    k=c.links[x].deprel;
	    if(k=="nsubj"||k=="obj"||k.indexOf("obl")==0||k=="aux"){
	      p=1;
	      break;
	    }
	  }
	}
      }
      if(p==0&&d=="xcomp"){
	p=1;
	for(x in c.links){
	  if(c.links[x].from==f){
	    k=c.links[x].deprel;
	    if(k=="obj"||k=="expl"||k=="ccomp"){
	      p=0;
	      break;
	    }
	  }
	}
      }
      if(p==1){
	c.links[t].svg.setAttribute("stroke","pink");
	c.links[t].svg.setAttribute("fill","pink");
      }
    }
  }
}
Koichi Yasuoka's avatar
Koichi Yasuoka committed
conllusvg.kanbun.loadGloss=function(){
  conllusvg.kanbun.request=new XMLHttpRequest();
  conllusvg.kanbun.request.open("GET","https://corpus.kanji.zinbun.kyoto-u.ac.jp/gitlab/Kanbun/mecab-kanbun/raw/master/seed_pulleyblank/dict.gloss.csv");
  conllusvg.kanbun.request.addEventListener("load",conllusvg.kanbun.onLoadGloss);
  conllusvg.kanbun.request.send();
}
conllusvg.kanbun.onLoadGloss=function(e){
  var s,t,k;
  if(conllusvg.kanbun.request.status==200){
    s=conllusvg.kanbun.request.responseText;
    conllusvg.kanbun.gloss=new Array();
    while(s>""){
      k=s.indexOf("\n");
      if(k<0){
	t=s;
	s="";
      }
      else{
	t=s.substring(0,k);
	s=s.slice(k+1);
      }
      k=t.split(",");
      if(k[13]>""&&k[13].indexOf("*")<0&&k[13].indexOf("?")<0){
	j=k[10];
	i=j.indexOf("/");
Koichi Yasuoka's avatar
Koichi Yasuoka committed
	if(i>0)
	  j=j.substring(0,i);
	conllusvg.kanbun.gloss[k[0]+","+j+","+k[4]+","+k[5]+","+k[6]+","+k[7]]=k[13];
      }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    }
  }
  conllusvg.kanbun.request.removeEventListener("load",conllusvg.kanbun.onLoadGloss);
}
conllusvg.kanbun.addGloss=function(textid){
  var c=conllusvg.main[textid];
  var g=conllusvg.kanbun.gloss;
  var i,j,k;
  if(g==null)
    g=new Array();
  for(i=0;i<c.nodes.length;i++){
    j=c.nodes[i].xpostag;
    k=g[c.nodes[i].form+","+c.nodes[i].lemma+","+j];
    if(k==null){
      if(j=="n,名詞,人,姓氏")
	k="[surname]";
      else if(j=="n,名詞,人,名")
	k="[given-name]";
      else if(j=="n,名詞,主体,書物")
	k="[book-name]";
      else if(j=="n,名詞,主体,国名")
	k="[country-name]";
      else if(j=="n,名詞,固定物,地名")
	k="[place-name]";
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      else if(j=="n,名詞,時,*"){
	if(c.nodes[i].form.length>1)
	  k="[era-name]";
      }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    }
    if(k==null)
      j="SpaceAfter=No";
    else
      j="Gloss="+k+"|SpaceAfter=No";
    c.nodes[i].misc=j;
    conllusvg.insertTextline(textid,c.nodes[i].textlineid,10,j);
  }
}
Koichi Yasuoka's avatar
Koichi Yasuoka committed
conllusvg.kanbun.consultGloss=function(textid,z){
  var c=conllusvg.main[textid];
  var ix=c.event.index;
  var g=conllusvg.kanbun.gloss;
  var s,t,x,k;
  if(g==null||c.xpos==null){
    conllusvg.kanbun.consultCHISE(textid,z);
    return;
  }
  s=document.createElement("select");
  t=c.nodes[ix].form+",";
  for(x in g){
    if(x.indexOf(t)==0){
      k=x.split(",");
      s.add(new Option(k[2]+","+k[3]+","+k[4]+","+k[5]+" "+g[x]+" "+k[1],"conllusvg.kanbun.selectGloss"));
    }
  }
  if(s.length==0){
    conllusvg.kanbun.consultCHISE(textid,z);
    return;
  }
  s.add(new Option("訊CHISE","conllusvg.kanbun.consultCHISE"));
  s.size=(s.length>6)?6:s.length;
  conllusvg.writeSelect(textid,s,"upos");
}
conllusvg.kanbun.selectGloss=function(textid,z){
  var c=conllusvg.main[textid];
  var ix=c.event.index;
  var t=c.nodes[ix].form;
  var k=z.split(" ");
  var u="_";
  var i,j;
  for(i=0;i<c.xpos.options.length;i++){
    if(c.xpos.options[i].textContent==k[0]){
      u=c.xpos.options[i].value;
      break;
    }
  }
  c.nodes[ix].lemma=k[2];
  conllusvg.insertTextline(textid,c.nodes[ix].textlineid,3,k[2]);
  c.nodes[ix].upostag=u;
  conllusvg.insertTextline(textid,c.nodes[ix].textlineid,4,u);
  c.nodes[ix].xpostag=k[0];
  conllusvg.insertTextline(textid,c.nodes[ix].textlineid,5,k[0]);
  i="Gloss="+k[1]+"|SpaceAfter=No";
  c.nodes[ix].misc=i;
  conllusvg.insertTextline(textid,c.nodes[ix].textlineid,10,i);
  conllusvg.writeNodesSVG(textid);
}
</script>
</head>
<body>
<table noborder style="position:fixed; top:0px; left:0px; padding:10px; background:white"><tr><td nowrap>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<input type="text" value="漢文" size=60 onchange="conllusvg.kanbun.mecabUD('conllu',this)" id="status" />
<input type="button" value="show CoNLL-U" onclick="conllusvg.kanbun.hideShow('conllu',this)" />
<input type="button" value="load CoNLL-U" onclick="conllusvg.loadLocal('conllu')" id="gitlab" />
<input type="button" value="save CoNLL-U" onclick="conllusvg.kanbun.saveLocal('conllu')" />
</td></tr></table>
<pre>


</pre>
<pre id="conllu" style="display:none" contentEditable="true" onfocusout="conllusvg.reparse('conllu')"></pre>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" onload="conllusvg.edit(this,'conllu','deprel','upos','xpos');conllusvg.kanbun.checkURL('conllu','gitlab','status');conllusvg.kanbun.loadGloss()">
</svg>
<select size=6 id="deprel" style="position:absolute; visibility:hidden">
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option value="conllusvg.kanbun.consultUD">訊ud-kanbun</option>
<option>acl</option>
<option>advcl</option>
<option>advmod</option>
<option>amod</option>
<option>aux</option>
<option>case</option>
<option>cc</option>
<option>ccomp</option>
<option>clf</option>
<option>compound</option>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option>compound:redup</option>
<option>conj</option>
<option>cop</option>
<option>csubj</option>
<option>csubj:pass</option>
<option>det</option>
<option>discourse</option>
<option>discourse:sp</option>
<option>dislocated</option>
<option>expl</option>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option>fixed</option>
<option>flat</option>
<option>flat:vv</option>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option>flat:foreign</option>
<option>iobj</option>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option>list</option>
<option>mark</option>
<option>nmod</option>
<option>nsubj</option>
<option>nsubj:pass</option>
<option>nummod</option>
<option>obj</option>
<option>obl</option>
<option>obl:lmod</option>
<option>obl:tmod</option>
<option>parataxis</option>
<option>vocative</option>
<option>xcomp</option>
</select>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<select size=8 id="upos" style="position:absolute; visibility:hidden">
<option value="conllusvg.rootLink">root</option>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option value="conllusvg.kanbun.consultGloss">訊dict</option>
<option>NOUN</option>
<option>PROPN</option>
<option>PRON</option>
<option>NUM</option>
<option>VERB</option>
<option>ADP</option>
<option>ADV</option>
<option>AUX</option>
<option>SCONJ</option>
<option>CCONJ</option>
<option>PART</option>
<option>INTJ</option>
<option>SYM</option>
<option>PUNCT</option>
<option value="conllusvg.deleteNode">削除</option>
<option value="conllusvg.duplicateNode">複製</option>
<option value="conllusvg.kanbun.connectForm">連接</option>
<option value="conllusvg.kanbun.divideForm">分割</option>
</select>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<select size=8 id="xpos" style="position:absolute; visibility:hidden">
<option value="PROPN">n,名詞,人,姓氏</option>
<option value="PROPN">n,名詞,人,名</option>
<option value="PROPN">n,名詞,人,その他の人名</option>
<option value="PROPN">n,名詞,人,複合的人名</option>
<option value="NOUN">n,名詞,人,関係</option>
<option value="NOUN">n,名詞,人,役割</option>
<option value="NOUN">n,名詞,人,人</option>
<option value="NOUN">n,名詞,主体,書物</option>
<option value="PROPN">n,名詞,主体,国名</option>
<option value="NOUN">n,名詞,主体,集団</option>
<option value="NOUN">n,名詞,主体,機関</option>
<option value="NOUN">n,名詞,主体,動物</option>
<option value="NOUN">n,名詞,主体,神仏</option>
<option value="NOUN">n,名詞,天象,天文</option>
<option value="NOUN">n,名詞,天象,気象</option>
<option value="NOUN">n,名詞,天象,怪異</option>
<option value="NOUN">n,名詞,行為,*</option>
<option value="NOUN">n,名詞,不可譲,身体</option>
<option value="NOUN">n,名詞,不可譲,疾病</option>
<option value="NOUN">n,名詞,不可譲,属性</option>
<option value="PROPN">n,名詞,固定物,地名</option>
<option value="NOUN">n,名詞,固定物,地形</option>
<option value="NOUN">n,名詞,固定物,樹木</option>
<option value="NOUN">n,名詞,固定物,建造物</option>
<option value="NOUN">n,名詞,固定物,関係</option>
<option value="NOUN">n,名詞,可搬,糧食</option>
<option value="NOUN">n,名詞,可搬,道具</option>
<option value="NOUN">n,名詞,可搬,乗り物</option>
<option value="NOUN">n,名詞,可搬,伝達</option>
<option value="NOUN">n,名詞,可搬,成果物</option>
<option value="NOUN">n,名詞,制度,場</option>
<option value="NOUN">n,名詞,制度,儀礼</option>
<option value="NOUN">n,名詞,外観,人</option>
<option value="NOUN">n,名詞,数量,*</option>
<option value="NOUN">n,名詞,時,*</option>
<option value="NOUN">n,名詞,度量衡,*</option>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option value="NOUN">n,名詞,思考,思考</option>
<option value="NOUN">n,名詞,思考,道徳</option>
<option value="NOUN">n,名詞,思考,方略</option>
<option value="NOUN">n,名詞,描写,態度</option>
<option value="NOUN">n,名詞,描写,形質</option>
<option value="PRON">n,代名詞,人称,起格</option>
<option value="PRON">n,代名詞,人称,止格</option>
<option value="PRON">n,代名詞,人称,他</option>
<option value="PRON">n,代名詞,指示,*</option>
<option value="PRON">n,代名詞,疑問,*</option>
<option value="NUM">n,数詞,数字,*</option>
<option value="NUM">n,数詞,数,*</option>
<option value="NUM">n,数詞,干支,*</option>
<option value="VERB">v,動詞,存在,量</option>
<option value="VERB">v,動詞,存在,存在</option>
<option value="VERB">v,動詞,変化,生物</option>
<option value="VERB">v,動詞,変化,制度</option>
<option value="VERB">v,動詞,変化,性質</option>
<option value="VERB">v,動詞,描写,態度</option>
<option value="VERB">v,動詞,描写,量</option>
<option value="VERB">v,動詞,描写,形質</option>
<option value="VERB">v,動詞,描写,境遇</option>
<option value="VERB">v,動詞,行為,役割</option>
<option value="VERB">v,動詞,行為,分類</option>
<option value="VERB">v,動詞,行為,飲食</option>
<option value="VERB">v,動詞,行為,姿勢</option>
<option value="VERB">v,動詞,行為,得失</option>
<option value="VERB">v,動詞,行為,移動</option>
<option value="VERB">v,動詞,行為,設置</option>
<option value="VERB">v,動詞,行為,動作</option>
<option value="VERB">v,動詞,行為,生産</option>
<option value="VERB">v,動詞,行為,儀礼</option>
<option value="VERB">v,動詞,行為,伝達</option>
<option value="VERB">v,動詞,行為,態度</option>
<option value="VERB">v,動詞,行為,交流</option>
<option value="VERB">v,動詞,行為,使役</option>
<option value="ADP">v,前置詞,基盤,*</option>
<option value="ADP">v,前置詞,経由,*</option>
<option value="ADP">v,前置詞,関係,*</option>
<option value="ADP">v,前置詞,源泉,*</option>
<option value="ADP">v,前置詞,処置,*</option>
<option value="ADV">v,副詞,描写,*</option>
<option value="ADV">v,副詞,程度,極度</option>
<option value="ADV">v,副詞,程度,軽度</option>
<option value="ADV">v,副詞,程度,やや高度</option>
<option value="ADV">v,副詞,範囲,総括</option>
<option value="ADV">v,副詞,範囲,限定</option>
<option value="ADV">v,副詞,範囲,共同</option>
<option value="ADV">v,副詞,時相,完了</option>
<option value="ADV">v,副詞,時相,過去</option>
<option value="ADV">v,副詞,時相,現在</option>
<option value="ADV">v,副詞,時相,将来</option>
<option value="ADV">v,副詞,時相,終局</option>
<option value="ADV">v,副詞,時相,緊接</option>
<option value="ADV">v,副詞,時相,継起</option>
<option value="ADV">v,副詞,時相,恒常</option>
<option value="ADV">v,副詞,時相,変化</option>
<option value="ADV">v,副詞,頻度,重複</option>
<option value="ADV">v,副詞,頻度,頻繁</option>
<option value="ADV">v,副詞,頻度,偶発</option>
<option value="ADV">v,副詞,否定,無界</option>
<option value="ADV">v,副詞,否定,体言否定</option>
<option value="ADV">v,副詞,否定,有界</option>
<option value="ADV">v,副詞,否定,禁止</option>
<option value="ADV">v,副詞,判断,確定</option>
<option value="ADV">v,副詞,判断,推定</option>
<option value="ADV">v,副詞,判断,逆接</option>
<option value="ADV">v,副詞,疑問,反語</option>
<option value="ADV">v,副詞,疑問,原因</option>
<option value="ADV">v,副詞,疑問,所在</option>
<option value="AUX">v,助動詞,可能,*</option>
<option value="AUX">v,助動詞,必要,*</option>
<option value="AUX">v,助動詞,願望,*</option>
<option value="AUX">v,助動詞,受動,*</option>
<option value="PART">p,助詞,提示,*</option>
<option value="SCONJ">p,助詞,接続,属格</option>
<option value="PART">p,助詞,接続,体言化</option>
<option value="CCONJ">p,助詞,接続,並列</option>
<option value="PART">p,助詞,句末,*</option>
<option value="PART">p,助詞,句頭,*</option>
<option value="INTJ">p,感嘆詞,*,*</option>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<option value="PART">p,接尾辞,*,*</option>
<option value="SYM">s,文字,*,*</option>
<option value="SYM">s,記号,一般,*</option>
<option value="PUNCT">s,記号,句点,*</option>
<option value="PUNCT">s,記号,読点,*</option>
<option value="PUNCT">s,記号,括弧開,*</option>
<option value="PUNCT">s,記号,括弧閉,*</option>
<option value="PUNCT">s,記号,空白,*</option>
</select>
</body>