![見出し画像](https://assets.st-note.com/production/uploads/images/115633664/rectangle_large_type_2_2bb52e749b6a749997a59cb404fa0d84.png?width=1200)
【エンジニア長期インターン2023 in 大阪】OpenAIとElasticSearchを用いた記者の取材を助ける検索システム
2023年夏、共同通信メディア・エンジニアの長期インターンを実施しました。今年は大阪、東京の2拠点で開催。大阪インターンに参加した4名の成果を報告します!
※東京・本社で実施のインターン成果報告はこちら
※昨年実施のインターン成果報告はこちら
![](https://assets.st-note.com/img/1694147866857-v5EIOqVkL5.png)
自己紹介
落合大輔
名古屋大学大学院 情報学研究科 M1
大学での研究テーマ:高齢者におけるICTの利活用と健康増進
趣味:散歩・カフェ
応募動機:採用のnoteを見て興味を持ち、メディアという情報が集まる場所なら情報を扱って何か新しいことができるのではないかと思いました。
佐藤正和
所属:神戸大学大学院 システム情報学研究科 M1
大学での研究テーマ:機械学習を用いた分子の匂い予測
応募動機:日々いろいろな情報が飛び交うこの社会において、どのようなフローで情報が発信されているのかということに興味があり応募しました。
熊谷拓
京都大学大学院 情報学研究科 M1
大学での研究テーマ:深層学習を利用した物理現象の解析
応募動機:実社会の中で情報学がどのように応用されているかに興味があり、日々大量のデータが行き来するマスコミでインターンに参加すれば、より社会に対する理解が深まるのではないかと考え応募しました。
北村祐稀
所属:大阪大学 情報科学研究科・情報システム工学専攻 M1
大学での研究テーマ:情報科学を学ぶためのインタラクティブ教材の開発と学習分析による学習支援
応募動機:伝える・伝わるといったところに興味があり、データ分析を通して内容がうまく伝わらなかった記事を特定したり、記者の方がより良い記事を書けるように支援したりするシステム開発に取り組みたいと考え、応募しました。
インターンの成果物
概要
『ゆるさーち』というセマンティックな検索エンジンを作成しました。
課題
共同通信の記者は自分自身が記事を書く前に、過去に書かれた記事を検索するなどのリサーチを行います。統一したフォーマットで高い品質の記事を生み出すためです。既にPrestoという記事のデータベースがあるのですが、単語の完全一致検索にのみ対応していました。そのため、欲しい記事を検索するために記事内の出現単語を想像する必要がありました。これによって、『部活動』と『部活』で検索結果が変わってしまうという課題や『部活動』から『サッカー部』といった関連する意味の記事を探せないという課題がありました。
制作物
こちらがゆるさーちの画面です。
現場の記者からのヒアリングを踏まえて行数での検索や並び替えなどの機能が実装されています。
![](https://assets.st-note.com/img/1694143130894-yEF0sKKe4H.png?width=1200)
![](https://assets.st-note.com/img/1694143185933-C0WUPWH9On.png?width=1200)
活用例
文章で検索 目の前の状況で記事を検索
『意識不明だったが搬送後に回復した』と検索すると似たような状況の記事が出てきます。取材で目の前の状況をそのまま入力すれば似た状況の記事が出てきます。文章で自然に検索できるため非常に便利です。
![](https://assets.st-note.com/img/1694143625347-MYO8K5vNOX.png?width=1200)
取材メモをコピーアンドペーストして検索
共同通信では実際の記事を執筆する前に取材メモを作成します。ゆるさーちを使えば取材メモをそのままコピーアンドペーストすることで同様の過去記事を検索できます。
![](https://assets.st-note.com/img/1694143601043-riMvRvEwZJ.png?width=1200)
プレスリリースをコピーアンドペーストして検索
共同通信では様々な公的機関からプレスリリースを収集して記事にしています。ゆるさーちを使えばそれらのプレスリリースをコピーアンドペーストするだけで同様の過去記事を検索できます。
![](https://assets.st-note.com/img/1694144071113-m5KZVfBFfu.png?width=1200)
![](https://assets.st-note.com/img/1694143966339-aBB4J4h43L.png?width=1200)
記事特有の表現フォーマットを探す
記者の方とのヒアリングを行った際に、特定の固有名詞などの記事特有の表現を検索するのが大変だという話題があがりました。
共同通信の記事は一定のフォーマットで書く必要があります。一定のフォーマットを用いることで、全体の文体を合わせるとともに読者にとって読みやすい記事になるようになります。ゆるさーちを使えばこの記事特有の表現を検索することができます。
活用例:「Github」
GithubはIT系のエンジニアにとっては馴染みの言葉ですが、一般的な読者にとっては馴染みのない言葉です。ゆるさーちで検索することによって『米マイクロソフト傘下のソフト開発者向け共有サービス「ギットハブ」』という書き方をすれば読者に伝わるということがわかります。
![](https://assets.st-note.com/img/1694144436978-bIKjgaXEVI.png?width=1200)
活用例:「先頭打者本塁打」
『最初の打者でいきなりホームランを打たれた』という状況の場合に、共同通信の記事では『先頭打者本塁打』という表現を用います。新米記者が『先頭打者本塁打』という単語を知らずとも目の前の状況(『最初の打者でいきなりホームランを打たれた』)をそのまま文章で検索するだけで『先頭打者本塁打』という表現を見つけ出すことができます。
![](https://assets.st-note.com/img/1694158271267-gtLGyezrmO.jpg?width=1200)
テーマ決め(8月14日~8月16日)
最初の2日間でテーマ決めを行いました。8月15日は台風接近のためお休みでした。
共同通信では、新聞社やテレビ局に配信した記事や画像が、XMLなどの機械判読可能な形式で社内のデータベースに保存されています。同様に、その素材となったメモや写真も、使われなかったものも含めて丁寧にアーカイブされています。今回のインターンシップでは、これらの膨大なデータを活用して新たなアイデアを実現することを目指しました。
株式や天気の予想などの案が出ましたが、自然言語処理を使って記事をベクトル化し、検索やクラスタリングを行おうという方針になりました。その過程で、複数の方法で記事のベクトルを生成し可視化するなどの試行錯誤を行いました。最終的に、文章から関連コンテンツを効果的に検索できる検索エンジンを構築することになりました。
![](https://assets.st-note.com/img/1694145262023-w6SdY9IR9l.jpg?width=1200)
![](https://assets.st-note.com/img/1694145228753-4cDGPSXEQp.png?width=1200)
![](https://assets.st-note.com/img/1694145477855-2PtRQ6DClb.jpg?width=1200)
実装(8月17日~8月24日)
セマンティック検索エンジンを作ることに決定しました。
具体的にはOpenAIのAPIとElasticsearchを用いて、記事の文章をベクトル化したものから類似した記事を検索するプロダクトです。サーバーサイドをNodeJS(TypeScript)で作成し、フロントエンドをNext.jsで作成しました。ベクトル化する内容や方法等の統計的な検証に関しては主にPythonを用いて行いました。
![](https://assets.st-note.com/img/1694145552149-e7ksEFn2Dl.png?width=1200)
また、8月21日には現場の記者とのヒアリングも行われました。インターン会場は記者の方々のいるフロアと同じだったので、お互いに途中で思いついたことを話し合える環境であり、開発にも役立ちました。
![](https://assets.st-note.com/img/1694145853173-FGtjjnIIva.jpg?width=1200)
発表(8月25日)
最終日は発表を行いました。40人以上の方が参加され、役員の方や情報技術局長も参加してくださいました。
発表の後には打ち上げも行われました。色々な経験談を通じて社員の方々のワークスタイルを知ることもできました。技術職員も記者ほどではないですがかなりアグレッシブな職業だということを知ることができました。
世界各国への出張もあり、物理層からアプリケーション層まで幅広い技術が要求される仕事であることがわかりました。
![](https://assets.st-note.com/img/1694146068394-t3Bsq5HuNV.jpg?width=1200)
![](https://assets.st-note.com/img/1694146173332-Yu18yx8SVY.png?width=1200)
インターンを終えて
佐藤正和
初めての開発系インターンで、初めはとても不安でしたが、とても雰囲気が良く、わからないところは社員さんが丁寧に教えてくださり、楽しく進めることができました。
ただ、期間が二週間だったこともあり、ベクトルのファインチューニングなどの検索結果向上手法まで試すことができなかったのが心残りです。
このインターンを通して、記者さんの直接の悩みを聞き、みんなで解決策を考えて実装するという、普段の研究では得られない貴重な経験をさせていただき、関わってくださった全ての方に感謝いたします。
熊谷拓
初日に周囲のインターン参加者のレベルの高さに驚き、無事に終えられるか不安を覚えたのですが、みんな優しく議論に付き合ってくれたり、またメンターの方々からの手厚いサポートもあり、とても楽しく密度の濃い二週間を過ごすことができました。
また、開発だけでなく、実際に記者の方々とお話しする機会なども頂けたおかげで、普段日常であまり接することのないマスコミの世界を垣間見ることができるなど、非常に貴重な体験ができました。この場をお借りして、関わってくださった皆様に再度感謝申し上げます。
落合大輔
大学時代に学んでいたソフトウェア工学の知識と自然言語処理の知識をフル活用できました。一方で、自分自身の実力不足にも気づき、結果的に大学院でも研究や勉強に励みたいなと言う気持ちになりました。
要件定義を行うという観点でも非常にやりがいのある物でした。0からアイデアを出して現場の記者(ユーザー)に直接ヒアリングを行い実装をする。そして、熱烈なフィードバックをもらうという経験をしました。対面でユーザーによるフィードバックを受けられるインターンは他社では味わえない貴重な経験と言えると思います。また、インターン後に今回作成したシステムが社内システムとして実際に運用される可能性があるとのことでワクワクしています。
共同通信の社員さんは好奇心と誇りを持って仕事をされています。インターンシップを通してそれらの大切さを学ぶと共に実際に働く職場をイメージできました。非常に尊敬するとともに、今回のような機会を設けていただいた事を感謝申し上げます。
北村祐稀
今回、良質で膨大な記事データを扱わせていただけたのが非常にありがたかったです。
それほど深く考えずに分析を行っても目で見てわかる結果を得ることができて、解釈や次の深堀り分析のインスピレーションがどんどん湧いてきました。
主成分分析と t-SNE の結果の性質の違いが如実に表れていて、アルゴリズムの選択が実はとても重要なのだと気づくこともできました。また、短い期間でスムーズに開発や分析を進めて様々な結果を得ることができたのは、メンターの方々がいろいろな面で支えてくださったおかげであることは言うまでもありません。本当にありがとうございました。
レポート大阪編は以上です!あらためて、インターンに参加していただきありがとうございました。引き続き、今後のnoteもお楽しみに。
この記事が気に入ったらサポートをしてみませんか?