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

yasuokaさんのトモダチの日記みんなの日記も見てね。 スラドのストーリを選ぶための補助をお願いします。

15498302 journal
データベース

yasuokaの日記: tatoebaデータセットにおけるアイヌ語ain日本語jaパラレルコーパス

日記 by yasuoka

私(安岡孝一)の11月6日の日記の読者から、datasetsが1.16.1にバージョンアップされて、最新のtatoeba使えるようになった、との連絡をいただいた。これで、アイヌ語と日本語のペアもダウンロードできるようになったので、さっそく試してみよう。

$ pip3 install -U datasets --user
$ python3
>>> from datasets import load_dataset
>>> d=load_dataset("tatoeba",lang1="ain",lang2="ja")
>>> print(d)
DatasetDict({
    train: Dataset({
        features: ['id', 'translation'],
        num_rows: 18
    })
})

アイヌ語と日本語のペアは、18組あるようだ。全部みてみよう。

>>> print(d["train"][:])
{'id': ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17'], 'translation': [{'ain': 'hemanta monrayke e-ki?', 'ja': '何の仕事をしているんですか。'}, {'ain': 'hemanta monrayke a-ki ruwe an?', 'ja': '何の仕事をしているんですか。'}, {'ain': 'icen poronno ku-kor.', 'ja': 'お金はたくさん持ってるよ。'}, {'ain': 'kesto Tom piano eyayaskayre.', 'ja': 'トムは毎日ピアノを練習するよ。'}, {'ain': 'aynu itak ku-ye eaykap.', 'ja': 'アイヌ語はしゃべれません。'}, {'ain': 'aynu itak ku-ye easkay.', 'ja': 'アイヌ語、話せるよ。'}, {'ain': 'aynu itak pirkano ku-ye easkay.', 'ja': 'アイヌ語なら上手に話せるよ。'}, {'ain': 'aynu itak pirkano ku-ye eaykap.', 'ja': 'アイヌ語が上手く話せないんだ。'}, {'ain': 'aynu itak e-ye easkay?', 'ja': 'アイヌ語って話せる?'}, {'ain': 'aynu itak e-ye easkay?', 'ja': 'アイヌ語を話すの?'}, {'ain': 'aynu itak ponno patek ku-ye easkay.', 'ja': 'ほんの少ししかアイヌ語は話せないよ。'}, {'ain': 'aynu itak ponno patek ku-ye easkay.', 'ja': '少しだけアイヌ語が話せます。'}, {'ain': 'somo, Tom sekor ku-rehe ka somo ne. Mari sekor ku-rehe ne.', 'ja': '違います。トムではなく、メアリーと言います。'}, {'ain': 'somo, Tom sekor ku-rehe ka somo ne. Mari sekor ku-rehe ne.', 'ja': '違うよ。名前はトムじゃなくてメアリーだよ。'}, {'ain': 'apto as kuni ku-ramu.', 'ja': '雨が降ると思います。'}, {'ain': 'iruka en-sinire yan.', 'ja': 'ちょっと休憩させてください。'}, {'ain': 'Yaunmosir ta oka-an ruwe?', 'ja': '北海道にお住まいですか?'}, {'ain': '', 'ja': ''}]}

私の勉強が足りないのか「kesto Tom piano eyayaskayre.」という文が、どうにも分からない。Tomとpianoは外来語だとしても、eyayaskayreってe-yay-askay-reなんだろうか。だとすると、読みにくいので、せめてeyay'askayreにしてほしいなあ。

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は、元々は係り受けの可視化ツールなんだけど、まあ、こういう使い方もアリかな。

15495573 journal
数学

yasuokaの日記: 横浜地方検察庁検事正の考える「尤度比」

日記 by yasuoka

東京地方検察庁検事の考える「尤度比」の読者から、横浜地方検察庁検事正の北村篤が書いた『DNA鑑定の確率計算』(島大法學、第64巻、第1・2合併号(2021年3月)、pp.33-71)という論文を教えてもらった。確率計算をおこなう論文のはずなのに、統計学的な考え方が見事に欠落しており、読んでいて痛々しかった。

アレルの有無の情報だけに基づく確率計算の考え方は,例えば『DNA鑑定とタイピング』( J.M.Butler著,福島弘文ほか監訳,「Butler」と略記する。)などで紹介されているが,具体的な計算方法(計算式)は十分には説明されていない。

とあることから、『DNA鑑定とタイピング―遺伝学・データベース・計測技術・データ検証・品質管理―』(共立出版、2009年6月)を北村篤は見ているはずなのだが、この本で紹介されている統計学的手法は全く理解できなかったらしい。結果として北村篤は、DNA鑑定を

なお,本稿は,確率の計算方法(数学の問題)を説明するものであり,意見にわたる部分も含め,もとより筆者の私見である。

統計学ではなく「数学の問題」として捉えてしまっており、この論文には「対数尤度比」も「カイ二乗分布」も「帰無仮説」すら出てこない。しかも、この論文の「確率の計算方法」とやらは極めてオソマツで、全てのSTR (Short Tandem Repeat)の出現を独立事象だとみなし、単純に確率を乗除するだけである。「Hardy=Weinberg平衡」も「Wahlund効果」も、この論文には出てこない。エンエンと「筆者の私見」の数式をこねくり回しているだけである。アタマ悪いんじゃないか、というのが私(安岡孝一)の正直な意見だが、とりあえずは、独立事象と従属事象を勉強しなおした上で、尤度比検定などの統計学的手法をちゃんと学んでほしい。

15488423 journal
日本

yasuokaの日記: XNUMXつの言語、XNUMXつの翻訳者 2

日記 by yasuoka

GTranslateの「9ステップのウェブサイト翻訳プロセスとその費用」というページの9ステップ目で、以下の文にブチ当たった。

2. XNUMXつの言語、XNUMXつの翻訳者

まあ、XNUMXを何か数字に読み替えればいいのだけど、こういうところの翻訳サービスを信用する人たちって、どの程度いるのかしら?

15486954 journal
交通

yasuokaの日記: 宮交シティ→高千穂神社→SAKURA MACHI Kumamoto路線バスの旅

日記 by yasuoka

とある事情で、宮交シティからSAKURA MACHI Kumamotoまで、途中で高千穂神社に参拝しつつ、路線バスで移動することを考えてみた。この日記の読者の中に、そういう情報が役立つ人がいるとは思えないのだが、とりあえず公表する。

宮交シティ06:20→07:43高鍋バスセンター [宮崎交通バス]
高鍋バスセンター08:10→08:44道の駅つの [宮崎交通バス]
・国道10号線を北へ徒歩(5km)
宮の下10:09→11:23日向商工会議所前 [日向市南部ぷらっとバス]
・日向市駅周辺で昼食
商工会館通り12:05→12:58祇園町 [宮崎交通バス]
祇園町13:04→14:37高千穂バスセンター [宮崎交通バス]
・高千穂神社に参拝
高千穂神社前17:17→17:41五ヶ瀬町立病院 [宮崎交通バス]
町立病院前17:45→17:54馬見原 [五ヶ瀬町Gライン]
馬見原18:10→18:47浜町中央 [熊本バス]
浜町中央19:23→20:52桜町バスターミナル [熊本バス]

都農町営バスの本数が少なく、どうやっても時間が合わなかったため、いきなり5kmも徒歩移動が入ってしまった。普通に考えて高速バスを使うべきなのだが、宮交シティ→高千穂が運休中なので、それもママならない。

宮交シティ08:30→11:25高千穂神社前 [宮崎交通バス] ※運休中
高千穂バスセンター16:57→19:52桜町バスターミナル [産交バス] ※11月1日より再開

まあ、南宮崎から延岡は、JRの「にちりん」か「ひゅうが」を使うべきかな。

15479449 journal
人工知能

yasuokaの日記: Universal Dependencies 2.9がリリース

日記 by yasuoka

Universal Dependencies 2.9が無事にリリースされたとの御連絡をいただいた。11月15日にリリース予定だったので、5日ほど前倒しだが「もしバグがあったら直す」らしいので、使う際には注意してほしい。

Universal Dependencies 2.9は122の言語にまたがるツリーバンクで、各言語の品詞・係り受け解析のみならず、多言語の係り受け解析に用いることができる。半年前のUniversal Dependencies 2.8.1と較べて、Bengali、Javanese、Karo(Brazil)、Ligurian、Neapolitan、Tatar、Xibe、Yakutが増えており、私(安岡孝一)個人としてはタタール語(Tatar)がうれしい。日本語については、国語研長単位(UD_Japanese-GSDLUWUD_Japanese-PUDLUWUD_Japanese-BCCWJLUW)が追加されており、私自身もすでに使い始めている。読者諸氏もぜひ使ってみてほしい。

15477031 journal
人工知能

yasuokaの日記: アイヌ語Universal Dependenciesで書く「モルラン ワ エㇰ 大学生 クネ。」

日記 by yasuoka

昨日の日記の「モルラン ワ エㇰ 大学生 クネ。」を、『Universal Dependenciesによるアイヌ語テキストコーパス』(情報処理学会研究報告, 2021-CH-127, No.5, 2021年8月28日)に基づいて書いてみた。

# sent_id = STV_2006-7-16_p9-2
# text = モルラン ワ エㇰ 大学生 クネ。
1    モルラン    Moruran    PROPN    固有名詞    _    3    obl    _    _
2    ワ    wa    ADP    格助詞    _    1    case    _    _
3    エㇰ    ek    VERB    自動詞    _    4    acl    _    _
4    大学生    _    X    _    _    0    root    _    _
5    ク    ku=    PART    人称接辞    _    4    nsubj    _    SpaceAfter=No
6    ネ    ne    AUX    デアル動詞    _    4    cop    _    SpaceAfter=No
7    。    .    PUNCT    記号    _    4    punct    _    _

ただ、「大学生」をどう扱うか迷って、結局、UPOSをXにした上に、LEMMAもXPOSも空欄にしてしまった。SVGで可視化すると、こんな感じ。コピュラ文なので「大学生」=nsubj⇒「ク」となるのだが、何とも座りが悪い。一方、「私は室蘭から来た大学生だ。」をUniDic2UD+現代話し言葉UniDicで係り受け解析してみたところ、私(安岡孝一)の手元では、以下のようになった。

$ pip3 install -U unidic2ud --user
$ echo 私は室蘭から来た大学生だ。 | unidic2ud -U spoken
# text = 私は室蘭から来た大学生だ。
1    私    私    PRON    代名詞    _    8    nsubj    _    SpaceAfter=No|Translit=ワタクシ
2    は    は    ADP    助詞-係助詞    _    1    case    _    SpaceAfter=No|Translit=ハ
3    室蘭    ムロラン    PROPN    名詞-固有名詞-地名-一般    _    5    obl    _    SpaceAfter=No|Translit=ムロラン
4    から    から    ADP    助詞-格助詞    _    3    case    _    SpaceAfter=No|Translit=カラ
5    来    来る    VERB    動詞-非自立可能    _    8    acl    _    SpaceAfter=No|Translit=キ
6    た    た    AUX    助動詞    _    5    aux    _    SpaceAfter=No|Translit=タ
7    大学    大学    NOUN    名詞-普通名詞-一般    _    8    compound    _    SpaceAfter=No|Translit=ダイガク
8    生    生    NOUN    接尾辞-名詞的-一般    _    0    root    _    SpaceAfter=No|Translit=セイ
9    だ    だ    AUX    助動詞    _    8    cop    _    SpaceAfter=No|Translit=ダ
10    。    。    PUNCT    補助記号-句点    _    8    punct    _    SpaceAfter=No

SVGで可視化すると、こんな感じ。日本語「短単位」では「大学」「生」の2語になってしまうあたり、さらに悩ましい。さて、このあたり、アイヌ語UDと日本語UDの間で、どう調整していくべきかな。

15476505 journal
教育

yasuokaの日記: 「タパンペ クコル カッコ ネ。」「大学生 クネ。」とSTVアイヌ語ラジオ講座

日記 by yasuoka

昨日の日記の「タパンペ クコル カッコ ネ。」という文を探していたところ、STVアイヌ語ラジオ講座テキスト平成18年度レッスン11(2006年6月11日放送)で、それらしい練習問題「単語を並び換えてアイヌ語の文章を作って下さい」を見つけた。

これは私の学校だ。(        )(        )(        )(        )。
カッコ  kakko       学校
ネ    ne          だ、である
タパンペ tapanpe     これ
クコㇽ  ku=kor      私の

ちなみに、5週間後の平成18年度レッスン16(2006年7月16日放送)には、以下の練習問題があった。

私は室蘭から来た大学生だ。(        )(        )(        )(        )(        )。
エㇰ   ek          来る
ネ    ne          ~だ
モルラン Moruran     室蘭
大学生  DAIGAKUSEI  大学生
ワ    wa          ~から
ク    ku=         私は

括弧の数が合わないので、解答を見たところ「モルラン ワ エㇰ 大学生 クネ Moruran wa ek DAIGAKUSEI ku=ne」となっている。さて、これが「大学生 クネ。」の元ネタだとすると、アイヌ語の様似方言なんだろうか。

15475880 journal
データベース

yasuokaの日記: tatoebaデータセットにおけるアイヌ語ain英語enパラレルコーパス

日記 by yasuoka

私(安岡孝一)の11月3日の日記の読者から、tatoebaの359言語にはアイヌ語が含まれている、との情報をいただいた。ちょっと試してみよう。

$ pip3 install -U datasets --user
$ python3
>>> from datasets import load_dataset
>>> d=load_dataset("tatoeba",lang1="ain",lang2="ja")
FileNotFoundError: Couldn't find file at https://object.pouta.csc.fi/OPUS-Tatoeba/v2020-11-09/moses/ain-ja.txt.zip

残念ながら、アイヌ語と日本語のペアはダウンロードできないようだ。ならば、アイヌ語と英語のペアはどうだろう。

>>> d=load_dataset("tatoeba",lang1="ain",lang2="en")
>>> print(d)
DatasetDict({
    train: Dataset({
        features: ['id', 'translation'],
        num_rows: 27
    })
})

アイヌ語と英語のペアは、27組あるようだ。全部みてみよう。

>>> print(d["train"][:])
{'id': ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26'], 'translation': [{'ain': 'クパケ アㇻカ。', 'en': 'I have a headache.'}, {'ain': 'クホニ シク。', 'en': 'My stomach is full.'}, {'ain': '「エイワンケ ヤ?」 「クイワンケ ワ、 イヤイライケレ。」', 'en': '"How are you?" "I am fine, thank you."'}, {'ain': '大学生 クネ。', 'en': 'I am a university student.'}, {'ain': 'フナㇰ ウン エアㇽパ ヤ?', 'en': 'Where are you going to?'}, {'ain': 'クパケ アㇻカ。', 'en': 'My head hurts.'}, {'ain': '大学生 クネ。', 'en': "I'm a college student."}, {'ain': '大学生 クネ。', 'en': "I'm a university student."}, {'ain': 'チセ メアン。', 'en': 'The house is cold.'}, {'ain': 'ホㇱカヌマン レラ アㇱ。', 'en': 'Two days ago the wind blew.'}, {'ain': 'ヌマン ウパㇱ アㇱ。', 'en': 'Yesterday snow fell.'}, {'ain': 'ヌマン ウパㇱ アㇱ。', 'en': 'It snowed yesterday.'}, {'ain': 'ヘカチ スマ オテㇾケ。', 'en': 'The boy throws a stone.'}, {'ain': 'ヘカチ シタ ホㇰ。', 'en': 'The boy buys a dog.'}, {'ain': 'ウェンダラㇷ゚ ポロンノ クコㇿ。', 'en': 'I have a lot of dreams.'}, {'ain': 'ヌマン クアチャポ シタ ホㇰ。', 'en': 'Yesterday my uncle bought a dog.'}, {'ain': '大学生 クネ。', 'en': 'I am a college student.'}, {'ain': 'エチセ ポロ。', 'en': 'Your house is big.'}, {'ain': 'クハポ イルㇱカ。', 'en': 'My mother is angry.'}, {'ain': 'タパンペ クコル カッコ ネ。', 'en': 'This is my school.'}, {'ain': 'アイヌ ポロンノ オカイ。', 'en': 'There are a lot of people.'}, {'ain': 'クコル マキリ エエン。', 'en': 'My knife is sharp.'}, {'ain': 'チェㇷ゚ アスパ ワ アエ ロ!', 'en': "Let's cook and eat the fish!"}, {'ain': 'ニサッタ ヌプㇽペッ オルン エアㇻパ ヤ?', 'en': 'Are you going to Noboribetsu tomorrow?'}, {'ain': 'ウパㇱ ル。', 'en': 'Snow melts.'}, {'ain': 'クチキㇼ アㇻカ。', 'en': 'My leg hurts.'}, {'ain': '', 'en': ''}]}

「大学生 クネ。」という文が4つもあるのは、ちょっと閉口する。しかも、この文をローマナイズするなら「daigakusei ku=ne.」でいいんだろうか、それとも「taykaksey ku=ne.」とすべきなんだろうか。「タパンペ クコル カッコ ネ。」(tapan pe ku=kor kakko ne.)では「学校」を「カッコ」としているので、それとどう合わせるかも考えなきゃならない。うーん、悩ましいなぁ。

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', '語', 'と', 'みなす', 'の', 'か']

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

typodupeerror

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

読み込み中...