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

greenteaさんのトモダチの日記。 ログインするとコメント表示数や表示方法をカスタマイズできるのを知っていますか?

13887396 journal
人工知能

yasuokaの日記: 望遠鏡は「望遠」「鏡」なのか「望」「遠鏡」なのか

日記 by yasuoka

AdobeのNLP-Cube1.0.5に、新たなモデル1.1がリリースされたとの御連絡をいただいたので、とりあえず日本語モデル1.1をインストールしてみた。

% pip3 install nlpcube
% python3
>>> from cube.api import Cube
>>> Cube(verbose=True).load("ja",1.1)
>>> quit()

wiki.ja.vecをダウンロードしなくなっているので、インストールがそこそこ早い。試しに「望遠鏡で泳ぐ彼女を見た」を解析してみよう。

% python3
>>> from cube.api import Cube
>>> ja_nlpcube=Cube(verbose=True)
>>> ja_nlpcube.load("ja",1.1)
>>> from cube.io_utils import conll
>>> d=conll.Dataset()
>>> d.sequences=ja_nlpcube("望遠鏡で泳ぐ彼女を見た")
>>> d.write_stdout()

この結果、私(安岡孝一)の手元では、以下のUniversal Dependenciesが出力された。

1 望 望 NOUN _ _ 2 compound _ SpaceAfter=No
2 遠鏡 遠鏡 NOUN _ _ 4 obl _ SpaceAfter=No
3 で で ADP _ _ 2 case _ SpaceAfter=No
4 泳ぐ 泳ぐ VERB _ _ 5 acl _ SpaceAfter=No
5 彼女 彼女 PRON _ _ 7 obj _ SpaceAfter=No
6 を を ADP _ _ 5 case _ SpaceAfter=No
7 見 見る VERB _ _ 0 root _ SpaceAfter=No
8 た た AUX _ _ 7 aux _ SpaceAfter=No

うーん、望遠鏡が「望」←compound─「遠鏡」になってしまっていて、かなりマズイ。以前の日本語モデル1.0に比べても、残念ながら精度が下がっているように見える。やっぱりwiki.ja.vecを使わないと、未知語が増えちゃうのかなぁ。

13886608 journal
日記

Ryo.Fの日記: Waltz of the Flowers - guitar arrangement by Tim Sparks

日記 by Ryo.F

弾きたくて買って早XX年。
すっかり積読…積弾(?)になっていたんだけど、
改めて弾いてみたくなり、楽譜を読み直すと…
おいおい、めちゃ間違ってるやん。
D.C. al Codaって、ルバートAパートまで戻るわけやないやろ?
インテンポ以降Cパートを繰り返すんだろうと思うけど…
To Codaは無いし、Codaがヘンなところに!
しかも、D.C. al Codaの後って、Cパートと同じやん!

まあ、音源もあるし、聴けば解るからいいんだけどさ。

13885627 journal
日記

hotta-sの日記: みぞ

日記 by hotta-s

Bill Hatesの日記: 比較的どうでもいいニュースみたいなのいくつか経由
広すぎる溝 サイクリングの落とし穴

グルービング工法のことかと思った。
あれも大概だと思う。

転倒も怖い(後ろから来た車に轢かれる)けど、パンクしそうなのも怖い。

13883213 journal
日記

hotta-sの日記: たぶん

日記 by hotta-s

スラドに聞け:LANハブに余っていたケーブルを刺す行為、注意されるほどのことなのか

先日職場で起きたネットワーク障害。
私はこれじゃないかと思っている。
サーバダウンでもなさそうだし、経路途絶でもない。当日なにやら訳分からん工事しているし、情シスが首ひねっている。

ま、私らのような外様に原因教えてはもらえないからどうでもいいけど。

13882699 journal
人工知能

yasuokaの日記: 日本語係り受け解析エンジンとしてのNLP-Cube

日記 by yasuoka

AdobeのNLP-Cube1.0.5のベクトル・ダウンロード回りが治った、との連絡をいただいた。昨日の日記に続いて、NLP-Cubeの日本語モデルもインストールしてみよう。

% pip3 install nlpcube
% python3
>>> from cube.api import Cube
>>> Cube(verbose=True).load("ja")
>>> quit()

巨大なwiki.ja.vecを筆頭に、あちこちから色んなモノを取ってくるので、とにかくダウンロードに時間がかかるが、一回だけ我慢することになる。次に、インターフェースの準備。

% python3
>>> from cube.api import Cube
>>> ja_nlpcube=Cube(verbose=True)
>>> ja_nlpcube.load("ja")
>>> def nlpcube2ud(sentence):
...   return("".join("".join("\t".join([str(t.index),t.word,t.lemma,t.upos,t.xpos,t.attrs,str(t.head),t.label,t.deps,t.space_after])+"\n" for t in s)+"\n" for s in ja_nlpcube(sentence)))
...
>>>

NLP-Cubeを使って、Universal Dependenciesを返す関数が、これで準備できたことになる。どうせなので、私(安岡孝一)の「SVGによるUniversal Dependencies可視化ツール」にも繋いでみよう。

