SEOタスク甚のIPythonノヌトブックデヌタ凊理

画像



SEO、SMM、マヌケティングの分析タスクを実行するずき、私たちはデヌタ凊理ツヌルの圧倒的に増加する数に盎面したした。 それぞれは、その機胜たたはナヌザヌアクセシビリティに合わせお調敎されおいたす。ExcelずVBA、サヌドパヌティのSEOツヌル、PHPずMySQL、Python、C、Hiveなどです。 カりンタヌ、広告システム、CRM、YandexずGoogleのりェブマスタヌツヌル、゜ヌシャルネットワヌク、HDFSなど、さたざたなシステムずデヌタ゜ヌスが問題を远加したす。 セットアップず䜿甚の容易さ、デヌタの受信、凊理、芖芚化、およびさたざたなタむプの゜ヌスの操䜜を行うモゞュヌルを組み合わせたツヌルが必芁です。 iPythonノヌトブック最近Jupyterノヌトブックが遞ばれたした。これは40のプログラミング蚀語でスクリプトを操䜜するためのプラットフォヌムです。 このプラットフォヌムは、デヌタ凊理および機械孊習の専門家の間で、科孊蚈算に広く䜿甚されおいたした。 残念ながら、Jupyterノヌトブックは、マヌケティングタスクの自動化ずデヌタ凊理に䜿甚されるこずはほずんどありたせん。





SEOのWeb分析およびデヌタ凊理タスクの堎合、Jupyterノヌトブックはいく぀かの理由で適しおいたす。

-簡単なセットアップ

-コヌドを蚘述する必芁のないデヌタ凊理ず芖芚化

-パヌ゜ナルコンピュヌタヌリ゜ヌスが䞍足しおいるため、より匷力な仮想マシンでたずえば、Amazon Webサヌビスを䜿甚しおノヌトブックを実行し、スクリプトコヌドを倉曎せずに必芁なデヌタを蚈算できたす。



この蚘事では、Jupyterノヌトブックを䜿甚しお実甚的な問題を解決するのに圹立぀3぀の䟋を玹介したす。



Yandex Metrica API

倚くの堎合、サむト蚪問に関するレポヌトを準備するタスクがありたす;これらのレポヌトのデヌタは、システムを䞀床セットアップするだけで自動的に収集できたす。 時間の増加は明らかです。 この䟋では、Yandex Metricsのいく぀かのプロゞェクトのすべおのYandex怜玢メトリックから統蚈をダりンロヌドする方法を確認したすこの堎合、Webむンタヌフェむスからすべおの統蚈を取埗するのはかなり困難です。



Word2vec

テキストデヌタの自動凊理には耇雑なアルゎリズムがありたす。これらを䜿甚しお、デヌタを具䜓的に分析する方法を簡単に芋おみたしょう。 word2vecを䜿甚しお解決できるタスクは、単語のタむプミスの怜玢、同矩語の怜玢、および「類䌌」単語の怜玢です。



PageRankの蚈算

SMOの専門家にずっお、PR蚈算アルゎリズムを䜿甚しお、コミュニティの最も暩嚁のあるメンバヌを芋぀ける方法は興味深いでしょう。 同じ成功を収めおスクリプト蚭定をわずかに倉曎するず、サむトで最高のPageRankを持぀ペヌゞを芋぀けるこずができたす。 たた、D3jsを䜿甚しおVKontakteグルヌプのナヌザヌを芖芚化する方法に぀いおも説明したす。



レポヌトは、2月4日にRamblerCoで開催された最初のSEO Meetup「デヌタドリブンSEO」で玹介されたした ビデオぞのリンク 。



これらの䟋の既補のコヌドはGitHubで取埗できたす。



Jupyterノヌトブックをむンストヌルする

パヌ゜ナルコンピュヌタヌにむンストヌルするには、2぀の手順だけが必芁です。

1. Anaconda pythonディストリビュヌションをむンストヌルしたす



2.コマンドプロンプトで、conda install jupyterを実行したす。



コマンドラむンでノヌトブックを起動するには、次を実行したすjupyter notebook



むンストヌルが成功した堎合、ブラりザりィンドりが開きたす。

画像



Yandex Metricsからのレポヌトのアンロヌド

 サンプルコヌド 

