XBRLな社長のブログ

2015-06-20

XBRLの説明を更新しました

私が運営しているウェブサイトの XBRLの説明 を書き直しました。XBRLが「言語」だという説明はさすがにちょっとどげんかせんといかんと思っていたからです。

いや、間違ってないんですよ。もちろん。XBRLの L はランゲージですよね。知ってる。

でも説明は正しければいいというもんでもないですよね。例えばですよ。サンゴ(沖縄とかオーストラリアの海にいるアレです)のことをまったく知らない子供がいたとしますよね。その子にサンゴの説明をしなければいけなくなったときに、「サンゴは温かい海にいる動物です。卵を産むんで増えます」と言ったら、誤解されますよね。

ITの世界で「言語」といえば、それはプログラム言語をイメージしますよね。だから、XBRLは言語だ、というとそれは、XBRLは(プログラム)言語だ、と言っているように直感的に思ってしまうわけですよ。で、それは違うぞ、と。XBRLで記述されるものはプログラムじゃなく単なるデータですから。

ということで、書き直した説明では、XBRLはデータフォーマット(のひとつ)だ、としました。これでわかりやすくなって、XBRLに興味を持ってもらえる人が少しでも増えればいいな、と。

P.S. 最近、池上さんの『伝える力』読みました。

伝える力 (PHPビジネス新書)

伝える力 (PHPビジネス新書)

2015-06-12

タクソノミは「データのデータ」です

XBRLを(ほとんど、又は、全く)知らない人に「タクソノミとは何ですか?」と聞かれたときの回答がようやく見つかったので、発表したいと思います。

タクソノミは「データのデータ」です。

インスタンスはデータです。例えば「売上高=100億円」と値(データ)が定義されます。タクソノミには、データのデータ、例えば「売上高」についての情報が定義されています。「英語では net sales という」「損益計算書の先頭に記載される」とかとか。

「データ(インスタンス)」と「データのデータ(タクソノミ)」が合わせて作成・開示される、というはXBRLの最大の特長の一つです。これにより、個別のデータごとに項目を追加したりカスタマイズすること(拡張といいます)が可能になっています。

2015-06-11

役員の男女別人数及び女性比率について

安倍内閣の『日本再興戦略』の「女性の更なる活躍促進」のための施策として、有報の「役員の状況」の冒頭に「役員の男女別人数及び女性比率」を記載することが義務付けられました(平成27年3月31日決算分以降)。昨年より有報は全文XBRL化されていて、「役員の状況」も“テキストの固まり”として取り出すことができますが、「役員の男女別人数及び女性比率」の各数値そのものを直接取り出すことはできません。そこで、市販のXBRLツールやエディタを使って、プログラミングをせずに男女の人数と比率を取り出すことができないかを試行してみたところ、比較的簡単に取り出せることがわかったのでご紹介したいと思います。

使ったツールは、TeCAProとEXCELとEmEditorです。TeCAProは、有報のダウンロードと「役員の状況」のテキスト情報の取出しに使います。EXCELは、TeCAProで取り出したテキスト情報から大まかに「役員の男女別人数及び女性比率」をざっくりと文章で取り出すために使います。EmEditorは、「役員の男女別人数及び女性比率」の文章から、各数値を取り出すために使います。

手順の概要

「役員の男女別人数及び女性比率」の値を取り出す手順は以下の通りです。

  1. 有報をダウンロードする [TeCAPro]
  2. 要素を指定して「役員の状況」を一括で抜き出し、CSVファイルに出力する [TeCAPro]
  3. EXCELのワークシート関数(find, mid, clean)を使って、「役員の男女別人数及び女性比率」の文章を大まかに抜き出す [EXCEL]
  4. エディタを使って、数字等だけを取り出す [EmEditor]

有報をダウンロードする

TeCAProを使って、有報をダウンロードします。

TeCAProを起動すると、最初にダウンロードの対象を聞かれるので、EDINETに6月1日以降に開示された情報を対象として設定します。

f:id:xbrl:20150611163031g:image

対象書類は、「有価証券報告書/訂正有価証券報告書」です。

