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

yasuokaさんのトモダチの日記みんなの日記も見てね。 アカウントを作成して、スラドのモデレーションと日記の輪に参加しよう。

16493172 journal
人工知能

yasuokaの日記: ku-nlp/deberta-v2-base-japaneseのトークナイザをJuman++に繋ぎつつJSQuADでファインチューニング

日記 by yasuoka

昨日の日記の手法を応用して、ku-nlp/deberta-v2-base-japaneseJGLUEのJSQuADでファインチューニングしてみた。Google Colaboratory (GPU版)だと、こんな感じ。

!test -d jumanpp-2.0.0-rc3 || curl -L https://github.com/ku-nlp/jumanpp/releases/download/v2.0.0-rc3/jumanpp-2.0.0-rc3.tar.xz | tar xJf -
!test -x /usr/local/bin/jumanpp || ( mkdir jumanpp-2.0.0-rc3/build && cd jumanpp-2.0.0-rc3/build && cmake .. -DCMAKE_BUILD_TYPE=Release && make install )
!test -d transformers-4.26.0 || git clone -b v4.26.0 --depth=1 https://github.com/huggingface/transformers transformers-4.26.0
!test -d JGLUE || ( git clone --depth=1 https://github.com/yahoojapan/JGLUE && cat JGLUE/fine-tuning/patch/transformers-4.9.2_jglue-1.1.0.patch | ( cd transformers-4.26.0 && patch -p1 ) )
!cd transformers-4.26.0 && pip install .
!pip install -r transformers-4.26.0/examples/pytorch/text-classification/requirements.txt
!pip install protobuf==3.19.1 tensorboard pytextspan rhoknp
import json
from transformers import DebertaV2TokenizerFast,AutoModelForMaskedLM
tkz=DebertaV2TokenizerFast.from_pretrained("ku-nlp/deberta-v2-base-japanese")
mdl=AutoModelForMaskedLM.from_pretrained("ku-nlp/deberta-v2-base-japanese")
tkz.__class__.__name__="JumanppDebertaV2TokenizerFast"
tkz.init_kwargs["auto_map"]={"AutoTokenizer":[None,"tokenizer.JumanppDebertaV2TokenizerFast"]}
tkz.save_pretrained("deberta-v2-base-japanese")
mdl.save_pretrained("deberta-v2-base-japanese")
s='''#! /usr/bin/python3
from transformers import DebertaV2TokenizerFast
from transformers.models.bert_japanese.tokenization_bert_japanese import JumanppTokenizer
class JumanppPreTokenizer(JumanppTokenizer):
  def jumanpp_split(self,i,normalized_string):
    import textspan
    t=str(normalized_string)
    k=self.tokenize(t)
    return [normalized_string[s:e] for c in textspan.get_original_spans(k,t) for s,e in c]
  def pre_tokenize(self,pretok):
    pretok.split(self.jumanpp_split)
class JumanppDebertaV2TokenizerFast(DebertaV2TokenizerFast):
  def __init__(self,**kwargs):
    from tokenizers.pre_tokenizers import PreTokenizer,Metaspace,Sequence
    super().__init__(**kwargs)
    self._tokenizer.pre_tokenizer=Sequence([PreTokenizer.custom(JumanppPreTokenizer()),Metaspace()])
  def save_pretrained(self,save_directory,**kwargs):
    import os
    import shutil
    from tokenizers.pre_tokenizers import PreTokenizer,Metaspace,Sequence
    self._auto_map={"AutoTokenizer":[None,"tokenizer.JumanppDebertaV2TokenizerFast"]}
    self._tokenizer.pre_tokenizer=Metaspace()
    super().save_pretrained(save_directory,**kwargs)
    self._tokenizer.pre_tokenizer=Sequence([PreTokenizer.custom(JumanppPreTokenizer()),Metaspace()])
    shutil.copy(os.path.abspath(__file__),os.path.join(save_directory,"tokenizer.py"))'''
with open("deberta-v2-base-japanese/tokenizer.py","w",encoding="utf-8") as w:
  print(s,file=w)
for f in ["train-v1.1.json","valid-v1.1.json"]:
  with open("JGLUE/datasets/jsquad-v1.1/"+f,"r",encoding="utf-8") as r:
    j=json.load(r)
  u=[]
  for d in j["data"]:
    for p in d["paragraphs"]:
      for q in p["qas"]:
        u.append({"id":q["id"],"title":d["title"],"context":p["context"],"question":q["question"],"answers":{"text":[x["text"] for x in q["answers"]],"answer_start":[x["answer_start"] for x in q["answers"]]}})
  with open(f,"w",encoding="utf-8") as w:
    json.dump({"data":u},w,ensure_ascii=False,indent=2)
f="transformers-4.26.0/examples/pytorch/question-answering/run_qa.py"
!if fgrep trust_remote_code {f} ; then : ; else ( echo '%s/use_fast=.*,/& trust_remote_code=True,/' ; echo wq ) | ex -s {f} ; fi
!python {f} --model_name_or_path deberta-v2-base-japanese --do_train --do_eval --max_seq_length 384 --learning_rate 5e-05 --num_train_epochs 3 --per_device_train_batch_size 16 --per_device_eval_batch_size 16 --output_dir ./deberta-v2-base-japanese-jsquad --overwrite_output_dir --train_file train-v1.1.json --validation_file valid-v1.1.json --save_steps 5000 --warmup_ratio 0.1

GPU版でも5時間を要したものの、私(安岡孝一)の手元では以下の「eval metrics」が出力された。

***** eval metrics *****
  epoch                   =        3.0
  eval_exact_match        =      90.86
  eval_f1                 =    90.9027
  eval_runtime            = 0:00:55.75
  eval_samples            =       4450
  eval_samples_per_second =      79.82
  eval_steps_per_second   =      5.004

JSQuADが、EM/F1=0.9086/0.9090というのは、baseモデルとしては非常にイイセンだと思う。ku-nlp/deberta-v2-large-japaneseの方も見てみたい気がするが、さすがにGoogle Colaboratoryだと打ち切られちゃうかなぁ。

16491725 journal
人工知能

yasuokaの日記: ku-nlp/deberta-v2-base-japaneseのトークナイザをJuman++に繋ぎつつJCommonSenseQAでファインチューニング

日記 by yasuoka

1月20日の日記の手法をもとに、ku-nlp/deberta-v2-base-japaneseJGLUEのJCommonSenseQAでファインチューニングしてみた。Google Colaboratory (GPU版)だと、こんな感じ。

!test -d jumanpp-2.0.0-rc3 || curl -L https://github.com/ku-nlp/jumanpp/releases/download/v2.0.0-rc3/jumanpp-2.0.0-rc3.tar.xz | tar xJf -
!test -x /usr/local/bin/jumanpp || ( mkdir jumanpp-2.0.0-rc3/build && cd jumanpp-2.0.0-rc3/build && cmake .. -DCMAKE_BUILD_TYPE=Release && make install )
!test -d transformers-4.26.0 || git clone -b v4.26.0 --depth=1 https://github.com/huggingface/transformers transformers-4.26.0
!test -d JGLUE || ( git clone --depth=1 https://github.com/yahoojapan/JGLUE && cat JGLUE/fine-tuning/patch/transformers-4.9.2_jglue-1.1.0.patch | ( cd transformers-4.26.0 && patch -p1 ) )
!cd transformers-4.26.0 && pip install .
!pip install -r transformers-4.26.0/examples/pytorch/text-classification/requirements.txt
!pip install protobuf==3.19.1 tensorboard pytextspan rhoknp
from transformers import DebertaV2TokenizerFast,AutoModelForMaskedLM
tkz=DebertaV2TokenizerFast.from_pretrained("ku-nlp/deberta-v2-base-japanese")
mdl=AutoModelForMaskedLM.from_pretrained("ku-nlp/deberta-v2-base-japanese")
tkz.__class__.__name__="JumanppDebertaV2TokenizerFast"
tkz.init_kwargs["auto_map"]={"AutoTokenizer":[None,"tokenizer.JumanppDebertaV2TokenizerFast"]}
tkz.save_pretrained("deberta-v2-base-japanese")
mdl.save_pretrained("deberta-v2-base-japanese")
s='''#! /usr/bin/python3
from transformers import DebertaV2TokenizerFast
from transformers.models.bert_japanese.tokenization_bert_japanese import JumanppTokenizer
class JumanppPreTokenizer(JumanppTokenizer):
  def jumanpp_split(self,i,normalized_string):
    import textspan
    t=str(normalized_string)
    k=self.tokenize(t)
    return [normalized_string[s:e] for c in textspan.get_original_spans(k,t) for s,e in c]
  def pre_tokenize(self,pretok):
    pretok.split(self.jumanpp_split)
class JumanppDebertaV2TokenizerFast(DebertaV2TokenizerFast):
  def __init__(self,**kwargs):
    from tokenizers.pre_tokenizers import PreTokenizer,Metaspace,Sequence
    super().__init__(**kwargs)
    self._tokenizer.pre_tokenizer=Sequence([PreTokenizer.custom(JumanppPreTokenizer()),Metaspace()])
  def save_pretrained(self,save_directory,**kwargs):
    import os
    import shutil
    from tokenizers.pre_tokenizers import PreTokenizer,Metaspace,Sequence
    self._auto_map={"AutoTokenizer":[None,"tokenizer.JumanppDebertaV2TokenizerFast"]}
    self._tokenizer.pre_tokenizer=Metaspace()
    super().save_pretrained(save_directory,**kwargs)
    self._tokenizer.pre_tokenizer=Sequence([PreTokenizer.custom(JumanppPreTokenizer()),Metaspace()])
    shutil.copy(os.path.abspath(__file__),os.path.join(save_directory,"tokenizer.py"))'''
with open("deberta-v2-base-japanese/tokenizer.py","w",encoding="utf-8") as w:
  print(s,file=w)
f="transformers-4.26.0/examples/pytorch/multiple-choice/run_swag.py"
!if fgrep trust_remote_code {f} ; then : ; else ( echo '%s/use_fast=.*,/& trust_remote_code=True,/' ; echo wq ) | ex -s {f} ; fi
!python {f} --model_name_or_path deberta-v2-base-japanese --do_train --do_eval --do_predict --max_seq_length 64 --per_device_train_batch_size 12 --learning_rate 5e-05 --num_train_epochs 4 --output_dir ./deberta-v2-base-japanese-jcommonsenseqa --overwrite_output_dir --train_file JGLUE/datasets/jcommonsenseqa-v1.1/train-v1.1.json --validation_file JGLUE/datasets/jcommonsenseqa-v1.1/valid-v1.1.json --test_file JGLUE/datasets/jcommonsenseqa-v1.1/valid-v1.1.json --use_fast_tokenizer True --evaluation_strategy epoch --warmup_ratio 0.1

auto_mapとtrust_remote_code=Trueがトリッキーだが、Juman++のインストールも含め、GPU版なら30分ほどでdeberta-v2-base-japanese-jcommonsenseqaが出来上がる。私(安岡孝一)の手元では、以下の「eval metrics」が出力された。

***** eval metrics *****
  epoch                   =        4.0
  eval_accuracy           =     0.8606
  eval_loss               =     0.6361
  eval_runtime            = 0:00:12.16
  eval_samples            =       1119
  eval_samples_per_second =     91.989
  eval_steps_per_second   =     11.509

JCommonSenseQAが0.8606なので、私が以前作ったdeberta-base-japanese-wikipediaより、断然高い。ただ、これ、Juman++だけじゃなくて、rhoknpもpytextspanも必要なので、さて、どうしたものかなぁ。

16491308 journal
日本

yasuokaの日記: Universal Dependenciesで読む『ウアイヌコㇿ コタン アカㇻ』

日記 by yasuoka

1月26日の日記で引用した『ウアイヌコㇿ コタン アカㇻ』の挨拶文を、esuparの助けを借りつつ、手作業でUniversal Depedencies化してみた。

# text = イランカラㇷ゚テ。
1    イランカラㇷ゚テ    irankarapte    INTJ    間投詞    _    0    root    _    SpaceAfter=No
2    。    .    PUNCT    記号    _    1    punct    _    _

# text = ウアイヌコㇿ コタン オルン シネウパ ウタㇻ、 エチコプンテㇰ ナ。
1    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    2    amod    _    _
2    コタン    kotan    NOUN    名詞    _    3    nmod    _    _
3-4    オルン    _    _    _    _    _    _    _    _
3    オㇿ    or    NOUN    位置名詞    _    5    obl    _    _
4    ウン    un    ADP    格助詞    _    3    case    _    _
5    シネウパ    sinewpa    VERB    自動詞    _    6    acl    _    _
6    ウタㇻ    utar    NOUN    名詞    _    9    obj    _    SpaceAfter=No
7    、    ,    PUNCT    記号    _    6    punct    _    _
8    エチ    eci=    PART    人称接辞    _    9    nsubj    _    SpaceAfter=No
9    コプンテㇰ    kopuntek    VERB    他動詞    _    0    root    _    _
10    ナ    na    PART    終助詞    _    9    discourse    _    SpaceAfter=No
11    。    .    PUNCT    記号    _    9    punct    _    _

# text = アヌココㇿ アイヌ イコロマケンル 第3回テーマ展示 『ウアイヌコㇿ コタン アカㇻ ―民族共生象徴空間(ウポポイ)のことばと歴史―』 セコㇿ チレコ ワ オロ タ エチエカノㇰ。
1-2    アヌココㇿ    _    _    _    _    _    _    _    _
1    アン    an=    PART    人称接辞    _    2    nsubj    _    _
2    ウココㇿ    ukokor    VERB    他動詞    _    6    acl    _    _
3    アイヌ    aynu    NOUN    名詞    _    4    nmod    _    _
4-5    イコロマ    _    _    _    _    _    _    _    SpaceAfter=No
4    イコㇿ    ikor    NOUN    名詞    _    5    obj    _    _
5    オマ    oma    VERB    他動詞    _    6    acl    _    _
6    ケンル    kenru    NOUN    名詞    _    11    nmod    _    _
7    第    第    NOUN    接頭辞    _    8    compound    _    SpaceAfter=No
8    3    三    NUM    名詞-数詞    _    11    nummod    _    SpaceAfter=No
9    回    回    NOUN    名詞-普通名詞-助数詞可能    _    8    clf    _    SpaceAfter=No
10    テーマ    テーマ    NOUN    名詞-普通名詞-一般    _    11    compound    _    SpaceAfter=No
11    展示    展示    NOUN    名詞-普通名詞-サ変可能    _    33    obj    _    _
12    『    "    PUNCT    記号    _    16    punct    _    SpaceAfter=No
13    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    14    amod    _    _
14    コタン    kotan    NOUN    名詞    _    16    obj    _    _
15    ア    a=    PART    人称接辞    _    16    nsubj    _    SpaceAfter=No
16    カㇻ    kar    VERB    他動詞    _    11    appos    _    _
17    ―    ―    PUNCT    補助記号-一般    _    26    punct    _    SpaceAfter=No
18    民族    民族    NOUN    名詞-普通名詞-一般    _    21    compound    _    SpaceAfter=No
19    共生    共生    NOUN    名詞-普通名詞-サ変可能    _    21    compound    _    SpaceAfter=No
20    象徴    象徴    NOUN    名詞-普通名詞-サ変可能    _    21    compound    _    SpaceAfter=No
21    空間    空間    NOUN    名詞-普通名詞-一般    _    26    nmod    _    SpaceAfter=No
22    (    (    PUNCT    補助記号-括弧開    _    23    punct    _    SpaceAfter=No
23    ウポポイ    Upopoy    PROPN    固有名詞    _    21    appos    _    SpaceAfter=No
24    )    )    PUNCT    補助記号-括弧閉    _    23    punct    _    SpaceAfter=No
25    の    の    ADP    助詞-格助詞    _    21    case    _    SpaceAfter=No
26    ことば    言葉    NOUN    名詞-普通名詞-一般    _    16    parataxis    _    SpaceAfter=No
27    と    と    ADP    助詞-格助詞    _    26    case    _    SpaceAfter=No
28    歴史    歴史    NOUN    名詞-普通名詞-一般    _    26    conj    _    SpaceAfter=No
29    ―    ―    PUNCT    補助記号-一般    _    26    punct    _    SpaceAfter=No
30    』    "    PUNCT    記号    _    16    punct    _    _
31    セコㇿ    sekor    SCONJ    接続詞    _    11    case    _    _
32    チ    ci=    PART    人称接辞    _    33    nsubj    _    SpaceAfter=No
33    レコ    réko    VERB    他動詞    _    35    acl    _    _
34    ワ    wa    SCONJ    接続助詞    _    33    mark    _    _
35    オロ    oro    NOUN    位置名詞    _    38    obl    _    _
36    タ    ta    ADP    格助詞    _    35    case    _    _
37    エチ    eci=    PART    人称接辞    _    38    nsubj    _    SpaceAfter=No
38    エカノㇰ    ekanok    VERB    他動詞    _    0    root    _    SpaceAfter=No
39    。    .    PUNCT    記号    _    38    punct    _    _

# text = 2020パ 7チュㇷ゚ 12ト ワノ アイヌ プリ カンナ アシトゥリレ クニネ ウアイヌコㇿ コタン アン。
1    2020    2020    NUM    数詞    _    2    nummod    _    SpaceAfter=No
2    パ    pa    NOUN    名詞    _    6    compound    _    _
3    7    7    NUM    数詞    _    4    nummod    _    SpaceAfter=No
4    チュㇷ゚    cup    NOUN    名詞    _    6    compound    _    _
5    12    12    NUM    数詞    _    6    nummod    _    SpaceAfter=No
6    ト    to    NOUN    名詞    _    16    obl    _    _
7    ワノ    wano    ADP    格助詞    _    6    case    _    _
8    アイヌ    aynu    NOUN    名詞    _    9    compound    _    _
9    プリ    puri    NOUN    名詞    _    12    obj    _    _
10    カンナ    kanna    ADV    副詞    _    12    advmod    _    _
11    ア    a=    PART    人称接辞    _    12    nsubj    _    SpaceAfter=No
12    シトゥリレ    situri-re    VERB    他動詞    _    16    advcl    _    _
13    クニネ    kunine    SCONJ    接続助詞    _    12    mark    _    _
14    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    15    amod    _    _
15    コタン    kotan    NOUN    名詞    _    16    nsubj    _    _
16    アン    an    VERB    自動詞    _    0    root    _    SpaceAfter=No
17    。    .    PUNCT    記号    _    16    punct    _    _

# text = タン コタン オルン アイヌ ウタㇻ カ シサㇺ ウタㇻ カ レプンクㇽ ウタㇻ カ シネウパ。
1    タン    tan    DET    連体詞    _    2    det    _    _
2    コタン    kotan    NOUN    名詞    _    3    nmod    _    _
3-4    オルン    _    _    _    _    _    _    _    _
3    オㇿ    or    NOUN    位置名詞    _    14    obl    _    _
4    ウン    un    ADP    格助詞    _    3    case    _    _
5    アイヌ    aynu    NOUN    名詞    _    6    nmod    _    _
6    ウタㇻ    utar    NOUN    名詞    _    14    nsubj    _    _
7    カ    ka    ADP    副助詞    _    6    case    _    _
8    シサㇺ    sisam    NOUN    名詞    _    9    nmod    _    _
9    ウタㇻ    utar    NOUN    名詞    _    6    conj    _    _
10    カ    ka    ADP    副助詞    _    9    case    _    _
11    レプンクㇽ    repunkur    NOUN    名詞    _    12    nmod    _    _
12    ウタㇻ    utar    NOUN    名詞    _    6    conj    _    _
13    カ    ka    ADP    副助詞    _    12    case    _    _
14    シネウパ    sinewpa    VERB    自動詞    _    0    root    _    SpaceAfter=No
15    。    .    PUNCT    記号    _    14    punct    _    _

# text = アイヌ プリ エヤイパカㇱヌ。
1    アイヌ    aynu    NOUN    名詞    _    2    compound    _    _
2    プリ    puri    NOUN    名詞    _    3    obj    _    _
3    エヤイパカㇱヌ    eyaypakasnu    VERB    他動詞    _    0    root    _    SpaceAfter=No
4    。    .    PUNCT    記号    _    3    punct    _    _

# text = “ウポポイ” アナㇰネ ウアイヌコㇿ コタン ポンレ ネ。
1    “    "    PUNCT    記号    _    2    punct    _    SpaceAfter=No
2    ウポポイ    Upopoy    PROPN    固有名詞    _    7    nsubj    _    SpaceAfter=No
3    ”    "    PUNCT    記号    _    2    punct    _    _
4    アナㇰネ    anakne    ADP    副助詞    _    2    case    _    _
5    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    6    amod    _    _
6    コタン    kotan    NOUN    名詞    _    7    nmod    _    _
7    ポンレ    ponre    NOUN    名詞    _    0    root    _    _
8    ネ    ne    AUX    デアル動詞    _    7    cop    _    SpaceAfter=No
9    。    .    PUNCT    記号    _    7    punct    _    _

# text = タン トゥンプ オッタ “ウアイヌコㇿ コタン ヘマンタ クス アカㇻ ルウェ アン? マカナㇰ アカㇻ ルウェ アン?” セコㇿ アン ペ エチヌカレ ルウェ ネ。
1    タン    tan    DET    連体詞    _    2    det    _    _
2    トゥンプ    tunpu    NOUN    名詞    _    3    nmod    _    _
3    オッ    or    NOUN    位置名詞    _    26    obl    _    SpaceAfter=No
4    タ    ta    ADP    格助詞    _    3    case    _    _
5    “    "    PUNCT    記号    _    13    punct    _    SpaceAfter=No
6    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    7    amod    _    _
7    コタン    kotan    NOUN    名詞    _    11    obj    _    _
8    ヘマンタ    hemanta    NOUN    名詞    _    11    obl    _    _
9    クス    kusu    SCONJ    後置副詞    _    8    case    _    _
10    ア    a=    PART    人称接辞    _    11    nsubj    _    SpaceAfter=No
11    カㇻ    kar    VERB    他動詞    _    12    acl    _    _
12    ルウェ    ruwe    NOUN    形式名詞    _    13    nsubj    _    _
13    アン    an    VERB    自動詞    _    23    advcl    _    SpaceAfter=No
14    ?    ?    PUNCT    記号    _    13    punct    _    _
15    マカナㇰ    makanak    ADV    副詞    _    17    advmod    _    _
16    ア    a=    PART    人称接辞    _    17    nsubj    _    SpaceAfter=No
17    カㇻ    kar    VERB    他動詞    _    18    acl    _    _
18    ルウェ    ruwe    NOUN    形式名詞    _    19    nsubj    _    _
19    アン    an    VERB    自動詞    _    13    parataxis    _    SpaceAfter=No
20    ?    ?    PUNCT    記号    _    19    punct    _    SpaceAfter=No
21    ”    "    PUNCT    記号    _    13    punct    _    _
22    セコㇿ    sekor    SCONJ    接続詞    _    13    mark    _    _
23    アン    an    VERB    自動詞    _    24    acl    _    _
24    ペ    pe    NOUN    形式名詞    _    26    obj    _    _
25    エチ    eci=    PART    人称接辞    _    26    nsubj    _    SpaceAfter=No
26    ヌカレ    nukare    VERB    他動詞    _    27    acl    _    _
27    ルウェ    ruwe    NOUN    形式名詞    _    0    root    _    _
28    ネ    ne    AUX    デアル動詞    _    27    cop    _    SpaceAfter=No
29    。    .    PUNCT    記号    _    27    punct    _    _

# text = ホㇱキノ 1965パ ワノ ポロト オルㇱペ ネヤ アヌココㇿ アイヌ イコロマケンル オルㇱペ ネヤ エチエコイソイタㇰ ワ ウアイヌコㇿ コタン アカㇻ カトゥ エチヌカレ。
1    ホㇱキノ    hoskino    ADV    副詞    _    6    advmod    _    _
2    1965    1965    NUM    数詞    _    3    nummod    _    SpaceAfter=No
3    パ    pa    NOUN    名詞    _    6    obl    _    _
4    ワノ    wano    ADP    格助詞    _    3    case    _    _
5    ポロト    Poroto    PROPN    固有名詞    _    6    nsubj    _    _
6    オルㇱペ    oruspe    NOUN    名詞    _    19    obj    _    _
7    ネ    ne    AUX    デアル動詞    _    6    cop    _    SpaceAfter=No
8    ヤ    ya    SCONJ    接続助詞    _    6    mark    _    _
9-10    アヌココㇿ    _    _    _    _    _    _    _    _
9    アン    an=    PART    人称接辞    _    10    nsubj    _    _
10    ウココㇿ    ukokor    VERB    他動詞    _    14    acl    _    _
11    アイヌ    aynu    NOUN    名詞    _    12    nmod    _    _
12-13    イコロマ    _    _    _    _    _    _    _    SpaceAfter=No
12    イコㇿ    ikor    NOUN    名詞    _    13    obj    _    _
13    オマ    oma    VERB    他動詞    _    14    acl    _    _
14    ケンル    kenru    NOUN    名詞    _    15    nsubj    _    _
15    オルㇱペ    oruspe    NOUN    名詞    _    6    conj    _    _
16    ネ    ne    AUX    デアル動詞    _    15    cop    _    SpaceAfter=No
17    ヤ    ya    SCONJ    接続助詞    _    15    mark    _    _
18    エチ    eci=    PART    人称接辞    _    19    nsubj    _    SpaceAfter=No
19    エコイソイタㇰ    ekoysoytak    VERB    他動詞    _    27    advcl    _    _
20    ワ    wa    SCONJ    接続助詞    _    19    mark    _    _
21    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    22    amod    _    _
22    コタン    kotan    NOUN    名詞    _    24    obj    _    _
23    ア    a=    PART    人称接辞    _    24    nsubj    _    SpaceAfter=No
24    カㇻ    kar    VERB    他動詞    _    25    acl    _    _
25    カトゥ    katu    NOUN    形式名詞    _    27    obj    _    _
26    エチ    eci=    PART    人称接辞    _    27    nsubj    _    SpaceAfter=No
27    ヌカレ    nukare    VERB    他動詞    _    0    root    _    SpaceAfter=No
28    。    .    PUNCT    記号    _    27    punct    _    _

# text = イマカケタ テタ アエイワンケ アシㇼ イタㇰ マカナㇰ アエヤイコシラㇺスイパ カトゥ エチヌカレ。
1    イマカケ    imakake    NOUN    位置名詞    _    6    obl    _    SpaceAfter=No
2    タ    ta    ADP    格助詞    _    1    case    _    _
3    テ    te    NOUN    位置名詞    _    6    obl    _    SpaceAfter=No
4    タ    ta    ADP    格助詞    _    3    case    _    _
5    ア    a=    PART    人称接辞    _    6    nsubj    _    SpaceAfter=No
6    エイワンケ    eywanke    VERB    他動詞    _    14    advcl    _    _
7    アシㇼ    asir    VERB    自動詞    _    8    amod    _    _
8    イタㇰ    itak    NOUN    名詞    _    11    obj    _    _
9    マカナㇰ    makanak    ADV    副詞    _    11    advmod    _    _
10    ア    a=    PART    人称接辞    _    11    nsubj    _    SpaceAfter=No
11    エヤイコシラㇺスイパ    eyaykosiramsuypa    VERB    他動詞    _    12    acl    _    _
12    カトゥ    katu    NOUN    形式名詞    _    14    obj    _    _
13    エチ    eci=    PART    人称接辞    _    14    nsubj    _    SpaceAfter=No
14    ヌカレ    nukare    VERB    他動詞    _    0    root    _    SpaceAfter=No
15    。    .    PUNCT    記号    _    14    punct    _    _

# text = ウアイヌコㇿ コタン オッタ カ イコロマケンル オッタ カ イタㇰペ ネヤ オルㇱペ ニソㇱ ネヤ アン。
1    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    2    amod    _    _
2    コタン    kotan    NOUN    名詞    _    3    nmod    _    _
3    オッ    or    NOUN    位置名詞    _    20    obl    _    SpaceAfter=No
4    タ    ta    ADP    格助詞    _    3    case    _    _
5    カ    ka    ADP    副助詞    _    3    case    _    _
6-7    イコロマ    _    _    _    _    _    _    _    SpaceAfter=No
6    イコㇿ    ikor    NOUN    名詞    _    7    obj    _    _
7    オマ    oma    VERB    他動詞    _    8    acl    _    _
8    ケンル    kenru    NOUN    名詞    _    9    nmod    _    _
9    オッ    or    NOUN    位置名詞    _    20    obl    _    SpaceAfter=No
10    タ    ta    ADP    格助詞    _    9    case    _    _
11    カ    ka    ADP    副助詞    _    9    case    _    _
12    イタㇰ    itak    VERB    自動詞    _    13    amod    _    SpaceAfter=No
13    ペ    pe    NOUN    名詞    _    16    nmod    _    _
14    ネ    ne    AUX    デアル動詞    _    13    cop    _    SpaceAfter=No
15    ヤ    ya    SCONJ    接続助詞    _    13    mark    _    _
16    オルㇱペ    oruspe    NOUN    名詞    _    17    nmod    _    _
17    ニソㇱ    nisos    NOUN    名詞    _    20    nsubj    _    _
18    ネ    ne    AUX    デアル動詞    _    17    cop    _    SpaceAfter=No
19    ヤ    ya    SCONJ    接続助詞    _    17    mark    _    _
20    アン    an    VERB    自動詞    _    0    root    _    SpaceAfter=No
21    。    .    PUNCT    記号    _    20    punct    _    _

# text = アイヌ イタㇰ アニ エネ アカㇻ ヒ エチヌカレ。
1    アイヌ    aynu    NOUN    名詞    _    2    compound    _    _
2    イタㇰ    itak    NOUN    名詞    _    6    obl    _    _
3    アニ    ani    SCONJ    後置副詞    _    2    case    _    _
4    エネ    ene    ADV    副詞    _    6    advmod    _    _
5    ア    a=    PART    人称接辞    _    6    nsubj    _    SpaceAfter=No
6    カㇻ    kar    VERB    他動詞    _    7    acl    _    _
7    ヒ    hi    NOUN    形式名詞    _    9    obj    _    _
8    エチ    eci=    PART    人称接辞    _    9    nsubj    _    SpaceAfter=No
9    ヌカレ    nukare    VERB    他動詞    _    0    root    _    SpaceAfter=No
10    。    .    PUNCT    記号    _    9    punct    _    _

# text = イマカケタ アヌココㇿ アイヌ イコロマケンル アカㇻ パクノ 東京 札幌 白老 オッタ 「国立アイヌ民族博物館設立準備室」 アン ワ ネヒタ イコㇿ トゥンプ オッタ イコㇿ ネヤ カンピソㇱ ネヤ イノカ ネヤ ウサ オカイ ペ チウォエロㇱキ エトコイキ カトゥ エチヌカレ ルウェ ネ。
1    イマカケ    imakake    NOUN    位置名詞    _    50    obl    _    SpaceAfter=No
2    タ    ta    ADP    格助詞    _    1    case    _    _
3-4    アヌココㇿ    _    _    _    _    _    _    _    _
3    アン    an=    VERB    自動詞    _    4    nsubj    _    _
4    ウココㇿ    ukokor    VERB    他動詞    _    8    acl    _    _
5    アイヌ    aynu    NOUN    名詞    _    6    nmod    _    _
6-7    イコロマ    _    _    _    _    _    _    _    SpaceAfter=No
6    イコㇿ    ikor    NOUN    名詞    _    7    obj    _    _
7    オマ    oma    VERB    他動詞    _    8    acl    _    _
8    ケンル    kenru    NOUN    名詞    _    9    nmod    _    _
9    ア    a=    PART    人称接辞    _    10    nsubj    _    SpaceAfter=No
10    カㇻ    kar    VERB    他動詞    _    50    advcl    _    _
11    パクノ    pakuno    SCONJ    接続助詞    _    10    mark    _    _
12    東京    Tokyo    PROPN    固有名詞    _    15    nmod    _    _
13    札幌    Satporo    PROPN    固有名詞    _    12    conj    _    _
14    白老    Siraoy    PROPN    固有名詞    _    12    conj    _    _
15    オッ    or    NOUN    位置名詞    _    27    obl    _    SpaceAfter=No
16    タ    ta    ADP    格助詞    _    15    case    _    _
17    「    「    PUNCT    補助記号-括弧開    _    25    punct    _    SpaceAfter=No
18    国立    国立    NOUN    名詞-普通名詞-一般    _    25    compound    _    SpaceAfter=No
19    アイヌ    アイヌ    PROPN    名詞-固有名詞-一般    _    25    compound    _    SpaceAfter=No
20    民族    民族    NOUN    名詞-普通名詞-一般    _    25    compound    _    SpaceAfter=No
21    博物    博物    NOUN    名詞-普通名詞-一般    _    25    compound    _    SpaceAfter=No
22    館    館    NOUN    接尾辞-名詞的-一般    _    25    compound    _    SpaceAfter=No
23    設立    設立    NOUN    名詞-普通名詞-サ変可能    _    25    compound    _    SpaceAfter=No
24    準備    準備    NOUN    名詞-普通名詞-サ変可能    _    25    compound    _    SpaceAfter=No
25    室    室    NOUN    接尾辞-名詞的-一般    _    27    nsubj    _    SpaceAfter=No
26    」    」    PUNCT    補助記号-括弧閉    _    25    punct    _    _
27    アン    an    VERB    自動詞    _    49    advcl    _    _
28    ワ    wa    SCONJ    接続助詞    _    27    mark    _    _
29    ネ    ne    DET    連体詞    _    30    det    _    SpaceAfter=No
30    ヒ    hi    NOUN    形式名詞    _    34    nmod    _    SpaceAfter=No
31    タ    ta    ADP    格助詞    _    30    case    _    _
32    イコㇿ    ikor    NOUN    名詞    _    33    nmod    _    _
33    トゥンプ    tunpu    NOUN    名詞    _    34    nmod    _    _
34    オッ    or    NOUN    位置名詞    _    49    obl    _    SpaceAfter=No
35    タ    ta    ADP    格助詞    _    34    case    _    _
36    イコㇿ    ikor    NOUN    名詞    _    46    advcl    _    _
37    ネ    ne    AUX    デアル動詞    _    36    cop    _    SpaceAfter=No
38    ヤ    ya    SCONJ    接続助詞    _    36    mark    _    _
39    カンピソㇱ    kanpisos    NOUN    名詞    _    46    advcl    _    SpaceAfter=No
40    ネ    ne    AUX    デアル動詞    _    39    cop    _    SpaceAfter=No
41    ヤ    ya    SCONJ    接続助詞    _    39    mark    _    _
42    イノカ    inoka    NOUN    名詞    _    46    advcl    _    _
43    ネ    ne    AUX    デアル動詞    _    42    cop    _    SpaceAfter=No
44    ヤ    ya    SCONJ    接続助詞    _    42    mark    _    _
45    ウサ    usa    ADV    副詞    _    46    advmod    _    _
46    オカイ    okay    VERB    自動詞    _    47    acl    _    _
47    ペ    pe    NOUN    形式名詞    _    49    obj    _    _
48    チ    ci=    PART    人称接辞    _    49    nsubj    _    SpaceAfter=No
49    ウォエロㇱキ    uwoeroski    VERB    他動詞    _    50    ccomp    _    _
50    エトコイキ    etokoyki    VERB    他動詞    _    51    acl    _    _
51    カトゥ    katu    NOUN    形式名詞    _    53    obj    _    _
52    エチ    eci=    PART    人称接辞    _    53    nsubj    _    SpaceAfter=No
53    ヌカレ    nukare    VERB    他動詞    _    54    acl    _    _
54    ルウェ    ruwe    NOUN    形式名詞    _    0    root    _    _
55    ネ    ne    AUX    デアル動詞    _    54    cop    _    SpaceAfter=No
56    。    .    PUNCT    記号    _    54    punct    _    _

# text = イヨッタ イヨㇱノ ポロトコタン アオシレパレ カトゥ イランマカカ ピㇼカ ノカハ ネ アウㇰ ワ アカㇻペ 「ポロトコタン最後の一日」 セコㇿ アン イノカ エチヌカレ。
1    イヨッタ    iyotta    ADV    副詞    _    2    advmod    _    _
2    イヨㇱノ    iyosno    ADV    副詞    _    30    advmod    _    _
3    ポロト    Poroto    PROPN    固有名詞    _    4    nmod    _    SpaceAfter=No
4    コタン    kotan    NOUN    名詞    _    6    obj    _    _
5    ア    a=    PART    人称接辞    _    6    nsubj    _    SpaceAfter=No
6    オシレパレ    osirepa-re    VERB    他動詞    _    7    acl    _    _
7    カトゥ    katu    NOUN    形式名詞    _    10    nsubj    _    _
8    イランマカカ    irammakaka    ADV    副詞    _    9    advmod    _    _
9    ピㇼカ    pirka    VERB    自動詞    _    10    acl    _    _
10    ノカハ    nokaha    NOUN    名詞    _    13    obj    _    _
11    ネ    ne    AUX    デアル動詞    _    10    cop    _    _
12    ア    a=    PART    人称接辞    _    13    nsubj    _    SpaceAfter=No
13    ウㇰ    uk    VERB    他動詞    _    16    advcl    _    _
14    ワ    wa    SCONJ    接続助詞    _    13    mark    _    _
15    ア    a=    PART    人称接辞    _    16    nsubj    _    SpaceAfter=No
16    カㇻ    kar    VERB    他動詞    _    17    acl    _    SpaceAfter=No
17    ペ    pe    NOUN    形式名詞    _    27    obl    _    _
18    「    "    PUNCT    記号    _    24    punct    _    SpaceAfter=No
19    ポロト    Poroto    PROPN    固有名詞    _    20    nmod    _    SpaceAfter=No
20    コタン    kotan    NOUN    名詞    _    24    nmod    _    SpaceAfter=No
21    最後    最後    NOUN    名詞-普通名詞-一般    _    24    nmod    _    SpaceAfter=No
22    の    の    ADP    助詞-格助詞    _    21    case    _    SpaceAfter=No
23    一    一    NUM    名詞-数詞    _    24    nummod    _    SpaceAfter=No
24    日    日    NOUN    名詞-普通名詞-助数詞可能    _    17    appos    _    SpaceAfter=No
25    」    "    PUNCT    記号    _    24    punct    _    _
26    セコㇿ    sekor    ADP    副助詞    _    17    case    _    _
27    アン    an    VERB    自動詞    _    28    acl    _    _
28    イノカ    inoka    NOUN    名詞    _    30    obj    _    _
29    エチ    eci=    PART    人称接辞    _    30    nsubj    _    SpaceAfter=No
30    ヌカレ    nukare    VERB    他動詞    _    0    root    _    SpaceAfter=No
31    。    .    PUNCT    記号    _    30    punct    _    _

# text = ウアイヌコㇿ コタン アカㇻ カトゥ アヌカㇻ ヤクン イコロマケンル アカㇻ イッケウェ カ ピㇼカノ アエラムアン ナンコㇿ。
1    ウアイヌコㇿ    uwaynukor    VERB    他動詞    _    2    amod    _    _
2    コタン    kotan    NOUN    名詞    _    4    obj    _    _
3    ア    a=    PART    人称接辞    _    4    nsubj    _    SpaceAfter=No
4    カㇻ    kar    VERB    他動詞    _    5    acl    _    _
5    カトゥ    katu    NOUN    形式名詞    _    7    obj    _    _
6    ア    a=    PART    人称接辞    _    7    nsubj    _    SpaceAfter=No
7    ヌカㇻ    nukar    VERB    他動詞    _    18    advcl    _    _
8    ヤクン    yakun    SCONJ    接続助詞    _    7    mark    _    _
9-10    イコロマ    _    _    _    _    _    _    _    SpaceAfter=No
9    イコㇿ    ikor    NOUN    名詞    _    10    obj    _    _
10    オマ    oma    VERB    他動詞    _    11    acl    _    _
11    ケンル    kenru    NOUN    名詞    _    13    obj    _    _
12    ア    a=    PART    人称接辞    _    13    nsubj    _    SpaceAfter=No
13    カㇻ    kar    VERB    他動詞    _    18    advcl    _    _
14    イッケウェ    ikkewe    NOUN    名詞    _    18    obj    _    _
15    カ    ka    ADP    副助詞    _    14    case    _    _
16    ピㇼカノ    pirkano    ADV    副詞    _    18    advmod    _    _
17    ア    a=    PART    人称接辞    _    18    nsubj    _    SpaceAfter=No
18    エラムアン    eramuan    VERB    他動詞    _    0    root    _    _
19    ナンコㇿ    nankor    AUX    助動詞    _    18    aux    _    SpaceAfter=No
20    。    .    PUNCT    記号    _    18    punct    _    _

# text = テワノ ピㇼカノ ヌカㇻ ワ ウンコレ ヤナニ。
1    テ    te    NOUN    位置名詞    _    4    obl    _    SpaceAfter=No
2    ワノ    wano    ADP    格助詞    _    1    case    _    _
3    ピㇼカノ    pirkano    ADV    副詞    _    4    advmod    _    _
4    ヌカㇻ    nukar    VERB    他動詞    _    7    advcl    _    _
5    ワ    wa    SCONJ    接続助詞    _    4    mark    _    _
6    ウン    un=    PART    人称接辞    _    7    nsubj    _    SpaceAfter=No
7    コレ    kore    VERB    他動詞    _    0    root    _    _
8-9    ヤナニ    _    _    _    _    _    _    _    SpaceAfter=No
8    ヤン    yan    PART    終助詞    _    7    discourse    _    SpaceAfter=No
9    ハニ    hani    PART    終助詞    _    7    discourse    _    SpaceAfter=No
10    。    .    PUNCT    記号    _    7    punct    _    _

# text = 2022パ 12チュㇷ゚ 13ト アヌココㇿ アイヌ イコロマケンル サパネクㇽ エトゥナンカㇻ
1    2022    2022    NUM    数詞    _    2    nummod    _    SpaceAfter=No
2    パ    pa    NOUN    名詞    _    6    compound    _    _
3    12    12    NUM    数詞    _    4    nummod    _    SpaceAfter=No
4    チュㇷ゚    cup    NOUN    名詞    _    6    compound    _    _
5    13    13    NUM    数詞    _    6    nummod    _    SpaceAfter=No
6    ト    to    NOUN    名詞    _    14    obl    _    _
7-8    アヌココㇿ    _    _    _    _    _    _    _    _
7    アン    an=    PART    人称接辞    _    8    nsubj    _    _
8    ウココㇿ    ukokor    VERB    他動詞    _    12    acl    _    _
9    アイヌ    aynu    NOUN    名詞    _    10    nmod    _    _
10-11    イコロマ    _    _    _    _    _    _    _    SpaceAfter=No
10    イコㇿ    ikor    NOUN    名詞    _    11    obj    _    _
11    オマ    oma    VERB    他動詞    _    12    acl    _    _
12    ケンル    kenru    NOUN    名詞    _    13    nmod    _    _
13    サパネクㇽ    sapanekur    NOUN    名詞    _    14    nsubj    _    _
14    エトゥナンカㇻ    etunankar    VERB    他動詞    _    0    root    _    _

SVGで可視化すると、こんな感じ。私(安岡孝一)なりに頑張ったつもりだが、アイヌ語と日本語の混在文においてUniversal Dependenciesをどう作るべきか、というあたりは、まだまだ詰めが甘い。また、アイヌ語の人称接辞が主語と目的語の両方を表しうる点については、あるいはDEPS欄に頼るべきかもしれない。なかなか難しいなぁ。

16488827 journal
人工知能

yasuokaの日記: 「エチコプンテㇰ」の「エチ」は主語なのか目的語なのか

日記 by yasuoka

一昨昨日の日記で引用したアイヌ語の挨拶文を、何とかUniversal Dependenciesにしたいのだが、私(安岡孝一)の力不足もあって色々と悩ましい。たとえば「エチコプンテㇰ」や「エチエカノㇰ」の「エチ」(eci=)は、1人称(複数)の主語であると同時に、2人称(複数)の目的語なのだが、ならば、動詞からのリンクはnsubjとobjのどちらが適切なのか。nsubj:objという恐ろしいリンクもあるにはあるらしいのだが、これとて「エチヌカレ」における1人称主語+2人称間接目的語はサポートしきれない。しかも「ウアイヌコㇿ コタン オルン シネウパ ウタㇻ、 エチコプンテㇰ ナ。」においては、「ウタㇻ」を「コプンテㇰ」の目的語とみなすと、「エチ」に含まれているのは1人称主語+2人称形式目的語ということになるので、さらにヤヤコシイ。うーん、とりあえずnsubjで繋いでおくことにして、もうちょっと悩んでみるかな。

16486385 journal
日本

yasuokaの日記: アイヌ語の数字はどう読むべきか

日記 by yasuoka

国立アイヌ民族博物館第3回テーマ展示『ウアイヌコㇿ コタン アカㇻ』を見に来た。最初の挨拶文が非常に印象的だったので、ここに引用しておくことにする。

イランカラㇷ゚テ。

ウアイヌコㇿ コタン オルン シネウパ ウタㇻ、 エチコプンテㇰ ナ。
アヌココㇿ アイヌ イコロマケンル 第3回テーマ展示
『ウアイヌコㇿ コタン アカㇻ ―民族共生象徴空間(ウポポイ)のことばと歴史―』
セコㇿ チレコ ワ オロ タ エチエカノㇰ。
2020パ 7チュㇷ゚ 12ト ワノ
アイヌ プリ カンナ アシトゥリレ クニネ ウアイヌコㇿ コタン アン。
タン コタン オルン
アイヌ ウタㇻ カ シサㇺ ウタㇻ カ レプンクㇽ ウタㇻ カ シネウパ。
アイヌ プリ エヤイパカㇱヌ。
“ウポポイ” アナㇰネ ウアイヌコㇿ コタン ポンレ ネ。
タン トゥンプ オッタ
“ウアイヌコㇿ コタン ヘマンタ クス アカㇻ ルウェ アン?
マカナㇰ アカㇻ ルウェ アン?” セコㇿ アン ペ
エチヌカレ ルウェ ネ。
ホㇱキノ 1965パ ワノ ポロト オルㇱペ ネヤ
アヌココㇿ アイヌ イコロマケンル オルㇱペ ネヤ
エチエコイソイタㇰ ワ
ウアイヌコㇿ コタン アカㇻ カトゥ エチヌカレ。
イマカケタ テタ アエイワンケ アシㇼ イタㇰ
マカナㇰ アエヤイコシラㇺスイパ カトゥ エチヌカレ。
ウアイヌコㇿ コタン オッタ カ
イコロマケンル オッタ カ
イタㇰペ ネヤ オルㇱペ ニソㇱ ネヤ アン。
アイヌ イタㇰ アニ エネ アカㇻ ヒ エチヌカレ。
イマカケタ アヌココㇿ アイヌ イコロマケンル アカㇻ パクノ
東京 札幌 白老 オッタ 「国立アイヌ民族博物館設立準備室」 アン ワ
ネヒタ イコㇿ トゥンプ オッタ
イコㇿ ネヤ カンピソㇱ ネヤ イノカ ネヤ ウサ オカイ ペ
チウォエロㇱキ エトコイキ カトゥ エチヌカレ ルウェ ネ。
イヨッタ イヨㇱノ
ポロトコタン アオシレパレ カトゥ
イランマカカ ピㇼカ ノカハ ネ アウㇰ ワ アカㇻペ
「ポロトコタン最後の一日」 セコㇿ アン イノカ エチヌカレ。
ウアイヌコㇿ コタン アカㇻ カトゥ アヌカㇻ ヤクン
イコロマケンル アカㇻ イッケウェ カ ピㇼカノ アエラムアン ナンコㇿ。
テワノ ピㇼカノ ヌカㇻ ワ ウンコレ ヤナニ。

2022パ 12チュㇷ゚ 13ト
アヌココㇿ アイヌ イコロマケンル
サパネクㇽ エトゥナンカㇻ

ただ、館長の佐々木史郎の読み上げでは「2020パ」が「hotne pa ikasma tuasiknewanhotne pa」、「1965パ」が「asikne pa ikasma rehotnepa ikasma wanpe etuasiknewanhotne pa」、「2022パ」が「tu pa ikasma hotne pa ikasma tuasiknewanhotne pa」となっており、かなり悩ましい。うーん、こういう書写言語と音声言語の乖離、どう扱ったらいいんだろ。

16476387 journal
人工知能

yasuokaの日記: ku-nlp/deberta-v2-base-japaneseのトークナイザをDebertaV2TokenizerFastのままでJuman++に繋ぐには

日記 by yasuoka

私(安岡孝一)の1月13日の日記に対し、ku-nlp/deberta-v2-base-japaneseのトークナイザをBertJapaneseTokenizerに置き換えるとreturn_offsets_mapping=Trueが使えなくなってしまう、との御指摘をいただいた。確かにそのとおりだ。BertJapaneseTokenizerFastもどきで行こうかとも思ったが、ここはあえてPreTokenizer.customにJumanppTokenizerを突っ込んでみることにした。Google Colaboratoryだと、こんな感じ。

!test -d jumanpp-2.0.0-rc3 || curl -L https://github.com/ku-nlp/jumanpp/releases/download/v2.0.0-rc3/jumanpp-2.0.0-rc3.tar.xz | tar xJf -
!test -x /usr/local/bin/jumanpp || ( mkdir jumanpp-2.0.0-rc3/build && cd jumanpp-2.0.0-rc3/build && cmake .. -DCMAKE_BUILD_TYPE=Release && make install )
!pip install 'transformers>=4.24.0' sentencepiece pyknp rhoknp pytextspan
from transformers import DebertaV2TokenizerFast,AutoModelForMaskedLM,FillMaskPipeline
from transformers.models.bert_japanese.tokenization_bert_japanese import JumanppTokenizer
from tokenizers.pre_tokenizers import PreTokenizer,Metaspace,Sequence
tkz=DebertaV2TokenizerFast.from_pretrained("ku-nlp/deberta-v2-base-japanese")
class JumanppPreTokenizer(JumanppTokenizer):
  def jumanpp_split(self,i,normalized_string):
    import textspan
    t=str(normalized_string)
    k=self.tokenize(t)
    return [normalized_string[s:e] for c in textspan.get_original_spans(k,t) for s,e in c]
  def pre_tokenize(self,pretok):
    pretok.split(self.jumanpp_split)
tkz._tokenizer.pre_tokenizer=Sequence([PreTokenizer.custom(JumanppPreTokenizer()),Metaspace()])
mdl=AutoModelForMaskedLM.from_pretrained("ku-nlp/deberta-v2-base-japanese")
fmp=FillMaskPipeline(model=mdl,tokenizer=tkz)
inp=tkz("夜の底が[MASK]なった。",return_offsets_mapping=True)
print(list(zip(tkz.convert_ids_to_tokens(inp["input_ids"]),inp["offset_mapping"])))
print(fmp("夜の底が[MASK]なった。"))

「夜の底が[MASK]なった。」をトークナイズしつつ、[MASK]を穴埋めさせてみたところ、私の手元では以下の結果になった。

[('[CLS]', (0, 0)), ('▁夜', (0, 1)), ('▁の', (1, 2)), ('▁底', (2, 3)), ('▁が', (3, 4)), ('[MASK]', (4, 10)), ('▁なった', (10, 13)), ('▁。', (13, 14)), ('[SEP]', (0, 0))]
[{'score': 0.29466712474823, 'token': 4130, 'token_str': '深く', 'sequence': '夜 の 底 が 深く なった 。'}, {'score': 0.10997577756643295, 'token': 19502, 'token_str': '暗く', 'sequence': '夜 の 底 が 暗く なった 。'}, {'score': 0.10800448060035706, 'token': 17340, 'token_str': '熱く', 'sequence': '夜 の 底 が 熱く なった 。'}, {'score': 0.07135284692049026, 'token': 27473, 'token_str': '浅く', 'sequence': '夜 の 底 が 浅く なった 。'}, {'score': 0.06170506030321121, 'token': 27949, 'token_str': '冷たく', 'sequence': '夜 の 底 が 冷たく なった 。'}]

ちゃんとSPIECE_UNDERLINEが各単語にくっつきつつ、offset_mappingも返ってきている。穴埋め結果は「深く」「暗く」「熱く」「浅く」「冷たく」となっており、scoreも含め、1月5日の結果とほぼ同等である。ただ、PreTokenizer.customを使うのは、ちょっとトリッキーな気もするので、さて、どうしたものかな。

16470558 journal
人工知能

yasuokaの日記: ku-nlp/deberta-v2-base-japaneseのトークナイザをmecab-jumandic-utf8に切り替えるには

日記 by yasuoka

Google Colaboratoryの起動のたびにJuman++をインストールするのは、さすがに飽きてきたので、ku-nlp/deberta-v2-base-japaneseのトークナイザをmecab-jumandic-utf8に切り替えてみた。

!apt install mecab-jumandic-utf8
!pip install 'transformers>=4.24.0' sentencepiece fugashi
from transformers import BertJapaneseTokenizer,AutoModelForMaskedLM,FillMaskPipeline
from transformers.utils import cached_file
tkz=BertJapaneseTokenizer(vocab_file=None,spm_file=cached_file("ku-nlp/deberta-v2-base-japanese","spm.model"),word_tokenizer_type="mecab",mecab_kwargs={"mecab_dic":None,"mecab_option":"-d /var/lib/mecab/dic/juman-utf8 -r /etc/mecabrc"},subword_tokenizer_type="sentencepiece")
tkz._tokenize=lambda text:[sub_token.replace("〓",tkz.mask_token) for token in tkz.word_tokenizer.tokenize(text.replace(tkz.mask_token,"\u2581"),never_split=tkz.all_special_tokens) for sub_token in tkz.subword_tokenizer.tokenize(("\u2581"+token).replace("\u2581\u2581","〓"))]
mdl=AutoModelForMaskedLM.from_pretrained("ku-nlp/deberta-v2-base-japanese")
fmp=FillMaskPipeline(model=mdl,tokenizer=tkz)
print(fmp("夜の底が[MASK]なった。"))

このトークナイザを使いつつ「夜の底が[MASK]なった。」の[MASK]を穴埋めさせてみたところ、私(安岡孝一)の手元では以下の結果になった。

[{'score': 0.29466712474823, 'token': 4130, 'token_str': '深く', 'sequence': '夜 の 底 が 深く なった 。'}, {'score': 0.10997577756643295, 'token': 19502, 'token_str': '暗く', 'sequence': '夜 の 底 が 暗く なった 。'}, {'score': 0.10800448060035706, 'token': 17340, 'token_str': '熱く', 'sequence': '夜 の 底 が 熱く なった 。'}, {'score': 0.07135284692049026, 'token': 27473, 'token_str': '浅く', 'sequence': '夜 の 底 が 浅く なった 。'}, {'score': 0.06170506030321121, 'token': 27949, 'token_str': '冷たく', 'sequence': '夜 の 底 が 冷たく なった 。'}]

「深く」「暗く」「熱く」「浅く」「冷たく」となっており、scoreも含め、一昨日の結果とほぼ同じである。まあ、もう少しヤヤコシイ単語になると、Juman++とmecab-jumandic-utf8で結果が違ってくるのだろう。せめてJuman++のインストールが、もう少し簡単になればいいのだけど。

16469899 journal
教育

yasuokaの日記: Universal Dependenciesで読む共通テストの『白氏文集』

日記 by yasuoka

大学入学共通テスト初日の「国語」第4問(漢文)は『白氏文集』が出題された。【予想問題】と【模擬答案】をUniversal Dependenciesで見てみよう。

# 【予想問題】
# text = 問
1    問    問    VERB    v,動詞,行為,伝達    _    0    root    _    Gloss=ask|SpaceAfter=No

# text = 自古以来
1    自    自    ADP    v,前置詞,経由,*    _    2    case    _    Gloss=from|SpaceAfter=No
2    古    古    NOUN    n,名詞,時,*    Case=Tem    4    obl:tmod    _    Gloss=olden-times|SpaceAfter=No
3    以    以    VERB    v,動詞,行為,動作    _    4    advmod    _    Gloss=use|SpaceAfter=No
4    来    來    VERB    v,動詞,行為,移動    _    0    root    _    Gloss=come|SpaceAfter=No

# text = 君者無不思求其賢
1    君    君    NOUN    n,名詞,人,役割    _    2    nmod    _    Gloss=ruler|SpaceAfter=No
2    者    者    PART    p,助詞,提示,*    _    3    nsubj    _    Gloss=that-which|SpaceAfter=No
3    無    無    VERB    v,動詞,存在,存在    Polarity=Neg    0    root    _    Gloss=not-have|SpaceAfter=No
4    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    5    advmod    _    Gloss=not|SpaceAfter=No
5    思    思    VERB    v,動詞,行為,動作    _    3    ccomp    _    Gloss=think|SpaceAfter=No
6    求    求    VERB    v,動詞,行為,動作    _    5    ccomp    _    Gloss=seek|SpaceAfter=No
7    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    8    det    _    Gloss=[3PRON]|SpaceAfter=No
8    賢    賢    NOUN    n,名詞,描写,態度    _    6    obj    _    Gloss=wise|SpaceAfter=No

# text = 賢者罔不思効其用
1    賢    賢    VERB    v,動詞,描写,態度    Degree=Pos    2    amod    _    Gloss=worthy|SpaceAfter=No
2    者    者    PART    p,助詞,提示,*    _    3    nsubj    _    Gloss=that-which|SpaceAfter=No
3    罔    罔    VERB    v,動詞,存在,存在    Polarity=Neg    0    root    _    Gloss=not-have|SpaceAfter=No
4    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    5    advmod    _    Gloss=not|SpaceAfter=No
5    思    思    VERB    v,動詞,行為,動作    _    3    ccomp    _    Gloss=think|SpaceAfter=No
6    効    效    VERB    v,動詞,行為,動作    _    5    ccomp    _    Gloss=imitate|SpaceAfter=No
7    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    8    det    _    Gloss=[3PRON]|SpaceAfter=No
8    用    用    NOUN    n,名詞,可搬,道具    _    6    obj    _    Gloss=use|SpaceAfter=No

# text = 然両不相遇
1    然    然    VERB    v,動詞,描写,態度    Degree=Pos    5    advmod    _    Gloss=like-this|SpaceAfter=No
2    両    兩    NOUN    n,名詞,数量,*    _    5    nsubj    _    Gloss=pair|SpaceAfter=No
3    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    5    advmod    _    Gloss=not|SpaceAfter=No
4    相    相    ADV    v,副詞,範囲,共同    _    5    advmod    _    Gloss=each-other|SpaceAfter=No
5    遇    遇    VERB    v,動詞,行為,交流    _    0    root    _    Gloss=encounter|SpaceAfter=No

# text = 其故何哉
1    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    2    det    _    Gloss=[3PRON]|SpaceAfter=No
2    故    故    NOUN    n,名詞,思考,思考    _    3    nsubj    _    Gloss=reason|SpaceAfter=No
3    何    何    PRON    n,代名詞,疑問,*    PronType=Int    0    root    _    Gloss=what|SpaceAfter=No
4    哉    哉    PART    p,助詞,句末,*    _    3    discourse:sp    _    Gloss=[exclamatory-particle]|SpaceAfter=No

# text = 今欲求之
1    今    今    NOUN    n,名詞,時,*    Case=Tem    3    obl:tmod    _    Gloss=now|SpaceAfter=No
2    欲    欲    AUX    v,助動詞,願望,*    Mood=Des    3    aux    _    Gloss=wish|SpaceAfter=No
3    求    求    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=seek|SpaceAfter=No
4    之    之    PRON    n,代名詞,人称,止格    Person=3|PronType=Prs    3    obj    _    Gloss=[3PRON]|SpaceAfter=No

# text = 其術安在
1    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    2    det    _    Gloss=[3PRON]|SpaceAfter=No
2    術    術    NOUN    n,名詞,可搬,伝達    _    4    nsubj    _    Gloss=skill|SpaceAfter=No
3    安    安    ADV    v,副詞,疑問,所在    _    4    advmod    _    Gloss=how|SpaceAfter=No
4    在    在    VERB    v,動詞,存在,存在    _    0    root    _    Gloss=be-present|SpaceAfter=No

# 【模擬答案】
# text = 臣聞
1    臣    臣    NOUN    n,名詞,人,役割    _    2    nsubj    _    Gloss=vassal|SpaceAfter=No
2    聞    聞    VERB    v,動詞,行為,伝達    _    0    root    _    Gloss=hear|SpaceAfter=No

# text = 人君者無不思求其賢
1    人    人    NOUN    n,名詞,人,人    _    2    nmod    _    Gloss=person|SpaceAfter=No
2    君    君    NOUN    n,名詞,人,役割    _    3    nmod    _    Gloss=ruler|SpaceAfter=No
3    者    者    PART    p,助詞,提示,*    _    4    nsubj    _    Gloss=that-which|SpaceAfter=No
4    無    無    VERB    v,動詞,存在,存在    Polarity=Neg    0    root    _    Gloss=not-have|SpaceAfter=No
5    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    6    advmod    _    Gloss=not|SpaceAfter=No
6    思    思    VERB    v,動詞,行為,動作    _    4    ccomp    _    Gloss=think|SpaceAfter=No
7    求    求    VERB    v,動詞,行為,動作    _    6    ccomp    _    Gloss=seek|SpaceAfter=No
8    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    9    det    _    Gloss=[3PRON]|SpaceAfter=No
9    賢    賢    NOUN    n,名詞,描写,態度    _    7    obj    _    Gloss=wise|SpaceAfter=No

# text = 人臣者無不思効其用
1    人    人    NOUN    n,名詞,人,人    _    2    nmod    _    Gloss=person|SpaceAfter=No
2    臣    臣    NOUN    n,名詞,人,役割    _    3    nmod    _    Gloss=vassal|SpaceAfter=No
3    者    者    PART    p,助詞,提示,*    _    4    nsubj    _    Gloss=that-which|SpaceAfter=No
4    無    無    VERB    v,動詞,存在,存在    Polarity=Neg    0    root    _    Gloss=not-have|SpaceAfter=No
5    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    6    advmod    _    Gloss=not|SpaceAfter=No
6    思    思    VERB    v,動詞,行為,動作    _    4    ccomp    _    Gloss=think|SpaceAfter=No
7    効    效    VERB    v,動詞,行為,動作    _    6    ccomp    _    Gloss=imitate|SpaceAfter=No
8    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    9    det    _    Gloss=[3PRON]|SpaceAfter=No
9    用    用    NOUN    n,名詞,可搬,道具    _    7    obj    _    Gloss=use|SpaceAfter=No

# text = 然而君求賢而不得
1    然    然    VERB    v,動詞,描写,態度    Degree=Pos    4    advmod    _    Gloss=like-this|SpaceAfter=No
2    而    而    CCONJ    p,助詞,接続,並列    _    4    advmod    _    Gloss=and|SpaceAfter=No
3    君    君    NOUN    n,名詞,人,役割    _    4    nsubj    _    Gloss=ruler|SpaceAfter=No
4    求    求    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=seek|SpaceAfter=No
5    賢    賢    NOUN    n,名詞,描写,態度    _    4    obj    _    Gloss=wise|SpaceAfter=No
6    而    而    CCONJ    p,助詞,接続,並列    _    8    cc    _    Gloss=and|SpaceAfter=No
7    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    8    advmod    _    Gloss=not|SpaceAfter=No
8    得    得    VERB    v,動詞,行為,得失    _    4    conj    _    Gloss=get|SpaceAfter=No

# text = 臣効用而無由者
1    臣    臣    NOUN    n,名詞,人,役割    _    2    nsubj    _    Gloss=vassal|SpaceAfter=No
2    効    效    VERB    v,動詞,行為,動作    _    7    acl    _    Gloss=imitate|SpaceAfter=No
3    用    用    VERB    v,動詞,行為,動作    _    2    obj    _    Gloss=use|SpaceAfter=No
4    而    而    CCONJ    p,助詞,接続,並列    _    5    cc    _    Gloss=and|SpaceAfter=No
5    無    無    VERB    v,動詞,存在,存在    Polarity=Neg    2    conj    _    Gloss=not-have|SpaceAfter=No
6    由    由    VERB    v,動詞,行為,動作    _    5    obj    _    Gloss=proceed-from|SpaceAfter=No
7    者    者    PART    p,助詞,提示,*    _    0    root    _    Gloss=that-which|SpaceAfter=No

# text = 豈不以貴賎相懸
1    豈    豈    ADV    v,副詞,疑問,反語    _    7    advmod    _    Gloss=[expect-negative-answer]|SpaceAfter=No
2    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    7    advmod    _    Gloss=not|SpaceAfter=No
3    以    以    VERB    v,動詞,行為,動作    _    7    advcl    _    Gloss=use|SpaceAfter=No
4    貴    貴    NOUN    n,名詞,描写,態度    _    3    obj    _    Gloss=noble|SpaceAfter=No
5    賎    賤    NOUN    n,名詞,描写,境遇    _    4    flat    _    Gloss=lowly|SpaceAfter=No
6    相    相    ADV    v,副詞,範囲,共同    _    7    advmod    _    Gloss=each-other|SpaceAfter=No
7    懸    懸    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=suspend|SpaceAfter=No

# text = 朝野相隔
1    朝    朝    NOUN    n,名詞,制度,場    Case=Loc    4    nsubj    _    Gloss=court|SpaceAfter=No
2    野    野    NOUN    n,名詞,固定物,地形    Case=Loc    1    conj    _    Gloss=uncultivated-land|SpaceAfter=No
3    相    相    ADV    v,副詞,範囲,共同    _    4    advmod    _    Gloss=each-other|SpaceAfter=No
4    隔    隔    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=separate|SpaceAfter=No

# text = 堂遠於千里
1    堂    堂    NOUN    n,名詞,固定物,建造物    Case=Loc    2    nsubj    _    Gloss=hall|SpaceAfter=No
2    遠    遠    VERB    v,動詞,描写,量    Degree=Pos    0    root    _    Gloss=distant|SpaceAfter=No
3    於    於    ADP    v,前置詞,基盤,*    _    4    case    _    Gloss=at|SpaceAfter=No
4    千    千    NUM    n,数詞,数字,*    _    2    obl    _    Gloss=thousand|SpaceAfter=No
5    里    里    NOUN    n,名詞,度量衡,*    NounType=Clf    4    clf    _    Gloss=[distance-unit]|SpaceAfter=No

# text = 門深於九重
1    門    門    NOUN    n,名詞,固定物,建造物    Case=Loc    2    nsubj    _    Gloss=gate|SpaceAfter=No
2    深    深    VERB    v,動詞,描写,量    Degree=Pos    0    root    _    Gloss=deep|SpaceAfter=No
3    於    於    ADP    v,前置詞,基盤,*    _    5    case    _    Gloss=at|SpaceAfter=No
4    九    九    NUM    n,数詞,数字,*    _    5    nummod    _    Gloss=nine|SpaceAfter=No
5    重    重    VERB    v,動詞,描写,量    Degree=Pos    2    obl:tmod    _    Gloss=heavy|SpaceAfter=No

# text = 臣以為
1    臣    臣    NOUN    n,名詞,人,役割    _    3    nsubj    _    Gloss=vassal|SpaceAfter=No
2    以    以    VERB    v,動詞,行為,動作    _    3    advmod    _    Gloss=use|SpaceAfter=No
3    為    爲    VERB    v,動詞,行為,生産    _    0    root    _    Gloss=make|SpaceAfter=No

# text = 求賢有術
1    求    求    VERB    v,動詞,行為,動作    _    3    csubj    _    Gloss=seek|SpaceAfter=No
2    賢    賢    NOUN    n,名詞,描写,態度    _    1    obj    _    Gloss=wise|SpaceAfter=No
3    有    有    VERB    v,動詞,存在,存在    _    0    root    _    Gloss=have|SpaceAfter=No
4    術    術    NOUN    n,名詞,可搬,伝達    _    3    obj    _    Gloss=skill|SpaceAfter=No

# text = 弁賢有方
1    弁    辨    VERB    v,動詞,行為,動作    _    3    csubj    _    Gloss=discriminate|SpaceAfter=No
2    賢    賢    NOUN    n,名詞,描写,態度    _    1    obj    _    Gloss=wise|SpaceAfter=No
3    有    有    VERB    v,動詞,存在,存在    _    0    root    _    Gloss=have|SpaceAfter=No
4    方    方    NOUN    n,名詞,思考,方略    _    3    obj    _    Gloss=method|SpaceAfter=No

# text = 方術者
1    方    方    NOUN    n,名詞,思考,方略    _    3    nmod    _    Gloss=method|SpaceAfter=No
2    術    術    NOUN    n,名詞,可搬,伝達    _    1    conj    _    Gloss=skill|SpaceAfter=No
3    者    者    PART    p,助詞,提示,*    _    0    root    _    Gloss=that-which|SpaceAfter=No

# text = 各審其族類
1    各    各    ADV    v,副詞,範囲,限定    _    2    advmod    _    Gloss=each|SpaceAfter=No
2    審    審    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=examine-closely|SpaceAfter=No
3    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    4    det    _    Gloss=[3PRON]|SpaceAfter=No
4    族    族    NOUN    n,名詞,人,関係    _    5    nmod    _    Gloss=clan|SpaceAfter=No
5    類    類    NOUN    n,名詞,描写,形質    _    2    obj    _    Gloss=category|SpaceAfter=No

# text = 使之推薦而已
1    使    使    VERB    v,動詞,行為,使役    _    0    root    _    Gloss=[make-to-do]|SpaceAfter=No
2    之    之    PRON    n,代名詞,人称,止格    Person=3|PronType=Prs    1    obj    _    Gloss=[3PRON]|SpaceAfter=No
3    推    推    VERB    v,動詞,行為,動作    _    1    xcomp    _    Gloss=push|SpaceAfter=No
4    薦    薦    VERB    v,動詞,行為,交流    _    3    flat:vv    _    Gloss=recommend|SpaceAfter=No
5    而    而    PART    p,助詞,句末,*    _    1    discourse:sp    _    Gloss=and|SpaceAfter=No
6    已    已    PART    p,助詞,句末,*    _    1    discourse:sp    _    Gloss=only|SpaceAfter=No

# text = 近取諸喩
1    近    近    VERB    v,動詞,描写,形質    Degree=Pos    2    advmod    _    Gloss=near|SpaceAfter=No
2    取    取    VERB    v,動詞,行為,得失    _    0    root    _    Gloss=take|SpaceAfter=No
3    諸    諸    PRON    n,代名詞,人称,他    PronType=Prs    4    nsubj    _    Gloss=this|SpaceAfter=No
4    喩    喩    VERB    v,動詞,行為,伝達    _    2    ccomp    _    Gloss=explain|SpaceAfter=No

# text = 其猶線与矢也
1    其    其    PRON    n,代名詞,人称,起格    Person=3|PronType=Prs    2    nsubj    _    Gloss=[3PRON]|SpaceAfter=No
2    猶    猶    VERB    v,動詞,行為,分類    Degree=Equ    0    root    _    Gloss=similar|SpaceAfter=No
3    線    綫    NOUN    n,名詞,可搬,道具    _    2    obj    _    Gloss=thread|SpaceAfter=No
4    与    與    ADP    v,前置詞,関係,*    _    5    cc    _    Gloss=associate-with|SpaceAfter=No
5    矢    矢    NOUN    n,名詞,可搬,道具    _    3    conj    _    Gloss=arrow|SpaceAfter=No
6    也    也    PART    p,助詞,句末,*    _    2    discourse:sp    _    Gloss=[final-particle]|SpaceAfter=No

# text = 線因針而入
1    線    綫    NOUN    n,名詞,可搬,道具    _    2    nsubj    _    Gloss=thread|SpaceAfter=No
2    因    因    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=depend-on|SpaceAfter=No
3    針    針    NOUN    n,名詞,可搬,道具    _    2    obj    _    Gloss=needle|SpaceAfter=No
4    而    而    CCONJ    p,助詞,接続,並列    _    5    cc    _    Gloss=and|SpaceAfter=No
5    入    入    VERB    v,動詞,行為,移動    _    2    conj    _    Gloss=enter|SpaceAfter=No

# text = 矢待弦而発
1    矢    矢    NOUN    n,名詞,可搬,道具    _    2    nsubj    _    Gloss=arrow|SpaceAfter=No
2    待    待    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=wait-for|SpaceAfter=No
3    弦    弦    NOUN    n,名詞,可搬,道具    _    2    obj    _    Gloss=bowstring|SpaceAfter=No
4    而    而    CCONJ    p,助詞,接続,並列    _    5    cc    _    Gloss=and|SpaceAfter=No
5    発    發    VERB    v,動詞,行為,動作    _    2    conj    _    Gloss=emit|SpaceAfter=No

# text = 雖有線矢
1    雖    雖    ADV    v,副詞,判断,逆接    _    2    advmod    _    Gloss=although|SpaceAfter=No
2    有    有    VERB    v,動詞,存在,存在    _    0    root    _    Gloss=have|SpaceAfter=No
3    線    綫    NOUN    n,名詞,可搬,道具    _    2    obj    _    Gloss=thread|SpaceAfter=No
4    矢    矢    NOUN    n,名詞,可搬,道具    _    3    conj    _    Gloss=arrow|SpaceAfter=No

# text = 苟無針弦
1    苟    苟    ADV    v,副詞,判断,推定    _    2    advmod    _    Gloss=careless|SpaceAfter=No
2    無    無    VERB    v,動詞,存在,存在    Polarity=Neg    0    root    _    Gloss=not-have|SpaceAfter=No
3    針    針    NOUN    n,名詞,可搬,道具    _    2    obj    _    Gloss=needle|SpaceAfter=No
4    弦    弦    NOUN    n,名詞,可搬,道具    _    3    conj    _    Gloss=bowstring|SpaceAfter=No

# text = 求自致焉
1    求    求    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=seek|SpaceAfter=No
2    自    自    PRON    n,代名詞,人称,他    PronType=Prs|Reflex=Yes    3    nsubj    _    Gloss=self|SpaceAfter=No
3    致    致    VERB    v,動詞,行為,動作    _    1    ccomp    _    Gloss=cause-to-arrive|SpaceAfter=No
4    焉    焉    PART    p,助詞,句末,*    _    1    discourse:sp    _    Gloss=[final-particle]|SpaceAfter=No

# text = 不可得也
1    不    不    ADV    v,副詞,否定,無界    Polarity=Neg    2    advmod    _    Gloss=not|SpaceAfter=No
2    可    可    AUX    v,助動詞,可能,*    Mood=Pot    3    aux    _    Gloss=possible|SpaceAfter=No
3    得    得    VERB    v,動詞,行為,得失    _    0    root    _    Gloss=get|SpaceAfter=No
4    也    也    PART    p,助詞,句末,*    _    3    discourse:sp    _    Gloss=[final-particle]|SpaceAfter=No

# text = 夫必以族類者
1    夫    夫    PART    p,助詞,句頭,*    _    6    discourse    _    Gloss=[modal-particle]|SpaceAfter=No
2    必    必    ADV    v,副詞,判断,確定    _    3    advmod    _    Gloss=necessarily|SpaceAfter=No
3    以    以    VERB    v,動詞,行為,動作    _    6    acl    _    Gloss=use|SpaceAfter=No
4    族    族    NOUN    n,名詞,人,関係    _    5    nmod    _    Gloss=clan|SpaceAfter=No
5    類    類    NOUN    n,名詞,描写,形質    _    3    obj    _    Gloss=category|SpaceAfter=No
6    者    者    PART    p,助詞,提示,*    _    0    root    _    Gloss=that-which|SpaceAfter=No

# text = 蓋賢愚有貫
1    蓋    蓋    PART    p,助詞,句頭,*    _    4    discourse    _    Gloss=why-not|SpaceAfter=No
2    賢    賢    VERB    v,動詞,描写,態度    Degree=Pos    4    nsubj    _    Gloss=worthy|SpaceAfter=No
3    愚    愚    VERB    v,動詞,描写,形質    Degree=Pos    2    flat:vv    _    Gloss=stupid|SpaceAfter=No
4    有    有    VERB    v,動詞,存在,存在    _    0    root    _    Gloss=have|SpaceAfter=No
5    貫    貫    VERB    v,動詞,行為,動作    _    4    obj    _    Gloss=perforate|SpaceAfter=No

# text = 善悪有倫
1    善    善    NOUN    n,名詞,描写,態度    _    3    nsubj    _    Gloss=good|SpaceAfter=No
2    悪    惡    NOUN    n,名詞,描写,態度    _    1    flat    _    Gloss=bad|SpaceAfter=No
3    有    有    VERB    v,動詞,存在,存在    _    0    root    _    Gloss=have|SpaceAfter=No
4    倫    倫    NOUN    n,名詞,制度,儀礼    _    3    obj    _    Gloss=right-principles|SpaceAfter=No

# text = 若以類求
1    若    若    ADV    v,副詞,判断,推定    _    4    advmod    _    Gloss=if|SpaceAfter=No
2    以    以    VERB    v,動詞,行為,動作    _    4    advcl    _    Gloss=use|SpaceAfter=No
3    類    類    NOUN    n,名詞,描写,形質    _    2    obj    _    Gloss=category|SpaceAfter=No
4    求    求    VERB    v,動詞,行為,動作    _    0    root    _    Gloss=seek|SpaceAfter=No

# text = 必以類至
1    必    必    ADV    v,副詞,判断,確定    _    4    advmod    _    Gloss=necessarily|SpaceAfter=No
2    以    以    VERB    v,動詞,行為,動作    _    4    advcl    _    Gloss=use|SpaceAfter=No
3    類    類    NOUN    n,名詞,描写,形質    _    2    obj    _    Gloss=category|SpaceAfter=No
4    至    至    VERB    v,動詞,行為,移動    _    0    root    _    Gloss=arrive|SpaceAfter=No

# text = 此亦猶水流湿
1    此    此    PRON    n,代名詞,指示,*    PronType=Dem    3    nsubj    _    Gloss=this|SpaceAfter=No
2    亦    亦    ADV    v,副詞,頻度,重複    _    3    advmod    _    Gloss=also|SpaceAfter=No
3    猶    猶    VERB    v,動詞,行為,分類    Degree=Equ    0    root    _    Gloss=similar|SpaceAfter=No
4    水    水    NOUN    n,名詞,可搬,道具    _    5    nsubj    _    Gloss=water|SpaceAfter=No
5    流    流    VERB    v,動詞,行為,動作    _    3    ccomp    _    Gloss=flow|SpaceAfter=No
6    湿    濕    NOUN    n,名詞,描写,形質    _    5    obj    _    Gloss=moist|SpaceAfter=No

# text = 火就燥
1    火    火    NOUN    n,名詞,可搬,道具    _    2    nsubj    _    Gloss=fire|SpaceAfter=No
2    就    就    VERB    v,動詞,行為,移動    _    0    root    _    Gloss=go-to|SpaceAfter=No
3    燥    燥    VERB    v,動詞,描写,形質    Degree=Pos    2    obj    _    Gloss=dry|SpaceAfter=No

# text = 自然之理也
1    自    自    PRON    n,代名詞,人称,他    PronType=Prs|Reflex=Yes    2    nsubj    _    Gloss=self|SpaceAfter=No
2    然    然    VERB    v,動詞,描写,態度    Degree=Pos    4    acl    _    Gloss=like-this|SpaceAfter=No
3    之    之    SCONJ    p,助詞,接続,属格    _    2    mark    _    Gloss='s|SpaceAfter=No
4    理    理    NOUN    n,名詞,可搬,伝達    _    0    root    _    Gloss=underlying-principle|SpaceAfter=No
5    也    也    PART    p,助詞,句末,*    _    4    discourse:sp    _    Gloss=[final-particle]|SpaceAfter=No

SVGで可視化すると、こんな感じ。私(安岡孝一)個人としては、かなり素直な漢文に見えるのだけど、さて、受験生にはどうだったかな。

16468542 journal
人工知能

yasuokaの日記: ku-nlp/deberta-v2-base-japaneseのトークナイザをBertJapaneseTokenizerに置き換える

日記 by yasuoka

1月5日の日記で紹介したku-nlp/deberta-v2-base-japaneseのトークナイザを、BertJapaneseTokenizerのjumanppで置き換えてみた。ただし、内部で使用しているpyknpがrhoknpに変更予定なこともあって、かなり汚い手法になってしまった。Google Colaboratoryだと、こんな感じ。

!test -d jumanpp-2.0.0-rc3 || curl -L https://github.com/ku-nlp/jumanpp/releases/download/v2.0.0-rc3/jumanpp-2.0.0-rc3.tar.xz | tar xJf -
!test -x /usr/local/bin/jumanpp || ( mkdir jumanpp-2.0.0-rc3/build && cd jumanpp-2.0.0-rc3/build && cmake .. -DCMAKE_BUILD_TYPE=Release && make install )
!pip install 'transformers>=4.24.0' sentencepiece pyknp rhoknp
from transformers import BertJapaneseTokenizer,AutoModelForMaskedLM,FillMaskPipeline
from transformers.utils import cached_file
tkz=BertJapaneseTokenizer(vocab_file=None,spm_file=cached_file("ku-nlp/deberta-v2-base-japanese","spm.model"),word_tokenizer_type="jumanpp",subword_tokenizer_type="sentencepiece")
tkz._tokenize=lambda text:[sub_token.replace("〓",tkz.mask_token) for token in tkz.word_tokenizer.tokenize(text.replace(tkz.mask_token,"\u2581"),never_split=tkz.all_special_tokens) for sub_token in tkz.subword_tokenizer.tokenize(("\u2581"+token).replace("\u2581\u2581","〓"))]
mdl=AutoModelForMaskedLM.from_pretrained("ku-nlp/deberta-v2-base-japanese")
fmp=FillMaskPipeline(model=mdl,tokenizer=tkz)
print(fmp("夜の底が[MASK]なった。"))

端的には、各単語の先頭にSPIECE_UNDERLINEを付加しつつ、[MASK]がJuman++SentencePieceでバラされる問題をゲタで回避している。このトークナイザを使いつつ「夜の底が[MASK]なった。」の[MASK]を穴埋めさせてみたところ、私(安岡孝一)の手元では以下の結果になった。

[{'score': 0.29466712474823, 'token': 4130, 'token_str': '深く', 'sequence': '夜 の 底 が 深く なった 。'}, {'score': 0.10997577756643295, 'token': 19502, 'token_str': '暗く', 'sequence': '夜 の 底 が 暗く なった 。'}, {'score': 0.10800448060035706, 'token': 17340, 'token_str': '熱く', 'sequence': '夜 の 底 が 熱く なった 。'}, {'score': 0.07135284692049026, 'token': 27473, 'token_str': '浅く', 'sequence': '夜 の 底 が 浅く なった 。'}, {'score': 0.06170506030321121, 'token': 27949, 'token_str': '冷たく', 'sequence': '夜 の 底 が 冷たく なった 。'}]

「深く」「暗く」「熱く」「浅く」「冷たく」となっており、scoreも含め、1月5日の結果とほぼ同等である。このあたりのSPIECE_UNDERLINEやnever_splitに関する問題を、rhoknpが吸収してくれるとうれしいのだけど、さて、どういうオプションを付けてもらったらいいかしら。

16433683 journal
人工知能

yasuokaの日記: アイヌ語係り受け解析モデルroberta-base-ainu-ud-goeswith仮リリース

日記 by yasuoka

思うところあって、アイヌ語係り受け解析モデルroberta-base-ainu-ud-goeswithを試作してみた。カタカナでもローマ字でも動くようにしたつもりなのだが、解析精度がなかなか上がらない。とりあえず、Google Colaboratoryで動かしてみよう。

!pip install transformers deplacy
from transformers import pipeline
nlp=pipeline("universal-dependencies","KoichiYasuoka/roberta-base-ainu-ud-goeswith",trust_remote_code=True,aggregation_strategy="simple")
doc=nlp("イタカㇱ アワ ポンルㇷ゚ネアイヌ エネ イタキ")
import deplacy
deplacy.serve(doc,port=None)

「イタカㇱ アワ ポンルㇷ゚ネアイヌ エネ イタキ」を係り受け解析してみたところ、私(安岡孝一)の手元では以下の結果になった。

# text = イタカㇱ アワ ポンルㇷ゚ネアイヌ エネ イタキ
1-2    イタカㇱ    _    _    _    _    _    _    _    _
1    イタㇰ    itak    VERB    自動詞    _    0    root    _    SpaceAfter=No
2    ァㇱ    as    PART    人称接辞    _    1    nsubj    _    _
3    アワ    awa    CCONJ    接続詞    _    1    cc    _    _
4    ポン    pon    VERB    自動詞    _    6    amod    _    SpaceAfter=No
5    ルㇷ゚ネ    rupne    VERB    自動詞    _    6    amod    _    SpaceAfter=No
6    アイヌ    aynu    NOUN    名詞    _    8    nsubj    _    _
7    エネ    ene    ADV    副詞    _    8    advmod    _    _
8    イタキ    itaki    VERB    自動詞    _    1    acl    _    SpaceAfter=No

SVGで可視化すると、こんな感じ。「イタカㇱ」は「イタㇰ」「ァㇱ」の2語にちゃんと分解されているが、「イタキ」が「イタㇰ」「ィ」に分解できていない。結果として、後半最後のあたりの係り受けが、うまく処理できてないようだ。さて、文字の途中に単語の境界が来る場合を、どうチューニングしていったらいいかな。

typodupeerror

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

読み込み中...