Text Classification-Keras
이 코드 저장소는 FastText , TextCnn , Textrnn , TextBirnn , TextAttBirnn , Han , RCNN , RCNNVariant 등을 포함하여 Keras 프레임 워크를 사용하여 텍스트 분류를 위한 다양한 딥 러닝 모델을 구현합니다. 모델 구현 외에도 단순화 된 응용 프로그램이 포함됩니다.
안내
- 환경
- 용법
- 모델
- FastText
- TextCnn
- Textrnn
- TextBirnn
- TextAttBirnn
- 한
- RCNN
- rcnnvariant
- 계속하려면 ...
- 참조
환경
- 파이썬 3.7
- Numpy 1.17.2
- 텐서 플로 2.0.1
용법
모든 코드는 디렉토리 /model 에 있으며 각 종류의 모델에는 모델 및 응용 프로그램이 배치되는 해당 디렉토리가 있습니다.
예를 들어, FastText의 모델과 응용 프로그램은 /model/FastText 아래에 있으며 모델 부분은 fast_text.py 이며 응용 프로그램 부분은 main.py 입니다.
모델
1 FastText
FastText는 효율적인 텍스트 분류를위한 트릭 백에서 제안되었습니다.
1.1 종이의 설명

- 룩업 테이블을 사용하여 NGRAM의 가방은 단어 표현 에 대해 은밀합니다.
- 단어 표현은 텍스트 표현으로 평균화 되며, 이는 숨겨진 변수입니다.
- 텍스트 표현은 선형 분류기 에 공급됩니다.
- SoftMax 함수를 사용하여 사전 정의 된 클래스를 통해 확률 분포를 계산하십시오.
1.2 여기에서 구현
FastText의 네트워크 구조 :

2 TextCnn
TextCnn은 문장 분류를 위해 논문 Convolutional Neural Networks에서 제안되었습니다.
2.1 종이의 설명

- 정적 및 비 정적 채널 로 문장을 나타냅니다.
- 여러 필터 너비와 기능 맵으로 회피하십시오 .
- 최대 시간대 풀링을 사용하십시오.
- 드롭 아웃 과 SoftMax OUput과 함께 완전히 연결된 레이어를 사용하십시오.
2.2 구현
TextCnn의 네트워크 구조 :

3 Textrnn
Textrnn은 멀티 태스킹 학습으로 텍스트 분류를 위해 종이 재발 성 신경망에서 언급되었습니다.
3.1 종이의 설명

3.2 여기에서 구현
Textrnn의 네트워크 구조 :

4 TextBirnn
TextBirnn은 Textrnn을 기반으로 개선 된 모델입니다. 네트워크 구조의 RNN 층을 양방향 RNN 층으로 향상시킵니다. 전방 인코딩 정보뿐만 아니라 역 인코딩 정보를 고려할 수 있기를 바랍니다. 아직 관련 서류가 발견되지 않았습니다.
TextBirnn의 네트워크 구조 :

5 TextAttBirnn
TextAttBirnn은 TextBirnn을 기반으로주의 메커니즘을 도입하는 개선 된 모델입니다. 양방향 RNN 인코더에 의해 얻은 표현 벡터의 경우,이 모델은주의 메커니즘을 통해 의사 결정과 가장 관련이있는 정보에 초점을 맞출 수 있습니다. 주의 메커니즘은 공동으로 정렬하고 번역하는 법을 학습함으로써 논문 신경 기계 번역에서 처음 제안되었으며, 여기서주의 메커니즘의 구현은이 논문 피드 포워드 네트워크를 주목할 수 있습니다.
5.1 종이의 설명

주의를 기울인 논문 피드 포워드 네트워크에서는 일부 장기 메모리 문제를 해결할 수 있으며, 피드 포워드주의는 다음과 같이 단순화됩니다.

학습 가능한 함수 인 함수 a 는 피드 포워드 네트워크 로 인식됩니다. 이 제형에서, 상태 서열 h 의 적응 가중 평균을 계산함으로써 입력 시퀀스의 고정 길이 포함 c 생성하는 것으로주의를 기울일 수있다.
5.2 구현
주의 구현은 여기에 설명되지 않습니다. 소스 코드를 직접 참조하십시오.
TextAttBirnn의 네트워크 구조 :

