Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
LARTHのトモ近況 | スラド
[go: Go Back, main page]



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

LARTHさんのトモダチの日記。

あなたのタレコミがスラドを支えます。さぁ、タレこめ!

13931223 journal
ビジネス

torlyの日記: 頭痛だった繊維

日記 by torly

継続的な向上により品質を保証する: 医療記録の専門家にとっての新たな方向性
 1991年の記事。特に内容はない…

医療情報管理: 高品質のデータを通じてよりよいケアを
 1992年の記事。内容がないよう…

研究レビュー: 医療記録専門家の役割の差
 1992年の記事。実際の仕事とあるべき仕事の差の判別に最も関わる変数は現在の地位で、学歴は一番関わりがない。

イノベーションと研究レビュー: パーソナリティ分析を用いた病院医療記録マネージャの洞察
 1991年の記事。調査対象となったマネージャの75%以上は300床以下の施設に所属している。特性は小中規模の部門のスーパバイザと一貫している。最もユニークなのは大規模施設におけるNPマネージャの多さだった(つまりはMBTIってことか?)。他のNも多い一方でPに関してはそれほどでもない。

13930468 journal
Java

torlyの日記: 頭痛繊維

日記 by torly

患者中心の病院における経営技術士の役割
 1992年の記事。特に内容はないよう

カルチャーショック: TQMへの道
 1992年の記事。Crawford Long Hospitalの事例。

大小の成功から品質文化を築く
 1992年の記事。Baptist Medical Center in ColumbiaのTQM事例。

TQM: 医療記録部門の向上のための実施戦略
 1991年の記事。内容はないよう…

事情通曰く、Apache Hadoopは役立たず
 スラド内検索でも2015年の言及が最後だが、それがいまどきのナウいエンジニアがアクティブユーザにいないせいか、事情通の発言通り顧客を不幸にするミドルウェアだからかはよく分からない

13930433 journal
人工知能

yasuokaの日記: UDPipe APIのpython3ラッパー

日記 by yasuoka

昨日の日記を読みながら、LINDAT/CLARINのUDPipe API向けpython3ラッパー「UDPipe2UD.py」を書いてみた。Universal Dependenciesのid、form、lemma、upos、xpos、feats、head、deprel、deps、miscを全部格納するようにしたため、ちょっと長くなってしまった。

#! /usr/bin/python3 -i

class UDPipeEntry:
  def __init__(self,result):
    self.result=result
    if "\n" in result:
      t=[]
      for r in result.split("\n"):
        w=UDPipeEntry(r)
        if w.id>0:
          t.append(w)
      for i,w in enumerate(t):
        w.head=w if w.head==0 else t[i+w.head-w.id]
      self.tokens=t
    else:
      w=result.split("\t")
      try:
        w[0],w[6]=int(w[0]),int(w[6])
      except:
        w=[0]*10
      self.id,self.form,self.lemma,self.upos,self.xpos,self.feats,self.head,self.deprel,self.deps,self.misc=w if len(w)==10 else [0]*10
  def __repr__(self):
    return self.result
  def __getitem__(self,item):
    return self.tokens[item]
  def __len__(self):
    return len(self.tokens)
  def browse(self):
    import webbrowser,urllib.parse
    h="http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/kyodokenkyu/ud-kanbun/conllusvg/viewer.svg"
    webbrowser.open(h+"#"+urllib.parse.quote(str(self)))

class UDPipe2UD:
  def __init__(self,lang="ja",option="tokenizer&tagger&parser"):
    self.parseURL="http://lindat.mff.cuni.cz/services/udpipe/api/process?model="+lang+"&"+option
  def __call__(self,sentence):
    import urllib.request,urllib.parse,json
    with urllib.request.urlopen(self.parseURL+"&data="+urllib.parse.quote(sentence)) as r:
      q=r.read()
    return UDPipeEntry(json.loads(q)["result"])

上のプログラムを「UDPipe2UD.py」に保存したら、とりあえず「望遠鏡で泳ぐ彼女を見た」をUDPipe2UDで係り受け解析してみよう。

% python3 -i UDPipe2UD.py
>>> ja=UDPipe2UD(lang="ja")
>>> s=ja("望遠鏡で泳ぐ彼女を見た")
>>> s.browse()
>>> print(s)
# newdoc
# newpar
# sent_id = 1
# text = 望遠鏡で泳ぐ彼女を見た
1    望遠鏡    望遠鏡    NOUN    NN    _    3    obl    _    SpaceAfter=No
2    で    で    ADP    PS    _    1    case    _    SpaceAfter=No
3    泳ぐ    泳ぐ    VERB    VV    _    4    acl    _    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

