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

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

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語にちゃんと分解されているが、「イタキ」が「イタㇰ」「ィ」に分解できていない。結果として、後半最後のあたりの係り受けが、うまく処理できてないようだ。さて、文字の途中に単語の境界が来る場合を、どうチューニングしていったらいいかな。

16406243 journal
人工知能

yasuokaの日記: ku-nlp/deberta-v2-base-japaneseは「夜の底が[MASK]なった。」の[MASK]に何を埋めてくるのか

日記 by yasuoka

京都大学の黒橋・褚・村脇研究室からku-nlp/deberta-v2-base-japaneseがリリースされたので、早速、使ってみたのだが、Juman++がトークナイザに必要だった。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
import re,subprocess
from transformers import AutoTokenizer,AutoModelForMaskedLM,FillMaskPipeline
tkz=AutoTokenizer.from_pretrained("ku-nlp/deberta-v2-base-japanese")
mdl=AutoModelForMaskedLM.from_pretrained("ku-nlp/deberta-v2-base-japanese")
fmp=FillMaskPipeline(model=mdl,tokenizer=tkz)
pipeline=lambda text: fmp(re.sub(r"\[ *M *A *S *K *\]","[MASK]",subprocess.check_output(["jumanpp","--segment"],input=text,encoding="utf-8")))
print(pipeline("夜の底が[MASK]なった。"))

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

[{'score': 0.29466670751571655, 'token': 4130, 'token_str': '深く', 'sequence': '夜 の 底 が 深く なった 。'}, {'score': 0.10997625440359116, 'token': 19502, 'token_str': '暗く', 'sequence': '夜 の 底 が 暗く なった 。'}, {'score': 0.10800454020500183, 'token': 17340, 'token_str': '熱く', 'sequence': '夜 の 底 が 熱く なった 。'}, {'score': 0.0713527500629425, 'token': 27473, 'token_str': '浅く', 'sequence': '夜 の 底 が 浅く なった 。'}, {'score': 0.06170497462153435, 'token': 27949, 'token_str': '冷たく', 'sequence': '夜 の 底 が 冷たく なった 。'}]

「深く」「暗く」「熱く」「浅く」「冷たく」となっており、さすがに「白く」は出ていないものの、かなりイイ線だと思う。Juman++のインストール無しに使えると、もう少し楽になるのだけど。

16402092 journal
中国

yasuokaの日記: 二郎神DeBERTa(V2)モデルによる現代中国語係り受け解析モデルとその解析精度

日記 by yasuoka

年末年始に、二郎神DeBERTa(V2)モデル3種類(97M320M710M)をもとに、現代中国語係り受け解析モデルを3つ(baselargexlarge)作ってみた。zh_gsdsimp-ud-test.conlluを使って、LAS/MLAS/BLEXを見てみよう。Google Colaboratory (GPU版)だとこんな感じ。

!pip install transformers
import os
url="https://github.com/UniversalDependencies/UD_Chinese-GSDSimp"
d=os.path.basename(url)
!test -d {d} || git clone -b dev --depth=1 {url}
!for F in train dev test ; do cp {d}/*-$$F.conllu $$F.conllu ; done
url="https://universaldependencies.org/conll18/conll18_ud_eval.py"
c=os.path.basename(url)
!test -f {c} || curl -LO {url}
for f in ["base","large","xlarge"]:
  from transformers import pipeline
  nlp=pipeline(task="universal-dependencies",model="KoichiYasuoka/deberta-"+f+"-chinese-erlangshen-ud-goeswith",aggregation_strategy="simple",trust_remote_code=True,device=0)
  with open("test.conllu","r",encoding="utf-8") as r:
    s=r.read()
  with open(f+"-test.conllu","w",encoding="utf-8") as w:
    for t in s.split("\n"):
      if t.startswith("# text = "):
        w.write(nlp(t[9:]))
!sh -xc 'python {c} test.conllu base-test.conllu'
!sh -xc 'python {c} test.conllu large-test.conllu'
!sh -xc 'python {c} test.conllu xlarge-test.conllu'

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

+ python conll18_ud_eval.py test.conllu base-test.conllu
LAS F1 Score: 77.87
MLAS Score: 76.72
BLEX Score: 80.42
+ python conll18_ud_eval.py test.conllu large-test.conllu
LAS F1 Score: 75.68
MLAS Score: 73.83
BLEX Score: 77.79
+ python conll18_ud_eval.py test.conllu xlarge-test.conllu
LAS F1 Score: 75.91
MLAS Score: 73.94
BLEX Score: 77.92

不思議なことに、いちばん小さい97Mをもとにしたbaseモデルが、いちばん解析精度がいいようだ。うーん、チューニングパラメータを変えた方がいいのかしら。でもxlargeモデルとかだと、ファインチューニングにGPUメモリが30GB以上必要なんだよなぁ。

16397423 journal
中国

yasuokaの日記: deberta-base-chinese-ud-goeswithとStanzaとTrankitの精度比較

日記 by yasuoka

現代中国語係り受けモデルdeberta-base-chinese-ud-goeswithを試作したので、zh_gsdsimp-ud-test.conlluを使ってLAS/MLAS/BLEXを見てみた。Google Colaboratoryだとこんな感じ。

!pip install transformers
import os
url="https://github.com/UniversalDependencies/UD_Chinese-GSDSimp"
d=os.path.basename(url)
!test -d {d} || git clone -b dev --depth=1 {url}
!for F in train dev test ; do cp {d}/*-$$F.conllu $$F.conllu ; done
url="https://universaldependencies.org/conll18/conll18_ud_eval.py"
c=os.path.basename(url)
!test -f {c} || curl -LO {url}
from transformers import pipeline
nlp=pipeline(task="universal-dependencies",model="KoichiYasuoka/deberta-base-chinese-ud-goeswith",aggregation_strategy="simple",trust_remote_code=True)
with open("test.conllu","r",encoding="utf-8") as r:
  s=r.read()
with open("result-test.conllu","w",encoding="utf-8") as w:
  for t in s.split("\n"):
    if t.startswith("# text = "):
      w.write(nlp(t[9:]))
!python {c} test.conllu result-test.conllu

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

LAS F1 Score: 75.89
MLAS Score: 74.10
BLEX Score: 78.21

同様のテストをStanza 1.4.2で試したところ、以下の結果になった。

LAS F1 Score: 68.08
MLAS Score: 65.05
BLEX Score: 69.00

Trankit 1.1.1だと、以下の結果になった。

LAS F1 Score: 74.47
MLAS Score: 72.99
BLEX Score: 78.06

deberta-base-chinese-ud-goeswithが、からくもTrankitから逃げ切っている。うーん、やはり単文字トークナイザは限界があるので、もう少し長いトークナイザに挑戦すべきかな。

typodupeerror

最初のバージョンは常に打ち捨てられる。

読み込み中...