SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Pythonで使って覚えるEvernote API

ノート内容からタグを付与するプログラムを作ってみよう

ノート内容をベースにタグを付与するプログラムを作ってみよう

 ここまでで、Evernote APIの使い方のイメージがつかめてきたと思います。今度は実際にどんなことに利用できるかを試してみます。

 Evernoteを使い込むようになると、ノートの整理がなかなか追い付かなくなってくることが多いと思います(少なくとも筆者のEvernoteはかなり散らかっています……)。Evernoteは検索機能が充実しているため、何とか探し出すことはできますが、やはりタグが付けてあると探したい情報へアクセスしやすいものです。そこで、Evernote APIを使ってノート内容からタグを付与するプログラムを作ってみましょう。ここでは技術用語に限ってタグを付与するプログラムを作ります。

プログラム実行上の注意点

 全体のソースコードはサンプルファイルをご確認ください。本プログラムを実行することでノートへタグが付与されます。元に戻す機能は含まれていないので、実行は自己責任でお願いします。必ずサンドボックス環境で動作を確認してから本番環境で実行するようにしてください。

処理の流れ

  1. ノートブック一覧を取得する
  2. ノートブック内のノート一覧を取得する
    1. ノート内容を取得する
    2. ノート内容から固有名詞を抽出する
    3. 抽出した固有名詞の内、Qiitaのタグに存在するものをタグとして抽出する
    4. 抽出したタグをノートに付与する

技術的なポイントの整理

 まず、形態素解析を使ってノート内容から固有名詞を抽出します。ここでは形態素解析そのものについての詳細は割愛しますが、形態素解析とは文章を意味のある最小単位の文字列に分解することです。ここでは、日本語形態素解析ライブラリJanomeを使用します。Janomeは辞書内包型の形態素解析器なため、インストールすればすぐに利用可能な手軽さが特徴です。内包している辞書はMeCabのシステム辞書mecab-ipadic-2.7.0-20070801です。(情報元:Janome公式ドキュメント

 また、ノート内容は前述の通りENML形式のため、形態素解析前にタグを取り除く必要があります。タグの除去には、XML・HTMLを処理するライブラリであるlxmlを使います。

 固有名詞から技術用語を抽出するには、Qiitaのタグに存在するかどうかで判断します。Qiitaはプログラマのための技術情報共有サービスで、投稿した技術情報にはタグを付けることが可能です。Qiitaのタグを活用して固有名詞から技術用語を抽出します。Qiitaのタグ情報取得にはQiitaの提供するREST APIを使用します。

 生成したタグは実際にノートへ付与する前に内容を確認しておきたいところです。そのため、生成したタグを一度ファイルへ出力することにします。

必要なライブラリのインストール

本プログラムで使用するライブラリのバージョン(※執筆時点の最新バージョン)
ライブラリ バージョン
Evernote SDK 1.25.2
lxml 3.7.3
Janome 0.2.8

XML・HTML処理用ライブラリlxmlのインストール

 Windows環境だとpipはインストールエラーとなるため、easy_installでバイナリパッケージをインストールします。

lxmlのインストール
> easy_install lxml==3.7.3

日本語形態素解析ライブラリJanomeのインストール

Janomeのインストール
> pip install janome==0.2.8

次のページ
ノートコンテンツからタグを生成・付与するプログラムの実装(1)

この記事は参考になりましたか?

特集記事連載記事一覧

もっと読む

この記事の著者

水倉 良明 (サイオステクノロジー株式会社)(ミズクラ ヨシアキ)

分子生物学の世界からIT業界に飛び込み、エンタープライズなシステム開発の面白さに魅了される。アプリケーションエンジニアとして経験を積み、AWS、Azureの登場でいつの間にかインフラ構築、運用にも携わるように。現在はサイオステクノロジー(株)で主にクラウド上でのデータ分析基盤構築や関連ツールの開発に...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10055 2017/05/12 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー