ドメイン移転した時のウェブマスターツールの設定変更の方法

ドメイン移転をした時に忘れがちなウェブマスターツールの設定方法を紹介します。

1. 新しいドメインのプロパティを追加

まずは、既に追加してある旧ドメインのプロパティとは別に、新しいドメインのプロパティを追加します。

ウェブマスターツールから「プロパティを追加」をクリック。

2. 設定の「アドレス変更」を選択

サイトのダッシュボードの右上にある設定(歯車マーク)をクリックすると、「アドレス変更」があるのでこれを選びます。

webmastertool-domain1

もし「アドレス変更」が出ない場合は、サイトの「所有者」となっていない可能性があります。「管理者」と「所有者」は異なるので、注意が必要です。

3. アドレス変更リクエストを送信

・リストから新しいサイトを選択する ・301リダイレクトが正常に動作していることを確認する ・確認方法がまだ残っていることを確認する

の順にリダイレクトなどの各種確認をしていきます。

まず、リストから先ほど追加した新しいアドレスのプロパティを選択します。その後は、リダイレクトが適切に行われていれば「確認」ボタンを押すことで、緑のチェックマークが付きます。

そして、最後に「アドレス変更のリクエスト」を送信します。

webmastertool-domain2

4. Google Analyticsと連携している場合

忘れがちですが、Google Analyticsと連携している場合は、その再設定もする必要があります。

アナリティクス設定> プロパティ設定の一番下あたりにある「Search Consoleを調整」をクリック。

webmastertool-domain3

「Search Console のサイト」のURLの横にある編集ボタンをクリック。あとは新しいドメインのウェブマスターツールのプロパティを選択すれば完了です。

vimで日本語が文字化けした時に確認すべきこと&対処法

よくあるVimでの「文字化け」。

日本語がマルチバイトである以上、切っても切れない「文字化け」の対処法を紹介します。

文字化けファイルを開いて文字コードを確認

ここで確認する文字コードは、Vim本体の文字コードとファイルの文字コードです。

それぞれ、ファイルを開いて以下のコマンドで確認ができます。

コマンド 結果例
vim文字コード確認 :set enc? encoding=utf-8
ファイルの文字コード確認 :set fenc? encoding=sjis

vimrcに設定を追加

Vim本体の文字コードとファイルの文字コードが異なっている場合は、文字コードを修正する必要があります。

「:set fenc=文字コード」でインスタントに変更することもできますが、設定ファイルvimrcを修正したほうが良いでしょう。

追記または修正するのは以下です。

set encoding=utf-8
set fileencodings=utf-8
set fileformats=unix,dos,mac

vim文字コードの自動判定をするようなのですが、そこで誤判定をすることもけっこうあるようです。

なので、今回は使う文字コードvimとファイルともにUTF-8に固定しています。

これで文字コードが原因の文字化けは対処できると思います。

Laravel4をCentOS6+nginx+PHP5.4でインストールする

最近人気があるLaravelを使うためのメモです。

【環境】
CentOS release 6.7 (Final)
PHP 5.4.44

composerからLaravelをインストー

composerを入れてない場合は以下のコマンドでインストール。

$curl -sS https://getcomposer.org/installer | php
$mv composer.phar /usr/local/bin/composer

その後、以下のコマンドでLaravelを入れます。PHPのバージョンが5.4だったので、最新のLaravel5ではなくLaravel4(日本語注釈付き)にします。

$composer create-project "laravel-ja/laravel=~4.2" your_app --prefer-dist

Mcrypt PHP extension required.が発生した場合

composerでLaravelを入れる時に以下のようなエラーが出ることがあります。これはPHP拡張機能である暗号化モジュールmcryptPHPに入っていないために発生するようです。

  Mcrypt PHP extension required.
  Script php artisan clear-compiled handling the post-install-cmd event returned with an error

  [RuntimeException]
  Error Output:

yumでlibmcryptとphp-mcryptを入れます。

$yum --enablerepo=epel install libmcrypt
$yum --enablerepo=remi update
$yum install --enablerepo=remi php-mcrypt

PHPのバージョンや環境によっては上手くいかないこともあります。

