영어 |
오픈 도메인 질문 답변을 위한 생성 모델을 통한 구문 검색 활용
검색오픈 도메인 질문 답변을 위한 촘촘한 구문 검색
AP스케줄러
배포 및 실행이 가능한 전체 프로세스 대화 시스템
TensorFlow 모델
변신 로봇
Seq2Seq
SMN 검색 모델
예약된 샘플링 변환기
GPT2
작업 대화
파이토치 모델
변신 로봇
Seq2Seq
이 프로젝트는 온라인으로 배포할 수 있는 대화 시스템을 구축하는 것을 목표로 하며, 관련 모델을 재현합니다: nlp-paper. 구현하기 위해 프로젝트에 사용됩니다.
웨어하우스의 데이터 디렉토리에는 시스템 실행을 확인하는 데 사용할 수 있는 각 말뭉치에 대한 장난감 데이터가 포함되어 있습니다. 여기에서 전체 말뭉치와 종이를 볼 수 있습니다.
LCCC
크로스WOZ
작은 노란 닭
두반
우분투
웨이보
칭윈
티에바
Linux는 run.sh를 실행하고, 프로젝트 디렉토리 검사는 check.sh(또는 check.py)를 실행합니다.
루트 디렉터리의 Actuator.py는 일반 실행 입구로, 다음 명령 형식을 호출하여 실행됩니다. (실행 전에 요구사항.txt가 설치되어 있음에 유의하세요.)
python actuator.py --version [Options] --model [Options] ...
루트 디렉토리의 Actuator.py를 통해 실행할 때 --version
, --model
및 --act
필수 매개변수이며, 그 중 --version
은 코드 버전 tf/torch
--model
해당 모델 transformer/smn...
입니다. transformer/smn...
, act는 실행 모드입니다(기본적으로 pre_treat
모드). 자세한 명령 매개변수는 각 모델의 actuator.py
또는 config 디렉터리의 해당 json 구성 파일을 참조하세요.
--act
실행 모드는 다음과 같이 설명됩니다.
pre_treat 모드는 텍스트 전처리 모드입니다. 단어 분할 결과 세트와 사전이 없으면 먼저 pre_treat 모드를 실행해야 합니다.
훈련 모드는 훈련 모드입니다
평가 모드는 지표 평가 모드입니다.
채팅 모드는 대화 모드입니다. 채팅 모드 실행 시 ESC를 입력하면 대화가 종료됩니다.
일반적인 실행 순서는 pre_treat->train->evaluate->chat입니다.
각 모델 아래에는 실행 및 개발을 위해 외부 결합을 우회할 수 있는 별도의 Actuator.py가 있습니다. 그러나 실행 중에 프로젝트 디렉터리 경로를 조정하는 데 주의하세요.
대화 중에 관련 모델의 핵심 코드가 향후 캡슐화 및 패키징을 용이하게 하기 위해 배치됩니다.
체크포인트는 체크포인트 위치를 저장합니다.
config는 구성 파일이 저장되는 디렉터리입니다.
data는 원본 데이터의 저장 위치이며 동시에 모델 실행 중에 생성된 중간 데이터 파일도 이 디렉터리에 저장됩니다.
모델은 모델용 디렉토리를 저장합니다.
tensorflow와 pytorch는 각 모듈의 모델 구축과 실행을 위한 핵심 코드를 배치합니다.
preprocess_corpus.py는 단일 라운드 및 다중 라운드 대화에서 각 말뭉치를 처리하고 통합 인터페이스 호출을 표준화하는 말뭉치 처리 스크립트입니다.
read_data.py는 load_dataset.py의 데이터 로딩 형식 호출에 사용됩니다.
metrics.py는 다양한 지표에 대한 스크립트입니다.
tools.py는 단어 분리기, 로그 작업, 체크포인트 저장/로드 스크립트 등을 포함하는 도구 스크립트입니다.
모델 문서 읽기 노트를 포함하여 문서 아래에 문서 지침을 배치하세요.
서버(모바일 단말) 배포 스크립트에는 docker(모바일)가 사용됩니다.
Server는 UI 서비스 인터페이스입니다. 플라스크를 사용하여 해당 server.py를 실행하면 됩니다.
tools은 예약된 도구 디렉토리입니다.
Actuator.py (run.sh)는 전체 Actuator 입구입니다.
check.py(check.sh)는 프로젝트 디렉터리 확인 스크립트입니다.
SMN 검색 대화 시스템을 사용하기 전에 Solr 환경을 준비해야 합니다. Solr 배포 시스템 환경에는 Linux가 권장됩니다. 도구는 컨테이너 배포(Docker 권장)를 사용하는 것이 좋습니다.
솔르(8.6.3)
파이솔러(3.9.0)
자세한 내용은 아래에 간략한 설명이 제공됩니다. 검색 대화 시스템의 후보 응답 검색 가져오기 - pysolr를 사용하여 Solr 호출 문서를 참조하세요.
Solr가 온라인에서 안정적으로 실행되고 후속 유지 관리가 용이하도록 하려면 DockerFile 획득 주소: docker-solr를 사용하여 배포하세요.
테스트 모델 용도로만 다음과 같은 간단한 빌드 지침을 사용할 수 있습니다.
docker pull solr:8.6.3 # 然后启动solr docker run -itd --name solr -p 8983:8983 solr:8.6.3 # 然后创建core核心选择器,这里取名smn(可选) docker exec -it --user=solr solr bin/solr create_core -c smn
Solr의 단어 분할 도구에는 IK 분석기, Smartcn, Pinyin 단어 분할기 등이 있습니다. 해당 jar을 다운로드한 다음 Solr 핵심 구성 파일 관리 스키마에 구성을 추가해야 합니다.
특별 참고 사항 : TF-IDF를 사용하는 경우 관리 스키마에서도 유사성 구성을 활성화해야 합니다.
Solr를 온라인으로 배포한 후 Python에서 pysolr을 사용하여 연결하고 사용합니다.
pip install pysolr
인덱스 데이터를 추가하는 방법(일반적으로 보안 점검이 먼저 필요함)은 다음과 같습니다. 응답 데이터에 인덱스를 추가합니다. 응답은 [{},{},{},...] 형식의 json입니다. 응답 요구 사항에 따라 구성됩니다.
solr = pysolr.Solr(url=solr_server, always_commit=True, timeout=10) # 安全检查 solr.ping() solr.add(docs=responses)
쿼리 방법은 다음과 같습니다. TF-IDF를 사용하여 모든 문을 쿼리하려면 쿼리 문 방법은 다음과 같습니다.
{!func}sum(product(idf(utterance,key1),tf(utterance,key1),product(idf(utterance,key2),tf(utterance,key2),...)
사용하기 전에 Solr에 데이터를 추가해야 합니다. 이 SMN 모델에서 사용하려면 먼저 pre_treat 모드를 실행하면 됩니다.
주의가 필요한 전부입니다 | 읽기 노트: 집중적으로 읽을 가치가 있는 Transformer의 선구적인 작품, Ashish 외, 2017
순차 매칭 네트워크: 검색 기반 챗봇의 다중 턴 응답 선택을 위한 새로운 아키텍처 | 읽기 노트: SMN 검색 대화 모델, 정보의 다중 계층 및 다중 세분성 추출 |
신경 기계 번역 아키텍처에 대한 대규모 탐색 | 독서 노트: NMT 아키텍처 하이퍼파라미터를 예로 사용한 최초의 대규모 분석이 제시됩니다. 이 실험은 NMT 아키텍처 구축 및 확장에 대한 새로운 통찰력과 실용적인 제안을 제공합니다. 데니 외, 2017
Transformer에 대한 예약 샘플링 | 참고 사항: Transformer에 예약 샘플링 적용, Mihaylova 외, 2019
Apache 라이센스 버전 2.0에 따라 라이센스가 부여됩니다. 라이센스 사본.