パスワードを忘れた? アカウント作成

iidaさんのトモダチの日記。 あなたのタレコミがスラドを支えます。さぁ、タレこめ!

15306962 journal
人工知能

yasuokaの日記: 単語内のリンクにgoeswithを用いた日本語係り受け解析器の製作

日記 by yasuoka

6月4日の日記でリリースしたbert-large-japanese-char-extendedをもとに、日本語係り受け解析器を作ってみることにした。ただ、bert-large-japanese-char-extendedの単語長は1文字なので、UD_Japanese-GSDの単語長である国語研短単位とは、長さが合わない。多少、悩んだあげく、単語内のリンクにgoeswithを使っておいて、解析後にgoeswithを削り取ることで、単語組み上げをおこなうことにした。Google Colaboratory(GPU版)で、TransformersのAutoModelForTokenClassificationを使って、日本語係り受け解析器を作ってみよう。

!test -d UD_Japanese-GSD || git clone --depth=1 https://github.com/universaldependencies/UD_Japanese-GSD
!pip install transformers datasets
from transformers import AutoTokenizer,AutoConfig,AutoModelForTokenClassification,DataCollatorForTokenClassification,TrainingArguments,Trainer
from unicodedata import category
from datasets.arrow_dataset import Dataset
brt="KoichiYasuoka/bert-large-japanese-char-extended"
with open("UD_Japanese-GSD/ja_gsd-ud-train.conllu","r",encoding="utf-8") as f:
  r=f.read()
tok,tag=[],[]
for u in r.strip().split("\n\n"):
  w=[t for t in u.split("\n") if t.startswith("# text = ")][0]
  s=[t.split("\t") for t in u.split("\n") if not t.startswith("#")]
  for i,v in enumerate([v for v in w[9:] if category(v)!="Zs"]):
    t=s[i]
    x,t[0],t[1],t[2],t[8],t[9]=t[1],str(i+1),v,"_","_","_" if t[9].find("SpaceAfter=No")<0 else "SpaceAfter=No"
    if v!=x:
      s.insert(i+1,[str(i+2),x[1:],"_","X","_","_",t[6] if t[7]=="goeswith" else str(i+1),"goeswith","_",t[9]])
      t[9]="SpaceAfter=No"
      for t in [t for t in s if int(t[6])>i+1]:
        t[6]=str(int(t[6])+1)
  tok.append([t[1] for t in s])
  tag.append(["\t".join(t[3:6]+["{:+}".format(int(t[6])-int(t[0])) if int(t[6]) else "0",t[7]]) for t in s])
lid={l:i for i,l in enumerate(set(sum(tag,[])))}
tkz=AutoTokenizer.from_pretrained(brt)
dts=Dataset.from_dict({"tokens":tok,"tags":tag,"input_ids":[tkz.convert_tokens_to_ids(s) for s in tok],"labels":[[lid[t] for t in s] for s in tag]})
cfg=AutoConfig.from_pretrained(brt,num_labels=len(lid),label2id=lid,id2label={i:l for l,i in lid.items()})
mdl=AutoModelForTokenClassification.from_pretrained(brt,config=cfg)
dcl=DataCollatorForTokenClassification(tokenizer=tkz)
arg=TrainingArguments(output_dir="/tmp",overwrite_output_dir=True,per_device_train_batch_size=4,save_total_limit=2)
trn=Trainer(model=mdl,args=arg,data_collator=dcl,train_dataset=dts)
trn.train()
trn.save_model("bert-large-japanese-char-ud-goeswith")
tkz.save_pretrained("bert-large-japanese-char-ud-goeswith")

GPU版なら45分程度で、bert-large-japanese-char-ud-goeswithモデルが出来上がるはずだ。「昨日は誰も来なかった」を係り受け解析してみよう。

