/ Модель

Характеристики

Контекст
512 токенов
Параметры
435 млн
Лицензия
CC BY-SA 4.0
Архитектура
deberta-v2 · dense
Базовая модель
deberta-large-japanese-unidic
Опубликована
19 июн 2022

deberta-large-japanese-unidic-ud-head

Ответы на вопросыТекст → текст3 профессии

Модель на базе DeBERTa V2 находит головное слово в японских длинных единицах текста, представляя синтаксический разбор как поиск ответа на вопрос.

156скачиваний за 30 дней0лайковвеса обновлены1 сен 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Koichi Yasuoka разработал эту модель на архитектуре DeBERTa V2 для японского синтаксического анализа зависимостей. Она определяет головное слово для длинных единиц японского текста, формулируя задачу как поиск ответа на вопрос. Модель дообучена на базе KoichiYasuoka/deberta-large-japanese-unidic; при обучении использовались тексты 青空文庫 и данные UD_Japanese-GSDLUW. Размер модели — 435,4 млн параметров, контекст — до 512 токенов.

Модель принимает текст с контекстом и вопросом, указывающим на слово, для которого нужно найти синтаксическую вершину. Если одно и то же слово встречается несколько раз, в README рекомендуется помечать нужное в контексте токеном [MASK], чтобы убрать неоднозначность. Модель ориентирована на японский язык и задачу dependency parsing; в карточке Hugging Face её pipeline указан как question-answering.

Модель распространяется по лицензии CC BY-SA 4.0. Она специализирована на японских длинных единицах и синтаксических зависимостях, поэтому не предназначена для общего ответа на вопросы; контекст ограничен 512 токенами.

Сценарии применения

  • поиск синтаксической вершины японского слова
  • анализ зависимостей в японских предложениях
  • разметка длинных единиц японского текста
  • синтаксический анализ корпусов японского языка

Ограничения

Модель специализирована на японском разборе зависимостей для длинных единиц; контекст ограничен 512 токенами. Повторяющиеся слова в контексте могут быть неоднозначны, поэтому README рекомендует помечать нужное вхождение токеном [MASK].

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

deberta-large-japanese-unidic-ud-head

Model Description

This is a DeBERTa(V2) model pretrained on 青空文庫 for dependency-parsing (head-detection on long-unit-words) as question-answering, derived from deberta-large-japanese-unidic and UD_Japanese-GSDLUW. Use [MASK] inside context to avoid ambiguity when specifying a multiple-used word as question.

How to Use

from transformers import AutoTokenizer,AutoModelForQuestionAnswering
tokenizer=AutoTokenizer.from_pretrained("KoichiYasuoka/deberta-large-japanese-unidic-ud-head")
model=AutoModelForQuestionAnswering.from_pretrained("KoichiYasuoka/deberta-large-japanese-unidic-ud-head")
question="国語"
context="全学年にわたって小学校の国語の教科書に挿し絵が用いられている"
inputs=tokenizer(question,context,return_tensors="pt")
outputs=model(**inputs)
start,end=outputs.start_logits.argmax(),outputs.end_logits.argmax()
print(tokenizer.convert_ids_to_tokens(inputs["input_ids"][0,start:end+1]))

or

from transformers import (AutoTokenizer,AutoModelForQuestionAnswering,
  AutoModelForTokenClassification,AutoConfig,TokenClassificationPipeline)
class TaggerPipeline(TokenClassificationPipeline):
  def __call__(self,text):
    d=super().__call__(text)
    if len(d)>0 and ("start" not in d[0] or d[0]["start"]==None):
      import spacy_alignments as tokenizations
      v=[x["word"].replace(" ","") for x in d]
      a2b,b2a=tokenizations.get_alignments(v,[c for c in text])
      for i,t in enumerate(a2b):
        s,e=(0,0) if t==[] else (t[0],t[-1]+1)
        if v[i].startswith(self.tokenizer.unk_token):
          s=([[-1]]+[x for x in a2b[0:i] if x>[]])[-1][-1]+1
        if v[i].endswith(self.tokenizer.unk_token):
          e=([x for x in a2b[i+1:] if x>[]]+[[len(text)]])[0][0]
        d[i]["start"],d[i]["end"]=s,e
    return d