f:id:xbrl:20150611163030g:image

提出者は、「内国法人・組合」です。

f:id:xbrl:20150611163504g:image

設定が終わると、自動的にダウンロードを開始します。

f:id:xbrl:20150611163642g:image


要素を指定して「役員の状況」を一括で抜き出し、CSVファイルに出力する

対象の有報がダウンロードされたら、TeCAProの“一括項目取得”機能を使って、「役員の状況」を抜き出します。

f:id:xbrl:20150611163906g:image

「役員の状況」は、要素名「InformationAboutOfficersTextBlock」です。画面では、ついでに証券コード「SecurityCodeDEI」も抜き出しています。

f:id:xbrl:20150611164137g:image

抜出結果をCSVファイルに出力します。

f:id:xbrl:20150611164300g:image

EXCELのワークシート関数(find, mid, clean)を使って、「役員の男女別人数及び女性比率」の文章を大まかに抜き出す

CSVファイルをEXCELで開きます。

f:id:xbrl:20150611164536g:image

「役員の男女別人数及び女性比率」は、以下のフォーマットで記載するよう府令で決められています。

男性  名 女性 名 (役員のうち女性の比率  %)

例えば、下のようになります。

f:id:xbrl:20150611164943g:image

そこで、「役員の状況」のテキストの固まりから、EXCELのfind関数を使って『男性』という文字列を探し、そこから40文字分をmid関数で抜き出してみると、「役員の男女別人数及び女性比率」の文章がおおまかに抜き出せます。このとき、改行が含まれていると後々めんどうになるので、clean関数できれいにしておきます。

f:id:xbrl:20150611165539g:image

エディタを使って、数字等だけを取り出す

おおまかに抜き出せた「役員の男女別人数及び女性比率」の文章から、数値を抜き出します。

まず、文章をEXCELからEmEditorにコピーします。

f:id:xbrl:20150611170149g:image

全角の数字と半角の数字が入り混じっているので、半角に統一します。全選択をして「半角に変換」。

f:id:xbrl:20150611170150g:image

全角の数字が半角になっています。

f:id:xbrl:20150611170436g:image

次に、「半角の数字、ピリオド、ハイフン、パーセント記号」以外の文字の連続を、一つのタブに置換します。
以下の緑色の部分をタブに置き換えるわけです。

f:id:xbrl:20150611170810g:image

一見複雑ですが、正規表現を使うことで簡単に置換することができます。

f:id:xbrl:20150611171025g:image

全てを置換すると、以下のようにきれいになります。緑色の部分は、タブになっています。

f:id:xbrl:20150611171218g:image

EmEditorからEXCELにコピペして完了です。緑色の部分が、EmEditorからコピペした値です。テキストはタブで区切られているので、きれいにEXCELにコピペできます。

f:id:xbrl:20150611171219g:image


最後までお読みいただきありがとうございます。

最後まで読んでいただいたお礼に、一つTipsを御紹介したいと思います。

ごく少数ですが、定時株主総会の前に有価証券報告書が提出される場合があります。その場合、「役員の状況」には、有報提出日時点の状況と、株主総会での取締役選任議案が承認された場合の(想定の)状況が記載されます。「役員の男女別人数及び女性比率」もそれぞれ記載されます。そのため、分析したい「役員の男女別人数及び女性比率」はどちらなのか(通常は、株主総会での取締役選任議案が承認された後の値だと思いますが)によって、いずれかを適切に取得する必要がありますので、注意してください。

2015-01-30

同じようなリスクの企業を探す その2

前の記事はこちら

テキストを形態素解析にかけて、単語に分割、名詞だけ取り出す

テキストを単語に分割します。形態素解析エンジンには定番のMecabを使いました。

Mecabを使うと以下のように形態素に分割することができます。

【分割前の文章】

4【事業等のリスク】 有価証券報告書に記載した事業の状況、経理の状況等に関する事項のうち、投資者の判断に重要な影響を及ぼす可能性のある事項には、以下のようなものがあります。なお、文中における将来に関する事項は、有価証券報告書提出日現在において、当社が判断したものであります。

【分割後:1行1形態素として出力される】

