質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1075閲覧

金融商品の説明からの情報抽出

matsutake_mush

総合スコア10

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/29 16:49

非構造化データから情報を抽出したいです。有料・無料を問わずソフトウェアのオススメを教えてください。

具体的には金融商品の条件書から、各種条件を構造化データとしてCSV、JSON等の形式で出力したいです。(条件例は下記) スクラッチから作る時間はないので、おすすめのソフトウェアを教えてください。チューニングは自分でやります。

100%完全に自動化する必要はなく、必ず人間がチェックします。現在目で見てシステムに入力している手間を省きたいという意図です。

【債券の条件書の例】

2021年7月15日 田村証券
この度はお取引ありがとうございます。
債券の条件をお伝えします。

発行体 ドイツ銀行株式会社
発行日 2021年7月25日
満期日 2031年7月25日
利率 2%
利払日 毎年1月25日及び7月25日
早期償還条項 発行体は2026年7月25日以降2031年1月25日までの各利払い日に額面の100%で償還する権利を有します。
発行額 100億円
購入額 10億円

→抽出例

取引日 2021年7月15日
販売会社 田村証券
発行体 ドイツ銀行株式会社
発行日 2021年7月25日
満期日 2031年7月25日
利率 2%
利払日 1月25日、7月25日
早期償還条項開始 2026年7月25日
早期償還条項終了 2031年1月25日
発行額 100億円
購入額 10億円

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/07/30 00:36 編集

書式が定まっていないのなら結局それぞれに合わせた正規表現を作るのが一番早いと思いますが、 > スクラッチから作る時間はないので ということなら、自分で作らず少し予算をとってプロに依頼するのが良いと思います。 質問の書式一つくらいなら、早い人なら数分で作れます。
Zuishin

2021/07/30 02:02

PowerShell で作ってみました。 条件書を data1.txt とすると、次のスクリプトを untitled.ps1 として保存し、untitled.ps1 data1.txt format1 で成形されます。 format1 は条件書の形式を表し、これを増やすことで複数の書式に対応できるはずです。 using namespace System.IO using namespace System.Text.RegularExpressions param( [Parameter( Mandatory = $true, ValueFromPipeline = $true, Position = 0 )] [string]$LiteralPath, [Parameter( Mandatory = $true, ValueFromPipeline = $true, Position = 1 )] [string]$Format ) $formats = @{ format1 = @( "\A(?<tradingDay>\d+年\d+月\d+日)\s*(?<salesCompany>.+)", "^発行体\s+(?<issuer>.+)$", "^発行日\s+(?<issueDate>.+)$", "^満期日\s+(?<maturityDate>.+)$", "^利率\s+(?<interestRate>.+)$", "^利払日\s+(?<interestPaymentDate>.+)$", "^早期償還条項\s+.*?(?<earlyRedemptionClauseStart>\d+年\d+月\d+日).*?(?<earlyRedemptionClauseEnd>\d+年\d+月\d+日)", "^発行額\s+(?<issueAmount>.+)$", "^購入額\s+(?<purchaseAmount>.+)$" ) } function parse { $data = [File]::ReadAllText($LiteralPath) $formats[$Format] | ForEach-Object { [regex]::Match($data, $_, [RegexOptions]::Multiline).Groups } } function format { param ( [Parameter( Mandatory = $true, ValueFromPipeline = $true )] [Group[]]$Groups ) Begin { $result = @{} } Process { $Groups | ForEach-Object { $result[$_.Name] = $_.Value } } End { "取引日 $($result['tradingDay'])" "販売会社 $($result['salesCompany'])" "発行体 $($result['issuer'])" "発行日 $($result['issueDate'])" "満期日 $($result['maturityDate'])" "利率 $($result['interestRate'])" "利払い日 $($result['interestPaymentDate'])" "早期償還条項開始 $($result['earlyRedemptionClauseStart'])" "早期償還条項終了 $($result['earlyRedemptionClauseEnd'])" "発行額 $($result['issueAmount'])" "購入額 $($result['purchaseAmount'])" } } parse | format
guest

回答1

0

ベストアンサー

非構造化データから情報を抽出したいです
ソフトウェアのオススメを教えてください

「スクラッチから作る時間はない」なら、
RPA」ソフトなど、いかがでしょうか?

少し前に流行して、フリーソフトもいろいろありますし。
RPAでなくてもできますが、他の自動化に潰しも利きます。


RPAツールの中でも、個人的には「UiPath」がオススメです。
無償版があって、ネットに情報も多いし、
だいたいの作業をGUIでできるから。

正規表現での抽出やCSV出力があるので、できるでしょう。
ただ、型変換が多少煩雑で、つまづくかもしれませんが、
その時はネットを検索してみてください。


なお、とくにお金が動く金融商品ということなので先に言っておくと、
自然言語処理の確実性は100%ではなく、表記の揺らぎなどで、
見逃しが発生する可能性には、大いに注意が必要です。

たとえば、「利子」で検索すると「利息」が引っかからないとか。
「必ず人間がチェック」するということで、大丈夫だと思いますが一応。

投稿2021/07/29 21:48

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

matsutake_mush

2021/07/29 22:08

ありがとうございます。 ただ、件数が数百件あり、かつ各社各様のフォームで条件書を作成するので、RPAだと難しいかと思ってます。
LLman

2021/07/30 01:13

数百件のデータ量なら大した量ではないですが、もしかして各社フォームも、数百種類あるということですか? フォームが何なのか(書式とかなのか、アプリの入力フォームなのか)にもよりますが、数十種類だとしても、たしかに難しくなるかもしれません。処理があまり複雑なようなら、たんにシステムを発注しても良さそうです。 時間は掛かるがプログラムを書くか、お金は掛かるがシステムを発注するか、少しでも省ける部分があれば、RPA導入で良しとするか、その辺は要件を一番理解している、質問者の方がご選択されればよいでしょう。
matsutake_mush

2021/07/30 02:03

ありがとうございます。 御助言ありがとうございます。顧客情報なので外注するには事前合意などがありハードル高いです。 実は想定しているソフトウェアがあり、それを使って履歴書から構造化データベースを使っている人がいたのでそれを採用したいのですが、ソフトウェア名を忘れてしまったので探しているという状況です。 いずれにしても助けていただきありがとうございます。
LLman

2021/07/30 05:52

>顧客情報なので外注するには事前合意などがありハードル高い 顧客情報ごとDB管理を直接委託するような契約形態なら仰る通りでしょうが、「A証券、B証券」のように匿名化したサンプルデータを送って、完成したソフトだけ買う形にも、一応できるかと思います。 ただその場合も、サンプル作成の手間もありますし、予算や承認などの都合もあるでしょうし、想定しているソフトが見つかれば、もちろんそちらの方が簡単でしょう。 >ソフトウェア名を忘れてしまったので探している 「文書 情報 抽出 サービス」で検索すると、いろいろ引っかかります。 料金などの条件が合うかどうかでしょうが、有名所のサービスもあります。 (忘れてしまったものは、私がテレパシーで分からないので、代わりの例として) https://aws.amazon.com/jp/textract/ Amazon Textract(自動抽出) クラウドなので、やはり個人情報関連で難しいかもしれませんし、 目的を達成できるかも不明ですが、たとえば紙の書類も扱えるとか、 RPAと組み合わせるとか、工夫の余地はあるかも。一応参考までに。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問