Pythonのrequestsモジュールでの文字コード対策
【Webスクレイピング Advent Calendar 2017 4日目の記事です。】
Pythonのrequests
モジュールは、 「Requestsは、人が使いやすいように設計されていて、Pythonで書かれている Apache2 Licensed ベースのHTTPライブラリです。」 と公式サイト1文目に記述されているほど、扱いやすいHTTPライブラリです。
そんなrequests
モジュールですが、日本語HTMLを対象に取得する際に文字化けを起こすことがしばしばあります。
その対策や原因について備忘録としてまとめます。
続きを読むICDAR2017に参加した
最近 会社の技術ブログにうつつを抜かし 、個人ブログに投稿できていなかったので、久しぶりの投稿となります。
(個人ブログ、少しはがんばろう)
会社スポンサーブース対応および聴講を目的に、京都で開催されたICDAR2017に参加しました。
これまで言語処理系の学会にばかり参加しており、画像系は初めてだったためとても新鮮でした。 参加した所感を書き残しておきます。
ICDARとは?
International Conference on Document Analysis and Recognitionの略で、文書の構造解析やOCR関連会議となります。
いくつかセッションをピックアップすると、以下の領域について議論が行われていました。
- 文字列を利用した画像認識
- 文字領域認識
- 文字認識
- 手書き文字
- 印字された文字
- 街中の看板など
特にOCR関係は、アラビア系文字を対象にした研究が多かったです。 アラビア系文字は推定が難しく、文字種も多いため研究対象となっています。
研究対象として、古典文書が一つのジャンルになっているようでした。 文字の欠けや、そもそもの紙の破れ、透けなど、技術的難しさが混在するようです。
全体的には言語処理と同様に、Seq2Seqで解けるタスク設計をしたり、CNNやLSTMを使って分類問題に落とし込んだりする研究が、どっと行われていました。
雰囲気が良かったことが印象に残っている
ICDAR2017に参加して一番に思い浮かぶ感想は、会場の雰囲気が良かったことです。
特に印象に残っているのが、発表者が質問を受け付ける旨を発表ごとに強調していたことです。 これに反応してか、積極的な議論もよく見受けられました。
発表も全体的に、背景と問題意識がわかりやすく述べられており、私としては隣の分野でしたが、わかる部分が多かったです。 ソースコードのGithubでの公開や、学会が主となり作成するデータセットなど分野全体での統一感を感じました。
また、チュートリアル講演のサーベイの充実ぶりにはびっくりしました。 文書解析・文字認識界隈の流れを知ることのできる非常に良い機会となりました。
強烈なチュートリアル
"Word Spotting - From Bag-og-Features to Deep Learning"というチュートリアルでは、単語切り出しにおいてこれまでのFeatureを作って分類するというモデルから、特にCNNをはじめとするディープラーニングに置き換わっているということを丁寧に説明されていました。 それぞれの技術の説明もあり、非常に勉強になるスライドでした。 CNNは特徴抽出のフィルタのようなもので、パラメータ調整はヒューリスティックにも頼らざるを得ないなど、貴重な現場での話が頻出していました。
"GMPRDIA: Graph-based Methods in Pattern Recognition and Document Image Analysis"は、文字認識領域におけるグラフ理論についてのチュートリアルでした。 そもそものグラフ理論から始まり、文字認識での応用例が紹介されていました。
ミスタードーナッツが美味しかった学会
ブースでの英語対応に苦戦しつつ、面白い発表を聴講できたいい学会参加でした。
ちょっとつかれた脳みそに補充するティーブレイクのミスタードーナツは、格別に美味しかったです。
ICDARは隔年開催なので、次回は何か原稿を出して発表したいなと思いました。
Hacker's GATE LT大会に参加した
ウィルゲートさん開催のLT大会に参加しました
株式会社ウィルゲートでご活躍されている先輩に誘われて、5月30日に開催されたLT大会に参加しました。
つい先日にオフィス移転されたようで、本当にきれいなオフィスでした。
本記事は、LT大会の備忘録・感想となります。
発表
お題は『新年度を迎えて』というものでした。
Hacker’s GATEという名が物語るように、エンジニアリングに関する話が主題だと思います。
しかしながら、先輩から何でも良いと言われ、新年度を迎えて一番困っていることをテーマにしました。
それは「通勤」です。
4月より東京に住んでいますが、これまでに電車を利用する生活をしたことがなかったため、満員電車にはびっくり仰天させられています。
「憂鬱な通勤を楽しくする工夫」というタイトルで発表しました。
写真は、アンサイクロペディアからの満員電車の引用を使いながら満員電車について説明しているところです。
ネタを混ぜながら、私が通勤で工夫していること(古めかしい曲を聴いたり、ヨガっぽい呼吸をしたり)をご紹介させていただきました。
1番に発表させていただいたこともあって、楽しんでいただけたかと思います。 (次回以降は、技術ネタにしますしスライドも公開します(_ _ ))
他の人の発表は、
- 仕事と趣味が見事に交差している人の発表
- 日本語が話せない女の子と仲良くなるために翻訳インターフェースを作った人
- たとえ高熱が出てもGithubに草を生やすことを絶やさないスゴイ人
などなど非常に楽しく濃い発表でした。
懇親会
LT大会が白熱しすぎて、懇親会の時間が短縮されてしまいました(笑)
何人かのかたとお話でき、知り合いが増えて良かったです。
また次回のLT大会でお会いするのが楽しみです。
おわりに
先輩に誘っていただき二つ返事で参加しました。最高でした。
LTを始めとして積極的に発表しようと思いますので、いろいろとお誘いください。
最後になりましたが、お誘いいただいた先輩、お話いただいた方々、LT大会を運営された方々、どうもありがとうございました!
人工知能学会全国大会(第31回)に参加した
2017年度 人工知能学会全国大会(第31回)に24・25日に参加した。 企業ブースでの説明と少し聴講を行ったので、備忘録としてまとめておく。
聴講
以下のセッションを聴講した。 言語処理に関連する分野を狙った。
以下、メモと感じたことを1段落ずつ記述。 都合により2件聴講できなかった。
ニューラルネットワークによる顔文字の原形推定
顔文字の原形推定がニューラルネットワークによる手法で、従来法と同程度の性能を達成したというものだった。 文字単位の処理であるため、未知のシンボルに対して、処理可能というのが従来法との違い。
出力に制約を加えると、精度が上がりそうであった。
ユーザの感性を考慮した顔文字推薦システムの実装とコミュニケーション相手の印象の変化の検証
顔文字はコミュニケーションで重要かつ繊細なので、それの利用法を推薦するシステムを実装。
人によって使っている顔文字が、8割がた傾向が異なるというのが面白かった。
画像特徴量を用いた大型アスキーアートの分類手法の提案
アスキーアートを画像と見立てて、元画像との類似度判定などの処理を試みる。
アスキーアートとその元ネタを集める情熱に、みんな驚いていた。
楽曲に特徴的なコメントに基づく作業用BGMからのインデックス作成
作業用BGMの曲間の切れ目や題目をコメントから抽出するタスク。
コメントだけでも割となんとかなっているように見えた。 曲間の切れ目は音声処理で、この手法でタイトルを抽出してもいいのではと思った。 (曲を聴かせると、曲名が分かるツールは何らかの類似度計算をやっているのかな・・)
誤り理由を考慮したニューラル文法誤り訂正
訂正の傾向が誤りによって異なることに着目し、attentionを誤り理由に応じて対応するようなモデルを提案。 半教師有りで学習可能。
誤り理由を隠れた状態として、モデルで推定するのが面白いと感じた。
都道府県議会会議録を対象とした議題・議案表現の自動抽出に向けた検討
議案・議題表現を自動抽出するために、正規表現によるパターンマッチで抽出の検討。
ルールを増やし続けることで、性能が改善されていくのか、頭打ちなのか知りたかった。
係り受け構造と情報利得に着目した複数の小規模コーパスによるWebタウンミーティングにおける投稿の自動分類
Web上でのミーティングを読むためには、投稿を読んだ上で理解する必要があるがそれは大変である。 概要把握の支援として、投稿を6つのラベルに分類する。
例文を見る限り、係り受けよりも、動詞と助動詞に重点を置いた方が良いのではないかと感じた。
議論の背景・過程・結果を関連づける地方政治コーパスの構築の試み
社会言語学や自然言語処理で利用可能な地方政治コーパスを構築する試み。
方言の差が見えているのは非常に面白いと感じた。 また、名寄せが難しいというのは同感だった。
企業展示
学生の頃は企業展示を見る側でしたが、今回は企業展示をした。
弊社の取り組みに関して、説明させていただいた。
他の企業展示を見学させていただき、取り組みや公開されているデータについてお話を伺った。
会場では、昔お世話になった先生や知り合いと話しができて良かった。
その他
AI若手の会 ランチサロン
若手研究者同士が交流する場ということで、AI若手の会が開催した会。
知り合いが増えて良かった。 あとは、論文や技術をどういった視点で捉えるかということも勉強になった。
Chainer x Azureクラウド 深層学習 交流会
Chainerの動向について、面白おかしい話を聞いた。 キレッキレのツッコミが印象に残っている。
ここでも、いろいろな方とお話でき知り合いが増えた。
おわりに
お話させていただいたかたがた、どうもありがとうございました。
企業ブース・聴講・その他交流会で色々と面白い話を聞けて良かったです。
また学会などに参加しようと思うので、その際はよろしくお願いします。
日本語教育学会の特別講演を聴講してきた
大学時代の恩師が講演すると聞いて、5月20日に早稲田大学で開催される日本語教育学会の特別講演に出向いた。
講演のタイトルは「日本語教育の現代的可能性を拓く:人工知能との対話」。
その感想を備忘録として書き留めておく。
なぜ日本語教育と人工知能?
日本語教育は、日本語を母語としない人に日本語を教育することである。
どのような教育が効果的か、どのような誤用が多いかなど多岐にわたって研究されている。
ここで、なぜ人工知能かということだが、近年人工知能が人々の職を奪うのではないかと、騒がれている。
例えば自動翻訳やボット、Webサービスでの言語学習など、多岐にわたって活用されている。
そんな中、人工知能と日本語教育の接点を探り、人工知能の誤解を解き、日本語教育の意義を再確認するための会であった。
ここで言っている人工知能とは?
ずばり、自然言語処理を中心とした分野のことである。
自然言語処理とは、言語を対象に情報処理を行い所望の目的を達成することである。
日本語教育も言語を対象としているため、言語処理と大いに関係があると言える。
特別講演の概要
ことばを操るコンピュータ?
名古屋大学の佐藤先生がご講演された。
人工知能とは何か?ということを以下のように説明されていた。 - 工学的ゴール - どうすれば知能が作れるか? - 科学的ゴール - 知能とは何か?
これらを踏まえた上で、今の人工知能は記号列を統計的に処理し いかにも知的な振る舞いをしているだけということであった。
他には、ショートショートの話や東ロボくんの話も面白かった。
AIは道具であるー日本語教育のための自然言語処理の取り組みー
恩師の長岡技術科学大学の山本先生がご講演された。
人工知能とは、万物を処理するものではなく、一つのことができる道具であると説明されていた。
それを寄せ集めることで、例えば日本語教育にAI技術が役立つといったお話をされていた。
日本語教育向けに研究されている日本語解析システム「雪だるま」の話や、文章内容理解問題自動作成システムなど具体的なシステムや貢献の話であった。
感想
人工知能の説明の仕方が本当に勉強になった。
人工知能とは何か?言語処理とは何か?ということについて説明を求められた際に、このような説明をすると伝わるのかと思った。
佐藤先生の講演で印象に残ったのは、「便利なものを作ると忙しくなる」というものである。
メールが出来て、仕事は増えてしまったというようなものである。
他には、在学中に開発していた雪だるまが紹介され、日本語教育の方々が興味を持っていることを再確認した。
実際に使ってもらえるツールに在学中関われたことは、本当に貴重な経験だったと思う。