4	名詞,数,*,*,*,*,4,ヨン,ヨン
【	記号,括弧開,*,*,*,*,【,【,【
事業	名詞,一般,*,*,*,*,事業,ジギョウ,ジギョー
等	名詞,接尾,一般,*,*,*,等,トウ,トー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
リスク	名詞,一般,*,*,*,*,リスク,リスク,リスク
】	記号,括弧閉,*,*,*,*,】,】,】
 	記号,空白,*,*,*,*, , , 
有価証券報告書	名詞,一般,*,*,*,*,有価証券報告書,ユウカショウケンホウコクショ,ユーカショーケンホーコクショ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
記載	名詞,サ変接続,*,*,*,*,記載,キサイ,キサイ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
事業	名詞,一般,*,*,*,*,事業,ジギョウ,ジギョー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
状況	名詞,一般,*,*,*,*,状況,ジョウキョウ,ジョーキョー
、	記号,読点,*,*,*,*,、,、,、
経理	名詞,サ変接続,*,*,*,*,経理,ケイリ,ケイリ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
状況	名詞,一般,*,*,*,*,状況,ジョウキョウ,ジョーキョー
等	名詞,接尾,一般,*,*,*,等,トウ,トー
に関する	助詞,格助詞,連語,*,*,*,に関する,ニカンスル,ニカンスル
事項	名詞,一般,*,*,*,*,事項,ジコウ,ジコー
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
、	記号,読点,*,*,*,*,、,、,、
投資者	名詞,一般,*,*,*,*,投資者,トウシシャ,トーシシャ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
判断	名詞,サ変接続,*,*,*,*,判断,ハンダン,ハンダン
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
重要	名詞,形容動詞語幹,*,*,*,*,重要,ジュウヨウ,ジューヨー
な	助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
影響	名詞,サ変接続,*,*,*,*,影響,エイキョウ,エイキョー
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
及ぼす	動詞,自立,*,*,五段・サ行,基本形,及ぼす,オヨボス,オヨボス
可能性	名詞,一般,*,*,*,*,可能性,カノウセイ,カノーセー
の	助詞,格助詞,一般,*,*,*,の,ノ,ノ
ある	動詞,自立,*,*,五段・ラ行,基本形,ある,アル,アル
事項	名詞,一般,*,*,*,*,事項,ジコウ,ジコー
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
、	記号,読点,*,*,*,*,、,、,、
以下	名詞,非自立,副詞可能,*,*,*,以下,イカ,イカ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
よう	名詞,非自立,助動詞語幹,*,*,*,よう,ヨウ,ヨー
な	助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
もの	名詞,非自立,一般,*,*,*,もの,モノ,モノ
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
あり	動詞,自立,*,*,五段・ラ行,連用形,ある,アリ,アリ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。	記号,句点,*,*,*,*,。,。,。
なお	接続詞,*,*,*,*,*,なお,ナオ,ナオ
、	記号,読点,*,*,*,*,、,、,、
文中	名詞,一般,*,*,*,*,文中,ブンチュウ,ブンチュー
における	助詞,格助詞,連語,*,*,*,における,ニオケル,ニオケル
将来	名詞,副詞可能,*,*,*,*,将来,ショウライ,ショーライ
に関する	助詞,格助詞,連語,*,*,*,に関する,ニカンスル,ニカンスル
事項	名詞,一般,*,*,*,*,事項,ジコウ,ジコー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
、	記号,読点,*,*,*,*,、,、,、
有価証券報告書	名詞,一般,*,*,*,*,有価証券報告書,ユウカショウケンホウコクショ,ユーカショーケンホーコクショ
提出	名詞,サ変接続,*,*,*,*,提出,テイシュツ,テイシュツ
日	名詞,接尾,一般,*,*,*,日,ビ,ビ
現在	名詞,副詞可能,*,*,*,*,現在,ゲンザイ,ゲンザイ
において	助詞,格助詞,連語,*,*,*,において,ニオイテ,ニオイテ
、	記号,読点,*,*,*,*,、,、,、
当社	名詞,一般,*,*,*,*,当社,トウシャ,トーシャ
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
判断	名詞,サ変接続,*,*,*,*,判断,ハンダン,ハンダン
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
もの	名詞,非自立,一般,*,*,*,もの,モノ,モノ
で	助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
あり	助動詞,*,*,*,五段・ラ行アル,連用形,ある,アリ,アリ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。	記号,句点,*,*,*,*,。,。,。
EOS

