「校正支援アウトプット」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
ページの作成:「= 概要 = Yahooの校正支援APIを利用して校正箇所を検索します<br> 検索結果をアウトプットバーに表示します<br> ファイル:校正...」
 
MSY-07 (トーク | 投稿記録)
変数にvarの宣言を追加、オブジェクト名の修正(マクロリファレンス:3:OutputBar オブジェクトを参照)
 
(3人の利用者による、間の21版が非表示)
1行目: 1行目:
= 概要 =
== 概要 ==
Yahooの校正支援APIを利用して校正箇所を検索します<br>
Yahooの校正支援APIを利用して校正箇所を検索します。
検索結果をアウトプットバーに表示します<br>


[[ファイル:校正支援出力.zip]]
検索結果をアウトプットバーに表示します。


= 使い方 =
== 使い方 ==
1.校正したいテキストを開くか、テキスト内の校正したい部分を範囲選択します<br>
# 校正したいテキストを開くか、テキスト内の校正したい部分を範囲選択します。
2.当マクロを実行すると、アウトプットバーに校正箇所がパス付きで表示されます<br>
# 当マクロを実行すると、アウトプットバーに校正箇所がパス付きで表示されます。
3.表示をダブルクリックするかF10キーの押下により該当箇所へジャンプできます<br>
# 表示をダブルクリックするかF10キーの押下により該当箇所へジャンプできます。
 ※このジャンプは当マクロの機能ではなくアウトプットバーの機能です<br>


= 設定 =
※このジャンプは当マクロの機能ではなくアウトプットバーの機能です。
<source lang="javascript">
outputbar.clear(); // 実行ごとにアウトプットバーをクリアします
</source>


設定というよりもマクロの記述そのものですが、マクロの実行ごとにアウトプットバーをクリアするかどうかを決められます<br>
== 設定 ==
実行ごとにアウトプットバーをクリアしたくない場合は、行頭に"//"を記入してコメントアウトして下さい<br>
<syntaxhighlight lang="javascript">
outputBar.clear(); // 実行ごとにアウトプットバーをクリアします。
</syntaxhighlight>


設定というよりもマクロの記述そのものですが、マクロの実行ごとにアウトプットバーをクリアするかどうかを決められます。


<source lang="javascript">
実行ごとにアウトプットバーをクリアしたくない場合は、行頭に"//"を記入してコメントアウトして下さい。
 
<syntaxhighlight lang="javascript">
var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";
var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";
</source>
</syntaxhighlight>


Yahoo! JAPANのアプリケーションIDの設定です<br>
Yahoo! JAPANのアプリケーションIDの設定です。
はじめから設定されているIDは私が個人的に取得したものです<br>
アプリケーションIDごとに1日あたり50000回の利用制限がありますので、もしも当マクロが大人気を博し、多くの人に利用されて上限を突破することがあれば利用できない時間が発生することになります<br>
おそらくそんなことにはならないだろうと思いますが<br>


『Yahoo!デベロッパーネットワーク > ヘルプ > アプリケーションIDとは』<br>
はじめから設定されているIDは私が個人的に取得したものです。
https://www.yahoo-help.jp/app/answers/detail/p/537/a_id/43397


Yahoo IDを持っていれば、簡単にアプリケーションIDを取得することが出来ますので、気になる方は上記URLを参考にご自身のアプリケーションIDを取得し設定して下さい<br>
アプリケーションIDごとに1日あたり50000回の利用制限がありますので、もしも当マクロが大人気を博し、多くの人に利用されて上限を突破することがあれば利用できない時間が発生することになります。


おそらくそんなことにはならないだろうと思いますが。


<source lang="javascript">
『Yahoo!デベロッパーネットワーク > ヘルプ > Client ID(アプリケーションID)とは』
var FG = "1,2,3";
// filter_group
// 指摘グループの番号をコンマで区切って指定します。
// 1:表記・表現の間違いや不適切な表現に関する指摘
// -誤変換、誤用、使用注意語、不快語(使用不適切な語や隠語など)、機種依存文字
// または拡張文字、外国地名、固有名詞、人名、ら抜き言葉が指摘されます
// 2:わかりやすい表記にするための指摘
// -当て字、表外漢字、用字(※) が指摘されます。
// ※日本新聞協会「新聞用語集」、共同通信社「記者ハンドブック」を主な参考としています
// 3:文章をよりよくするための指摘
// -用語言い換え、二重否定、助詞不足の可能性あり、冗長表現、略語 が指摘されます
// 無指定の場合は、すべての指摘を返します
</source>


