측면 기반 감정 분석을위한 관계형 그래프주의 네트워크

[标题]
《측면 기반 감성 분석을위한 관계형 그래프주의 네트워크》

[ 코드 주소 ]
https://github.com/shenwzh3/RGAT-ABSA

[ 지식 보유 ]

1. 배경 및 개요

1.1 관련 연구

"훌륭한 음식이지만 서비스가 두려웠다"라는 문장에서 "음식"과 "서비스"는 측면이고 "위대한"과 "두려운"은 의견 단어입니다. 두 가지를 연결하는 방법이 작업의 핵심입니다.

1.2 기여 포인트

  • "작업 관련 문법 구조"가 GNN 문제를 해결할 수 있음을 발견하고 새로운 측면 지향 종속성 트리 구조를 제안했습니다 (3 단계).
    • 외부 파서를 사용하여 종속성 트리 가져 오기
    • 목표 측면을 루트로 취하십시오.
    • 트리를 정리하고 측면에 직접 의존하는 가장자리 만 유지합니다.
  • 종속성 트리 인코딩을위한 GAT 제안

1.3 관련 작업

  • 주의 메커니즘
    "면이 너무 맛 있었지만 야채가 끔찍하다"는 문장의 경우 끔찍한 의견이 맛보다면의 측면에 가까워 무게가 커지고 오류가 발생합니다.
  • 손으로 만든 구문 규칙
    에는 다양한 제한이 적용됩니다.
  • 종속성 기반 구문 분석 트리
    [주어진 구문 분석 트리의 경우]는 순환 신경망을 사용하여 리프에서 루트까지 전체 종속성 트리를 인코딩하거나주의 가중치 감소를 위해 내부 노드 간의 문장을 계산합니다.
  • GNN
    은 GNN을 사용하여 종속성 트리에서 학습하여 다음과 같은 세 가지 단점이 있음을 보여줍니다. 전체 트리를 인코딩 할 필요가 없습니다. 3. 인코딩 프로세스가 트리에 종속되어있어 최적화 과정에서 배치 처리가 불편합니다 !!!

둘째, 모델

2.1주의 또는 구문

여기에 사진 설명 삽입
위의 그림에서 볼 수 있듯이 어텐션 기반 시퀀스 모델은 (b)에서 높은 가중치를 "like"로 잘못 지정하고, ©에서는 "dried but"에 높은 가중치를 잘못 지정합니다. 그리고 문장의 문법적 구조에 직접 기반을두면 문제가 해결됩니다.

2.2 측면 방향의 종속성 트리

여기에 사진 설명 삽입
여기에 사진 설명 삽입
대략 네 단계로 나뉩니다.

  • 외부 종속성 파서를 사용하여 종속성 트리 가져 오기
  • 대상 측면을 루트로 사용
  • 원래 단어 루트에 연결된 모든 가장자리를 유지합니다 (위 그림에서 [노이즈 레벨] 범위 일 수도 있음).
  • 루트에 연결되지 않은 모든 모서리를 버립니다.

내가 이해하지 못하는 두 가지 :

  • 변형 된 트리에서 "the"와 "unbearable"은 "noise level"방향에 있습니다.
  • "소음 수준"은 "이었다"거리

주의해야 할 두 가지 사항 :

  • 여러 측면의 문장의 경우 별도로 트리 생성
  • distance = ∞ (거리> 4 인 경우)

2.3 GAT (Graph Attention Network)

여기에 사진 설명 삽입
주의는 내적을 의미합니다.
GAT는 종속 경로를 따라 인접 노드를 집계하지만 종속성 자체를 고려하지 않습니다.

2.4 RGAT (Relational Graph Attention Network)

여기에 사진 설명 삽입
추가 관계형 헤드가 추가됩니다.

2.5 기차 개체

여기에 사진 설명 삽입
여기에 사진 설명 삽입
hal h_a ^ l h리터l 레벨에서 R-GAT의 aspect node의 출력입니다.

셋, 실험 및 평가

  • Biaffine 파서 사용
  • 300 차원 종속성 관계 임베딩
  • 단어 삽입은 300 차원 장갑입니다.
    여기에 사진 설명 삽입

4. 결론 및 개인 요약

잘 이해하지 못한다

다섯, 개인적인 참조

https://www.zhihu.com/question/54504471/answer/611222866
https://www.zhihu.com/question/275866887

여섯, 버트

bert를 사용하면 단어가 하위 단어로 토큰 화되므로 단어를 포함하는 방법은 무엇입니까?

feature = torch.stack([torch.index_select(f, 0, w_i)
                               for f, w_i in zip(feature_output, word_indexer)])

이 기사의 방법은 하위 단어 세그먼트의 첫 번째 하위 단어의 벡터를 단어의 벡터 표현으로 사용하는 것입니다.

추천

출처blog.csdn.net/jokerxsy/article/details/113742351