>  기사  >  기술 주변기기  >  CNN 기반의 새로운 단어 발견 알고리즘

CNN 기반의 새로운 단어 발견 알고리즘

WBOY
WBOY앞으로
2023-04-11 23:01:011630검색

​저자 | 씨트립 수석 R&D 매니저인 mczhao는 자연어 처리 기술 분야에 주력하고 있습니다.

개요

소비자 핫스팟과 새로운 인터넷 유명인 밈이 지속적으로 등장하면서 이전에는 볼 수 없었던 일부 단어가 전자상거래 플랫폼의 NLP 작업에 자주 등장합니다. 이러한 단어는 시스템의 기존 어휘에는 없으며 "미등록 단어"라고 합니다.

한편으로는 어휘집에 단어가 부족하면 일부 어휘 기반 단어 분할기의 단어 분할 품질에 영향을 미치며, 이는 텍스트 리콜 및 강조 표시 프롬프트의 품질, 즉 사용자 텍스트 검색의 정확성에 간접적으로 영향을 미칩니다. 그리고 검색 결과의 품질.

한편, 주류 NLP 딥러닝 알고리즘 BERT/Transformer 등에서는 중국어를 처리할 때 단어 벡터 대신 단어 벡터를 사용하는 경우가 많습니다. 이론상으로는 단어 벡터를 사용하는 것이 효과가 더 좋아야 하지만 미등록 단어로 인해 실제로는 단어 벡터를 사용하는 것이 효과가 더 좋습니다. 어휘가 더 완전하다면 단어 벡터를 사용하는 것보다 단어 벡터를 사용하는 효과가 더 좋습니다.

결론적으로 새로운 단어 발견은 우리가 지금 당장 해결해야 할 문제입니다.

1. 전통적인 비지도 방법

업계에는 이미 중국어 신어 발견 문제에 대한 비교적 성숙한 솔루션이 있습니다. 입력은 일부 말뭉치이며 이러한 텍스트를 NGram으로 분할한 후 후보 세그먼트가 생성됩니다. 이러한 조각의 일부 통계적 특성을 계산한 다음 이 조각이 이러한 특성을 기반으로 한 단어인지 여부를 결정합니다.

업계의 주류 접근 방식은 좌우 인접 캐릭터의 인기도, 응집력, 풍부함이라는 세 가지 지표를 세고 관찰하는 것입니다. 인터넷에는 이 세 가지 지표를 설명하는 기사가 많이 있습니다. 자세한 내용은 Hello NLP와 Smooth NLP의 두 가지 새로운 단어 검색 기사를 참조하세요.

1.1 인기

빈도를 사용하여 인기를 표현하세요. 모든 말뭉치에서 모든 조각의 발생 횟수를 세어 보면 빈도가 높은 조각이 한 단어인 경우가 많습니다.

1.2 응집력

점 상호 정보를 사용하여 응집력 측정:

CNN 기반의 새로운 단어 발견 알고리즘

예를 들어 Hanting이 단어인지 여부를 확인합니다. log(P("Hanting") /P("汉")P("법원")). 한팅이 단어가 될 확률은 '한팅'의 인기도에 정비례하고, '한'과 '팅'이라는 단어의 인기도에 반비례한다. 예를 들어 한자에서 가장 흔한 문자인 "적"은 어떤 한자가 "적"과 일치할 확률이 매우 높지만 "x of" 또는 "적x"를 의미하지는 않습니다. 여기서는 '적'이라는 단어의 인기가 억제적인 역할을 합니다.

1.3 왼쪽 및 오른쪽 이웃 문자 풍부함

왼쪽 및 오른쪽 이웃 엔트로피는 왼쪽 및 오른쪽 문자의 풍부함을 나타냅니다. 왼쪽 및 오른쪽 인접 엔트로피는 후보 단어 조각의 왼쪽 또는 오른쪽에 나타나는 단어 분포의 무작위성입니다. 왼쪽 엔트로피와 오른쪽 엔트로피를 분리하거나 두 엔트로피를 하나의 표시기로 결합할 수 있습니다.

CNN 기반의 새로운 단어 발견 알고리즘

예를 들어 '샹그릴라' 세그먼트의 인기도와 응집력이 매우 높고, 해당 하위 세그먼트 '샹그릴라'의 인기도와 응집력도 매우 높지만, 왜냐하면 "Shangri-La"는 대부분의 경우 "里" 뒤에 "拉"라는 단어가 나타나기 때문입니다. 오른쪽 이웃 엔트로피가 매우 낮아 단어 형성을 방해하는 "shangri" 세 글자는 단어를 형성할 수 없다고 판단할 수 있습니다. 홀로.

2. 기존 방법의 한계

기존 방법의 문제점은 임계값 매개변수를 수동으로 설정해야 한다는 것입니다. NLP 전문가는 현재 말뭉치에서 조각의 확률 분포를 이해한 후 이러한 지표를 공식을 통해 결합하거나 독립적으로 사용하고 이를 판단 기준으로 임계값을 설정합니다. 이 표준을 사용한 판단 결과도 높은 정확도를 얻을 수 있습니다.