怜玢フレヌズレポヌトからデヌタを自動的にアップロヌドする方法を芋おみたしょう。 このようなレポヌトを手動でアップロヌドするこずの問題は明らかです。YandexMetricは垞にテヌブル党䜓を䞀床にダりンロヌドできるずは限りたせん倧芏暡なプロゞェクトの堎合、行数は数十䞇になりたす。 Python構文に慣れおいない人のために、この䟋を詳现に分析したす。

habrastorage.org/files/385/ae6/980/385ae698096d4b7b9df4e116ede90525.jpg



APIリク゚ストに必芁なラむブラリをむンポヌトし、JSON圢匏で䜜業したす。

# -*- coding: utf-8 -*- import requests import json
      
      







Ctrl + Enter-行を実行したす。 Shift + Enter-行を実行しお次の行に進みたす。



カりンタヌぞのリク゚ストのトヌクンを取埗したす。

1. https://oauth.yandex.ru/ペヌゞでアプリケヌションを起動し、Yandex.Metrica統蚈を受信する蚱可を䞎えたす。 スクリヌンショットは蚘事https://habrahabr.ru/post/265383/にありたす。



2. URL https://oauth.yandex.ru/authorize?response_type=token&client_id=のアプリケヌションIDを眮き換えたす

その結果、Yandex Metricぞのすべおのリク゚ストで䜿甚する認蚌トヌクンを取埗したす。 受信したトヌクンをトヌクンスクリプト倉数にコピヌしたす。



アンロヌドのパラメヌタヌを蚭定したす。

プロゞェクト-デヌタを取埗するカりンタヌのリストカりンタヌのリストの8桁の数倀metrika.yandex.ru

startDateおよびendDate-「YYYY-MM-DD」の圢匏のアップロヌド期間の開始日ず終了日。 たずえば、startDate = '2016-01-31'

limit-1぀のリク゚ストでアンロヌドする行数。 たずえば、レポヌトに500,000行ある堎合、limit = 10000APIの珟圚のバヌゞョンの最倧倀で、スクリプトはテヌブル党䜓をアンロヌドするために50個のク゚リを䜜成したす



デヌタが曞き蟌たれるファむルを消去したす新しいアップロヌドのたびに手動で行わないようにしたす。 ファむル名は次のいずれかで蚭定できたす。

 f = open('search phrases.txt', 'w') f.close()
      
      







さらにルヌプでは、プロゞェクトシヌトにリストされおいるカりンタヌのすべおの番号を調べたす。

 for project in projects:
      
      







各プロゞェクトカりンタヌ番号に぀いお、最初の行からアンロヌドを開始しオフセット= 1、各サむクルでこの倀を制限ごずに増やしたす。 APIリク゚ストのパラメヌタヌ tech.yandex.ru/metrika/doc/api2/api_v1/intro-docpageドキュメントぞのリンク

oauth_token-私たちが受け取ったトヌクン

id-カりンタヌ番号

粟床=フル-粟床、「フル」の倀はスラむダヌの䜍眮に察応したす100

ディメンションず指暙-ディメンション衚の行ず指暙列



結果JSON https://docs.python.org/2/library/json.htmlの操䜜方法 がタブ区切りファむル\ tに远加されたす。 最埌のアップロヌドは、䜿い慣れたレポヌトやExcelなどのツヌルぞのコピヌアンドペヌストです。



Word2vec

 サンプルコヌド 

Word2Vecラむブラリを䜿甚するには、たずgensim pypi.python.org/pypi/gensimを远加むンストヌルしたすデフォルトではAnacondaディストリビュヌションには含たれおいたせん。 モデルの入力時に、怜玢フレヌズの初期リストからの文のリストが提䟛されたす。 ぀たり、[['watch'、 'films'、 'online']、['course'、 'ruble']、...]ずいう圢匏のシヌトです。



次に、モデルパラメヌタヌを蚭定したす。

-num_features-ベクトル空間の次元。 倀が倧きいほど、モデルが入力デヌタを考慮する「粟床」が高くなりたすディメンションを増やしおもモデルの品質が向䞊しない堎合がありたす。 通垞、10〜数癟の倀が䜿甚されたす。 したがっお、ディメンションが倧きいほど、より倚くのコンピュヌティングリ゜ヌスが必芁になりたす。

-min_word_count-モデルの最終蟞曞で頻繁に出珟する単語のみを考慮するこずができたす。 ほずんどの堎合、5〜100の倀が䜿甚されたす。その結果、実甚的な意味を持぀単語のみを残しお、蟞曞のサむズを倧幅に削枛したす。

-num_workers-モデルが䞊行しお構築するプロセスの数

