Douglas Hofstadter의 Copycat 알고리즘 구현입니다. Copycat 알고리즘은 Wikipedia에 설명되어 있으며 해당 페이지에는 더 자세히 읽을 수 있는 많은 링크가 있습니다. 파글렉산드리아도 참조하세요.
이 구현은 Scott Boland의 Java 구현을 복사한 것입니다. 원래 Java에서 Python으로의 번역 작업은 J Alan Brogan(GitHub의 @jalanb)이 수행했습니다. Java 버전에는 원래 Lisp와 유사한 GUI가 있습니다. 이 Python 버전에는 GUI 코드가 내장되어 있지 않지만 더 큰 GUI 프로그램에 통합될 수 있습니다.
J. Alan Brogan은 다음과 같이 썼습니다.
Java 구현을 쉽게 이해할 수 없는 경우에는 LISP 구현에서 아이디어를 얻었거나 Melanie Mitchell의 책 "Analogy-Making as Perception"에서 직접 아이디어를 얻었습니다.
저장소를 로컬로 복제하려면 다음 명령을 실행하세요.
$ git clone https://github.com/fargonauts/copycat.git
$ cd copycat/copycat
$ python main.py abc abd ppqqrr --iterations 10
스크립트는 3개 또는 4개의 인수를 사용합니다. 처음 두 개는 "abc" 및 "abd"와 같이 약간의 변경이 있는 문자열 쌍입니다. 세 번째는 스크립트가 유사하게 변경하려고 시도해야 하는 문자열입니다. 네 번째(기본값은 "1")는 반복 횟수입니다.
이는 다음과 같은 출력을 생성할 수 있습니다.
ppqqss: 6 (avg time 869.0, avg temp 23.4)
ppqqrs: 4 (avg time 439.0, avg temp 37.3)
첫 번째 숫자는 Copycat이 해당 문자열을 답변으로 선택한 횟수를 나타냅니다. 높을수록 "더 분명함"을 의미합니다. 마지막 숫자는 작업 공간의 평균 최종 온도를 나타냅니다. Lower는 "더 우아함"을 의미합니다.
Python 모듈을 설치하고 시작하려면 다음 명령을 실행하세요.
$ pip install -e git+git://github.com/fargonauts/copycat.git#egg=copycat
$ python
>>> from copycat import Copycat
>>> Copycat().run('abc', 'abd', 'ppqqrr', 10)
{'ppqqrs': {'count': 4, 'avgtime': 439, 'avgtemp': 37.3}, 'ppqqss': {'count': 6, 'avgtime': 869, 'avgtemp': 23.4}}
run
결과는 위의 main.py
에서 인쇄한 것과 동일한 정보를 포함하는 사전입니다.