うまく行けば、こんな感じのブラウザが立ち上がってきて、↑のUniversal Dependenciesが出力される。本来「望遠鏡←obl─見」となるべきところ、この出力結果では「望遠鏡←obl─泳ぐ」となってしまっているが、現時点ではUDPipeの解析性能が足りない、ということだろう。

>>> print(s[0])
1    望遠鏡    望遠鏡    NOUN    NN    _    3    obl    _    SpaceAfter=No
>>> print(s[0].lemma)
望遠鏡
>>> print(s[2])
3    泳ぐ    泳ぐ    VERB    VV    _    4    acl    _    SpaceAfter=No
>>> print(s[2].upos)
VERB
>>> print(s[2].head)
4    彼女    彼女    PRON    NP    _    6    obj    _    SpaceAfter=No
>>> print(s[2].head.head)
6    見    見る    VERB    VV    _    0    root    _    SpaceAfter=No

なお、この「UDPipe2UD.py」は、他の言語にも対応している。英語なら

>>> en=UDPipe2UD(lang="en")
>>> s=en("He sat down with smiling face")
>>> s.browse()
>>> print(s)

で、古典中国語(漢文)なら

>>> lzh=UDPipe2UD(lang="lzh",option="tokenizer=presegmented&tagger&parser")
>>> s=lzh("不入虎穴不得虎子")
>>> s.browse()
>>> print(s)

で、それぞれ動作するはずである。ぜひ試してみてほしい。

13930247 journal
日記

WindKnightの日記: King of Monsters

日記 by WindKnight
公式 HP は、ここ

やっと、ここまで来たか、アメリカ産。
こういうのが、見たかったんですよね。
ゴジラも、キングギドラも、モスラも、ラドンも、ちゃんとそれらしく怪獣してました。

日本映画"シン・ゴジラ"の対になるアメリカ映画として、充分良い出来だと思います。
次から迷走しそうな気もしますが・・・。
13929939 journal
お金

torlyの日記: 昼夜の寒暖差繊維

日記 by torly

業務改革の概要および薬剤師への含意
 1994年の記事。特に内容はないよう

正しい改革の戦略を選ぶ。急がば回れ
 1993年の記事。遅い、全員参加のプロセスの方がうまくいくとのこと。そらそうやろ

ユニットを患者中心ケアに切り替える
 1993年の記事。St. Vincent Hospitals and Health ServicesにおけるCare2001実装の事例。1990年にパイロットプログラムのSeton Unitを導入している。最初高かった満足度はその後やや下落したため改良が必要だった。

患者中心のケアでスマートに働く
 1992年の記事。Lee Memorial HospitalとNorthside Hospitalの事例。

Parkviewの品質向上
 1992年の記事。Parkview Episcopal Medical CenterのCQI事例。

Lee Memorial Hospital、病院全体の変化の基盤となる「焦点ケアセンター」の1例目に肯定的な初期結果を得る
 1992年の記事。前後篇の後篇らしいが内容はない

13929635 journal
人工知能

yasuokaの日記: COTOHA APIのUniversal Dependencies向けpython3ラッパー

日記 by yasuoka

一昨昨日の日記で、私(安岡孝一)は書いた。

せめてCOTOHA APIも、ちゃんとUniversal Dependencies v2対応してくれないかなぁ。

『自然言語処理のためにMeCabを入れるのに疲れたのでCOTOHA APIを使った』を横目に見つつ、私なりにあれこれ考えてみて、COTOHA API構文解析v1のUniversal Dependencies v2向けpython3ラッパー「Cotoha2UD.py」を書いてみた。UPOSへの変換を、ある程度ちゃんとしようとしたら、思ったより長くなってしまった。

#! /usr/bin/python3 -i

