【JKI】038_Word_Windows_01_コンポーネント
【JKI_038】課題を確認
Just KNIME It! (JKI)
今回の挑戦はこちら
問題文のところだけをDeepL翻訳し少し加筆して以下に
【サンプルデータはトラップだらけ】
サンプルデータ:
Excelで開いて見ます。
水色表示は大文字と小文字を区別しないで「eggs」の完全一致検索でヒットすべき単語を示しています。問題文で書かれている通り文頭にも文末にもありますし、2文にわたって一行で2回ヒットもあったりします。
一方で、「この種の検索によくあるトラップ」とはこれかなという個所は赤色表示しました。セル内改行はデータ処理プログラミングする時は本当に嫌ですが、人が見るだけなら便利ですよね、実際のところ。
「2eggs」はスペース入れ忘れのトラップかと思ったら、文脈からして今回は「eggs」と検索してもヒットしなくていいと判断しました。ひねってあるなぁ。
【コンポーネントの機能概要】
珍しく今回は結論である解答から紹介してみます。
右のコンポーネントを実行してViewを表示させると、
① Excelからの入力を確認し、必要ならスペルミスを修正もできる一覧。
KNIMEの機能ではないですが、スペルミスかもしれないところは赤色下線が出ています。
② 検索用の単語を入力してSearchボタンで検索をかけなおせます。
③ 検索結果の一覧、一行で複数回ヒットするなら複数行に分かれて出ます。
それなりにできたとは思うのですが、コンポーネント作成までの道のりは出題者の仕掛けたトラップにほぼ全てひっかかるいばらの道でした。
上記のWorkflow (WF)を見ながら下記のセリフを思い出す人は私だけかなとは思いつつ引用します。
【WF紹介】
【Excel Reader】
いつも通り相対パスでの読み込みです。
結果:
Row2が目立ってトラップのように見えますが、今回の出題内容は句読点の扱いが変わっていて苦労しました。
出題された例を見ていくと、句点「.」「?」「!」は先述の例では削除対象で、読点「,」は単語にくっついたまま処理します。どうしてこのルールにしたんでしょうか。両方削除してよければ楽だった…。
【入力制御】
【検索対象データ前処理】
【完全一致検索実行と単語群抽出】
【結果の集約と可視化】
WFがかなり長くなってしまいました。トラップに引っかかってはその対策をしてと進めた結果で、効率が悪くてお恥ずかしいですが、次回に概要を紹介します。
KNIME Hubに解答は上げています。
おまけ:
【JKI_037 感想戦】
先週のJust KNIME It! (JKI)は
重複する分をいかに効率よく削除するかを問われました。
ノード 3 個で多分できました。
単なる繰り返しだったようなので、特徴のある区切り(半角スペース4連続)を見つけてただ分けただけです。
一方、公式解答はNode 5 個でしっかり重複かどうかを判定しての削除なので、より確実ですし、今回のサンプルデータ以外にも使える仕組みになっています。
KNIMEで自然言語処理をするときに、
区切り文字で分ける処理をCell Splitterですると横並びの多数の列になり、
一旦縦横変換して、
何らかの処理をして(上図は重複処理)、
GroupByのConcatenate処理で一まとめにする
っていうフローがよく使われるようです。
JKI第38回ではそれ以外の手法も使ってみたので次回にまた。
記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。