当社が使えるツールセットはそれほど多くはありません。それでも、既存の優れたツールセットを活用し、問題解決に必要なコードは最小限に抑える、つまり、Simple is the Best. を実践しています。
文書要約であれ、自然言語による指示(たとえばロボットへの指示)であれ、あるいは文の意図解析であれ、原文を解析し、句構造(意味の付与対象)をまずは生成します。昔は、そうした解析・生成を行うために自前でコードを書く必要がありました。しかし、現在は spaCy と呼ばれる便利なツールが存在します(なお日本語インタフェースは GiNZA )。
句構造に分解された複数の文、あるいは文書に対しトピックを簡単に推定するには Latent Dirichlet Allocation (LDA) がお手頃に使えますが、単語間、文間、文書間の関係をさらに精度高く推定するには、関係をいったんグラフ構造化し、計算するグラフ理論ライブラリ、たとえば NetworkX を利用しています。
自然言語が対象とする領域をさらに進めると、未知の語彙、あるいは語彙と語彙の関係を推論する(もっといえば、未知を、曖昧さ、あるいは多義性と再定義すれば、既知の知識から新しい知識を学習するとも読めます)ことがさらに重要になってきます。この既知の関係から未知の関係を推論する(グラフ頂点やグラフリンクの存在あるいは接続推定や、属性自身の推定)のに Graph Neural Network ( DGL )を活用しています。
なお、以上ライブラリはすべて Python をベースとし、実証確認用に Mathematica を利用しています。
最後に。全ドキュメントは、プログラムコードを含むものは Jupyter Notebook を HTML化したものを、ゼロから作成する場合は、いったん typora で用意し、HTML化した形で提供しています。