class CotohaEntry:
  def __init__(self,response):
    import json
    self.response=response
    self.result=json.loads(response)["result"]
    self.tokens=[]
    for b in self.result:
      for w in b["tokens"]:
        w["xpos"]=w["pos"] if w["features"]==[] else w["pos"]+"["+",".join(w["features"])+"]"
        w["feats"]="_"
        w["head"]=w
        w["deprel"]="root"
        w["deps"]="_"
        w["misc"]="SpaceAfter=No"
        self.tokens.insert(w["id"],w)
    for w in self.tokens:
      if "dependency_labels" in w:
        for r in w["dependency_labels"]:
          t=self.tokens[r["token_id"]]
          t["head"]=w
          if r["label"]=="neg":
            t["deprel"]="aux"
            t["feats"]="Polarity=Neg"
          else:
            t["deprel"]=r["label"].replace("dobj","obj").replace("name","flat").replace("pass",":pass")
    p={ "名詞接尾辞":"NOUN", "冠名詞":"NOUN", "補助名詞":"NOUN",
        "動詞語幹": "VERB",
        "冠動詞":"ADV", "冠形容詞":"ADV", "連用詞":"ADV",
        "形容詞語幹":"ADJ",
        "連体詞":"DET",
        "接続詞":"CCONJ",
        "独立詞":"INTJ",
        "括弧":"PUNCT", "句点":"PUNCT", "読点":"PUNCT", "空白":"PUNCT",
        "Symbol":"SYM",
        "Number":"NUM" }
    for w in self.tokens:
      if w["pos"]=="名詞":
        w["upos"]="NOUN"
        if "代名詞" in w["xpos"] or "指示" in w["xpos"]:
          w["upos"]="PRON"
        if "固有" in w["xpos"]:
          w["upos"]="PROPN"
      else:
        w["upos"]=p[w["pos"]] if w["pos"] in p else "PART"
      if w["deprel"]=="case":
        w["upos"]="ADP"
      elif w["deprel"]=="cop" or w["deprel"].startswith("aux"):
        w["upos"]="AUX"
  def __repr__(self):
    return "".join("\t".join([str(t["id"]+1),t["form"],t["lemma"],t["upos"],t["xpos"],t["feats"],str(0 if t["head"] is t else t["head"]["id"]+1),t["deprel"],t["deps"],t["misc"]])+"\n" for t in self.tokens)
  def browse(self):
    import webbrowser,urllib.parse
    h="http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/kyodokenkyu/ud-kanbun/conllusvg/viewer.svg"
    webbrowser.open(h+"#"+urllib.parse.quote(str(self)))

class Cotoha2UD:
  def __init__(self,accessToken):
    self.parseURL="https://api.ce-cotoha.com/api/dev/nlp/v1/parse"
    self.accessToken=accessToken
  def __call__(self,sentence):
    import urllib.request,json
    h={ "Content-Type":"application/json;charset=UTF-8",
        "Authorization":"Bearer "+self.accessToken }
    d={ "sentence":sentence }
    u=urllib.request.Request(self.parseURL,json.dumps(d).encode(),h)
    with urllib.request.urlopen(u) as r:
      q=r.read()
    return CotohaEntry(q)

上のプログラムを「Cotoha2UD.py」に保存したら、ちょっと面倒くさい手順で「アクセストークン」を取得する。そこまでが出来たら、とりあえず「望遠鏡で泳ぐ彼女をみた」を、Cotoha2UDで係り受け解析してみよう。

% python3 -i Cotoha2UD.py
>>> ja=Cotoha2UD(accessToken="アクセストークン")
>>> s=ja("望遠鏡で泳ぐ彼女を見た")
>>> s.browse()
>>> print(s)
1    望遠鏡    望遠鏡    NOUN    名詞    _    3    nmod    _    SpaceAfter=No
2    で    で    ADP    格助詞[連用]    _    1    case    _    SpaceAfter=No
3    泳    泳ぐ    VERB    動詞語幹[G]    _    5    amod    _    SpaceAfter=No
4    ぐ    ぐ    AUX    動詞接尾辞[連体]    _    3    aux    _    SpaceAfter=No
5    彼女    彼女    PRON    名詞[代名詞]    _    7    obj    _    SpaceAfter=No
6    を    を    ADP    格助詞[連用]    _    5    case    _    SpaceAfter=No
7    見    見る    VERB    動詞語幹[A]    _    0    root    _    SpaceAfter=No
8    た    た    AUX    動詞接尾辞[終止]    _    7    aux    _    SpaceAfter=No

うまく行けば、こんな感じのブラウザが立ち上がってきて、↑のUniversal Dependenciesが出力される。本来「望遠鏡←obl─見」となるべきところ、この出力結果では「望遠鏡←nmod─泳」となってしまっているが、これはCOTOHA APIが解析をミスっているためなので、私としてはどうにもならない。うーん、COTOHA APIは「アクセストークン」が手間だし、1日1000回の制限があるし、やっぱりUDPipe APIの方が楽かなぁ…。

13929279 journal
ビジネス

torlyの日記: 湿気繊維

日記 by torly

患者中心のケア: 結論は未だ出ず
 1994年の記事。内容はないよう

患者中心のワークデザイン: 病院と薬剤部の再編
 1994年の記事。MultiCare Medical Centerの事例。

患者中心のケアとファーマシューティカルケア: 組織の中でどう協働するか
 1994年の記事。特に内容はないよう…

病院の患者中心ケアへの移行における薬剤部の関わり
 1994年の記事。内容はないよう…

typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...