メインコンテンツへスキップ

チャットボット開発

2015


内部構造:NomNomのNLPとRDFシステムの技術的実装

インテリジェントなレシピチャットボットであるNomNomの開発を続ける中で、その実装の背後にある技術的詳細の一部を共有できることを嬉しく思います。NomNomの核心部分では、高度な自然言語処理(NLP)技術とRDFベースの堅牢な知識グラフを組み合わせて、シームレスで会話型のレシピ検索体験を提供しています。

NLPパイプライン:ユーザー入力から構造化クエリへ #

私たちのNLPパイプラインは、ユーザーの自然言語クエリを、RDF知識グラフに対して問い合わせるために使用できる構造化された表現に変換するように設計されています。以下が主要コンポーネントの内訳です:

  1. トークン化:ユーザー入力を個々のトークンに分解するために、PythonのNatural Language Toolkit(NLTK)を使用しています。このステップは、さらなる処理のために重要です。

  2. 品詞タグ付け:クエリ内の各単語の文法的役割を識別するために、NLTKの品詞タガーを適用します。これはユーザーのリクエストの構造を理解するのに役立ちます。

  3. 固有表現認識(NER):Stanford NERと料理ドメインに特化した追加の訓練データを使用して、カスタムNERモデルを開発しました。これにより、ユーザーのクエリ内の材料、調理方法、料理、その他の関連エンティティを識別できます。

  4. 依存関係解析:複雑なリクエストに特に有用なクエリの異なる部分間の関係を理解するために、Stanford Parserを使用しています。

  5. 意図分類:ユーザークエリをレシピ検索、栄養照会、調理技術の説明などの意図に分類するために、scikit-learnを使用したマルチクラス分類モデルを実装しました。

  6. クエリ生成:抽出されたエンティティ、識別された意図、解析された構造に基づいて、RDF知識グラフに対して実行できるSPARQLクエリを生成します。

RDF知識グラフ:NomNomの頭脳 #

私たちのRDF知識グラフはApache Jenaフレームワークを使用して構築および管理されています。この重要なコンポーネントの構造と実装方法は以下の通りです: