SlideShare a Scribd company logo
プログラマのための
   作⽂文⼊入⾨門

        伊藤敬彦

株式会社プリファードインフラストラクチャー  

      2012年年  5⽉月  24⽇日  
⾃自⼰己紹介

l    奈奈良良先端⼤大情報科学研究課博⼠士後期過程修了了
l    ファストサーチ社で⾔言語処理理コンポーネントを開発
l    ミクシィで⼤大規模データマイニング技術の調査、
      開発を⾏行行う
l    Twitter  アカウント:takahi_̲i
l    そろそろ  34  歳




                  2
準備:プログラマも⽂文書を書く

l    プログラマは⾃自然⾔言語を執筆(作⽂文)する機会が多い

l    プログラマが書く⽂文書の種類
      ❌  感想⽂文、⼩小説
      ⭕  技術⽂文書(マニュアル、FAQ、⼝口答発表)

l    作⽂文は重要:コミュニティを⼤大きくする、ユーザ獲得




                    3
準備:プログラムを取り巻く状況

l    プログラムの品質向上への取り組みは美徳とされて
      いる。
      l  具体的な取り組み:ペアプログラミング、コード
          レビュー、コードのシェアリング、コードインスペ
          クションツール

l    規約(守ることが望ましいルール)が存在する:
      l  変数の命名
      l  関数の⻑⾧長さ
      l  変数のスコープ
      l  インデント
      l  …

                   4
準備:技術⽂文書を取り巻く状況

l    プログラムと違って⽂文書の品質については議論論され
      ない。
      l  ⽂文の善し悪しに関する具体的な指針の共有が無い。




l    読みやすさが向上しない。
l    技術、知識識の伝搬が阻害される。
      l  例例:
           l  翻訳された本が理理解できず結局原著を読む。

           l  マニュアルが理理解できずハマる。


                     5
本発表のテーマ

l    悪い⽂文のグループ化と各グループへの解決策を考える。
l    悪い⽂文となってしまうポイントをプログラミングの規
      約から考察する (こじつけてみる)。

      文書            プログラム
      マニュアル、論論⽂文、仕様書、実⾏行行ファイル、フレームワー
      技術ブログ          ク
      章             ライブラリ
      節             クラス
      パラグラフ
      ⽂文            メソッド
      単語            演算⼦子、変数、シンボル

                      6
悪い⽂文の種類

⾃自然⾔言語           プログラムの視点では
⻑⾧長い⽂文           ⻑⾧長い関数

代名詞の多⽤用          ⼀一時変数の多⽤用
新単語が直後に利利⽤用されな   変数のスコープが⻑⾧長い
い
専⾨門⽤用語のフォローがない   引数の意味が記述されていな
                 い
助詞の曖昧性           変数名


➠    以下、各悪い⽂文の紹介と解決⽅方法について述べてゆく。
                 7
問題:⽂文の⻑⾧長さに起因する可読性の悪化

⽂文が⻑⾧長くなると. . .
   l  可読性が損なわれる
        l  プログラムにおける⻑⾧長い関数と同じ

   l  意図が理理解できない⽂文になりやすい
   l  検証 (レビュー) に時間がかかる




                   8
問題例例:⻑⾧長い⽂文




   原⽂文:サポートベクタマシンはパーセプトロ
   ンやロジステッィク回帰アルゴリズムのよう
   な、⼆二値分類器であるが、性能はそれらに対
   して⾼高いといわれているだけでなくさらに
   カーネル法を利利⽤用することで⾮非線形の問題に
   対応できるという利利点をもつ。




               9
解決:⽂文を分ける

サポートベクタマシンは⼆二値分類器である。


⼆二値分類器にはパーセプトロンやロジスティク回帰が有名であ
る。


ロジステッィック回帰などの⼆二値分類器にくらべ、サポートベ
クタマシンは⾼高い精度度をほこる。


さらにサポートベクタマシンは、カーネル法を利利⽤用することで
⾮非線形問題を処理理できる。
               10
⻑⾧長⽂文が発⽣生する状況

l    複数のトピックを⼀一つの⽂文で記述する
l    不不要な単語(句句)を追加する




                   11
問題:代名詞の多⽤用による曖昧性