どうしてもエラーが解決できない場合は、PHPをソースからビルドする時に「$./configure –with-mcrypt」のように–with-mcryptパラメータをつけることで拡張機能を入れることもできるようです。

mcrypyを入れたら以下のコマンドで「mcrypt support => enabled」となればOKです。

$php -i | grep -i mcrypt

nginxを使っているので、php-fpmをリスタートをしてmcryptを有効化させます。

$service php-fpm restart

nginxでLaravelを動かす

まず、app/storageのパーミッションを変更しておきます。

$chmod -R 777 app/storage

すでにnginxを利用している場合は、rootをLaravelのpublicディレクトリに向けるだけでOKです。

$vi /etc/nginx/conf.d/your_app.conf
  root /var/www/html/your_app/public;
$service nginx restart

URLにアクセスし「You have arrived.」と表示されていれば完了です。

あとはapp/config内のapp.phpやらdatabase.phpを設定すれば開発に取り掛かれそうです。

PHPで文字化けせずにCSVファイルを読み込む方法

CSVを読み込むと「文字化けしている…」ってことがよくありますよね。そんな時の対処法です。

文字化けせずにCSVファイルを読み込む

まず、SplFileObjectでCSVファイルを読み込みます。

fgetcsv()でもいいのですが、参考にさせて頂いた「【PHP】その CSV 変換、本当に「fgetcsv」でいいの?」によると、一番速くメモリの使用量も少ないのはSplFileObjectだそうなのでコレを使います。

また、エンコーディングは文字列ではないのでmb_convert_encoding()ではなく、mb_convert_variables()を使ってUTF8にエンコードします。

/**
* CSVから配列を作成する関数
*
* @param $csv string CSVファイルのパス
* @return $array array UTF8エンコード済の配列
*/
function csv_to_array($csv) {
  $file = new SplFileObject($csv);
  $file->setFlags(SplFileObject::READ_CSV);
  $array = array();
  foreach ($file as $line) {
    //空行はスキップ
    if (empty($line)) continue;
    $array[] = $line;
  }
  mb_convert_variables("UTF-8", array("ASCII","JIS","UTF-8","EUC-JP","SJIS"), $array);
  return $array;
}

こんな感じで読み込めます。

$data = csv_to_array("ファイル名.csv");

PHPでスクレイピング&本文抽出をする方法・ライブラリ

引用する記事のタイトル&本文の抜粋を取得したい!

ということで、PHPスクレイピング&本文抽出する方法を調べてみました。

[amazonjs asin=“4839956472” locale=“JP” title=“実践 Webスクレイピング&クローリング-オープンデータ時代の収集・整形テクニック”]

本文抽出に使用するライブラリ

いろいろと選択肢はあったのですが、今回はfivefilters.orgPHP Readabilityを使ってみることにしました。

BitBucketのPHP Readabilityのレポジトリのものより、同じfivefilters.orgのFull-Text RSSレポジトリに使われているPHP Readabilityのほうが新しいっぽいのでこっちを使います。

ちなみにFull-Text RSS最新版のダウンロードは有償ですが、古いバージョンは無料で利用できます。また、APIの提供などもされているようなので気になる人は公式サイトをチェックしてみてください。

git cloneして、libraries / readability を好きなディレクトリに移動します。

$ git clone https://bitbucket.org/fivefilters/full-text-rss.git

PHP Readabilityの使い方

PHP Readabilityの使い方は簡単で、Readability.phpをrequireしてnew Readability($html, $url)とするだけです。


require_once '/PathToLibrary/readability/Readability.php';

//取得する記事URLを指定
$url = 'http://web-tsukuru.com/270';

//URLからHTMLを取得してUTF8にエンコーディング
$html = file_get_contents($url);
$html = mb_convert_encoding($html, "UTF-8", "ASCII,JIS,UTF-8,EUC-JP,SJIS" );

//tidy_parse_stringが使用可能であれば、
//tidy::cleanRepairでHTMLの誤りなどを修正
if (function_exists('tidy_parse_string')) {
  $tidy = tidy_parse_string($html, array(), 'UTF8');
  $tidy->cleanRepair();
  $html = $tidy->value;
}

