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

yasuokaの日記: roberta-small-japanese-luw-uposは「四半期連結会計期間末日満期手形」を1語とみなすのか

日記 by yasuoka

私(安岡孝一)の昨日の日記でリリースしたroberta-small-japanese-aozoraを、UD_Japanese-GSDLUWでファインチューニングして、日本語「長単位」UPOS品詞付与モデルroberta-small-japanese-luw-upos作ってみた。ちょっと使ってみよう。

$ pip3 install 'transformers>=4.10.0' --user
$ python3
>>> from transformers import AutoTokenizer,AutoModelForTokenClassification,TokenClassificationPipeline
>>> tokenizer=AutoTokenizer.from_pretrained("KoichiYasuoka/roberta-small-japanese-luw-upos")
>>> model=AutoModelForTokenClassification.from_pretrained("KoichiYasuoka/roberta-small-japanese-luw-upos")
>>> pipeline=TokenClassificationPipeline(tokenizer=tokenizer,model=model,aggregation_strategy="simple")
>>> nlp=lambda x:[(x[t["start"]:t["end"]],t["entity_group"]) for t in pipeline(x)]
>>> print(nlp("roberta-small-japanese-luw-uposは「四半期連結会計期間末日満期手形」を1語とみなすのか"))
[('roberta-small-japanese-luw-upos', 'NOUN'), ('は', 'ADP'), ('「', 'PUNCT'), ('四半期連結会計期間末日満期手形', 'NOUN'), ('」', 'PUNCT'), ('を', 'ADP'), ('1語', 'NOUN'), ('と', 'ADP'), ('みなす', 'VERB'), ('の', 'SCONJ'), ('か', 'PART')]

ごらんのとおり、roberta-small-japanese-luw-uposは「四半期連結会計期間末日満期手形」を1語とみなす。ただし、これはあくまで出力結果が1語となっているだけで、内部処理としては7つのトークンに分解している。

>>> print(tokenizer.tokenize("roberta-small-japanese-luw-uposは「四半期連結会計期間末日満期手形」を1語とみなすのか"))
['ro', 'bert', 'a', '-', 'small', '-', 'ja', 'pan', 'ese', '-', 'lu', 'w', '-', 'up', 'os', 'は', '「', '四半期', '連結', '会計', '期間', '末日', '満期', '手形', '」', 'を', '1', '語', 'と', 'みなす', 'の', 'か']

「長単位」をそのまま処理するのは難しいので、どうしてもこういうやり方にせざるを得ないと思う。ただ、サブワードという概念は、イマイチ日本語にそぐわない気もするので、このあたり、もう少し色々と考える必要があるだろう。

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

UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie

読み込み中...