代名詞は⽂文の曖昧性        ⼀一時変数を利利⽤用したプログラム
を⾼高める。            def get_results(value):
  l  ⼀一時変数を多⽤用
                    tmp_var = value * value
      したプログラム       tmp_var = tmp_var – value
      と同じ           return tmp_var




                   12
問題例例:代名詞に起因する曖昧性


原⽂文:決定⽊木やサポートベクタマシンは分類器である。それは
カーネル法を利利⽤用できる利利点がある。


 問題:“それ”とは?
   l  決定⽊木、サポートベクタマシン、分類器?




                 13
解決:代名詞に起因する曖昧性


改善後:決定⽊木やサポートベクタマシンは分類器である。分類
器の中でもサポートベクタマシンはカーネル法を利利⽤用できる利利
点がある。



 解決:“それ”をサポートベクタマシンで置き換える
   l  冗⻑⾧長になっても名詞を利利⽤用した⽅方が良良い(場合が多い)




                   14
新しいトピック(専⾨門⽤用語)が利利⽤用されない

l  ⽂文の中に出て来た新しいトピック(専⾨門⽤用語)が即
    座に利利⽤用されない。
l  プログラム的には変数のスコープが⻑⾧長いという問題




               15
問題例例:新しいトピック(専⾨門⽤用語)が利利⽤用され
ない

原⽂文:サポートベクタマシン(SVM)は⾮非常に⼤大きな計算量量
で知られている。SVMの性能のよさはよく知られている。最
近になって計算量量 O(N) のアルゴリズムも提案された。



 問題点:”計算量量”というトピックが出現したが、直後の
 ⽂文で利利⽤用されない




                16
解決:新しいトピック(新単語)が利利⽤用されない



改善後:サポートベクタマシン(SVM)は⾮非常に⼤大きな計算
量量で知られている。最近になって計算量量 O(N) のアルゴリズム
も提案された。



  解決法:間に⼊入っている⽂文を消す




                17
問題:新トピック(新語)に解説がない

⽂文中で出て来た新語に解説を加えていないため。読者が
置き去りになる。
  l  特に⼝口答発表では致命的な問題




             18
問題例例:初出のトピック(専⾨門⽤用語)に解説がない



原⽂文:  Localtiy Sensitive Hashing は類似するインスタンスの
ペアを抽出します。ではアルゴリズムの内容について解説しま
す。



 問題点:インスタンスという初出の単語に解説がない




                      19
解決:初出のトピック(専⾨門⽤用語)に解説がない



改善:  Localtiy Sensitive Hashing は類似するインスタンスの
ペアを抽出します。ここでインスタンスとは…




 解決:インスタンスの解説を追加




                     20
助詞に起因する曖昧性

l    助詞を連続で利利⽤用すると、接続の優先順位が問題に
      なる。
l    意味が分からない⽂文ができやすい
      l  参考:どう書くかー理理科系のための論論⽂文作法  杉原厚
          吉




                     21
問題:助詞に起因する曖昧性




原⽂文:⼈人⼯工の⾔言語の処理理


 曖昧
   l  ⼈人⼯工の⾔言語 → の →  処理理
   l  ⼈人⼯工  → の  →  ⾔言語の処理理




                      22
解決:助詞に起因する曖昧性




解決後:⼈人⼯工⾔言語の処理理


 l    結合させたい名詞間の助詞を削除する

 l    注:助詞による曖昧性は他にも⾊色々ある。。。




                   23
そのほかの問題

l    形容詞の多⽤用
l    接続詞の多⽤用、誤⽤用
l    ⼝口語
l    語尾
l    ⽤用語の統⼀一
l    ⼤大きな単位の構成⽅方法
       l  パラグラフ、節
       l  ⼝口答発表⽤用スライド




                         24
現実での取り組みとあったらいいな

l    現実
      l  ⽂文書をバージョン管理理システムで管理理
      l  ⽂文インスペクション(Word, ISpell)
      l  規約の作成


l    夢
      l  テスト駆動作⽂文 (Test Driven Writing)?
      l  推敲、校正中に⽂文書を壊さないようにするにはど
          うすれば良良いのか。。。




                        25
まとめ

l    プログラミングの視点から作⽂文する際の問題を列列挙した

l    プログラムを育てるように、⽂文書も育てる




                  26
最後に

プログラマの必読書
  l  理理科系の作⽂文技術




                   27

More Related Content

作文入門