//Readabilityを初期化
$readability = new Readability($html, $url);
$result = $readability->init();

if ( empty($result) ) return false;

//タイトルを取得
$title =  $readability->getTitle()->textContent;

//記事本文を取得
$content = $readability->getContent()->innerHTML;

//再度、tidy_parse_stringを使用
if (function_exists('tidy_parse_string')) {
  $tidy = tidy_parse_string($content, array('indent'=>true, 'show-body-only' => true), 'UTF8');
  $tidy->cleanRepair();
  $content = $tidy->value;
}

タイトルの取得は、

$title =  $readability->getTitle()->textContent;

記事本文の取得は、

$content = $readability->getContent()->innerHTML;

のようにできます。

記事本文はHTMLをそのまま取得しているので、strip_tags()などでHTMLを除去すると良さそうです。

そのほかのPHPで本文抽出する方法

有名なReadabilityは本文抽出に使えるAPIを非商用で提供しているみたいです。APIだと提供終了する可能性があるので、ちょっと微妙ですが軽く使ってみるには良さそうですね。

Readability Developer APIs

そのほか、今回は使ってないですが以下のようなライブラリがあるみたいです。 https://github.com/scotteh/php-goose https://github.com/essence/essence

また、Quoraに投げられた「HTMLから本文抽出する一番の方法は?」という質問も参考になります。

Quora | What’s the best method to extract article text from HTML documents?

PHP以外だとJavaのboilerpipeあたりが有名みたいです。

Mecabにユーザー辞書を導入する(はてな、Wikipedia、ニコニコ大百科など)

MecabはてなキーワードWikipediaニコニコ大百科などを元にしたユーザー辞書を追加します。公式マニュアルはこちら

ユーザー辞書を追加する流れは、

1.元データを取得してCSVファイルに変換 2.CSVファイルを辞書ファイルにコンパイル 3.Mecabの設定ファイルに追加

となります。

[amazonjs asin=“489476654X” locale=“JP” title=“Rで学ぶ日本語テキストマイニング”]

1.元データを取得してCSVを作成

今回は、例としてはてなキーワードを追加します。

まずは元データを取得します。

$ wget http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv

次に「mecabにはてなキーワードのタイトルリストを追加する」を参考に以下のPHPスクリプトを実行してMecabのユーザー辞書用CSVファイルを作成します。

 $v) {
        if (preg_match("/[\",\n]/", $v)) {
            $data[$k] = '"' . str_replace('"', '""', $v) . '"';
        }
    }
    $line = implode(',', $data);
    return $line;
}

//インポート元CSVとエクスポート先CSVを引数に指定
make_csv("keywordlist_furigana.csv","hatena.csv");

なおニコニコ大百科Wikipediaについては、以下のサイトの通りすれば追加できると思います。

ニコニコ大百科データからMeCab辞書を生成する mecabにwikipediaのタイトルリストを追加する

2.CSVからユーザー辞書を作成

下記のコマンドを実行して、csvファイルからユーザー辞書ファイル(.dic)にコンパイルします。

$ /usr/local/libexec/mecab/mecab-dict-index -d/usr/local/lib/mecab/dic/ipadic -u 辞書名.dic -f utf-8 -t utf-8 インポート元.csv

以下のコマンドで辞書を指定してmecabが使えれば問題なくコンパイルできています。

$ mecab -u 辞書名.dic

3.辞書をユーザー辞書として登録

任意のディレクトリに作成した辞書名.dicを移動します。今回は/usr/local/lib/mecab/dicにuserを作成して移動します。

$ mkdir /usr/local/lib/mecab/dic/user
$ mv 辞書名.dic /usr/local/lib/mecab/dic/user/辞書名.dic

/usr/local/lib/mecab/dic/ipadic/dicrc もしくは /usr/local/etc/mecabrc に以下を追加します。

userdic = /usr/local/lib/mecab/dic/user/辞書名.dic

これで完了です!

Mecabなど形態素解析で使うIPA品詞体系(品詞ID|pos-id)

Mecab茶筅など形態素解析で使う辞書のIPA品詞体系をまとめてみました。

Mecabでは::getPosId()で品詞IDを取得できます。

