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

yasuokaの日記: Transformersによる品詞付与をdeplacyで可視化するには

日記 by yasuoka

とあるイキサツで、Transformersによる品詞付与をTokenClassificationPipelineではなく、Google Colaboratory上のdeplacyでやる羽目になった。

!pip install deplacy transformers
class SequenceLabeling(object):
  def __init__(self,bert):
    from transformers import AutoTokenizer,AutoModelForTokenClassification
    self.tokenizer=AutoTokenizer.from_pretrained(bert)
    self.model=AutoModelForTokenClassification.from_pretrained(bert)
  def __call__(self,text):
    import torch
    t=self.tokenizer(text,return_offsets_mapping=True)
    v=torch.argmax(self.model(torch.tensor([t["input_ids"]]))[0],dim=2)
    r=[self.model.config.id2label[q] for q in v[0].tolist()]
    w=[(s,e,p) for (s,e),p in zip(t["offset_mapping"],r) if s<e]
    u="# text = "+text+"\n"
    for i,(s,e,p) in enumerate(w,1):
      m="SpaceAfter=No" if i<len(w) and e==w[i][0] else "_"
      u+="\t".join([str(i),text[s:e],"_",p]+["_"]*5+[m])+"\n"
    return u+"\n"
nlp=SequenceLabeling("KoichiYasuoka/roberta-small-japanese-luw-upos")
doc=nlp("全学年にわたって小学校の国語の教科書に大量の挿し絵が用いられている")
import deplacy
deplacy.serve(doc,port=None)

「全学年にわたって小学校の国語の教科書に大量の挿し絵が用いられている」に日本語長単位でUPOS品詞付与してみたところ、私(安岡孝一)の手元では以下の結果になった。

# text = 全学年にわたって小学校の国語の教科書に大量の挿し絵が用いられている
1    全    _    B-NOUN    _    _    _    _    _    SpaceAfter=No
2    学年    _    I-NOUN    _    _    _    _    _    SpaceAfter=No
3    にわたって    _    ADP    _    _    _    _    _    SpaceAfter=No
4    小学校    _    NOUN    _    _    _    _    _    SpaceAfter=No
5    の    _    ADP    _    _    _    _    _    SpaceAfter=No
6    国語    _    NOUN    _    _    _    _    _    SpaceAfter=No
7    の    _    ADP    _    _    _    _    _    SpaceAfter=No
8    教科書    _    NOUN    _    _    _    _    _    SpaceAfter=No
9    に    _    ADP    _    _    _    _    _    SpaceAfter=No
10    大量    _    ADJ    _    _    _    _    _    SpaceAfter=No
11    の    _    ADP    _    _    _    _    _    SpaceAfter=No
12    挿し    _    B-NOUN    _    _    _    _    _    SpaceAfter=No
13    絵    _    I-NOUN    _    _    _    _    _    SpaceAfter=No
14    が    _    ADP    _    _    _    _    _    SpaceAfter=No
15    用い    _    VERB    _    _    _    _    _    SpaceAfter=No
16    られ    _    AUX    _    _    _    _    _    SpaceAfter=No
17    ている    _    SCONJ    _    _    _    _    _    _

可視化の結果は、こんな感じ。「全学年」と「挿し絵」は複数のトークンに分かれているため、それぞれB-NOUNとI-NOUNが品詞付与されているのが分かる。deplacyは、元々は係り受けの可視化ツールなんだけど、まあ、こういう使い方もアリかな。

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

計算機科学者とは、壊れていないものを修理する人々のことである

読み込み中...