名詞だけ取り出します。

4,事業,等,リスク,有価証券報告書,記載,状況,経理,事項,うち,投資者,判断,重要,影響,可能性,以下,よう,もの,文中,将来,提出,日,現在,当社

これを全文章に対して行います。

各テキストの名詞の集合の重なり具合を計算

あとは、全組み合わせで重なり具合を計算して完了です。

ちなみに、冒頭で紹介した、コマツとニチユ三菱の重なり具合はおよそ80%でした。これは、実際に読んでいただくとわかりますが、“丸写し”レベル(なお、念のため補足しますが、丸写しが悪いとは言ってません。有報においては、誤読を防ぐ意味でも定型文は非難されるものではない)です。

2015-01-29 同じようなリスクの企業を探す

同じようなリスクの企業を探す

有価証券報告書に記述されている【事業等のリスク】から、同じようなリスクを抱えている(と発表している)企業を調べてみました。

結論から先に言うと、最もよく似たリスクを抱えているのは、コマツ(6301)ニチユ三菱(7105) です。

続いて、

  • 日本興業[5279]と積水樹脂[4212]
  • クックパッド[2193]とアライドアーキテクツ[6081]
  • IHI[7013]と明星電気[6703]
  • 物語コーポ[3097]と鳥貴族[3193]

なども、それぞれがリスクについて同じような言及をしていることがわかりました。

今回、基礎的なテキストマイニングの手法を用いて調査しましたが、有価証券報告書の全文XBRLを活用することで簡単に短期間で調査することができましたので、ご紹介したいと思います。

作戦と手順

有価証券報告書の【事業等のリスク】から名詞だけを抜き出して、その重なり具合を調べることにしました。

有価証券報告書は、言い回しがストレートで言葉も画一的なので(≒文学的でないので)、名詞を取り出して重なり具合を測るだけで、“似たような”文章を探すことができるはずです。

この作戦のもと、以下の手順で行いました。

  1. EDINETから有価証券報告書の全文XBRLを収集
  2. XBRLインスタンスから、【事業等のリスク】テキストブロック(BusinessRisksTextBlock)の値を取得(この値は、HTMLタグ付きのテキスト)
  3. HTMLタグを除去して、プレーンテキストだけ取り出す
  4. テキストを形態素解析にかけて、単語に分割、名詞だけ取り出す
  5. 各テキストの名詞の集合の重なり具合を計算

以下、手順を一つ一つ説明していきます。

EDINETから有価証券報告書の全文XBRLを収集

EDINETから有価証券報告書のXBRLをダウンロードします。

全文XBRLとなったのが2013年12月31日決算の有報からなので、それ以降の有価証券報告書のXBRLをダウンロードする必要がありますが、現時点でおよそ4000社分あります。1データ30秒で集められるとして、2000分≒33時間≒4日(1日8時間作業で換算)でダウンロードすることができます。簡単ですね(にっこり)

ちょっと面倒だわーと思う方は、クローラを作るか、そうでなければTeCAProをどうぞ。TeCAProを使うとEDINETのXBRLを自動で収集することができます。条件を指定して放っておくだけで数時間程度(ネットワークの状況による)でデータが収集できます。

XBRLインスタンスから、【事業等のリスク】テキストブロックの値を取得

ダウンロードしたファイル(zipファイル)の中に、インスタンスと呼ばれるファイルがあり、そこからBusinessRisksTextBlockの値を取り出します。

この作業は、テキストエディタ(秀丸など)でインスタンス(拡張子がxbrlのファイル)を開いて、BusinessRisksTextBlock要素の値を取り出すこともできますが、現実的にはツールを使うか作るかしないと不可能です。

EDINET純正の「XBRLからCSVへの変換ツール」などがあります。

(続きます)