>>> def svgviewer(ud):
...   import urllib.parse,webbrowser
...   webbrowser.open("http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/kyodokenkyu/ud-kanbun/conllusvg/viewer.svg#"+urllib.parse.quote(ud))
...
>>>

これで、関数の準備は完了だ。では「望遠鏡で泳ぐ彼女を見た」を、試しに解析してみよう。

>>> u=nlpcube2ud("望遠鏡で泳ぐ彼女を見た")
>>> print(u)
>>> svgviewer(u)

この結果、私の手元では、以下のUniversal Dependenciesが出力されると同時に、こんな感じのSVGが表示された。

1 望遠鏡 望遠鏡 NOUN _ _ 6 obl _ SpaceAfter=No
2 で だ AUX _ _ 1 case _ SpaceAfter=No
3 泳ぐ 泳ぐ VERB _ _ 4 acl _ SpaceAfter=No
4 彼女 彼女 PRON _ _ 6 obj _ SpaceAfter=No
5 を を ADP _ _ 4 case _ SpaceAfter=No
6 見 見る VERB _ _ 0 root _ SpaceAfter=No
7 た た AUX _ _ 6 aux _ SpaceAfter=No

正しく「望遠鏡←obl─見」となっているのが、素晴らしい。ただ、NLP-Cubeは「で」がAUX(助動詞)になってしまっていて、このあたりが「あと一息」だったりする。ちなみにNLP-Cubeは、wiki.ja.vecを必要としないバージョンを開発中らしいので、個人的には楽しみである。

13881856 journal
人工知能

yasuokaの日記: 日本語係り受け解析エンジンとしてのGiNZA・StanfordNLP・UDPipe

日記 by yasuoka

GiNZA1.0.2が一昨日リリースされたので、StanfordNLP0.1.2およびUDPipe1.2.0と比較してみることにした。とりあえずは、python3.7とpip3で、日本語モデルのインストール。

% pip3 install 'https://github.com/megagonlabs/ginza/releases/download/v1.0.2/ja_ginza_nopn-1.0.2.tgz'
% pip3 install stanfordnlp
% python3
>>> import stanfordnlp
>>> stanfordnlp.download('en')
>>> stanfordnlp.download('ja')
>>> quit()

あちこちから色んなモノを取ってくることになるので、とにかくダウンロードに時間がかかるが、一回だけ我慢することになる。ここではUDPipeはインストールせずに、LINDAT/CLARINのサーバAPIを使うことにしよう。次に、各モデルのインターフェースの準備。

% python3
>>> import spacy
>>> ja_ginza=spacy.load("ja_ginza_nopn")
>>> def ginza2ud(sentence):
...   from spacy.lang.ja_ginza.cli import token_line
...   return("".join("".join(token_line(t,{})+"\n" for t in s)+"\n" for s in ja_ginza(sentence).sents))
...
>>> import stanfordnlp
>>> ja_stanfordnlp=stanfordnlp.Pipeline(lang="ja")
>>> def stanfordnlp2ud(sentence):
...   from stanfordnlp.models.common import conll
...   return(ja_stanfordnlp(sentence).conll_file.conll_as_string())
...
>>> def udpipe2ud(sentence):
...   import urllib.parse,urllib.request,json
...   with urllib.request.urlopen("http://lindat.mff.cuni.cz/services/udpipe/api/process?model=japanese&tokenizer&tagger&parser&data="+urllib.parse.quote(sentence)) as r:
...     q=r.read()
...   return(json.loads(q)["result"])
...
>>>

GiNZAとStanfordNLPとUDPipeで、それぞれUniversal Dependenciesを返す関数が、これで準備できたことになる。試しに「望遠鏡で泳ぐ彼女を見た」を解析してみよう。

>>> s="望遠鏡で泳ぐ彼女を見た"
>>> print(ginza2ud(s))
>>> print(stanfordnlp2ud(s))
>>> print(udpipe2ud(s))
>>>

この結果、私(安岡孝一)の手元では、以下の3種類のUniversal Dependenciesが出力された。

1 望遠鏡 望遠鏡 NOUN 名詞-普通名詞-一般 _ 3 nmod _ SpaceAfter=No
2 で で ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No
3 泳ぐ 泳ぐ VERB 動詞-一般 _ 4 acl _ SpaceAfter=No
4 彼女 彼女 PRON 代名詞 _ 6 obj _ SpaceAfter=No
5 を を ADP 助詞-格助詞 _ 4 case _ SpaceAfter=No
6 見 見る VERB 動詞-非自立可能 _ 0 root _ SpaceAfter=No
7 た た AUX 助動詞 _ 6 aux _ SpaceAfter=No

1 望遠鏡 望遠鏡 NOUN _ _ 3 obl _ _
2 で で ADP _ _ 1 case _ _
3 泳ぐ 泳ぐ VERB _ _ 4 acl _ _
4 彼女 彼女 PRON _ _ 6 obj _ _
5 を を ADP _ _ 4 case _ _
6 見 見る VERB _ _ 0 root _ _
7 た た AUX _ _ 6 aux _ _