FG(filter_group)は、校正する内容を大きな分類の番号で指定します<br>
https://support.yahoo-net.jp/PccDeveloper/s/article/H000006122
『無指定の場合は、すべての指摘を返します』とある通り、『FG = "1,2,3";』と指定するのと『FG = "";』と指定するのは同じ意味です<br>


Yahoo! JAPAN IDを持っていれば、簡単にアプリケーションIDを取得することが出来ますので、気になる方は上記URLを参考にご自身のアプリケーションIDを取得し設定して下さい。


<source lang="javascript">
== 注意事項 ==
var NF = "";
当マクロは外部ファイルどころかネットを介してYahooAPIにアクセスします、ネット環境がないと利用できません。
// no_filter
// filter_groupで指定した指摘グループから除外する指摘を指定します
// 指摘番号をコンマで区切って指定します
// 1:誤変換 例:人事異同→人事異動
// 2:誤用 例:煙に巻く→けむに巻く
// 3:使用注意 例:外人墓地→外国人墓地
// 4:不快語 例:がんをつける→にらむ
// 5:機種依存または拡張文字(EUC表示不可の場合も指摘されます)
// 例:○付き数字、一部の旧字体など
// 6:外国地名 例:モルジブ→モルディブ
// 7:固有名詞 例:ヤフーブログ→Yahoo!ブログ
// 8:人名 例:ベートーヴェン→ベートーベン
// 9:ら抜き 例:食べれる→食べられる
// 10:当て字 例:出鱈目、振り仮名
// 11:表外漢字あり 例:灯籠→灯●
// 12:用字 例:曖昧→あいまい
// 13:用語言い換え(商標など)
// 例:セロテープ→セロハンテープ
// 14:二重否定 例:聞かなくはない
// 15:助詞不足の可能性あり
// 例:学校行く
// 16:冗長表現 例:ことができます
// 17:略語 例:ADSL→非対称デジタル加入者線(ADSL)
</source>


NF(no_filter)は校正しない内容を小さな分類の番号で指定します<br>
また、ネットに繋がるのがなんかヤダという方もいらっしゃるかと思います、申し訳ありませんがご使用を控えて頂ければと思います、予めご了承下さい。
FG(filter_group)は校正する番号でしたが、NF(no_filter)は校正しない番号ですので注意が必要です<br>
デフォルトではNF(no_filter)を指定していませんが、このままの設定ですと校正の出力がずらずらと多くなると思いますのでお好みに合わせて設定して下さい<br>


当マクロは校正箇所を表示しますが、実際の置き換えなどは行いません。
== 謝辞 ==
当マクロは急急如律令さんの[[自動ルビ振り]]を大いに参考にしています。自動ルビ振りというお手本が無ければ当マクロは作成できませんでした。この場を借りてお礼申し上げます。
== 変更履歴 ==
* 1.0.1 (2022-01-11)
** 弐版
* 1.0.0 (2019-05-01)
** 初版
== ソースコード ==
<syntaxhighlight lang="javascript" copy>
#title = "校正支援出力v2"
//------------------------------------------------------------------------------
// 設定
outputBar.Visible = "true";
outputBar.clear(); // 実行ごとにアウトプットバーをクリアします
var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";
//------------------------------------------------------------------------------
// 参照
// 『Yahoo!デベロッパーネットワーク テキスト解析 校正支援(V2)』
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
// 『自動ルビ振り』(急急如律令さん)
// https://www.haijin-boys.com/wiki/自動ルビ振り
// 『JScriptでHTTPアクセス』
// https://qiita.com/tnakagawa/items/3bce99d49b1aa3fc9a72
// 使用API
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
//------------------------------------------------------------------------------
var sDate = new Date();
var API_URL = "https://jlp.yahooapis.jp/KouseiService/V2/kousei";
var activePos; // 位置退避用
var anchorPos; // 位置退避用
var sX; // 位置退避用
var sY; // 位置退避用
var offset = 0;
var Sentence = "";
var fPath = Document.FullName;
var cPos = "";


= 注意点 =
StPos(); // 位置退避
当マクロは外部ファイルどころかネットを介してYahooAPIにアクセスします、ネット環境がないと利用できません<br>
if (Document.Selection.IsEmpty) {
また、ネットに繋がるのがなんかヤダという方もいらっしゃるかと思います、申し訳ありませんがご使用を控えて頂ければと思います、予めご了承下さい<br>
Sentence = Document.Text;
当マクロは校正箇所を表示しますが、実際の置き換えなどは行いません<br>
} else {
Sentence = Document.Selection.Text;
offset = Math.min(activePos, anchorPos);
}
var json = yahooapi(Appid, Sentence, API_URL);
var cnt = KouseiY(json);
LdPos(); // 位置復帰
Status = "■校正支援■ " + cnt + "箇所 (処理時間: " + ((new Date() - sDate) / 1000) + "秒)";