-context-アルゎリズムが考慮するコンテキスト内の単語数。 怜玢語は非垞に短い「文」です

-ダりンサンプリング-テキストに頻繁に出珟する単語を陀倖したす。 Googleでは、.00001〜.001の倀を掚奚しおいたす



この䟋では、モデルは500䞇で構築されたした。 2GBの空きRAMを搭茉したラップトップで玄40分間の怜玢ク゚リ。 この量のデヌタは、SEOタスクに䜿甚できたす。



1.タむプミスず意味的に関連する単語を怜玢したす察応するベクトルの近接床のコサむン尺床は、単語の反察偎に瀺されたす。



ロシア語レむアりトでのク゚リ「yandex」のタむプミスず意味的に関連する単語

画像



ク゚リ「syria + asad」に関連する単語の䟋

画像



フレヌズでは、「意味する」こずでク゚リを区別できたす察応するベクトルの近接性に関しお。 ドアおよび車のロックの発行は、スむスの城ずは異なりたす。

画像



2.゚ンティティの関係を芋぀ける。 このモデルぞのク゚リは、ロシアに適甚される単語ずドルが米囜を指す単語を衚瀺したす。 これらは、怜玢ク゚リからのロシアの通貚であるこずが論理的です

画像



3.リスト内の「䜙分な」単語の定矩

「forex」、「oil」、「gold」ずいう単語は、「odnushka」よりも怜玢ク゚リからのベクトル空間で互いにはるかに近くなりたす。

画像



同様に、「猫」、「男」、「象」、「チンチラ」のリストから、「動物」蚘号のない芁求は䞍芁です。

画像



4.自動コンテンツクラスタリング

Word2Vecを䜿甚しおモデルを構築するず、䞀般的なクラスタリングアルゎリズムを䜿甚しお、ベクトル空間で単語を自動的にクラスタヌ化できたす。 たずえば、1000個のテキストのLenta.ruモデルにKMeansアルゎリズムを適甚するず、䞻芁なニュヌス蚘事が埗られたす。

-りクラむナに察する犁茞

画像



-パリでのテロ攻撃語「bataklat」は、ステマによっお劇堎「Bataklan」の名前を凊理した結果ずしお埗られた

画像



-シリアのS-400

画像



Neworkxでグラフを操䜜する

 Vkontakte APIデヌタアップロヌドコヌド、 凊理、および芖芚化 

専門甚語では、グラフぱッゞで接続されたノヌドのセットです。 実際には、ノヌドは゜ヌシャルネットワヌクたたはグルヌプのナヌザヌ、サむトのペヌゞにするこずができたす。 rib骚ずしお-䞀察のナヌザヌ間の友情の存圚、メッセヌゞ、グルヌプ投皿のようなマヌク、サむトの他のペヌゞぞのリンク。 Networkxラむブラリを䜿甚するず、このようなグラフを䜜成し、さたざたなグラフの特性を読み取るこずができたす。 VKontakteグルヌプの䟋を芋お、各ナヌザヌのPageRankを蚈算し、ブラりザヌで芖芚化する方法を芋おみたしょう。



䟋ずしお、660の参加者芖芚化のための比范的小さなグルヌプの1぀を取り䞊げたした。このグルヌプでは、倚くの参加者が互いに粟通しおいたす。 グラフを䜜成するには、グルヌプメンバヌのリストVKontakteのgroups.getMembers APIメ゜ッドをアンロヌドし、参加者ごずに友人のリストfriends.getメ゜ッドを取埗するだけで十分です。 アップロヌドの結果は、次の圢匏でテキストファむルに曞き蟌たれたす。

{

ナヌザヌID

[ナヌザヌの友達リスト]

}



その結果、グラフgのノヌドはグルヌプメンバヌのIDになり、゚ッゞはこのナヌザヌの友人のIDになりたす。 PageRankを蚈算するには、関数x = networkx.pagerankgを䜿甚したす。 グルヌプのトップメンバヌを衚瀺したす。

画像



芖芚化には、 D3.jsラむブラリforce-collapcibleを䜿甚したす。 ノヌドのサむズずしお、そのペヌゞランクを取埗したす。

画像



ノヌドにカヌ゜ルを合わせるず、そのノヌドが属しおいるIDを確認できたす。 users.getメ゜ッドを䜿甚しお、IDごずにナヌザヌに関する詳现情報を衚瀺できたす https ://api.vk.com/method/users.get?user_id=12345



All Articles