6 한
Han은 문서 분류를위한 논문 계층 적주의 네트워크에서 제안되었습니다.
6.1 종이의 설명

- 단어 인코더 . 양방향 GRU 에 의한 인코딩, 주어진 단어에 대한 주석은 앞으로 숨겨진 상태와 뒤로 숨겨진 상태를 연결함으로써 얻어진다.
- 단어 관심 . 1 층 MLP 및 SoftMax 함수에 의해 이전 단어 주석에 비해 정규화 된 중요성 가중치를 계산할 수 있습니다. 그런 다음 문장 벡터를 가중치에 따라 단어 주석의 가중 합 으로 계산하십시오.
- 문장 인코더 . Word Encoder와 비슷한 방식으로 양방향 Gru를 사용하여 문장을 인코딩하여 문장에 대한 주석을 얻습니다.
- 문장 관심 . 단어 관심과 유사하게, 1 층 MLP 및 SoftMax 기능을 사용하여 문장 주석에 대한 가중치를 얻으십시오. 그런 다음 문서 벡터를 얻기 위해 가중치를 기준으로 문장 주석의 가중 합계를 계산하십시오.
- 문서 분류 . SoftMax 함수를 사용하여 모든 클래스의 확률을 계산하십시오.
6.2 여기에서 구현
여기에서주의를 기울이는 것은 FeedforwardAttention을 기반으로하며, 이는 TextAttBirnn의 관심과 동일합니다.
한의 네트워크 구조 :

임베딩, 양방향 RNN 및주의 레이어의 매개 변수는 시간 단계 차원에서 공유 될 것으로 예상되기 때문에 시간 분포 래퍼는 여기서 사용됩니다.
7 RCNN
RCNN은 텍스트 분류를 위해 종이 재발 성 컨볼 루션 신경 네트워크에서 제안되었습니다.
7.1 종이의 설명

- 단어 표현 학습 . RCNN은 양방향 반복 신경 네트워크 인 반복 구조를 사용하여 컨텍스트를 포착합니다. 그런 다음 단어와 그 맥락을 결합하여 단어를 제시하십시오. 표현에
tanh 활성화 핵과 함께 선형 변환을 적용하십시오. - 텍스트 표현 학습 . 단어의 모든 표현이 계산되면 전체 텍스트에서 가장 중요한 정보를 캡처하기 위해 요소 별 최대 냉각 층을 적용합니다. 마지막으로 선형 변환을 수행하고 SoftMax 기능을 적용하십시오.
7.2 여기에서 구현
RCNN의 네트워크 구조 :

8 rcnnvariant
rcnnvariant는 다음과 같은 개선 된 RCNN을 기반으로 한 개선 된 모델입니다. 아직 관련 서류가 발견되지 않았습니다.
- 세 입력은 단일 입력 으로 변경됩니다. 왼쪽 및 오른쪽 컨텍스트의 입력이 제거됩니다.
- 인코딩 컨텍스트를 위해 기존 RNN 대신 양방향 LSTM/GRU를 사용하십시오.
- 다 채널 CNN을 사용하여 시맨틱 벡터를 나타냅니다.
- TANH 활성화 계층을 Relu 활성화 층 으로 교체하십시오.
- 평균 풀링 과 맥스 풀링을 모두 사용하십시오.
rcnnvariant의 네트워크 구조 :

계속하려면 ...
참조
- 효율적인 텍스트 분류를위한 트릭 가방
- Keras 예제 IMDB FastText
- 문장 분류를위한 컨볼 루션 신경 네트워크
- Keras 예제 IMDB CNN
- 멀티 태스킹 학습을 통한 텍스트 분류를위한 반복 신경망
- 공동으로 조정하고 번역하는 법을 배우는 신경 기계 번역
- 주의를 기울인 피드 포워드 네트워크는 일부 장기 메모리 문제를 해결할 수 있습니다.
- cbaziotis의 관심
- 문서 분류를위한 계층 적주의 네트워크
- 리차드의 한
- 텍스트 분류를위한 반복 컨볼 루션 신경 네트워크
- AirAlcorn2의 RCNN