= 謝辞 =
function yahooapi(Appid, Sentence, API_URL) { // Yahoo!APIにアクセスする
当マクロは急急如律令さんの自動ルビ振りを大いに参考にしています。自動ルビ振りというお手本が無ければ当マクロは作成できませんでした。この場を借りてお礼申し上げます<br>
try {
var http = new ActiveXObject("Msxml2.XMLHTTP");
http.open("POST", API_URL, false); // 要求初期化
http.setRequestHeader("Content-Type", "application/json");
http.setRequestHeader('User-Agent', 'Yahoo AppID: ' + Appid);
var param_dic = {
"id": "1234-1",
"jsonrpc": "2.0",
"method": "jlp.kouseiservice.kousei",
"params": {
"q": Sentence
}
}
http.send(JSON.stringify(param_dic));
var x = http.responseText; // 応答を受け取る
} catch (e) {
outputBar.Writeln("※リクエスト失敗");
outputBar.Writeln("Error(" + (e.number & 0xFFFF) + "):" + e.message);
}
return x;
}


= 更新履歴 =
function KouseiY(json) { // 校正内容を整形
・2019/05/01 初版<br>
var str = "";
var json_parse = JSON.parse(json)
var results = JSON.parse(json).result.suggestions;
Redraw = false;
for (var i = 0; i < results.length; i++) {
cPos = PosToXY(Number(results[i].offset) + offset);
var line = fPath + cPos + "【" + results[i].rule + "】:" + results[i].word;
if (results[i].suggestion != "") line += "→" + results[i].suggestion;
if (results[i].note!="") line += "【" + results[i].note + "】";
outputBar.writeln(line);
}
Redraw = true;
return results.length;
}
function StPos() { // カーソル位置の保存
activePos = Document.Selection.GetActivePos();
anchorPos = Document.Selection.GetAnchorPos();
sX = ScrollX;
sY = ScrollY;
}
function LdPos() { // カーソル位置の復帰
Document.Selection.SetActivePos(activePos);
Document.Selection.SetAnchorPos(anchorPos);
ScrollX = sX;
ScrollY = sY;
}
function PosToXY(pos) { // ポジションを(y,x)形式の文字列にする
Document.Selection.SetActivePos(pos);
var x = Document.Selection.GetActivePointX(mePosLogical);
var y = Document.Selection.GetActivePointY(mePosLogical);
cPos = "(" + y + "," + x + ")";
return cPos;
}
</syntaxhighlight>

2025年11月25日 (火) 18:58時点における最新版

概要[編集]

Yahooの校正支援APIを利用して校正箇所を検索します。

検索結果をアウトプットバーに表示します。

使い方[編集]

  1. 校正したいテキストを開くか、テキスト内の校正したい部分を範囲選択します。
  2. 当マクロを実行すると、アウトプットバーに校正箇所がパス付きで表示されます。
  3. 表示をダブルクリックするかF10キーの押下により該当箇所へジャンプできます。

※このジャンプは当マクロの機能ではなくアウトプットバーの機能です。

設定[編集]

outputBar.clear();	// 実行ごとにアウトプットバーをクリアします。

設定というよりもマクロの記述そのものですが、マクロの実行ごとにアウトプットバーをクリアするかどうかを決められます。

実行ごとにアウトプットバーをクリアしたくない場合は、行頭に"//"を記入してコメントアウトして下さい。

var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";

Yahoo! JAPANのアプリケーションIDの設定です。

はじめから設定されているIDは私が個人的に取得したものです。

アプリケーションIDごとに1日あたり50000回の利用制限がありますので、もしも当マクロが大人気を博し、多くの人に利用されて上限を突破することがあれば利用できない時間が発生することになります。

おそらくそんなことにはならないだろうと思いますが。

『Yahoo!デベロッパーネットワーク > ヘルプ > Client ID(アプリケーションID)とは』

https://support.yahoo-net.jp/PccDeveloper/s/article/H000006122

Yahoo! JAPAN IDを持っていれば、簡単にアプリケーションIDを取得することが出来ますので、気になる方は上記URLを参考にご自身のアプリケーションIDを取得し設定して下さい。

注意事項[編集]

