前回の記事では平均評価による推薦の問題点とその解決策について紹介しました。推薦の際に確信度が考慮されない問題点を信頼区間で、評価数が0の場合にスコアが不定になる問題点をスムージングによって解決する方法について紹介しました。 hironsan.hatenabl…
一般に固有表現認識では、学習済みモデルの性能を評価するためにf1が使用されます。その際、評価はトークンごとではなくエンティティごとに行われるのが特徴となっています。 f1スコアを評価する関数は、多くの機械学習フレームワークに実装されています。し…
Djangoには、組み込みのユーザ認証の仕組みがありますが、GitHubやTwitter、Facebookなどのサービスを介したソーシャル認証はサポートされていません。しかし、幸いなことに、サードパーティー製のパッケージを使って簡単に実装することができます。 本記事…
Djangoでアプリケーションを作っているとアクセス制御をしたくなることがあります。たとえば、会員サイトではプレミアムユーザと一般ユーザによってアクセスできる情報に差を付けたいことがあるでしょう。こういった機能は、少し規模の大きなサイトではよく…
前回の記事では人気度と新規性、またそれらをハイブリッドした手法による推薦の方法について紹介しました。そこでは、人気度と新規性に基づく手法の問題点とその解決方法について説明しました。 hironsan.hatenablog.com 今回は、平均評価に基づく推薦の問題…
レコメンデーションといえば、現在最も多く使われている技術の一つと言えるでしょう。その応用は数多く存在し、身近なところで言えば、Amazonによる関連商品の推薦やNetflixによる映画の推薦などに使われており、私たちの意思決定を支援しています。 一口に…
Sentiment Analysisと言えば自然言語処理ではよく知られたタスクで、典型的にはテキストをポジティブ/ネガティブの2クラスに分類するものだ。 その使い道としては、Twitter等のSNSから自社製品についての投稿を収集して評価や緊急度によって分類し、問題に対…
あけましておめでとうございます。 今日までお正月休みで明日から会社に復帰します。三週間ほど家にこもってゲームばかりしていて頭もだいぶボケてきているので、出社前のリハビリがてら2018年のふりかえりをしたいと思います。まずは2018年に何をしていたか…
第3回目の今回は節ベースのOpenIE手法を紹介する予定でしたが、予定を変更してOpenIEの未解決問題について紹介することにします。 2018年に発表された論文「A Survey on Open Information Extraction」では、OpenIEには以下の未解決問題があると主張していま…
前回の記事「テキストの構造化を支える技術 -概要編-」では、OpenIEの記念碑的なシステムであるTextRunnerを紹介しました。第2回目である今回は、シンプルながら強力なReVerbと呼ばれるシステムを紹介します。 記事の構成としては、最初にTextRunnerの課題に…
最近、情報抽出、特にOpen Information Extraction(OpenIE)という分野について勉強しています。せっかく勉強しているので、学んだ内容について何回かに分けて紹介していこうと思います。第一回目の今回は、OpenIEという分野の概要について紹介し、OpenIEの…
最近の自然言語処理では言語モデルを使って転移学習をしたり、性能向上に役立てたりするようになってきました。言語モデルの1つであるELMoでは、言語モデルから得られる分散表現を他のタスクの入力に使うことで、質問応答や固有表現認識、評価分析といった…
評価分析は自然言語処理の基礎技術でありながら実世界に広く応用されている技術です。たとえば、顧客の声を拾うために商品レビューを評価分析して肯定的なのか否定的なのか判断するのに使われています。また、情報抽出の技術と組み合わせて、文書のどの部分…
最近の言語処理では言語モデルを使って転移学習をしたり、性能向上に役立てたりするようになってきました。言語モデルの1つであるELMoでは、言語モデルから得られる分散表現を他のタスクの入力に使うことで、質問応答や固有表現認識、評価分析といった様々…
固有表現認識器にanaGo、フロントエンドにVue.js、バックエンドにFlaskを使ってリアルタイムに固有表現認識をしてみた。 anaGo Demo github.com
SpatialDropoutは、画像認識の分野でTompsonらによって提案されたドロップアウト方法です。通常のドロップアウトが各要素を独立して落とすのに対して、SpatialDropoutはある領域全体をまるごと落とします。それにより、画像認識の分野で性能向上が報告されて…
今日はマニアックな話。 Kerasを使っている人なら、to_categorical関数を使ったことがある人は多いのではないかと思う。to_cateogorical関数をいつ使うかというと、正解クラスをone-hotエンコーディングして出力に与えたいときに使うことが多い。Keras 2.2.0…
本日はACL 2017のベストペーパーの1つである以下の論文で用いられている文書表現の方法を紹介します。 A Local Detection Approach for Named Entity Recognition and Mention Detection この論文は、固有表現認識をFeedForward Neural Networkを使って文書…
固有表現認識は自然言語処理の基礎技術であり、様々なタスクの要素技術として使われます。たとえば、情報抽出や対話システム、質問応答といった応用システムの中で固有表現認識は使われることがあります。また、関係認識やEntity Linkingといった基礎技術で…
本記事ではTwitter Search APIを使ってTweetを取得し、結果をBigQueryに格納する方法について紹介します。データ分析のフローである「取得」「保存」「分析」「可視化」のうち、「取得」と「保存」までを行うことになります。
最近の自然言語処理では、文字レベルの言語処理が行われることがあります。 これら文字レベルの言語処理は、ユーザ生成コンテンツに有効であると言われています。 その理由として、ユーザ生成コンテンツのような崩れたテキストでは、形態素解析の性能が大幅…
最近の自然言語処理では、単語の分散表現は当たり前のように使われています。 単語分散表現では、各単語が高次元ベクトル空間に配置され、加減乗除等の演算を行えるようになります。 これらのベクトルは、意味の近い単語に対しては同じようなベクトルになる…
自然言語処理をする際、同義語を考慮したい時があります。 たとえば情報検索を例に挙げると、「car」と検索したときその同義語である「automobile」も検索にかかってくれると嬉しい場合があります。 同義語を獲得する方法は色々考えられますが、本記事では、…
自然言語処理をする際、データソースとして Wikipedia を使用することがあります。 Wikipedia を使う際、ページによっては内容が薄いので、ページを選択することがあります。 そのための方法として、Wikipedia 内のページランクを計算して、重要ページを抽出…
単語の分散表現を学習させる際、Wikipedia ほどのサイズが必要ないときに使われるコーパスとして text8 があります。 text8 は、Wikipedia に対してクリーニング等の処理をした後、100MB分切り出して作成されています。 text8 は前処理済みで簡単に使えるの…
自然言語処理では、ナレッジベース(knowledge base)を使う場合があります。 その際、手軽に使えるナレッジベースとして DBpedia があります。 DBpedia は Web 上でクエリ(SPARQL)を実行できるのですが、利便性を考えるとプログラムからクエリを実行した…
2017/06/21にリリースされた gensim 2.2.0 から Keras との統合機能が導入されました。 具体的には、Word2vec の Keras 用ラッパが導入されました。 これにより、gensim で分散表現を学習した後に、その重みを初期値として設定した Keras の Embedding層を取…
自然言語処理で RNN を使っていると、RNN の内部状態を取得したくなることがあります。 TensorFlow では tf.nn.dynamic_rnn 等の関数を使うと、出力と状態を返してくれます。 しかし、Keras でのやり方については意外と日本語の情報がありませんでした。 本…
Kerasで書かれたコードを読んでいるとふと気がつくことがある。 それは、Conv1D と Convolution1D、MaxPool1D と MaxPooling1D という同じような名前のクラスが出てくるのだ。 一体これらの違いは何なのだろうか?
はじめに 自然言語処理で文書分類は最も基本的なタスクの一つです。 文書分類は、SNSに対する評判分析、ニュースのジャンル分類、メールのスパムフィルタや文書の著者推定といった問題の解決に使われています。 このように基本的なタスクである文書分類は広…