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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

831閲覧

Webページ上で文字の組み合わせ表記をチェックし、ハイライトするブックマークレットの作り方

hoho

総合スコア5

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

2グッド

2クリップ

投稿2020/03/18 08:13

前提・実現したいこと

Webページ上で文字の組み合わせが表記として問題がないかを検索してハイライトするブックマークレットを作りたい。

発生している問題

後よみ先読みなどで済む単語の検索だけなら可能なのですが、語群から組み合わせの可能性を検索してくるという段階がどうしたら良いのかわからずつまづいています。

少数の語彙群であれば、組み合わせ全網羅も可能かもしれませんが、語群内の単語数がけっこうあるため、自動で組み合わせを検索できたらと思いました。

現時点で動かせているソースコード例

全角の英数字やかっこ記号、年を表す以外の4桁以上の数字の羅列、「取り消し」をルールに基づいてWebページ上で検索し、ひっかけてハイライトさせようとしたもの

javascript

1javascript: var s = '[a-zA-Z0-9()「」],[0-9]{4}(?!年),(取りけ|とり消|とりけ),取り消し(?=[亜-熙]),(?<=[亜-熙])取り消し,(?<![亜-熙])取消(の|に|を|が|は|も|と|や)' 2var A = s.split(','); 3var R = new Array(); 4B = A.map(function (d, i) { rn = Math.floor(Math.random() * 1000); 5R.push({ no: 'z' + rn, name: d }); d = '(' + d + ')'; d = new RegExp(d, 'gi'); return d; }); 6b = document.body.innerHTML; 7B.forEach(function (d, i) { 8 if (b.indexOf(d)) { b = b.replace(d, '<span name=' + R[i].no + ' class=' + R[i].no + ' style=\'font-size:24px!important;color:#000!important;background-color:yellow!important;font-weight:bold!important;\'>$1</span>'); } 9} 10); 11void(document.body.innerHTML = b);

↑「取り消し」の部分について、それっぽい動きはするものの適切でなく未完成です…。

補足情報(語群の具体的とルールの具体的な話)

  • A語群(送り仮名をつける開いた状態):受け付け、取り扱い、申し込み、取り消し…
  • A語群(送り仮名をつけない閉じた状態):受付、取扱、申込、取消…
  • B語群:期間、前、後、者…

ひっかけたいNG規則
0. 閉じたA + 動詞の活用
<例>受付する、取扱させていただく
0. 閉じたA + 閉じたA + 閉じたB
<例>取扱受付期間
0. 開いたA + 助詞
<例>受け付けを、取り扱いは
0. 開いたA + 閉じたB
<例>受け付け期間、申し込み後

kokemomo.sour, shinji709👍を押しています

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

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

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

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

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

kokemomo.sour

2020/03/18 08:36

素敵ですね! すでにご存知でしたらすいません、 語群の定義は形態素解析を利用してみてはいかがでしょうか。 有名なkuromojiなんかだと、例えば 「申し込み後」 は以下のように分解してくれます。 申し込み 名詞,一般,*,* 申し込み モウシコミ モーシコミ 後 名詞,接尾,副詞可能,* 後 ゴ ゴ 名詞をA語群(開)/A語群(閉)/B語群に分ける作業はご自身で若干辞書をカスタマイズする必要があるかと思いますが、 同じ名詞でも一般名詞と接尾名詞とも判断してくれるため、 A語群とB語群をある程度自動的に判断任せられるかな、と考えています。
hoho

2020/03/19 05:42

>kokemomo.sourさま ご回答ありがとうございます! kuromoji、こんなものがあるんですね。知らなかったです。 落としてこれたので一旦試してみようと思います。 >AkitoshiManabe さま 参考になる記事をありがとうございます! 中身を直接すべて書こうとしてブックマークレットの記述がものすごく長くなって見づらいのもやや悩みでした。有益な情報ありがたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問