중화사전망 - 서예자전 - 심도 있는 학습 기술을 이용하여 채팅 로봇의 언어 모델을 훈련시키는 방법

심도 있는 학습 기술을 이용하여 채팅 로봇의 언어 모델을 훈련시키는 방법

데이터 사전 처리

모델이 이야기 할 수있는 것은 선택한 코퍼스에 달려 있습니다. 이미 원본 채팅 데이터가 있는 경우 SQL 을 사용하여 키워드를 통해 일부 대화를 조회할 수 있습니다. 즉, 큰 라이브러리에서 작은 라이브러리를 선택하여 훈련시킬 수 있습니다. 일부 논문에서 볼 때, 많은 알고리즘들이 데이터 사전 처리 수준에 있다. 예를 들어, 큰 라이브러리에서 작은 라이브러리를 추출한 다음 융합하여 특색 있는 대화를 훈련시키는 대화 응답을 생성하는 매커니즘 감지 신경 기계가 도입되었습니다.

영어의 경우 NLTK 를 이해해야 합니다. nltk 는 코퍼스 로드, 코퍼스 표준화, 코퍼스 분류, 품사 태깅, 의미 추출 등의 기능을 제공합니다.

또 다른 강력한 도구 라이브러리는 CoreNLP 입니다. Corenlp 는 Stanford University 의 오픈 소스 도구로서 엔티티 표시, 의미 추출 및 다국어 지원 기능을 갖추고 있습니다.

다음은 두 가지 주요 내용입니다.

중국어 분사

현재 중국어 분사 SDK 가 많고 분사 알고리즘도 많다. 다른 SDK 의 성능을 비교하는 문장 들도 많다. 중국어 분사의 샘플 코드는 다음과 같습니다.

# 인코딩: utf8

''?

중국어가 있는 스플리터?

' 을 (를) 클릭합니다

수입 제패?

언어 id 가져오기

Def segment _ Chinese _ 문장 (문장):

' 을 (를) 클릭합니다

세그먼트 문장을 반환합니다.

' 을 (를) 클릭합니다

Seg _ list = jieba. cut(sentence, cut_all=False)

Seg_sentence = u ""입니다. 추가 (seg_list)

Seg_sentence.strip () 을 반환합니다. 인코딩 (utf8)

Def 프로시저 _ 문장 (문장):

' 을 (를) 클릭합니다

중국어 문장만 처리하다.

' 을 (를) 클릭합니다

Iflangid.classify (감정)], 질문과 답을 형성합니다. 그리고 [10, 1 1, 12] 에 대한 질문과 답변을 형성합니다.

훈련을 시작하다

Cp config.sample.ini config.ini # 키 수정?

파이썬 딥 QA 2/train.py?

Config.ini 는 config.sample.ini 에 따라 수정된 구성 파일입니다. 교육 시간은 epoch, 학습률, maxlength 및 대화 쌍의 수에 따라 달라집니다.

Deepqa2/train.py 약 100 줄, 데이터 사전 로드 완료, tensorflow 의 session, saver 및 writer 초기화, 뉴런 모델 초기화, epoch 에 따른 반복

세션은 자리 표시자, 변수, 셀, 레이어 및 출력으로 구성된 네트워크 다이어그램입니다.

Saver 는 모델을 저장하고 모델을 복구하는 데 사용할 수 있습니다. 모델은 변수를 인스턴스화하는 세션입니다.

Writer 는 개발자가 관심 있는 손실 fn 또는 기타 데이터를 볼 수 있는 수집기입니다. Writer 의 결과는 saver 에 의해 저장되고 tensorboard 에 의해 표시됩니다.

모형

모델 구성은 입력, 상태, softmax 및 출력을 고려해야 합니다.

손실 함수를 정의하고 AdamOptimizer 를 사용하여 반복합니다.

마지막으로 교육의 순환 부분을 참조하십시오.

훈련할 때마다 모델은? 저장 경로 아래에 컴퓨터의 호스트 이름과 타임 스탬프를 기준으로 폴더 이름을 생성합니다.

서비스를 제공하다

TensorFlow 에는 표준 서비스 모듈인 -tensorflow serving 이 제공됩니다. 그러나 오랫동안 배워서 일부러' C++ 정요' 를 보고 아직 다 읽지 못했다. 커뮤니티는 일반적으로 tensorflow 서비스가 학습과 사용이 쉽지 않다고 불평한다. 교육이 완료되면 다음 스크립트를 사용하여 서비스를 시작합니다. DeepQA2 의 서비스 부분은 여전히 TensorFlow 의 python API 를 호출합니다.

Cd deep QA 2/save/deep learning.cobra.vulcan.20170127./kloc-0

Cp db.sample.sqlite3 db.sqlite3?

Pythonmanage.py runserver 0.0.0.0: 8000?

실험

Post/API/v1/question http/1.1?

진행자: 127.0.0. 1:8000?

콘텐츠 유형: 응용 프로그램 /json?

라이센스: Basic YWRtaW46cGFzc3dvcmQxMjM=?

캐시 제어: 캐시 없음

{"메시지": "만나서 반가워요"}

응답?

{

Rc: 0,

메시지: "안녕하세요"

}

Serve 의 핵심 코드는 serve/API/chatbotmanager.py 에 있습니다.

스크립트 사용

Scripts/start_training.sh? 훈련을 시작하다

Scripts/start_tensorboard.sh? 서핑보드를 가동하다

Scripts/start_serving.sh? 서비스를 시작하다

모델 평가

현재 코드 서비스 용이성이 높기 때문에 DeepQA 프로젝트에서 재구성되어 데이터 사전 처리, 교육 및 서비스가 더욱 명확해졌습니다. Deep QA 2/ 모델에 몇 가지 새로운 변경 사항을 추가한 다음 train.py 및 chatbotmanager.py 에서 변경할 수 있습니다.

무엇을 개선해야 하는가?

A. 새 모델 /rnn2.py 를 만들고 dropout 을 사용합니다. 현재 Drop 은 DeepQA 에서 사용되고 있습니다.

B.tensorflow rc0. 12.x 는 seq2seq 네트워크를 제공하며 TF 버전으로 업데이트할 수 있습니다.

C. 융합 훈련. 현재 이 모델에는 라이브러리가 하나만 있습니다. 매커니즘이 신경 기계를 감지하는 것처럼 다양한 가중치의 큰 라이브러리와 작은 라이브러리를 지원하는 새로운 모델을 설계해야 합니까? 대화는 생성된 소개에 응답합니다.

D. 코드는 다중 시스템 다중 GPU 작업을 지원합니다.

E. 현재 훈련의 결과는 모두 QA 쌍이다. 한 질문에 여러 개의 답이 있을 수 있다.

F. 현재 정확도 테스트 방법은 없습니다. 한 가지 아이디어는 현재 정답만 있기 때문에 훈련에서 간섭 항목을 제공하는 것이다. 잘못된 답을 제공하면 (그리고 많을수록 좋음) recall_at_k 메서드를 사용하여 테스트할 수 있습니다.

내가 로봇 가족으로부터 배운 것은 너에게 유용하길 바란다.