그러나 확률 분포나 단어 빈도는 정적이지 않습니다. 말뭉치가 점점 더 풍부해지거나 말뭉치의 가중 인기도(보통 해당 제품 인기도)가 변동함에 따라 공식의 매개변수와 임계값은 전문가가 설정합니다. 또한 지속적인 조정이 필요합니다. 이는 많은 인력을 낭비하고 인공 지능 엔지니어를 단순한 조정자로 만듭니다.

3. 딥러닝 기반 새로운 단어 발견

3.1 단어 빈도 확률 분포 차트

위에서 언급한 업계 기존 알고리즘의 세 가지 지표는 단 하나의 기본 소스 특성, 즉 단어를 가지고 있습니다. 빈도. 통계 방법에서는 일반적으로 일부 단순하고 핵심적인 통계가 히스토그램, 상자 도표 등과 같은 그림 형식으로 표시됩니다. 모델 개입이 없더라도 사람들은 한눈에 올바른 결정을 내릴 수 있습니다. 말뭉치를 길이가 제한된 모든 조각으로 자르고 조각의 단어 빈도를 0-255로 정규화하여 2차원 행렬로 매핑할 수 있습니다. 행은 시작 문자를 나타내고 열은 1픽셀을 나타냅니다. 는 조각이고, 픽셀의 밝기는 후보 단어 조각의 인기도입니다.

CNN 기반의 새로운 단어 발견 알고리즘

위 그림은 "푸동 공항 라마다 호텔"이라는 짧은 문장의 단어 빈도 확률 분포도입니다. 우리는 육안으로 더 밝은 이등변 직각 삼각형 블록을 대략적으로 구별할 수 있다는 사실에 놀랐습니다. 예: "푸동", "푸동 공항", "공항", "라마다 호텔" 등 이 블록은 해당 조각이 우리에게 필요한 단어인지 결정할 수 있습니다.

3.2 고전적인 이미지 분할 알고리즘

단어 빈도 확률 분포 맵을 관찰하면 짧은 문장 분할 문제를 이미지 분할 문제로 변환할 수 있습니다. 초기 이미지 분할 알고리즘은 위에서 언급한 새로운 단어 발견 알고리즘과 유사하며, 기술이 발전함에 따라 현재 딥러닝 알고리즘이 일반적으로 사용되고 있으며, 그 중 더 유명한 것은 임계값 기반 알고리즘입니다. U-Net 이미지 분할 알고리즘.

CNN 기반의 새로운 단어 발견 알고리즘

U-Net의 전반부는 Convolutional Downsampling을 사용하여 서로 다른 세분성의 여러 레이어의 특징을 추출하고, 후반부는 업샘플링하여 이러한 특징을 동일한 해상도로 연결한 후 최종적으로 Full Connection Layer를 통해 +Softmax는 픽셀 수준 분류 결과를 얻습니다.

3.3 컨벌루션 네트워크 기반의 새로운 단어 발견 알고리즘

단어 빈도 확률 분포 맵의 분할은 그래프의 분할과 유사하며 두 부분은 인접한 위치와 유사한 회색 수준으로 잘립니다. 따라서 짧은 문장을 분할하려면 이미지 분할 알고리즘을 참조하고 완전 합성곱 네트워크를 사용할 수도 있습니다. 컨볼루션을 사용하는 이유는 짧은 문장을 자르든 이미지를 자르든 지역 정보, 즉 절단 가장자리에 가까운 픽셀에 더 많은 주의를 기울이기 때문입니다. 다층 네트워크를 사용하는 이유는 다층 풀링이 다양한 계층 특징에 대한 임계값 판단을 보여줄 수 있기 때문입니다. 예를 들어 지도 지형을 잘라낼 때 경사(1차 도함수/차이)뿐만 아니라 기울기 변화(2차 미분/차), 이 둘은 각각 임계값을 가지며 조합 방법은 단순한 선형 가중치가 아닌 직렬 네트워크입니다.

새로운 단어 발견 시나리오를 위해 다음 알고리즘을 설계합니다.

  • 먼저 짧은 문장의 단어 빈도 분포 맵을 0에서 24x24로 채웁니다.
  • 먼저 두 개의 3x3 컨볼루션 레이어가 있고 출력 4가 있습니다. ;
  • 두 개의 컨볼루션 레이어를 연결하고, 또 다른 3x3 컨볼루션을 수행하고, 단일 채널을 출력합니다.
  • 손실 함수는 로지스틱=T를 사용하므로 마지막 레이어는 소프트맥스 출력 없이 분류에 사용할 수 있습니다.

CNN 기반의 새로운 단어 발견 알고리즘

U-Net과 비교하면 다음과 같은 차이점이 있습니다.

