質問
Text Summarization API | PRODUCT | A3RT
A3RT(ココしか知らない)の文章要約APIを利用して、文章数12を文章数3にしています。
APIの制限事項は、「要約できる1文の最大文字数は200文字、且つ最大文章数は10」です。
制限を超えるので、文章を3分割して文章要約APIを3回利用し連結しています。
より良い方法があれば教えてください。
目的
https://www.dmm.co.jp/digital/videoa/-/detail/=/cid=118abp00940/
目的は、FANZA動画の作品を友人に定期紹介するにあたり、description(説明)が長ったらしいので要約したいためです。
現在のスクリプトですと、以下の結果になります。
これを掲載した前回の質問は削除されました。
[20-01-25 08:54:02:807 JST] a: 4 / b: 4 / c: 4
[20-01-25 08:54:02:808 JST] sentences[0]: プレステージ専属女優『野々浦 暖』が独特な校則のある学園に転校?。転校初日に驚きの校則を知らされる。校則 1女子生徒は透け透けの制服を着用せねばならない。校則 2女子生徒は学園内すべての男性の要求をカラダで応えなければならない。
[20-01-25 08:54:03:371 JST] summary: 校則 1女子生徒は透け透けの制服を着用せねばならない!
[20-01-25 08:54:03:371 JST] sentences[1]: 恥ずかしがりながらも指定の制服に着替えると、制服越しに透けて見えるスレンダーボディに学園中の男たちが欲情。放課後の教室で行われる生活指導の先生からのエッチな実技指導。先輩とプールサイドでローションまみれの秘密の特訓。同級生と先生から迫られ3Pセックス!。
[20-01-25 08:54:03:808 JST] summary: 恥ずかしがりながらも指定の制服に着替えると、制服越しに透けて見えるスレンダーボディに学園中の男たちが欲情!
[20-01-25 08:54:03:809 JST] sentences[2]: 部員のやる気を取り戻す為ご奉仕フェラで射精へと導く。最後はクラスの皆と仲良くぶっかけ乱交セックス。性春は爆発だ!。野々浦暖が学園の至る所でヤリまくるエロ過ぎる学園性活をお楽しみください。
[20-01-25 08:54:04:044 JST] summary: 部員のやる気を取り戻す為ご奉仕フェラで射精へと導く!
[20-01-25 08:54:04:045 JST] originText: プレステージ専属女優『野々浦 暖』が独特な校則のある学園に転校?!転校初日に驚きの校則を知らされる。校則 1女子生徒は透け透けの制服を着用せねばならない!校則 2女子生徒は学園内すべての男性の要求をカラダで応えなければならない!恥ずかしがりながらも指定の制服に着替えると、制服越しに透けて見えるスレンダーボディに学園中の男たちが欲情!放課後の教室で行われる生活指導の先生からのエッチな実技指導!先輩とプールサイドでローションまみれの秘密の特訓!同級生と先生から迫られ3Pセックス!?部員のやる気を取り戻す為ご奉仕フェラで射精へと導く!最後はクラスの皆と仲良くぶっかけ乱交セックス!性春は爆発だ!!野々浦暖が学園の至る所でヤリまくるエロ過ぎる学園性活をお楽しみください♪
[20-01-25 08:54:04:045 JST] resultText: 校則 1女子生徒は透け透けの制服を着用せねばならない!恥ずかしがりながらも指定の制服に着替えると、制服越しに透けて見えるスレンダーボディに学園中の男たちが欲情!部員のやる気を取り戻す為ご奉仕フェラで射精へと導く!
※パッケージ画像表面の切り出し・モザイク処理・再生マーク付与は自動化してます。
// A3RTのAPIを使って文章要約を行う
function get_A3RT_Summarize(originText) {
// テキストの区切り位置を調整する
var editText = originText.replace(/!/g, '。').replace(/。。/g, '!。').replace(/。?/g, '!?')
.replace(/?/g, '。').replace(/。。/g, '?。').replace(/♪/g, '。');
// 最大文字数は200文字、且つ最大文章数は10 を超えていないか
var sentences = [];
var split = editText.replace(/。$/, '').split('。');// 末尾の"。"は除去してsplit
if (editText.length <= 200 && split.length <= 10) {
sentences.push(editText);
var linenumber = "3"
// 超えていたら文章を3つに区切る
} else {
// 基本区切り文字数を取得する
var baseNumber = Math.floor(split.length / 3);
// 3つの区切り文字数を調整する
var a, b, c; a = b = c = baseNumber;
var remainder = split.length % 3;
if (remainder==1) { b++; }
if (remainder==2) { a++; b++; }
Logger.log('a: '+ a +' / b: '+ b +' / c: '+ c);
// 文章を3つに区切る
var aPart = '', bPart = '', cPart = '';
for (var i=0; i < a; i++) { aPart += split[i] +'。'; }
for (var i=a; i < a+b; i++) { bPart += split[i] +'。'; }
for (var i=a+b; i < a+b+c; i++) { cPart += split[i] +'。'; }
sentences.push(aPart);
sentences.push(bPart);
sentences.push(cPart);
var linenumber = "1"
}
// 文章要約を行う
var summaryfragment = [];
var API_KEY = "XXXXXXXXXX";
var summarize_URL = 'https://api.a3rt.recruit-tech.co.jp/text_summarization/v1';
for (var i=0; i < sentences.length; i++) {
Logger.log('sentences['+ i +']: '+ sentences[i]);
var payload = {
"apikey" : API_KEY,
"sentences" : sentences[i],
"linenumber": linenumber,
"separation": "。"
};
var options = {
'method' : 'POST',
'payload': payload
};
var response = UrlFetchApp.fetch(summarize_URL, options);
var src = response.getContentText();
var json = JSON.parse(src);
var summary = json["summary"];
// 除去された区切り文字を復元する
for (var j=0; j < summary.length; j++) {
if (originText.match(summary[j] +'.?')) {
summary[j] = originText.match(summary[j] +'.?')[0];
}
}
// 要約結果の配列を連結する
summaryfragment = summaryfragment.concat(summary);
Logger.log('summary: '+ summary);
}
// 配列を連結して文字列にする
var resultText = summaryfragment.join('');
Logger.log('originText: '+ originText);
Logger.log('resultText: '+ resultText);
return resultText;
}
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
+2
10,000文字までの文章を要約することができます。
判定方法がないんですよ。これがいいか、リクルートがいいかは質問者様の気分でしかない。これでマイナスがついたとして、どうやって、ご気分に召すように、より良くなるように、あらためればいいかは誰にもわからない。誰にもというのは、判定方法を答えられない質問者様にすら分からないということです。やってみて気に入るか否かでしかないのですから。
参考までに探しかたですが Zuishin 様のご指摘を参考にこちらを確認しました。
GAS なら UrlfetchApp があるんで、規約的にどうかはしりませんが、API がなくてもフォームデータを偽装できたりもしますよ(UrlfetchApp は user-agent を偽装できないので、相手先次第ではある)。terail の過去質問でも、クッキーとか、XSS 対策のシークレットとかを抜いて、ログイン用途で使おうとしている例がみつかるはず。
https://api.ce-cotoha.com/contents/api-all.html 開発者向けの無料アカウントが取得できそう
https://www.qhapaq.org/imakita/
https://cl.asahi.com/api_data/headlinegeneration.html 新聞記事向け?
https://api.rakuten.net/MeaningCloud/api/summarization/details
https://cloud.google.com/natural-language/?hl=ja
https://prtimes.jp/main/html/rd/p/000000006.000022937.html コンタクトセンター向け?
投稿
score 10098
-
回答の評価を上げる
以下のような回答は評価を上げましょう
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
ぶつ切り状態の文を個別で要約しているので、全体から見たら良い要約になっていないと思います。
分割した文章間の前後関係無視した状態での要約ではないでしょうか?
以下、ライセンス的に問題無いか確認後してください。
一文ごとに要約し(余計な修飾語などを削る)、それ等をマージして再度要約(文章全体を要約)なら行けるかもしれないです。
投稿
score 1897
-
回答の評価を上げる
以下のような回答は評価を上げましょう
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
より良い方法があれば教えてください。
「別に、それで要約できてるならいいのでは?」
としか答えられません。
詳しくは、要件や目的を明確に質問に書いてからです。
投稿
score 5254
-
回答の評価を上げる
以下のような回答は評価を上げましょう
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 89.71%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