이 Rust 바이너리는 초기 '챗봇' 프로그램 ELIZA를 구현한 것입니다. 원래 프로그램은 1964년부터 1966년까지 MIT 인공 지능 연구소에서 Joseph Weizenbaum이 개발했습니다.
ELIZA는 패턴 매칭 과 사용자에게 프로그램 부분을 이해하고 있다는 착각을 주는 대체 방법론을 구현하여 대화를 시뮬레이션합니다. 입력을 처리하는 방법에 대한 지시문은 ELIZA가 스크립트 규칙을 따라 담론에 참여할 수 있도록 하는 '스크립트'(원래 MAD-Slip으로 작성되었으나 현재는 json으로 작성됨)에 의해 제공됩니다. Weizenbaum의 의도는 인간과 기계 사이의 의사소통이 피상적이라는 것을 보여주는 것이었습니다. 가장 유명한 스크립트인 DOCTOR는 Rogerian 심리치료사를 시뮬레이션합니다.
Weizenbaum, J. (1996), ELIZA - 인간과 기계 사이의 자연어 통신 연구를 위한 컴퓨터 프로그램 , ACM 통신, vol 9, issue 1
이 Rust 바이너리를 설치하려면 소스나 crates.io에서 설치할 수 있습니다. 두 경우 모두 시스템에 Rust 컴파일러와 카고가 설치되어 있어야 합니다.
crates.io에서 eliza
설치하는 것은 화물을 사용하면 매우 간단합니다.
user@foo(~)$ cargo install eliza
이 프로젝트를 포크하고 로컬 머신에 복제한 후 프로젝트 디렉터리로 이동하여 다음을 실행합니다.
user@foo(eliza-rs)$ cargo build
ELIZA가 예상대로 작동하는지 확인하기 위해 선택적으로 단위 테스트를 실행할 수도 있습니다.
user@foo(eliza-rs)$ cargo test
ELIZA 세션을 시작하려면 바이너리에 ELIZA 스크립트 경로를 제공해야 합니다. 이 스크립트는 json
파일 형식을 취합니다. 소스에서 설치했고 유명한 DOCTOR 프로그램을 실행하고 싶다고 가정하면 프로젝트 루트에서 실행하는 명령은 다음과 유사합니다.
user@foo(eliza-rs)$ cargo run scripts/doctor.json
...
대신 crates.io에서 설치한 경우 doctor.json
의 위치가 달라집니다. 편의상 나는 doctor.json
스크립트를 crates.io의 eliza 바이너리와 함께 묶기로 결정했습니다. 각 사용자마다 크레이트 레지스트리 내에서 해당 위치가 약간씩 다르기 때문에 실행하기 전에 더 기억하기 쉬운 위치로 옮기는 것이 좋습니다.
user@foo(~)$ cp .cargo/registry/src/[some_hash]/eliza-[ver]/scripts/doctor.json .
user@foo(~)$ eliza doctor.json
...
카고로 Eliza를 시작한 후 세션 종료
ELIZA 디자인 방법론의 아름다움은 프로그래머와 극작가의 역할이 분리되어 있다는 것을 의미합니다. ELIZA의 중요한 속성은 스크립트가 데이터이며 프로그램 자체의 일부가 아니라는 것입니다. 따라서 ELIZA는 특정 인식 패턴이나 응답 집합에 국한되지 않으며 실제로 특정 언어에도 국한되지 않습니다.
따라서 기여자는 원래 doctor.json
스크립트를 개선하거나 처음부터 완전히 자신만의 스크립트를 만들기로 결정할 수 있습니다. 깔끔한 것을 만들기 시작하는 데 필요한 것이 얼마나 적은지 보여주기 위해 해적 스크립트의 간단한 예가 포함되었습니다.
스크립트 구조에 대한 자세한 내용은 doc.rs의 script
모듈 문서에서 찾을 수 있습니다.
ELIZA의 다소 결정적인 특성으로 인해 단위 테스트를 작성하여 스크립트 규칙을 평가할 수 있습니다. 예를 들어, tests/conversation_test.rs
에 다음을 추가할 수 있습니다.
# [ test ]
fn your_test ( ) {
let mut e = Eliza :: new ( "scripts/your_script.json" ) . unwrap ( ) ;
assert_eq ! ( "bar" , e.respond ( "foo" ) ) ;
}
여기서 'foo'는 ELIZA에 대한 사용자 입력이고 'bar'는 응답입니다.
ELIZA가 로깅 출력을 생성한다는 점에 유의하는 것도 중요합니다. 프로그램 실행 중에 이러한 로그를 관찰하려면 RUST_LOG=eliza
환경 변수를 사용하여 바이너리를 시작하십시오.