パスワードを忘れた? アカウント作成
15386896 journal
人工知能

yasuokaの日記: 古典中国語(漢文)品詞付与のためのroberta-classical-chinese-uposリリース

日記 by yasuoka

昨日の日記で使ったHuggingFaceのAPIが面白かったので、古典中国語(漢文)品詞付与のためのTransformersモデルも作ってみて、roberta-classical-chinese-base-uposとしてリリースした。品詞はUniversal DependenciesのUPOSを使っているが、複数文字に渡る単語の場合は、最初の文字の品詞に「B-」を、残りの文字に「I-」を付けている。試しにGoogle Colaboratoryで動かしてみよう。

!pip install transformers
import torch
from transformers import AutoTokenizer,AutoModelForTokenClassification
tokenizer=AutoTokenizer.from_pretrained("KoichiYasuoka/roberta-classical-chinese-large-sentence-segmentation")
model=AutoModelForTokenClassification.from_pretrained("KoichiYasuoka/roberta-classical-chinese-large-sentence-segmentation")
s="天平二年正月十三日萃于帥老之宅申宴會也于時初春令月氣淑風和梅披鏡前之粉蘭薰珮後之香加以曙嶺移雲松掛羅而傾盖夕岫結霧鳥封縠而迷林庭舞新蝶空歸故鴈於是盖天坐地促膝飛觴忘言一室之裏開衿煙霞之外淡然自放快然自足若非翰苑何以攄情詩紀落梅之篇古今夫何異矣宜賦園梅聊成短詠"
p=[model.config.id2label[q] for q in torch.argmax(model(tokenizer.encode(s,return_tensors="pt"))[0],dim=2)[0].tolist()[1:-1]]
print(list(zip(s,p)))

「令和」の元ネタに品詞付与してみたところ、私(安岡孝一)の手元では以下の結果になった。

[('天', 'B-NOUN'), ('平', 'I-NOUN'), ('二', 'NUM'), ('年', 'NOUN'), ('正', 'NOUN'), ('月', 'NOUN'), ('十', 'B-NUM'), ('三', 'I-NUM'), ('日', 'NOUN'), ('萃', 'VERB'), ('于', 'ADP'), ('帥', 'VERB'), ('老', 'NOUN'), ('之', 'SCONJ'), ('宅', 'NOUN'), ('申', 'VERB'), ('宴', 'VERB'), ('會', 'VERB'), ('也', 'PART'), ('于', 'ADP'), ('時', 'NOUN'), ('初', 'NOUN'), ('春', 'NOUN'), ('令', 'VERB'), ('月', 'NOUN'), ('氣', 'NOUN'), ('淑', 'VERB'), ('風', 'NOUN'), ('和', 'VERB'), ('梅', 'NOUN'), ('披', 'VERB'), ('鏡', 'NOUN'), ('前', 'NOUN'), ('之', 'SCONJ'), ('粉', 'NOUN'), ('蘭', 'NOUN'), ('薰', 'VERB'), ('珮', 'NOUN'), ('後', 'NOUN'), ('之', 'SCONJ'), ('香', 'NOUN'), ('加', 'ADV'), ('以', 'VERB'), ('曙', 'NOUN'), ('嶺', 'NOUN'), ('移', 'VERB'), ('雲', 'NOUN'), ('松', 'NOUN'), ('掛', 'VERB'), ('羅', 'NOUN'), ('而', 'CCONJ'), ('傾', 'VERB'), ('盖', 'NOUN'), ('夕', 'NOUN'), ('岫', 'NOUN'), ('結', 'VERB'), ('霧', 'NOUN'), ('鳥', 'NOUN'), ('封', 'VERB'), ('縠', 'NOUN'), ('而', 'CCONJ'), ('迷', 'VERB'), ('林', 'NOUN'), ('庭', 'NOUN'), ('舞', 'VERB'), ('新', 'VERB'), ('蝶', 'NOUN'), ('空', 'ADV'), ('歸', 'VERB'), ('故', 'NOUN'), ('鴈', 'NOUN'), ('於', 'ADP'), ('是', 'PRON'), ('盖', 'VERB'), ('天', 'NOUN'), ('坐', 'VERB'), ('地', 'NOUN'), ('促', 'VERB'), ('膝', 'NOUN'), ('飛', 'VERB'), ('觴', 'NOUN'), ('忘', 'VERB'), ('言', 'NOUN'), ('一', 'NUM'), ('室', 'NOUN'), ('之', 'SCONJ'), ('裏', 'NOUN'), ('開', 'VERB'), ('衿', 'NOUN'), ('煙', 'NOUN'), ('霞', 'NOUN'), ('之', 'SCONJ'), ('外', 'NOUN'), ('淡', 'VERB'), ('然', 'PART'), ('自', 'PRON'), ('放', 'VERB'), ('快', 'VERB'), ('然', 'PART'), ('自', 'PRON'), ('足', 'VERB'), ('若', 'ADV'), ('非', 'ADV'), ('翰', 'NOUN'), ('苑', 'NOUN'), ('何', 'PRON'), ('以', 'VERB'), ('攄', 'VERB'), ('情', 'NOUN'), ('詩', 'NOUN'), ('紀', 'VERB'), ('落', 'VERB'), ('梅', 'NOUN'), ('之', 'SCONJ'), ('篇', 'NOUN'), ('古', 'NOUN'), ('今', 'NOUN'), ('夫', 'PART'), ('何', 'ADV'), ('異', 'VERB'), ('矣', 'PART'), ('宜', 'AUX'), ('賦', 'VERB'), ('園', 'NOUN'), ('梅', 'NOUN'), ('聊', 'ADV'), ('成', 'VERB'), ('短', 'VERB'), ('詠', 'NOUN')]

うーむ、品詞付与できてるような、できてないような…。とりあえず、文切りモデルともども使ってみてほしい。

この議論は、yasuoka (21275)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア

読み込み中...