중화사전망 - 서예자전 - [수학의 미국 노트] 자연어 처리 부분 (1). 사마륨
[수학의 미국 노트] 자연어 처리 부분 (1). 사마륨
하지만 수학과 언어학의 관계는 크지 않은 것 같다. 오랫동안 수학은 주로 천문학과 역학에 사용되었다.
이 장에서는 정보화 시대의 발전을 되돌아보고 언어학이 어떻게 수학과 서서히 연계되어 있는지 살펴볼 것이다.
처음에는 인간이 소리를 이용하여 정보를 전파한다.
정보의 생성, 전송, 수신 및 피드백은 원칙적으로 최첨단 통신과 다르지 않습니다.
초기 인류는 전파해야 할 정보의 양이 많지 않았기 때문에 언어가 필요하지 않았다.
그러나 인류가 어느 정도 진보할 때 언어가 필요하다.
따라서 우리 조상은 대상, 수량, 동작 등 언어가 묘사한 것과 같은 요소를 추상화하여 오늘날의 어휘를 형성했습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 언어명언)
인류가 발전함에 따라, 너무 많은 언어와 단어가 있어서, 뇌는 그것들을 완전히 기억할 수 없다. 이때 정보를 기록하기 위해서는 문자가 필요하다.
문자 사용의 장점은 정보의 전달은 시간과 공간에 걸쳐 있을 수 있고, 두 사람은 같은 시간과 장소에서 만나지 않고도 정보를 교환할 수 있다는 것이다.
그럼 어떻게 단어를 만들까요? 가장 직접적인 방법은 묘사할 물체의 모양을 모방하는 것이다. 이것이 바로 상형문자다.
초기에는 상형 문자의 수가 문명이 기록한 정보의 양과 관련이 있었다. 즉, 이 문명에 대한 많은 정보를 나타내는 상형 문자가 많이 있었다.
하지만 정보가 늘어남에 따라 이렇게 많은 단어를 배우고 기억할 수 있는 사람은 아무도 없으므로 요약과 분류가 필요하다. 한 단어로 같은 의미와 비슷한 뜻을 표현하는 것이다.
예를 들어, "태양" 은 원래 태양을 가리키지만, 우리가 이야기하는 날일 수도 있다.
이러한 개념 클러스터링은 현재 자연어 처리나 기계 학습의 클러스터링과 매우 유사하다. 단, 고대에는 수천 년이 걸렸을 수도 있지만 지금은 몇 시간밖에 걸리지 않는다.
그러나 단어가 의미에 따라 클러스터링될 때 항상 모호함이 나타난다. 즉, 다의어가 특정 환경에서 어떤 의미를 나타내는지 알 수 없다.
이 문제를 해결하려면 문맥을 보아야 한다. 대부분의 모호성은 할 수 있지만, 때로는 할 수 없는 경우도 있다. 컨텍스트의 확률 모델이 얼마나 좋든 간에, 그것은 때때로 실패한다.
지리상의 이유로, 문명마다 일반적으로 서로 다른 글과 언어가 있다. 두 문명이 만났을 때 번역이 필요하다.
번역을 실현할 수 있는 이유: 서로 다른 쓰기 시스템은 정보를 기록하는 데 동등하며, 문자는 정보 자체가 아니라 정보의 전달체일 뿐, 심지어 숫자로 전달될 수도 있다.
오늘날 이집트에 대한 우리의 이해는 마야 문명을 능가하는데, 이는 이집트인들이 글을 통해 생활에서 가장 중요한 정보를 기록한 덕분이다.
단어는 정보를 수용할 공간이 없을 때만 나타나고, 숫자는 재산을 세어 명확하게 해야 할 때만 나타난다. (조지 버나드 쇼, 자기관리명언)
초기 숫자는 서면형식이 없었고, 단지 손가락을 울렸을 뿐인데, 이것이 바로 우리가 십진수를 사용하는 이유이다.
점차적으로, 조상은 10 개의 손가락이 충분하지 않다는 것을 발견했습니다. 가장 쉬운 방법은 발가락을 세는 것이지만 근본적인 문제를 해결할 수는 없습니다. 그래서 그들은 이진제, 즉 10 분의 1 을 발명했습니다.
그렇다면 왜 기존 문명은 십진법 대신 십진법을 사용합니까?
십진법보다 십진법이 더 불편하다. 예를 들어 십진법은 1999 년의 곱셈표만 외우면 되고, 십진수라면 19* 19 의 바둑 바둑판이 필요하다.
서로 다른 숫자의 숫자 표현에 대해 중국과 로마는 모두 명확한 단위를 사용하여 서로 다른 수급을 나타낸다.
중국은 10 메가바이트, 로마인은 1 메가바이트, V 는 5 메가바이트 등을 사용한다.
이 두 표현 모두 무의식적으로 간단한 코딩의 개념을 도입했다.
숫자를 묘사하는 가장 효과적인 방법은 고대 인도인들로, 65,438+00 개의 아라비아 숫자를 발명하여 중국과 로마의 숫자보다 더 추상적이며, 이는 숫자와 문자의 분리를 상징한다. 객관적으로 자연어와 수학은 수천 년 동안 중복되지 않았다.
상형문자에서 병음문자로의 비약입니다. 왜냐하면 인간은 물체를 묘사하는 방식에서 무의식적으로 정보의 인코딩을 채택하고, 물체의 모양에서 추상적인 개념에 이르기까지 무의식적으로 정보를 인코딩하기 때문입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)
그리고 로마 문자에서는, 자주 쓰는 글자는 짧고, 생소한 글자는 길며, 이탈리아 문자도 마찬가지이며, 자주 쓰는 글자는 적고, 생벽자는 획이 많아 정보론의 가장 짧은 코딩 원칙에 부합한다.
로마 언어 시스템:
종이가 발명되기 전에 글씨를 쓰는 것은 쉽지 않다. 그래서 묵을 아껴야 하기 때문에 고대 중국어의 서면글은 간결하지만 이해하기 어렵다. 그러나 구어체 영어는 지금과 크게 다르지 않습니다. 이것은 현재의 정보 과학의 몇 가지 원리와 비슷하다.
이것이 바로 현재 인터넷과 모바일 인터넷의 웹 디자인이 완전히 일치하는 것이다.
광대역을 사용하는 경우 페이지를 비교적 크게 디자인해야 하며, 휴대폰 단말기는 공중 채널 대역폭의 제한으로 인해 전송 속도가 느리고 해상도가 낮습니다.
성경은 스스로 세기를 창조한 이래 유대인 조상의 이야기를 담고 있다. 성경의 글은 여러 세기 동안 계속되었으며, 몇몇 사람들이 그렇게 했기 때문에 필사의 실수는 불가피하였다.
필사 오류를 피하기 위해 유대인들은 체크 코드와 비슷한 방법을 발명했다. 그들은 히브리 글자와 숫자를 맞추는데, 각 줄을 합치면 특수한 숫자인데, 이것이 바로 검사 코드이다.
한 페이지를 복사한 후, 너는 각 줄의 단어를 더해서 검사 코드가 원본과 같은지 확인해야 한다.
알파벳에서 단어까지의 구사법은 단어의 코딩 규칙이고, 구문은 언어의 인코딩 및 디코딩 규칙입니다.
상대적으로 단어는 한정된 폐쇄세트이고, 언어는 무한한 개집이다. 수학적으로 전자는 완전한 코딩 및 디코딩 규칙을 가지고 있지만 언어는 그렇지 않습니다. 즉, 언어에는 문법 규칙이 적용 할 수없는 곳이 있습니다. 이것이 소위 "문장" 입니다.
그렇다면 언어가 정확합니까, 아니면 문법이 정확합니까? 어떤 사람은 진실한 어료에서 출발하자고 고집하고, 어떤 사람은 규칙에서 출발하자고 고집한다.
이 장에서는 독자가 언어와 수학 사이의 내적 관계를 느낄 수 있도록 문자, 숫자 및 언어의 역사에 대해 설명합니다. 다음과 같은 개념을 언급했다.
이전 장에서는 인간의 의사 소통을 위해 언어를 사용했으며 문자, 문자 및 숫자는 실제로 다른 정보 인코딩 단위입니다.
모든 언어는 인코딩 방법이고, 언어의 문법 규칙은 인코딩 및 디코딩 알고리즘입니다. 예를 들어, 우리는 언어를 통해 우리가 표현하고자 하는 내용을 조직하는데, 이것은 일종의 인코딩이다. 상대방이 이 언어를 알아들을 수 있다면, 그 언어의 디코딩 방법으로 디코딩할 수 있다.
그럼 기계가 자연어를 읽을 수 있을까요? 물론이죠
자연어 처리의 발전은 두 단계로 나눌 수 있다.
1950 년대에 학계에서 인공지능과 자연어 이해에 대한 이해는 기계가 음성 인식을 할 수 있도록 컴퓨터가 자연어를 이해하도록 해야 한다는 것이다. 왜냐하면 인간은 그렇게 하기 때문입니다. 이런 방법론은' 날짐승' 이라고 불리는데, 즉 새들이 어떻게 비행하여 비행기를 만드는지 관찰하는 것이다. 사실, 사람들이 비행기를 발명한 것은 생체 공학이 아니라 공기역학에 의존했다.
그렇다면 자연어를 어떻게 이해할 수 있을까요?
일반적으로 다음 사항이 필요합니다.
우리는 간단한 문장을 볼 수 있다.
이 문장은 주어, 서술어, 마침표의 세 부분으로 나눌 수 있다. 우리는 각 부분을 더 분석하여 아래의 분석 트리를 얻을 수 있다.
이를 분석하는 데 사용되는 구문 규칙을 다시 쓰기 규칙이라고 합니다.
하지만 이 방법은 곧 문제가 생겼다. 위의 그림에서 볼 수 있듯이, 짧은 문장은 실제로 이렇게 복잡한 2 차원 트리 구조를 분석할 수 있으며, 실제 문장을 처리하는 것은 매우 번거롭다.
두 가지 주요 장애물이 있습니다.
사실 문법적인 관점에서 문장을 분석하는 것은 믿을 수 없다.
앞서 언급했듯이, 규칙 기반 해결은 의미 처리에 번거롭다. 자연어에서 단어의 다의성은 규칙으로 묘사하기 어렵지만 컨텍스트에 달려 있기 때문이다.
예를 들어, "상자는 만년필 안에 있다." Pen 이 여기 있는 것은 울타리를 의미하기 때문이다. 전체 문장을 중국어로 번역하는 것은 "the box is in the fence" 의 펜이란 만년필이나 울타리가 문맥을 통해 해결될 수 없다는 것을 의미하며 상식이 필요하다.
1970 이후 통계언어학은 자연어 처리에 새로운 생명을 불어넣었다. 그 중 관건은 제니니와 그의 IBM Watson 실험실이다. 처음에는 통계 방법을 사용하여 음성 인식률을 70% 에서 90% 로 높였으며, 동시에 음성 인식 규모도 수백 단어에서 수만 단어로 늘어났다.
통계에 기반한 자연어 처리 방법은 수학 모델의 교류와 연결되어 있기 때문에 수학적으로 자연어 처리는 언어 교류의 원래 의도와 연결되어 있다.
이전 장에서는 자연어가 탄생한 이후 문맥에 민감한 정보 표현 및 전달 방식으로 발전해 왔다는 점을 강조해 왔습니다.
따라서 기계가 자연음성을 처리하도록 하기 위해서는 자연음성의 문맥 관련 특징을 수학적으로 모델링하는 것이 관건이다. 이것이 바로 통계언어 모델이다.
이 모델은 기계 번역, 음성 인식, 인쇄체 인식, 맞춤법 교정, 한자 입력, 문서 조회 등에 널리 사용됩니다.
음성 인식이 해결해야 할 중요한 문제 중 하나는 컴퓨터가 제시한 텍스트 시퀀스가 인간에 의해 이해될 수 있는지 여부입니다. 1970 년대 이전에 사람들은 의미 분석을 사용하여 그것을 해결했다.
Jarek 은 이 문제를 다른 각도에서 바라보면 간단한 통계 모델로 이 문제를 해결할 수 있다.
즉, 문장이 합리적인지 여부는 그 가능성에 달려 있다.
예를 들어, 문이 유창할 확률은 10 {-20}$ 이고 문이 혼란스러울 확률은 10 {-70}$ 이므로 문이 유창할 가능성이 더 큽니다.
$S$ 가 일련의 단어 $ {\ omega _ 1}, {\ omega _ 2}, \ cdots, {\ oots 로 구성된 의미 있는 문장을 나타낸다고 가정해 봅시다 이제 우리는이 문장의 확률을 알아야합니다.
$ $ p \ left (s \ right) = p \ left ({{w _1}, {w_2}, \cdots,
조건부 확률 공식을 사용하여 시퀀스 $S$ 의 발생 확률은 각 단어의 발생 확률을 곱한 것과 같습니다.
$ $ P \ left({ {w _ 1}, {w_2}, \cdots, {w _ n}} \ right) = Right) \ cdots p \ left ({{w _ n} | {w _1}, {w _ 2}, \ cdots, {
문제는이 조건의 확률을 계산하는 방법입니다.
20 세기 초에 러시아 수학자 마르코프는 효과적인 방법을 제시했다. 이 경우, 어떤 단어 $w_i$ 의 확률이 이전 단어 $w_{i- 1}$ 와 관련이 있다고 가정합니다. 이것이 바로 마르코프 가정입니다.
그래서 공식은 다시
$ $ P \ left({ {w _ 1}, {w_2}, \cdots, {w _ n}} \ right) = Left ({{w _ 2} | {w _1}} \ right) \ cdots p \ left ({{w _ n} |
이를 이진 모델이라고 합니다.
한 단어가 첫 번째 $N- 1$ 단어에 의해 결정되는 경우 해당 모델을 $N 이라고 합니다.
$ 메타 모델, 더 복잡해질 것입니다.
마찬가지로 조건 확률 $ p \ left ({{w _ I} | {w _ {I-1}} \ right) $ 를 추정하는 방법은 그 정의를 먼저 살펴볼 수 있습니다.
$ $ p \ left ({{w _ I} | {w _ {I-1}}} \ right) = \ frac {{p}
해야 할 일은 추정이다.
그렇다면 이 두 가지 확률을 어떻게 얻을 수 있을까요?
대규모 코퍼스의 경우 $ {{w _ {I- 1}} 및 {w _ I}} $ 만 계산하면 통계 텍스트 {w _ {I-/kloc-0 그런 다음 코퍼스 크기 # 으로 나누면 빈도를 사용하여 확률을 예측할 수 있습니다.
대수정리에 따르면 통계량이 충분하면 상대 주파수는 확률과 같다.
$ $ p \ left ({{w _ I} | {w _ {I-1}}} \ right) = \ frac {# #
이렇게 복잡한 모델이 음성 인식과 기계 번역의 복잡한 문제를 해결할 수 있다는 것은 정말 놀랍다.
이진 모델의 가장 큰 특징은 각 단어가 이전 단어와만 관련되며 너무 단순화된다는 것입니다. 더 일반적으로 한 단어는 앞의 몇 단어와 관련이 있다.
따라서 $N$ 메타 모델은 현재 단어 $w_i$ 가 첫 번째 $N- 1$ 단어에만 의존한다는 것을 의미합니다. 이는 N- 1 순서의 마르코프 가정입니다.
실제로 삼항 모형은 점점 더 많이 사용되기 때문에 $N=3$ 이고, 고급 모델은 다음과 같은 이유로 덜 사용됩니다
언어 모델을 사용하려면 모델의 모든 조건 확률을 알아야 합니다. 이를 모델 매개변수라고 합니다.
어료에 대한 통계를 통해 이러한 매개변수를 얻는 과정을 모델 훈련이라고 합니다.
앞서 말씀드렸듯이, 인접한 두 문자가 동시에 나타나는 횟수와 ${w_{i- 1}}$ 단독 발생 횟수를 집계한 다음 비율을 계산하기만 하면 됩니다.
그러나 우리가 고려하지 않은 한 가지 상황이 있다. 인접한 두 단어가 동시에 나타나지 않으면 $ # \ left({ {w _ {I- 1}}, {w _ I}} \ right)= 0 $
물론 아닙니다. 여기에는 통계의 신뢰성이 포함됩니다.
수학 통계에서 우리가 감히 데이터를 사용하여 확률을 예측하는 이유는 대수 정리가 충분한 관측을 필요로 하기 때문이다. 즉, 샘플이 너무 작을 경우 확률을 예측하기 위해 횟수를 사용하는 것은 믿을 수 없는 일입니다.
그렇다면 언어 모델을 올바르게 훈련시키는 방법은 무엇입니까?
통계 사전에서 각 단어가 나타날 확률에 대해 구체적으로 이야기해 봅시다.
코퍼스에 $r$ 번 나타나는 $N_r$ 단어가 있고 $N$ 은 코퍼스 크기를 나타낸다고 가정합니다.
$ $ n = \ sum \ limits _ {r =1} \ infty {r {n _ r}} $ $
즉, 단어당 $r$ 단어 수에 나타나는 횟수를 곱한 것입니다.
$r$ 시간이 매우 짧으면 발생 횟수가 충분하지 않기 때문에 확률을 계산할 때 더 작은 숫자 (예: $d_r$) 를 사용해야 합니다.
$ $ {d _ r} = \ left ({r+1} \ right) \ frac {{n _ {r+/kloc)
그리고
$ $ \ sum \ limits _ r {{d _ r} {n _ r}} = n $ $
일반적으로 1 이 나타나는 단어는 두 번 나타나는 것보다 많고, 같은 단어가 두 번 나타나는 것이 세 번 나타나는 것보다 많다.
즉, 발생 빈도 $r$ 가 클수록 단어 $N_r$ 수가 적어지므로 $ {n _ {r+1}} {n _ r} $
이런 식으로,
이진 모델의 경우
안에 ...
이 스무딩 방법은 IBM 의 Katz 에서 처음 제안되었기 때문에 Katz back-off 방법이라고 합니다.
또 다른 방법은 차이 방법을 제거하는 것입니다. 즉, 하위 모델과 상위 모델의 선형 보간을 통해 스무딩되지만 Katz 의 back-off 보다 효과가 좋지 않기 때문에 거의 사용되지 않습니다.
모델 교육의 또 다른 중요한 문제는 교육 데이터 또는 코퍼스 선택입니다. 훈련 기대가 모델의 응용 분야와 어긋난다면, 모델의 효과는 크게 떨어질 것이다.
예를 들어, 언어 모델 구축의 경우 응용 프로그램이 웹 검색인 경우 교육 데이터는 사용자가 입력한 지저분한 웹 데이터와 검색 문자열이어야 하며, 기존 및 표준화된 보도 자료는 소음과 오류가 섞여 있는 경우에도 마찬가지입니다. 교육 데이터가 응용 프로그램과 일치하기 때문에 검색 품질이 더 좋습니다.
일반적으로 교육 데이터가 많을수록 좋습니다. 많은 매개 변수로 인해 고급 모델에는 더 많은 교육 데이터가 필요합니다. 불행히도 모든 응용 프로그램이 기계 번역을 위한 이중 언어 코퍼스와 같은 충분한 교육 데이터를 가질 수 있는 것은 아닙니다. 이때 고급형 대형 모델을 추구하는 것은 의미가 없다.
교육 데이터가 응용 프로그램 데이터와 일치하고 훈련량이 충분하면 예상 소음 수준도 모델에 영향을 줍니다. 따라서 훈련 전에 사전 처리가 필요하며, 탭과 같이 자주 발견할 수 있는 소음이 많이 있습니다.
서양 병음의 경우 단어 사이에 명확한 구분이 있다. 그러나 중국어의 경우 단어 사이에 명확한 구분 기호가 없다. 그래서 먼저 절을 해야 한다.
가장 쉬운 방법은 사전에서 찾는 것입니다. 즉, 왼쪽에서 오른쪽으로 스캔하여 단어가 발견될 때 사전에서 식별하는 것입니다.
그러나 복잡한 문제가 생기면 이런 방법은 통하지 않는다. 예를 들어, 퍼지 분할이 포함된 경우. "개발도상국" 과 마찬가지로 올바른 구분은 "개발-중국-국가" 이고, 왼쪽에서 오른쪽으로 사전을 찾아보면 "개발-중국-집" 으로 나뉜다
마찬가지로, 우리는 통계 언어 모델을 사용하여 분사 모호성 문제를 해결할 수 있다.
문장 $S$ 를 나누는 몇 가지 방법이 있다고 가정합니다.
$ $ \ begin {어레이} {l}
{A_ 1}, {A_2}, {A_3}, \cdots, {A_k}\
{B_ 1}, {B_2}, {B_3}, \cdots, {B_m}\
{C_ 1}, {C_2}, {C_3}, \cdots, {C_n}
\ end {어레이} $ $
가장 좋은 분사 방법은 분사 후 이 말이 나타날 확률이 가장 높다는 것이다.
물론, 우리가 모든 분사 방법을 열거하고 각 가능성의 문장 확률을 계산한다면 계산량은 상당히 크다.
그것은 동적 계획 문제로 간주될 수 있으며, 비트비 알고리즘은 최적의 분사를 빠르게 찾는 데 사용될 수 있다.
언어학자들은 단어에 대해 서로 다른 정의를 가지고 있다. 예를 들면' 북경대학' 이다. 어떤 사람은 한 글자라고 생각하고, 어떤 사람은 두 글자라고 생각한다. 절충하는 방법은 먼저 그것을 네 단어로 취급한 다음 세분사' 베이징' 과' 대학' 을 더 찾는 것이다
인공분사가 일치하지 않는 주된 이유는 단어의 입도에 대한 사람들의 이해에 있다.
청화대' 를 예로 들어 봅시다. 어떤 사람들은 그것이 전체라고 생각하는데, 어떤 사람들은' 청화' 가' 대학' 의 장식품이라고 생각한다. 누가 옳은지 강조할 필요는 없지만, 다른 어플리케이션에서는 세분성이 다른 것보다 낫다는 것을 알아야 한다.
예를 들어 기계 번역에서는 입도가 클 때 번역 효과가 좋다. 예를 들어 Lenovo 를 두 부분으로 분할하면 Lenovo 로 번역하기가 어렵습니다. 그러나 웹 검색에서 작은 세분성은 큰 세분성보다 우수합니다. 예를 들어, "칭화대" 대신 "칭화대" 를 질의할 때 칭화대 홈페이지를 찾을 수 있습니다.
애플리케이션마다 다른 깨진 문자를 만드는 것은 낭비입니다. 분사기는 서로 다른 수준의 분사를 동시에 지원할 수 있다.
즉, 먼저 기본 단어에 따라 문장을 분할한 다음 복합어 모델에 따라 기본 단어 문자열을 나눕니다.