当マクロは外部ファイルどころかネットを介してYahooAPIにアクセスします、ネット環境がないと利用できません。

また、ネットに繋がるのがなんかヤダという方もいらっしゃるかと思います、申し訳ありませんがご使用を控えて頂ければと思います、予めご了承下さい。

当マクロは校正箇所を表示しますが、実際の置き換えなどは行いません。

謝辞[編集]

当マクロは急急如律令さんの自動ルビ振りを大いに参考にしています。自動ルビ振りというお手本が無ければ当マクロは作成できませんでした。この場を借りてお礼申し上げます。

変更履歴[編集]

  • 1.0.1 (2022-01-11)
    • 弐版
  • 1.0.0 (2019-05-01)
    • 初版

ソースコード[編集]

#title = "校正支援出力v2"
//------------------------------------------------------------------------------
// 設定
outputBar.Visible = "true";
outputBar.clear();	// 実行ごとにアウトプットバーをクリアします
var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";
//------------------------------------------------------------------------------
// 参照
// 『Yahoo!デベロッパーネットワーク テキスト解析 校正支援(V2)』
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
// 『自動ルビ振り』(急急如律令さん)
// https://www.haijin-boys.com/wiki/自動ルビ振り
// 『JScriptでHTTPアクセス』
// https://qiita.com/tnakagawa/items/3bce99d49b1aa3fc9a72
// 使用API
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
//------------------------------------------------------------------------------
var sDate = new Date();
var API_URL = "https://jlp.yahooapis.jp/KouseiService/V2/kousei";
var activePos;	// 位置退避用
var anchorPos;	// 位置退避用
var sX;	// 位置退避用
var sY;	// 位置退避用
var offset = 0;
var Sentence = "";
var fPath = Document.FullName;
var cPos = "";

StPos();	// 位置退避
if (Document.Selection.IsEmpty) {
	Sentence = Document.Text;
} else {
	Sentence = Document.Selection.Text;
	offset = Math.min(activePos, anchorPos);
}
var json = yahooapi(Appid, Sentence, API_URL);
var cnt = KouseiY(json);
LdPos();	// 位置復帰
Status = "■校正支援■ " + cnt + "箇所 (処理時間: " + ((new Date() - sDate) / 1000) + "秒)";

function yahooapi(Appid, Sentence, API_URL) {	// Yahoo!APIにアクセスする
	try {
		var http = new ActiveXObject("Msxml2.XMLHTTP");
		http.open("POST", API_URL, false);	// 要求初期化
		http.setRequestHeader("Content-Type", "application/json");
		http.setRequestHeader('User-Agent', 'Yahoo AppID: ' + Appid);
		var param_dic = {
			"id": "1234-1",
			"jsonrpc": "2.0",
			"method": "jlp.kouseiservice.kousei",
			"params": {
				"q": Sentence
			}
		}
		http.send(JSON.stringify(param_dic));
		var x = http.responseText;			// 応答を受け取る
	} catch (e) {
		outputBar.Writeln("※リクエスト失敗");
		outputBar.Writeln("Error(" + (e.number & 0xFFFF) + "):" + e.message);
	}
	return x;
}

function KouseiY(json) {	// 校正内容を整形
	var str = "";
	var json_parse = JSON.parse(json)
	var results = JSON.parse(json).result.suggestions;
	Redraw = false;
	for (var i = 0; i < results.length; i++) {
		cPos = PosToXY(Number(results[i].offset) + offset);
		var line = fPath + cPos + "【" + results[i].rule + "】:" + results[i].word;
		if (results[i].suggestion != "") line += "→" + results[i].suggestion;
		if (results[i].note!="") line += "【" + results[i].note + "】";
		outputBar.writeln(line);
	}
	Redraw = true;
	return results.length;
}
function StPos() {	// カーソル位置の保存
	activePos = Document.Selection.GetActivePos();
	anchorPos = Document.Selection.GetAnchorPos();
	sX = ScrollX;
	sY = ScrollY;
}
function LdPos() {	// カーソル位置の復帰
	Document.Selection.SetActivePos(activePos);
	Document.Selection.SetAnchorPos(anchorPos);
	ScrollX = sX;
	ScrollY = sY;
}
function PosToXY(pos) {	// ポジションを(y,x)形式の文字列にする
	Document.Selection.SetActivePos(pos);
	var x = Document.Selection.GetActivePointX(mePosLogical);
	var y = Document.Selection.GetActivePointY(mePosLogical);
	cPos = "(" + y + "," + x + ")";
	return cPos;
}
スポンサーリンク