ホーム技術ブログ › 11
2026-09-07 #11

「この単語、もっと出てたはずなんだけど」を機械で探すツールを書いた

少なく見える語は、たいてい別の字で起こされている。読み・惜しい綴り・語尾・出ないはずがない回、の4通りで洗う。

Pythonデータ品質ツール

作った動機

聴いていると「この言葉、もっと出てたはずなんだけど」と引っかかることがあります。

最初は数え直して「348回あるから合っているな」で済ませていました。ところが毎回、 そのあとで別の書かれ方が見つかります。少なく見えるのは数え方の問題ではなく、 その語が別の字で起こされているからでした。

そのたびに LIKE をアドホックに叩いていたのですが、 毎回同じことをしているのでツールにしました。

$ python3 scripts/find_missing_word.py ソシュール
$ python3 scripts/find_missing_word.py うんちく

1通りで探すと必ず取りこぼす

最初は「読みが同じもの」だけを探していました。それだと当たらない壊れ方があります。 いまは4通り並べています。

探し方当たる例
① 読みで引く祖収る → そしゅうる
② 惜しい綴り(1〜2文字違い)ネガティブプライトネス
③ 正しい出現の直後2文字の分布デカルトみ → デカルトを
④ タイトル・概要欄にあるのに本文に出ない回本文0回=名前ごと壊れている
def by_yomi(rows, word):
    keys = yomi_keys(word)      # 長音を落とした形と、母音に開いた形の両方
    return [r for r in rows
            if any(k in normalize_for_search(r.text_yomi) for k in keys)
            and word not in r.text]

②は全1.3M行に総当たりすると重いので、文字の重なりで粗く絞ってから類似度を見ます。

chars, need = set(w), max(2, len(set(w)) - 1)
for row in rows:
    body = normalize_for_search(row.text_search)
    if len(chars & set(body)) < need:
        continue
    # 1 segment につき、いちばん似ている窓だけを採る
    best = max((difflib.SequenceMatcher(None, w, body[k:k+span]).ratio(), body[k:k+span])
               for span in (n-1, n, n+1) for k in range(len(body)-span+1))
    if best[0] >= thr:
        found[best[1]] += 1

最初は窓を全部拾っていて、同じ箇所が何行にも化けて出ました。1セグメント1候補に絞ると読めます。

回してみた結果

$ python3 scripts/find_missing_word.py ソシュール

■ 「ソシュール」の現状: 348回 / 65本

① 読みが同じで表記が違うもの (読み「そしゅうる / そしゅる」で照合) 6件
   https://youtu.be/Xlvp9rfJ9co?t=1460  ただそしゅるが言いたかったのは
   https://youtu.be/gxwy4c_Rgig?t=2103  そしゅるが否定したと言われる

② 惜しい綴り (類似度 0.62 以上)
    30回  「ソシャル」    ← ソーシャルグッド(無関係。目で捨てる)
    28回  「シュル」      ← 無関係

①はほぼ本物、②はノイズが多い、という性質があります。②は目で捨てる前提の道具です。

見つかった誤表記
ソシュール348回354回そしゅる(ひらがな)
うんちく995回1,036回運築36件・運知5件
タメ語11回32回ためご21件

「いい運築で」「面白い運築だよね」「運築おじさん」。 読めば一目で分かるのに、5年ぶんずっと集計から漏れていました。

同じ失敗をもう一度した

この道具の親戚で、「番組が過去回に言及した箇所」を探すものも作りました。 最初は言い方だけを手がかりにしていました。

REF = re.compile(r"前回|前に|以前|昔|過去|の回で|シリーズ|覚えてます")

ところが番組の造語は、前置きなしにそのまま出てきます。

取らないで俺のデカルトみ
デカルトみ感じますね
つまりデカルトみってことですよね

この形が正規表現に一度もかからず、実際は9本あった参照を1本しか見つけられませんでした。 「正しく起こされている」を前提に探したときと、まったく同じ失敗です。

いまは「その語が主題ではない回の発言を全部出す」経路を足しています。 機械に確定させるのではなく、人が判断する材料を漏らさず出す方向に倒しました。

結局のところ

  • 「少ないはず」の直感は当たる。数え方ではなく表記を疑う
  • ツールに前提を置くと、前提の外は永遠に見つからない
  • 気づく入口は毎回「少なくない?」という引っかかり。 網は広く張って、最後は自分の目で判断するのがよさそうです

← 日本語の全文検索を「表記が違っても引ける」ようにする… 語ごとの「いつ・どの回で語られたか」を1枚に置く。時… → 目次へ

ゆる言語学ラジオ・ゆるコンピュータ科学ラジオ 公認/株式会社pedantic の了承と、運営者・安東暁史との合意に基づく協力体制で運営しています。ドメイン yururadio.jp は株式会社pedanticが保有。開発・保守: 安東暁史·このサイトについて·お問い合わせ