# newdoc
# newpar
# sent_id = 1
# text = 望遠鏡で泳ぐ彼女を見た
1 望遠鏡 望遠鏡 NOUN NN _ 6 obl _ SpaceAfter=No
2 で で ADP PS _ 1 case _ SpaceAfter=No
3 泳ぐ 泳ぐ ADV RB _ 6 advmod _ SpaceAfter=No
4 彼女 彼女 PRON NP _ 6 obj _ SpaceAfter=No
5 を を ADP PS _ 4 case _ SpaceAfter=No
6 見 見る VERB VV _ 0 root _ SpaceAfter=No
7 た た AUX AV _ 6 aux _ SpaceAfter=No

上から順に、GiNZA、StanfordNLP、UDPipeの結果である。正しく「望遠鏡←obl─見」となっているのはUDPipeだけで、GiNZAもStanfordNLPも現状では解析しきれていない。ただ、UDPipeは「泳ぐ」がADV(副詞)になってしまっており、これはこれでマズイと思う。うーん、今のところ一長一短だなぁ。

13880198 journal
日本

yasuokaの日記: 「駆け抜ける」と「走り切る」は複合動詞なのか動詞連続なのか

日記 by yasuoka

一昨日以来GiNZA (Ver.1.0.1令和版)と戯れていたのだが、どうも妙なUniversal Dependenciesが出力されるのに気づいた。たとえば「都大路を駆け抜けてゴールまで走り切った」という文に対し

% python3
>>> import spacy
>>> from spacy.lang.ja_ginza.cli import token_line
>>> ja=spacy.load("ja_ginza_nopn")
>>> d=ja("都大路を駆け抜けてゴールまで走り切った")
>>> u="".join("".join(token_line(t,{})+"\n" for t in s)+"\n" for s in d.sents)
>>> print(u)

で依存文法解析をおこなうと、以下のUniversal Dependenciesが出力される。

1 都大路 都大路 NOUN 名詞-普通名詞-一般 _ 3 obj _ SpaceAfter=No
2 を を ADP 助詞-格助詞 _ 1 case _ SpaceAfter=No
3 駆け抜け 駆け抜ける VERB 動詞-一般 _ 8 advcl _ SpaceAfter=No
4 て て SCONJ 助詞-接続助詞 _ 3 mark _ SpaceAfter=No
5 ゴール ゴール VERB 名詞-普通名詞-サ変可能 _ 8 nmod _ SpaceAfter=No
6 まで まで ADP 助詞-副助詞 _ 5 case _ SpaceAfter=No
7 走り 走る VERB 動詞-一般 _ 8 aux _ SpaceAfter=No
8 切っ 切る VERB 動詞-非自立可能 _ 8 root _ SpaceAfter=No
9 た た AUX 助動詞 _ 8 aux _ SpaceAfter=No

8 root」となっている部分に関しては、ちゃんと「0 root」となるようパッチを当ててもらったのだが、問題は「走り←aux─切っ」のauxだ。もし、「走り切る」を動詞連続(serial verb construction)だとみなすなら、auxではなくcompound:svcあたりを使うべきだろう。ただ、それは「駆け抜け」を、いわゆる複合動詞(compound verb)とみなして、一語として処理していることとと、スジが合わない気がするのだ。何というか、どっちつかずなのだが、さて、こういうの、どうしたらいいんだろ?

13878689 journal
人工知能

yasuokaの日記: GiNZAが出力したUniversal DependenciesをSVGで可視化する

日記 by yasuoka

リクルートMegagon LabsがGiNZA日本語UDモデル(Ver.1.0.1令和版)をリリースしたので、私(安岡孝一)の「SVGによるUniversal Dependencies可視化ツール」に繋いでみることにした。GiNZA日本語UDモデルは、spaCy上での日本語自然言語オープンソースライブラリで、pip3とpython3があれば

% pip3 install 'https://github.com/megagonlabs/ginza/releases/download/v1.0.1/ja_ginza_nopn-1.0.1.tgz'

だけでインストールできて、係り受け解析の結果をUniversal Dependenciesで出力可能である。たとえば「心を労する者は人を治める」という文に対する係り受け解析は

% python3
>>> import spacy,urllib.parse,webbrowser
>>> from spacy.lang.ja_ginza.cli import token_line
>>> h="http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/kyodokenkyu/ud-kanbun/conllusvg/viewer.svg"
>>> ja=spacy.load("ja_ginza_nopn")
>>> d=ja("心を労する者は人を治める")
>>> u=""
>>> for s in d.sents:
...   for t in s:
...     u=u+token_line(t,{})+"\n"
...   u=u+"\n"
...
>>> print(u)
>>> q=urllib.parse.quote(u)
>>> webbrowser.open(h+"#"+q)

とやれば、python3からブラウザが起動してきて、こんな感じのSVGが表示されるはずである。「心←iobj─労する」がiobjなのかobjなのかについては、多少議論があるとは思うのだが、まあ、そこそこいい結果が出ているように思う。ただ、GiNZAは日本語専用で、漢文(古典中国語)には応用できそうにないのが、ちょっと残念。

typodupeerror

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

読み込み中...