!pip install transformers deplacy
import torch
from transformers import AutoTokenizer,AutoModelForTokenClassification
from unicodedata import category
tokenizer=AutoTokenizer.from_pretrained("bert-large-japanese-char-ud-goeswith")
model=AutoModelForTokenClassification.from_pretrained("bert-large-japanese-char-ud-goeswith")
def nlp(sentence):
  s=[t for t in sentence if category(t)!="Zs"]
  m=[i-j-1 for j,i in enumerate([i for i,t in enumerate(sentence) if category(t)=="Zs"])]
  e=tokenizer.encode(s,return_tensors="pt",add_special_tokens=False)
  for i,q in enumerate(torch.argmax(model(e)[0],dim=2)[0].tolist()):
    t=model.config.id2label[q].split("\t")
    t[3]=str(int(t[3])+i+1) if int(t[3]) else "0"
    s[i]=[s[i],"_"]+t+["_","_" if i in m else "SpaceAfter=No"]
  for i in [i for i in range(len(s)-1,0,-1) if s[i][6]=="goeswith"]:
    t=s.pop(i)
    s[i-1][0]+=t[0]
    s[i-1][8]=t[8]
    for t in [t for t in s if int(t[5])>i]:
      t[5]=str(int(t[5])-1)
  return "\n".join("\t".join([str(i+1)]+t) for i,t in enumerate(s))+"\n\n"
doc=nlp("昨日は誰も来なかった")
import deplacy
deplacy.render(doc,Japanese=True)
deplacy.serve(doc,port=None)

私(安岡孝一)の手元では、以下の結果になった。

昨日   NOUN ═╗<════╗ obl(斜格補語)
は     ADP  <╝     ║ case(格表示)
誰     PRON ═╗<══╗ ║ nsubj(主語)
も     ADP  <╝   ║ ║ case(格表示)
来     VERB ═╗═╗═╝═╝ root(親)
なかっ AUX  <╝ ║     aux(動詞補助成分)
た     AUX  <══╝     aux(動詞補助成分)

1    昨日    _    NOUN    名詞-普通名詞-副詞可能    _    5    obl    _    SpaceAfter=No
2    は    _    ADP    助詞-係助詞    _    1    case    _    SpaceAfter=No
3    誰    _    PRON    代名詞    _    5    nsubj    _    SpaceAfter=No
4    も    _    ADP    助詞-係助詞    _    3    case    _    SpaceAfter=No
5    来    _    VERB    動詞-非自立可能    _    0    root    _    SpaceAfter=No
6    なかっ    _    AUX    助動詞    Polarity=Neg    5    aux    _    SpaceAfter=No
7    た    _    AUX    助動詞    _    5    aux    _    SpaceAfter=No

SVGで可視化すると、こんな感じ。goeswithを削り取る前の状態も見てみよう。

!pip install transformers deplacy
import torch
from transformers import AutoTokenizer,AutoModelForTokenClassification
from unicodedata import category
tokenizer=AutoTokenizer.from_pretrained("bert-large-japanese-char-ud-goeswith")
model=AutoModelForTokenClassification.from_pretrained("bert-large-japanese-char-ud-goeswith")
def nlp(sentence):
  s=[t for t in sentence if category(t)!="Zs"]
  m=[i-j-1 for j,i in enumerate([i for i,t in enumerate(sentence) if category(t)=="Zs"])]
  e=tokenizer.encode(s,return_tensors="pt",add_special_tokens=False)
  for i,q in enumerate(torch.argmax(model(e)[0],dim=2)[0].tolist()):
    t=model.config.id2label[q].split("\t")
    t[3]=str(int(t[3])+i+1) if int(t[3]) else "0"
    s[i]=[s[i],"_"]+t+["_","_" if i in m else "SpaceAfter=No"]
  return "\n".join("\t".join([str(i+1)]+t) for i,t in enumerate(s))+"\n\n"
doc=nlp("昨日は誰も来なかった")
import deplacy
deplacy.render(doc,Japanese=True)
deplacy.serve(doc,port=None)

私の手元では、goeswithを削り取る前は以下の状態だった。