class TransformersSlowUD(object):
  def __init__(self,bert):
    import os
    self.tokenizer=AutoTokenizer.from_pretrained(bert)
    self.model=AutoModelForQuestionAnswering.from_pretrained(bert)
    x=AutoModelForTokenClassification.from_pretrained
    if os.path.isdir(bert):
      d,t=x(os.path.join(bert,"deprel")),x(os.path.join(bert,"tagger"))
    else:
      from transformers.utils import cached_file
      c=cached_file(bert,"deprel/config.json")
      d=x(os.path.dirname(cached_file(bert,"deprel/pytorch_model.bin")))
      s=cached_file(bert,"tagger/config.json")
      t=x(os.path.dirname(cached_file(bert,"tagger/pytorch_model.bin")))
    self.deprel=TaggerPipeline(model=d,tokenizer=self.tokenizer,
      aggregation_strategy="simple")
    self.tagger=TaggerPipeline(model=t,tokenizer=self.tokenizer)
  def __call__(self,text):
    import numpy,torch,ufal.chu_liu_edmonds
    w=[(t["start"],t["end"],t["entity_group"]) for t in self.deprel(text)]
    z,n={t["start"]:t["entity"].split("|") for t in self.tagger(text)},len(w)
    r,m=[text[s:e] for s,e,p in w],numpy.full((n+1,n+1),numpy.nan)
    v,c=self.tokenizer(r,add_special_tokens=False)["input_ids"],[]
    for i,t in enumerate(v):
      q=[self.tokenizer.cls_token_id]+t+[self.tokenizer.sep_token_id]
      c.append([q]+v[0:i]+[[self.tokenizer.mask_token_id]]+v[i+1:]+[[q[-1]]])
    b=[[len(sum(x[0:j+1],[])) for j in range(len(x))] for x in c]
    with torch.no_grad():
      d=self.model(input_ids=torch.tensor([sum(x,[]) for x in c]),
        token_type_ids=torch.tensor([[0]*x[0]+[1]*(x[-1]-x[0]) for x in b]))
    s,e=d.start_logits.tolist(),d.end_logits.tolist()
    for i in range(n):
      for j in range(n):
        m[i+1,0 if i==j else j+1]=s[i][b[i][j]]+e[i][b[i][j+1]-1]
    h=ufal.chu_liu_edmonds.chu_liu_edmonds(m)[0]
    if [0 for i in h if i==0]!=[0]:
      i=([p for s,e,p in w]+["root"]).index("root")
      j=i+1 if i<n else numpy.nanargmax(m[:,0])
      m[0:j,0]=m[j+1:,0]=numpy.nan
      h=ufal.chu_liu_edmonds.chu_liu_edmonds(m)[0]
    u="# text = "+text.replace("\n"," ")+"\n"
    for i,(s,e,p) in enumerate(w,1):
      p="root" if h[i]==0 else "dep" if p=="root" else p
      u+="\t".join([str(i),r[i-1],"_",z[s][0][2:],"_","|".join(z[s][1:]),
        str(h[i]),p,"_","_" if i<n and e<w[i][0] else "SpaceAfter=No"])+"\n"
    return u+"\n"

nlp=TransformersSlowUD("KoichiYasuoka/deberta-large-japanese-unidic-ud-head")
print(nlp("全学年にわたって小学校の国語の教科書に挿し絵が用いられている"))

fugashi unidic-lite spacy-alignments and ufal.chu-liu-edmonds required.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · question-answering

Можно запустить

Подбираем GPU…

Класс архитектуры
DebertaV2ForQuestionAnswering
Ревизия весов
7e5ed95

0 моделей