自社運用で成果につなげるSNSコンサル
プロにまるっとお任せするSNS運用代行
成長を加速させるSNS広告運用
成果につながるインフルエンサー活用
トレンドインの実績多数
SNS投稿用のクリエイティブを幅広く制作
Instagram分析ツール
サービス資料
Twitterコンサルティング・広告
Instagramコンサルティング・広告
トレンド発信メディア
イベントやウェビナーに参加して学ぶ
動画やダウンロード資料で学ぶ
記事を読んで学ぶ
メルマガを購読する
採用情報
募集職種
採用ブログ「ホットピ」
会社説明会に応募
カジュアル面談に応募
最終更新日:2023年6月12日
R&D部の榊です。 今回は、R&D部で開発したジオコーディングツール*1についての紹介記事となります。
*1 正確には既存ジオコーディングツールのPythonバインディング
皆様はジオコーディング(Geocoding)という技術をご存じでしょうか? ジオコーディングとは、 各種情報に対して、関連する地理座標(典型的には緯度・経度)を付加すること、およびこれに関する技術やソフトウェア*2 を意味します。 例えば、地図アプリで地名や住所を緯度経度に変換するのは、身近なジオコーディングの事例です。
*2 https://ja.wikipedia.org/wiki/ジオコーディング
ソーシャルメディアの投稿やユーザプロフィールに含まれる住所や地名・店舗名などを緯度経度に変換することができれば、それらの投稿を様々な地理情報サービスを紐付けることが可能となり、応用範囲が広がります。 例えば、店舗名を含むツイートに緯度経度情報を付与して大量に蓄積すれば、「現在地から1km以内にある、Twitter上で注目されている店舗を検索する」ということができるようになります。
このように、ソーシャルメディア解析の応用範囲を拡げる上で、ジオコーディングは重要な技術の一つとなります。 以下では、特に日本語テキスト(地名、住所)に対するジオコーダ(地名・住所→緯度経度変換)について述べます。
日本語テキストに対するジオコーディングのツールとして、代表的なものは下記があげられます。
*3 GeoNLPは、地名情報処理に必要なデータ、ソフトウェア、サービスをオープンに構築するプロジェクト
*4 OpenStreetMapは、道路地図などの地理情報データを誰でも利用できるよう、フリーの地理情報データを作成することを目的としたプロジェクト
Web API形式で提供されているジオコーダは登録をすればすぐに使えるため、ジオコーダを試したり、少量(数百件程度)のデータを処理するには適しています。しかし、大量のデータを処理する場合にはコスト・速度が実用に耐え得るかを考慮する必要があります。
一方、OSS形式で提供されているジオコーダは、自身で環境をセットアップする必要があるので、気軽に試すのは難しい人も多いかと思います。しかし、自身のサーバで動作させることができるため、大量のデータを処理する場合にはコスト・速度の観点を考慮する必要性は低くなります。
ソーシャルメディアデータのように数百万〜数千万の情報を処理する上では、コスト・速度の観点から、OSS形式で提供されているジオコーダを使うことが望ましいです。 そのため、弊社では上述のDAMSを利用しています。
しかし、上記のDAMSはC++実装されているため、スクリプト言語から利用するためには、 各言語向けのバインディングが必要となります。 DAMSのページでは、PHP向けのバインディングは提供されていますが、それ以外のバインディングは提供されていません。
そこで、今回、弊社ではDAMSのPython向けバインディングpydamsを開発しましたので、それを下記の通りgithubで公開します。
pydams
git clone https://github.com/hottolink/pydams.git cd pydams # ビルド,テスト,インストールを実行 make all
geocode()
geocode_simplify()
from pydams import DAMS from pydams.helpers import pretty_print DAMS.init_dams() address = u"千代田区" # geocode() method geocoded = DAMS.geocode(address) pretty_print(geocoded) # geocode_simplify() method geocoded = DAMS.geocode_simplify(address) pretty_print(geocoded)
# geocode() method score: 3 candidates: 1 candidate: 0, address level: 3 address:東京都, lat:35.6894989014, long:139.691635132 address:千代田区, lat:35.6939315796, long:139.753540039 # geocode_simplify() method score: 3 candidates: 1 candidate: 0, address level: 3 address:東京都千代田区, lat:35.6939315796, long:139.753540039
score: ジオコーディングがどの程度成功したかを表すスコア.1~5の値 tail: クエリ文字列を先頭から住所として解析した結果、残った部分文字列 candidates: ジオコーディングにより得られた住所候補.複数の候補が存在する場合は2件以上を返す candidates[i]: 住所要素リスト.都道府県->市区町村->...->街区 の順に格納 candidates[i][j]: 住所要素を表すdictionary name: 住所要素の名称.例:東京都 level: 住所レベル.1~7の値.例:1 x: 経度 y: 緯度 # 住所要素の詳しい説明は,DAMSの公式ドキュメントを参照ください http://newspat.csis.u-tokyo.ac.jp/geocode/modules/dams/index.php?content_id=4
pydams.helpers
当社R&D部では、自社のための研究開発を行うだけではなく、学術イベントのスポンサー・大学との共同研究の遂行・研究成果の対外発表/論文誌への投稿など、学術コミュニティへの貢献を積極的に行っています。
https://www.hottolink.co.jp/company/lab/
ホットリンクでは、SNSコンサルタントやSNSプロモーションプランナーなど、さまざまなポジションで一緒に働くメンバーを募集しています!
Twitter, Instagramマーケティングについてお悩みの方へ