昨 NOUN ═╗═╗<══════╗ obl(斜格補語)
日 X    <╝ ║       ║ goeswith(泣き別れ)
は ADP  <══╝       ║ case(格表示)
誰 PRON ═╗<══════╗ ║ nsubj(主語)
も ADP  <╝       ║ ║ case(格表示)
来 VERB ═════╗═╗═╝═╝ root(親)
な AUX  ═╗═╗<╝ ║     aux(動詞補助成分)
か X    <╝ ║   ║     goeswith(泣き別れ)
っ X    <══╝   ║     goeswith(泣き別れ)
た AUX  <══════╝     aux(動詞補助成分)

1    昨    _    NOUN    名詞-普通名詞-副詞可能    _    6    obl    _    SpaceAfter=No
2    日    _    X    _    _    1    goeswith    _    SpaceAfter=No
3    は    _    ADP    助詞-係助詞    _    1    case    _    SpaceAfter=No
4    誰    _    PRON    代名詞    _    6    nsubj    _    SpaceAfter=No
5    も    _    ADP    助詞-係助詞    _    4    case    _    SpaceAfter=No
6    来    _    VERB    動詞-非自立可能    _    0    root    _    SpaceAfter=No
7    な    _    AUX    助動詞    Polarity=Neg    6    aux    _    SpaceAfter=No
8    か    _    X    _    _    7    goeswith    _    SpaceAfter=No
9    っ    _    X    _    _    7    goeswith    _    SpaceAfter=No
10    た    _    AUX    助動詞    _    6    aux    _    SpaceAfter=No

形態素解析器(MeCabやfugashi)に頼らず、系列ラベリングだけで組み上げたにしては、まずまずの結果だ。さて、6月22日発表予定の『世界のUniversal Dependenciesと係り受け解析ツール群』に、このアイデアも使えるかな。

15303568 journal
人工知能

yasuokaの日記: bert-large-japanese-char-extendedは「酸素ボンベを充[MASK]する。」の[MASK]に何を埋めてくるのか 1

日記 by yasuoka

3月28日の日記で製作した日本語BERTモデルに人名用漢字を全て追加して、bert-large-japanese-char-extendedとしてリリースした。単語長を1文字としたので、MeCabやfugashiを必要としない。ちょっとGoogle Colaboratoryで動かしてみよう。

!pip install transformers
import torch
from transformers import AutoTokenizer,AutoModelForMaskedLM
tokenizer=AutoTokenizer.from_pretrained("KoichiYasuoka/bert-large-japanese-char-extended")
model=AutoModelForMaskedLM.from_pretrained("KoichiYasuoka/bert-large-japanese-char-extended")
tokens=tokenizer.tokenize("酸素ボンベを充[MASK]する。")
print(tokens)
mask=tokens.index("[MASK]")
ids=torch.tensor([tokenizer.convert_tokens_to_ids(tokens)])
with torch.no_grad():
  outputs=model(ids)
  pred=outputs[0][0,mask].topk(5)
for i,t in enumerate(tokenizer.convert_ids_to_tokens(pred.indices)):
  tokens[mask]=t
  print(i+1,tokens)

「酸素ボンベを充[MASK]する。」という例文に対し、私(安岡孝一)の手元では、以下の結果が得られた。

['酸', '素', 'ボ', 'ン', 'ベ', 'を', '充', '[MASK]', 'す', 'る', '。']
1 ['酸', '素', 'ボ', 'ン', 'ベ', 'を', '充', '塡', 'す', 'る', '。']
2 ['酸', '素', 'ボ', 'ン', 'ベ', 'を', '充', '填', 'す', 'る', '。']
3 ['酸', '素', 'ボ', 'ン', 'ベ', 'を', '充', '杯', 'す', 'る', '。']
4 ['酸', '素', 'ボ', 'ン', 'ベ', 'を', '充', '給', 'す', 'る', '。']
5 ['酸', '素', 'ボ', 'ン', 'ベ', 'を', '充', '蓄', 'す', 'る', '。']

ちゃんと常用漢字の「塡」を穴埋めしていて、素晴らしい。さて、6月22日発表予定の『世界のUniversal Dependenciesと係り受け解析ツール群』に、このbert-large-japanese-char-extendedも使ってみようかな。

15292972 journal
政府

yasuokaの日記: なぜ「僾」は人名用漢字になれなかったのか

日記 by yasuoka

