Ahogrammer

Deep Dive Into NLP, ML and Cloud

Pythonで単語分散表現のクラスタリング

最近の自然言語処理では、単語の分散表現は当たり前のように使われています。 単語分散表現では、各単語が高次元ベクトル空間に配置され、加減乗除等の演算を行えるようになります。 これらのベクトルは、意味の近い単語に対しては同じようなベクトルになることがわかっています。

本記事では、単語分散表現のベクトルをクラスタリングし、意味が近い単語のクラスタを作ってみたいと思います。 これらのクラスタは、眺めて楽しむだけでなく、機械学習の素性として使うこともできます。

イメージ的には、以下のような感じで単語をクラスタにまとめます。 f:id:Hironsan:20171101055538g:plain

では、単語分散表現をクラスタリングして、単語のクラスタを作ってみましょう。

続きを読む

Wikipediaのリンクを解析して同義語を抽出する

自然言語処理をする際、同義語を考慮したい時があります。 たとえば情報検索を例に挙げると、「car」と検索したときその同義語である「automobile」も検索にかかってくれると嬉しい場合があります。

同義語を獲得する方法は色々考えられますが、本記事では、Wikipedia のリンクを解析して、同義語を抽出します。 手法としてはかなり単純です。一言で言うと「リンク先が同じなら、それらのアンカーテキストは同義語である可能性が高い」という仮定に基づいて同義語を抽出します。

図にすると以下のようなイメージです。 f:id:Hironsan:20171031105429p:plain

では、日本語版 Wikipedia を用いて、同義語を抽出してみます。

続きを読む

Wikipedia内ページランクを計算して、重要なページを抽出する

自然言語処理をする際、データソースとして Wikipedia を使用することがあります。 Wikipedia を使う際、ページによっては内容が薄いので、ページを選択することがあります。 そのための方法として、Wikipedia 内のページランクを計算して、重要ページを抽出する方法が提案されています。

本記事では、Wikipedia 内のページランクを計算して、重要なページを抽出する方法を紹介します。 ツールとしては Project Nayuki で公開されているツールを使います。 このツールは StanfordSQuAD のデータセットを作成する際にも使われています。

では、日本語版 Wikipedia を用いて、ページランクを計算してみます。

続きを読む