1) 다운샘플링과 업샘플링을 포기하며, 이유는 일반적으로 분할에 사용되는 짧은 문장이 비교적 짧기 때문입니다. 및 단어 빈도 분포 이미지의 해상도가 높지 않아 모델이 단순화되었습니다.

2) U-Net에는 3개의 카테고리(블록 1, 블록 2, on the edge)가 있습니다. 이 알고리즘에는 2개의 카테고리(픽셀이 단어인지 여부)만 필요합니다. 따라서 최종 출력 결과도 다릅니다. U-Net은 일부 연속 블록과 구분선을 출력하며 특정 지점이 양수인지 여부만 필요합니다.

아래 그림은 모델 학습 후 모델이 예측한 결과입니다. 출력 결과에서 "Shanghai"(상단 행 및 바다 기둥), "Hongqiao" 및 "Business District"라는 세 단어에 해당하는 픽셀이 식별되었음을 알 수 있습니다.

CNN 기반의 새로운 단어 발견 알고리즘

아래 그림과 같이 학습된 모델을 사용하여 씨트립 랜드마크 데이터베이스에 랜드마크 이름을 입력하면 일부 새로운 단어가 자동으로 분할되어 발견될 수 있습니다. 괜찮다.

CNN 기반의 새로운 단어 발견 알고리즘

이러한 단어를 동의어 사전으로 가져온 후에는 검색 단어 분할의 정확도가 높아지고 단어 분할 결과의 동의어 사전 적용 범위가 늘어납니다. 검색어 분할은 일반적으로 과잉 회상하고 누락된 회상을 제거하는 경향이 있기 때문에 업계에서는 단어 분할을 통해 회상하는 보다 급진적인 접근 방식을 취하고 있으며 일반적으로 정확도는 후속 정렬을 통해 해결됩니다. 따라서 단어분할의 정확도는 향상되었으나, 사용자의 눈에는 검색결과의 정확도가 크게 향상되지 않은 것으로 보인다. 그러나 단어 분할 오류로 인한 잘못된 강조 표시 문제 중 일부를 해결할 수 있습니다.

4. 모델 내부 분석

모델이 어떻게 작동하는지 살펴보고 싶다면 중간 계층에서 컨볼루션 커널을 볼 수 있습니다. 먼저 모델의 컨볼루션 계층에 있는 컨볼루션 커널 수를 4에서 1로 단순화합니다. 훈련 후 TensorFlow의 API: model.get_layer('Conv2').__dict__를 통해 중간 계층을 봅니다. Conv2 레이어의 컨볼루션 커널은 다음과 같습니다.

CNN 기반의 새로운 단어 발견 알고리즘

첫 번째와 두 번째 행이 모델에 반대 효과를 갖는 것을 볼 수 있습니다. 이는 픽셀의 이전 행에서 현재 행을 뺀 것에 해당합니다. 행 차이(가중치 있음), 회색조 차이가 더 크면 이 픽셀이 나타내는 문자열이 단어일 가능성이 더 높습니다.

첫 번째 행과 두 번째 열의 절대값 0.04505884가 상대적으로 작은 것을 확인할 수 있는데, 이는 아마도 첫 번째 행의 양수 매개변수에서 두 번째 행을 뺀 값과 세 번째 열의 음수 매개변수에서 두 번째 행을 뺀 값 때문일 것입니다. 열은 서로를 취소합니다.

5. 최적화 공간

이 기사에서는 매우 간단한 구조의 완전 컨벌루션 네트워크 모델을 설명하지만 여전히 개선의 여지가 많습니다.

먼저 기능 선택 범위를 확장합니다. 예를 들어 이 글의 입력 특성은 단어 빈도뿐입니다. 입력 특성에 왼쪽 및 오른쪽 인접 엔트로피도 포함되면 분할 효과가 더 정확해집니다.

두 번째는 네트워크의 깊이를 높이는 것입니다. 모델 분석을 통해 컨볼루션의 첫 번째 레이어는 주로 0으로 채워진 픽셀로 인해 발생하는 경우를 처리하는 것임을 알았습니다. 실제로 실제 열에 초점을 맞춘 컨볼루션 레이어는 단 하나뿐입니다. 차이 결과의 경우 현재 픽셀 앞과 뒤의 두 번째 행과 열은 고려되지 않습니다. 컨볼루션 커널 크기를 적절하게 확장하거나 네트워크를 심화시켜 모델의 시야를 더 크게 만들 수 있습니다. 그러나 네트워크가 심화되면 과적합 문제도 발생합니다.

마지막으로 이 모델은 단어 분할 효과를 높이기 위해 어휘를 보완하는 데 사용될 수 있을 뿐만 아니라 단어 분할을 위한 참조로도 직접 사용할 수 있습니다. 이 모델은 후보 단어 회상과 단어 모두에 적용할 수 있습니다. 단어 분할 프로세스의 분할 경로 채점 단계 모델의 예측 결과입니다.

위 내용은 CNN 기반의 새로운 단어 발견 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제