昨日(5月23日)の新潟日報(第28140号)1面で「僾」が紹介された、との御連絡をいただいた。

僾 アイ ほのか

法務省で人名用漢字を増やす作業に携わった際に、子の名に付けたいとする要望が複数見られた字。字面もかわいらしいし、辞書の音訓でアイやホノカと読んだら良さそうだが、意味まで見ればボンヤリということ。 (之)

しかし、「僾」は人名用漢字に追加されていない。2004年4月23日の法制審議会人名用漢字部会議事録による限り、「僾」はJIS X 0213の第1・2水準漢字ではなかったため、そもそも審議対象となっていないのだ。ちなみに、この日の審議では「要望があった」第1・2水準漢字730字と、「要望があった」その他の漢字140字が、資料として挙がっている。その内訳は、私(安岡孝一)が調べた限りでは以下の通り。

  • 第1水準
    岡其此云芭陀袖柏庵犀笠宋撫濡逢曾廻狼雀葛馴撰潰蘇梶瓦迦筑或播而篠蹴溜鞘柴鵜梁柿喧讃杖劉毘臥蒲簾堵臼麓峯嘩夷鷲崖鱗祇汲梗堺溢醍醐醒琵袴琶菱幌芥茨牙蜜駕淋櫛叉捧悶馳獅瓜芯牡蓬阜侶槍峨榊燕戴汝辿兎樋磐冥詫憐樽牟禰縞玩裡牽屑弛綴肴榎鄭汎芦梯湊葡仔糊羨董堆駈蝦壬燭按閃俄劫逗栖瓢樫硯箔舵鎧兜杷薙纏圃灼枇舷轟柘箕柑閏鷺櫓托灘鱒宕庚尤秤乎萄斡錫珂煉蛭恢沫萱奄竪沓閤冨頬呑諦葦繋祷莱蹄倶焔瀧繍騨桔雫漣浬埜檎椛珊豹禾湘桧侠哩祢孜樟娃涛葱唖涌鍾斌弼葎盈夙迩淘穎肱椙鴇瀞梼狛珪岱鍔蒜鉦濠桓揖飴菰翰碕鐸沃卦捗乍杢摸罫荏熔苓鮪鍍猷篭楳吋穐屡侭靭戎燐掬鴛綬姶棉
  • 第2水準
    煌絆遙橙萬曖刹檜已凉蕾徠泪澤巫勒鸞瑜棹聚薇尹諷几喩淮魏薔拮雉祠哥襄諧膀胱贅闍埃罹羞疼邇訝槃涅榴于帷禊楔肚瞑嶽訶嬌悸靡殷軋圀濤證恣綽杆緻闊姜苺凛琥珀萠稟凰禮櫂實麒釉榮槇珈堯圓俚梳楷學吼壹玻仍杞莢藺憬槐翡游磊彷蓼朶徨篝當嗄淙揶恍剋璋會溪浚糺滄欅繪楡曠奘佩齋弖筍寶讚娑韋渾婉翅躬楫燵仄汪琲癸囀靄籐爬霰綏摯礒梟杼宸飄瀟邂噤瀾誡舳沁躾夭戈輦矣茲矜縷艫瑣茗框沽欒聲鬨崋荀籟芬稷櫟們卉煕篁阮岑菴豈吝懿惺淕昊逞梛羚晄驍俐檸螢娜棗葩苳晞檬絋馮洙絽紲兔瑤碼戀葫聰曄茱倬梦呀腥瑪鐵晤莎偕菘唏楸佶晧珸幟愃泱抖暎綵穹悧攸弌侏菻惷薊喃杳仗筧价鯱儚繚僖莅韶瓏旻憙敞喨勍楪瞹懍怡晁娥誨磋琅騏纒莟冰杲廸馗獏窈嫩箜莓愬禀椥朧莠瀏斈棯啝薺號撩樓悛茘悳縺禧壟擴犂窿裄剱聆綉塒榕尓鎬娟皎嬪獨霖驥恫厦靫甍絖鏤菲榧續惶馥渺梏舩鑛驀烝溥絲婀貘柯稱倆湫瑩覩祗妣赭椹羌匯隗臾巓旌卍洌硅沮區籔霄凩糀颱昶圜溂漓逵釼葆營縻瑯祺楜旡繼銹犁隹瑰劔阡羣駸驃咏澡勵聿豎湟隍蚪譽瓊妍杠贊伉咢峩痳鑾笳鰕泓笆驅袮閖夬駻冫沍嫺翆鶇曼佝唔夸霸棆楙渮湶荅萪藾遖隨錵閠陦隴仟珮恪關淇猗笶皖鉚莇耒遨迥哦勠恷朞桍
  • 第3水準
    煇俉琇祜璦栬曈你昱煜絓綋璉忉燁晙淼澍溱睎嗎媧枻棱珉璆珏璘玦玠噯憼愷皝奝翺焞晌偀倮伃伋佟泠羿鉃俠郗㐂妤梲琮晥㬢
  • 第4水準
    倞淩踔稑毱熠飂絇瑝咺悊憘悾恿悕躶勑旼暐暭暒侚舡澟渢浠潽洧崆岭匤艹薆芧虓䋝桄溧夆
  • JIS X 0213に無い漢字
    僾獠砢㓐礌紻䮝姱颮栯玭鿱鍟喗唬喤袊祮逴摰喣晠伈豋𤂍沬溤漻㵑沇𪷤睴凘芕蒨荲驁伲邓
  • IDSで表現せざるを得ない漢字
    ⿰有品 ⿱⿲乡皀阝音 ⿰⿱西土瓦 ⿱爫木