[amazonjs asin=“4873114705” locale=“JP” title=“入門 自然言語処理”]

IPA品詞体系

品詞ID 分類 説明
0 その他,間投 「あ」「ア」のみ 「そんなぁ」
1 フィラー 「えーと」「なんか」など
2 感動詞 「うむ」「お疲れさま」「トホホ」
3 記号,アルファベット 「A-z」
4 記号,一般 「?」「!」「¥」
5 記号,括弧開 「(」「【」など
6 記号,括弧閉 「 )」「】」など
7 記号,句点 「。」「.」のみ
8 記号,空白 「 」のみ
9 記号,読点 「、」「,」のみ
10 形容詞,自立 「美しい」「楽しい」
11 形容詞,接尾 「ったらしい」「っぽい」
12 形容詞,非自立 「づらい」「がたい」「よい」 「見づらい」
13 助詞,格助詞,一般 「の」「から」「を」
14 助詞,格助詞,引用 「と」のみ
15 助詞,格助詞,連語 「について」「とかいう」
16 助詞,係助詞 「は」「こそ」「も」「や」
17 助詞,終助詞 「かしら」「ぞ」「っけ」「わい」
18 助詞,接続助詞 「て」「つつ」「および」「ので」
19 助詞,特殊 「かな」「けむ」「にゃ」
20 助詞,副詞化 「と」「に」のみ
21 助詞,副助詞 「くらい」「なんか」「ばっかり」
22 助詞,副助詞/並立助詞/終助詞 「か」のみ
23 助詞,並立助詞 「とか」「だの」「やら」
24 助詞,連体化 「の」のみ
25 助動詞 「ます」「らしい」「です」
26 接続詞 「だから」「しかし」
27 接頭詞,形容詞接続 「お」「まっ」 「お高い」「まっ赤」
28 接頭詞,数接続 「計」「毎分」 数値に接続するもの
29 接頭詞,動詞接続 「ぶっ」「引き」 動詞に接続するもの。「ぶったたく」
30 接頭詞,名詞接続 「最」「総」 名詞に接続するもの。「最高値」
31 動詞,自立 「投げる」
32 動詞,接尾 「しまう」「ちゃう」「願う」 「行ってしまう」
33 動詞,非自立 「しまう」「ちゃう」「願う」 「行ってしまう」「やっちゃったね」「ご遠慮願う」
34 副詞,一般 「あいかわらず」「多分」 必ず後ろで切れるもの,連体修飾が不可能なもの
35 副詞,助詞類接続 「こんなに」「そんなに」 「する」「だ」などが後続可能な副詞.
36 名詞,サ変接続 「インプット」「悪化」 後ろに「する」「できる」などがつくもの
37 名詞,ナイ形容詞語幹 「申し訳」「仕方」 助動詞「ない」の直前に現れる名詞
38 名詞,一般 「テーブル」 通名詞。
39 名詞,引用文字列 「いわく」のみ
40 名詞,形容動詞語幹 「健康」「安易」「駄目」 形容動詞語幹で「な」の前に現れるもの
41 名詞,固有名詞,一般 一般的な固有名詞
42 名詞,固有名詞,人名,一般 一般的な人名。
43 名詞,固有名詞,人名,姓 一般的な日本人の性。
44 名詞,固有名詞,人名,名 一般的な日本人の名。
45 名詞,固有名詞,組織 「株式会社◯◯」 組織を表す。
46 名詞,固有名詞,地域,一般 「東京」 国以外の地名。
47 名詞,固有名詞,地域,国 「日本」 国名。
48 名詞,数 「0」「一」 数字及び「何(回)」など。
49 名詞,接続詞的 「◯対◯」「◯兼◯」 単語と単語を接続するもの。
50 名詞,接尾,サ変接続 「(可視)化」 後ろに「する」がつく接尾語。
51 名詞,接尾,一般 「感」「観」「性」 複合名詞をつくるもの。
52 名詞,接尾,形容動詞語幹 「的」「げ」「がち」
53 名詞,接尾,助数詞 「個」「つ」「本」「冊」
参考:
ipadic version 2.7.0 ユーザーズマニュアル (*PDF)
形態素解析ツールの品詞体系