LoginSignup
0
0

More than 1 year has passed since last update.

JavaでAIMLのプログラムを実行するための備忘録

Last updated at Posted at 2021-07-07

AIチャット

JavaでAIMLのプログラムを実行して、対話ができるようにするための備忘録です。

ライブラリはGoldRenardのProgram-JBを利用しています。

※ これはAIML2.0リファレンス実装です。AIMLは、チャットボットや、ALICE、Mitsuku、English Tutor、The Professor、SUPERなどのモバイル仮想アシスタントを作成するために広く採用されている標準です。

使い方

Mavenの利用ができます。

<dependency>
    <groupId>org.goldrenard</groupId>
    <artifactId>jb</artifactId>
    <version>1.0.13</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/jb-1.0.13.jar</systemPath>
</dependency>
<dependency>
    <groupId>net.reduls.sanmoku</groupId>
    <artifactId>sanmoku</artifactId>
    <version>0.0.5</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/sanmoku-0.0.5.jar</systemPath>
</dependency>
<dependency>
    <groupId>net.reduls.sanmoku</groupId>
    <artifactId>sanmoku-feature-ex</artifactId>
    <version>0.0.1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/sanmoku-feature-ex-0.0.1.jar</systemPath>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.31</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.31</version>
</dependency>

2021/12/18 更新

Program-JBについては、JCenterのリポジトリで公開されていましたが、2022年2月1日で廃止になります。
その為、JCenterで公開されていたJarをローカルに移動しています。

日本語での実装方法

ベースは英語を対象に作られているため、日本語で利用するためには設定が必要になります。

final var defaultResponse = "私にはその答えがありません。";
final var errorResponse = "私の脳に何か問題があります。";
final var scheduleError = "そのイベントをスケジュールできません。";
final var systemFailed = "システムコマンドの実行に失敗しました。";
final var templateFailed = "テンプレートが失敗しました。";
final var tooMuchRecursion = "AIMLの再帰が多すぎます。";
final var tooMuchLooping = "AIMLのループが多すぎます。";

final var language = LanguageConfiguration.builder()
        .defaultResponse(defaultResponse)
        .errorResponse(errorResponse)
        .scheduleError(scheduleError)
        .systemFailed(systemFailed)
        .templateFailed(templateFailed)
        .tooMuchRecursion(tooMuchRecursion)
        .tooMuchLooping(tooMuchLooping).build();

final var bot = new Bot(BotConfiguration.builder()
        .name("alice")
        .path("src/main/resources")
        .jpTokenize(true)
        .language(language)
        .build());

final var chatSession = new Chat(bot);

final var answer = chatSession.multisentenceRespond(text);
System.out.println(answer);

AIML2.0リファレンス

最後に

実際に試してみたソースはGitHubに置いてあります。

こちらの記事を参考にしています。
https://vaadin.com/blog/building-a-chatbot-in-java

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0