数が合わないのは、元資料が4字ほど(佟俉琇砢)ダブっていたためのようだ。これらの要望を全て人名用漢字に収録すべきだ、とまでは言わないが、「巫」の人名用漢字追加の際にも書いた通り、もう少しマトモに要望を拾い上げる仕組みが必要だった気がする。まあ、今さら言ったところで、法務省民事局は、この問題を17年間もほったらかしなので、聞く耳を持たないのだろうけど。

15292403 journal
人工知能

yasuokaの日記: SikuBERTは「孟子[MASK]梁惠王」の[MASK]に何を埋めてくるのか

日記 by yasuoka

Transformersのモデルページに、古典中国語モデルSikuBERTが収録されているのを見つけた。王东波・刘畅・朱子赫・胡昊天・沈思・李斌の『面向数字人文的《四库全书》预训练模型构建及应用研究』(第五届全国未来智慧图书馆发展论坛、2021年5月)によれば、四庫全書536097588字をもとにしたBERTモデルらしい。さっそく動かしてみようとしたのだが、モデルにバグがあって、うまく動かない。仕方ないので、Google Colaboratoryでバグを避けて動かしてみることにした。

!test -f SIKU-BERT/sikubert/config.json || ( mkdir -p SIKU-BERT/sikubert && cd SIKU-BERT/sikubert && for F in vocab.txt pytorch_model.bin bert_config.json ; do curl -LO https://huggingface.co/SIKU-BERT/sikubert/resolve/main/$F ; done ; cp bert_config.json config.json )
!pip install transformers
import torch
from transformers import AutoTokenizer,AutoModelForMaskedLM
tokenizer=AutoTokenizer.from_pretrained("SIKU-BERT/sikubert")
model=AutoModelForMaskedLM.from_pretrained("SIKU-BERT/sikubert")
tokens=tokenizer.tokenize("孟子[MASK]梁惠王")
print(tokens)
mask=tokens.index("[MASK]")
ids=torch.tensor([tokenizer.convert_tokens_to_ids(tokens)])
with torch.no_grad():
  outputs=model(ids)
  pred=outputs[0][0,mask].topk(5)
for i,t in enumerate(tokenizer.convert_ids_to_tokens(pred.indices)):
  tokens[mask]=t
  print(i+1,tokens)

最初の長い行はバグ除けで、本来は不要だったりする。「孟子[MASK]梁惠王」という例文に対し、私(安岡孝一)の手元では、以下の結果が得られた。

['孟', '子', '[MASK]', '梁', '惠', '王']
1 ['孟', '子', '[UNK]', '梁', '惠', '王']
2 ['孟', '子', '上', '梁', '惠', '王']
3 ['孟', '子', '交', '梁', '惠', '王']
4 ['孟', '子', '書', '梁', '惠', '王']
5 ['孟', '子', '間', '梁', '惠', '王']

バグを避け切れていないのか、かなり結果が変だ。GuwenBERT-baseや私のroberta-classical-chinese-base-charと較べてみても、うまく穴埋めできていない。どうなってるんだろうと思いつつ、SikuBERTのvocab.txtを眺めてみたところ、例の「しにはとんとんワークケートを」が紛れ込んでいる。どうして、古典中国語モデルのvocab.txtに、ワークゲートの求人情報が入ってるんだろ。それとも、バグが直ったら、このあたりも直るのかしら。

15291993 journal
バグ

yasuokaの日記: 文字情報基盤MJ038015は「𣑾」なのか「𣑅」なのか

日記 by yasuoka

文字情報技術促進協議会の文字情報検索システムを見ていたところ、MJ038015に目がとまった。このMJ038015は、戸籍統一文字166530からの収録で、U+2347E「𣑾」が対応付けられているのだが、微妙に字体が違う気がする。私(安岡孝一)の見る限りだと、U+23445「𣑅」の方が近い。どうなってるんだろうと思って、『汎用電子情報交換環境整備プログラム成果報告書』別冊第7分冊を見てみたところ、3168ページに戸籍統一文字166530が収録されていて、やっぱりU+2347Eと対応づけられている。さて、どうしたものかな。

15289983 journal
交通

yasuokaの日記: 路線バスによる岡山県縦断 1

日記 by yasuoka

思うところあって、岡山県の湯船口バス停から久須美弘法大師堂前バス停まで、路線バスで移動することを考えてみた。鉄道や高速バスは使わない、という条件だ。この日記の読者の中に、そういう情報が役立つ人がいるかもしれないと思い、とりあえず公表することにする。

湯船口06:27→08:10真庭市役所 [まにわくん♡]
真庭市役所08:47→09:39栃原下 [旭川さくらバス]
さくらバス乗換場所09:50→10:18福渡駅 [御津・建部コミュニティバス]
・福渡駅周辺で早昼
福渡駅12:10→13:08国立病院 [御津・建部コミュニティバス]
国立病院13:34→14:02岡山駅 [中鉄バス]
岡山駅14:30→15:35日比 [両備バス]
日比16:16→16:23王子ヶ岳登山口 [両備バス]
王子ヶ岳登山口16:30→16:55児島駅 [下電バス]
児島駅17:30→17:55久須美弘法大師堂前 [下電バス]

高梁を経由するルートもあるのだが、総社から倉敷へ抜けるバス路線がもはやズタズタのため、旭川ぞいのルートを選んでみた。蒜山湯船口から久須美鼻へ、平日1日のプランである。ちなみに、国立病院(岡山医療センター)で2分乗換に成功した場合は、以下のショートカットも可能となるが、あまり無理しないでほしい。

国立病院13:10→13:38岡山駅 [中鉄バス]
岡山駅13:53→15:27児島駅 [下電バス]
児島駅15:30→15:55久須美弘法大師堂前 [下電バス]

15288667 journal
交通

yasuokaの日記: 路線バスによる和歌山県横断 4

日記 by yasuoka

京都府兵庫県大阪府が微妙に受けたので、以前に作ってあった和歌山県を、少し手直しして公表することにした。元々は、和歌山港→高野山→本宮大社前で作ってあったのだが、聖地巡礼バスが運休中なので、川原河から龍神へアプローチすることにした。

坂田09:35→10:07南海和歌山市駅 [和歌山バス]
和歌山市駅前10:55→12:31川原河 [有田鉄道バス]
・川原河周辺で昼食
川原河14:15→15:26丸井旅館 [田辺市住民バス]
丸井旅館15:50→16:18龍神温泉 [龍神バス]
・龍神温泉で一泊
龍神温泉07:49→08:08西 [龍神バス]
西08:15→09:17紀伊田辺駅 [龍神バス]
紀伊田辺駅10:15→11:50本宮大社前 [明光バス]
・熊野本宮で昼食+参拝
本宮大社前15:15→16:14新宮駅 [熊野御坊南海バス]
新宮駅16:25→16:42大浜 [熊野御坊南海バス]

土日祝運休の路線がところどころにあるので、平日2日間のプランである。宿泊を紀伊田辺でなく、わざわざ龍神温泉にしているのは、まあ、私(安岡孝一)個人の趣味だったりする。なお、美山線(和歌山市駅前→川原河)は、海南駅前→野田口が高速バスだという意見もあるだろうから、高速道を避けて徒歩移動するプラン(水曜日出発限定)を、以下に示しておく。

坂田09:02→09:34南海和歌山市駅 [和歌山バス]
南海和歌山市駅09:56→10:46海南駅前 [和歌山バス]
海南駅前11:13→12:03黒沢牧場 [海南市コミュニティバス]
・南へ徒歩(2.5km)
平成橋13:57→14:33金屋庁舎 [有田川町コミュニティバス]
・金屋周辺で遅昼
金屋16:16→16:51川原河 [有田鉄道バス]
川原河18:15→19:27丸井旅館 [田辺市住民バス]
・丸井旅館周辺で一泊
丸井旅館08:16→09:17紀伊田辺駅 [龍神バス]
紀伊田辺駅10:15→11:50本宮大社前 [明光バス]
・熊野本宮で昼食+参拝
本宮大社前15:15→16:14新宮駅 [熊野御坊南海バス]
新宮駅16:25→16:42大浜 [熊野御坊南海バス]

15287478 journal
交通

yasuokaの日記: 路線バスによる大阪府縦断

日記 by yasuoka

思うところあって、大阪府の豊中センター前バス停から小島住吉バス停まで、路線バスで移動することを考えてみた。鉄道や高速バスは使わない、という条件だ。この日記の読者の中に、そういう情報が役立つ人がいるとは思えないのだが、とりあえず公表することにする。

豊中センター前06:35→06:47能勢町宿野 [阪急バス]
能勢町宿野08:01→08:16口山内 [阪急バス]
・北東へ徒歩500m
奥山内09:14→09:53箕面森町地区センター [阪急バス]
箕面森町地区センター10:11→10:36千里中央 [阪急バス]
千里中央10:45→11:08阪急豊中駅 [阪急バス]
阪急豊中駅11:14→11:41三国本町 [阪急バス]
三国本町12:03→12:23福島西通 [大阪シティバス]
福島西通12:40→12:57地下鉄桜川 [大阪シティバス]
・桜川駅附近で遅昼
地下鉄桜川13:52→14:22地下鉄住之江公園 [大阪シティバス]
住之江公園駅前15:09→15:35堺東駅前 [南海バス]
堺東駅前15:47→16:46光明池駅 [南海バス]
光明池駅17:00→17:28和泉中央駅 [南海バス]
和泉中央駅17:39→18:28岸和田駅前 [南海ウイングバス南部]
・岸和田駅周辺で一泊
岸和田駅前09:05→09:13南町 [ローズバス]
・紀州街道を西へ徒歩500m
津田北町会館前09:26→09:39貝塚市役所 [は〜もに〜ばす]
貝塚市役所09:49→10:08王子 [は〜もに〜ばす]
・貝田橋を渡って西へ徒歩600m
貝田10:42→11:03りんくう総合医療センター [いずみさのコミュニティバス]
ワシントンホテル11:12→11:29イオンモールりんくう泉南 [南海ウイングバス南部]
・イオンモールりんくう泉南で昼食
イオンモールりんくう泉南12:23→13:05温水プール前 [さわやかバス]
温水プール13:40→14:01阪南市役所 [さつき号]
阪南市役所14:20→14:47南山中 [さつき号]
・南西へ徒歩500m
望海坂1丁目15:23→16:08小島住吉 [岬町コミュニティバス]

非常に残念だが、一瞬だけ兵庫県に出てしまう。能勢町から豊能町へ、野間峠の徒歩越えも一瞬アタマをよぎったが、結局、黒川ルートにした。一方、貝塚市と岬町はいわゆる「バス鎖国」なので、どうしても徒歩移動が入ってしまう。できるだけ近いところを選んだつもりだが、もし、もっといい方法があれば教えてほしい。なお、あちこちの路線が土日祝運休なので、平日2日間の移動になると思う。ちなみに、6月1日以降、ローズバスは減便となるため、以下の東岸和田ルートも考慮すべきだろう。

岸和田駅前08:30→08:36東岸和田駅前 [南海ウイングバス南部]
・南西へ徒歩600m
久保住宅09:09→09:39貝塚市役所 [は〜もに〜ばす]

15286368 journal
人工知能

yasuokaの日記: Universal Dependencies 2.8.1がリリース

日記 by yasuoka

Universal Dependencies 2.8.1が無事にリリースされたとの御連絡をいただいた。実は、5月15日にUniversal Dependencies 2.8がリリースされたのだが、オランダ語が抜け落ちるというバグがあったため、Universal Dependencies 2.8.1として再リリースされたものだ。

Universal Dependenices 2.8.1は114の言語にまたがるツリーバンクで、各言語の品詞・係り受け解析のみならず、多言語の係り受け解析に用いることができる。半年前のUniversal Dependencies 2.7と較べて、Beja、Central Siberian Yupik、Guajajára、K'iche'、Kangri、Low German、Makuráp、Urubú-Kaapor、Western Frisianが増えているらしいのだが、私(安岡孝一)自身は知らない言語ばかりで、まだまだ勉強が足りない。これらの言語をご存じの読者は、ぜひ御教示いただきたい。

15285148 journal
交通

yasuokaの日記: 路線バスによる兵庫県縦断 3

日記 by yasuoka

思うところあって、兵庫県の仁頃バス停から居組港バス停まで、路線バスで移動することを考えてみた。鉄道や高速バスは使わない、という条件だ。この日記の読者の中に、そういう情報が役立つ人がいるとは思えないのだが、とりあえず公表することにする。

仁頃08:57→09:34神代 [らん・らんバス]
神代09:59→10:49洲本バスセンター [淡路交通バス]
洲本バスセンター11:10→11:33しづかホール前 [淡路交通バス]
しづかホール前11:39→12:50岩屋ポートターミナル [あわ神あわ姫バス]
岩屋港13:00→13:13明石港 [淡路ジェノバライン]
・明石駅付近で遅昼
明石駅14:35→15:58社(車庫前) [神姫バス]
社(車庫前)16:50→17:17アスティアかさい [神姫バス]
アスティアかさい17:53→18:04西大貫 [神姫バス]
・福崎保健所周辺で一泊
保喜07:53→08:32神崎総合病院 [市川町コミュニティバス]
神崎総合病院10:50→11:16生野駅西口 [神河町コミュニティバス]
生野駅西口12:07→13:32八鹿病院西口 [全但バス]
・八鹿病院周辺で遅昼
八鹿病院東玄関15:14→16:25湯村温泉 [全但バス]
湯村温泉16:45→17:11浜坂駅 [夢つばめ]
浜坂駅18:22→18:41居組港 [夢つばめ]

明石海峡大橋を渡らずに淡路島から脱出すべく、淡路ジェノバラインを使ってみた。また、保喜→神崎総合病院の運行が火金のみなので、出発日は月曜日か木曜日ということになる。なお、福崎町と市川町の間はバスがほとんど走っておらず、結果として、西大貫バス停から保喜バス停への約4kmが徒歩移動である。宿をどこに取れるかによって、歩く距離が変わってくる。ちなみに、舟坂峠周辺で宿が取れた場合は、以下のルート(船坂トンネル経由で徒歩1km)も考えられるが、山の夜道には十分に注意されたい。

アスティアかさい18:04→18:50大和 [神姫バス]
・舟坂峠周辺で一泊
寺家07:37→08:32神崎総合病院 [市川町コミュニティバス]

typodupeerror

物事のやり方は一つではない -- Perlな人

読み込み中...