문제

더 나은 것이 부족하기 위해 "어휘 인코딩"이라는 용어를 사용하고 있습니다.

한 마디는 아마도 편지와 반대되는 기본 커뮤니케이션 단위 일 것입니다. 유니 코드는 알려진 모든 알파벳의 각 문자에 숫자 값을 할당하려고합니다. 한 언어에 대한 편지는 다른 언어에 대한 글리프입니다. Unicode 5.1은 현재이 글리프에 100,000 개 이상의 값을 할당합니다. 현대 영어로 사용되는 약 18 만 단어 중에서 약 2,000 단어의 어휘를 사용하면 일반적인 용어로 대화 할 수 있어야합니다. "어휘 인코딩"은 각 문자가 아닌 각 단어를 인코딩하고 문장 내에서 캡슐화합니다.

// An simplified example of a "Lexical Encoding"
String sentence = "How are you today?";
int[] sentence = { 93, 22, 14, 330, QUERY };

이 예에서 문자열의 각 토큰은 정수로 인코딩되었습니다. 여기서 인코딩 체계는 단순히 단어 사용의 일반화 된 통계 순위를 기반으로 INT 값을 할당하고 물음표에 상수를 할당했습니다.

궁극적으로 단어는 철자와 의미를 모두 가지고 있습니다. 어떤 "어휘 인코딩"은 문장의 의미와 의도를 전체적으로 보존하고 언어는 아닙니다. 영어 문장이 인코딩됩니다 "... 의미의 언어 중립 원자 요소 ..." 그런 다음 구조화 된 구문 형태와 문법 구조로 모든 언어로 재구성 될 수 있습니다.

"어휘 인코딩"기술의 다른 예는 무엇입니까?


Word-Usage 통계의 출처에 관심이 있다면 :
http://www.wordcount.org

도움이 되었습니까?

해결책

그것들은이 아이디어의 몇 가지 주요 문제입니다. 대부분의 언어에서 단어의 의미와 의미와 관련된 단어는 매우 신속하게 변합니다.

단어의 의미가 바뀌기 전에 더 빨리 단어에 숫자를 할당하지 않겠습니까? 예를 들어, "게이"라는 단어는 "행복한"또는 "메리"를 의미하는 데 사용되었지만 이제는 동성애를 의미하는 데 사용됩니다. 또 다른 예는 원래 한 단어 인 독일 "Danke"에서 온 형태소 "감사합니다"입니다. 또 다른 예는 "Good Bye"입니다. "신의 축복"이 단축됩니다.

또 다른 문제는 어느 시점에서 어떤 시점에서 단어의 스냅 샷을 취하더라도, 단어의 의미와 사용이 같은 지방 내에서도 경합에 처해 있다는 것입니다. 사전이 쓰여질 때, 한 단어에 대해 논쟁 할 책임이있는 학자들은 드문 일이 아닙니다.

요컨대, 당신은 기존 언어로 그것을 할 수 없습니다. Interlingua 또는 Esperanto와 같이 이미 발명 된 상당히 정적 인 언어를 사용하여 자신의 언어를 발명하는 것을 고려해야합니다. 그러나, 이들조차도 표준 사전에 정적 형태소를 정의하는 목적으로는 완벽하지 않을 것입니다.

의미에 대략적인 성격을 매핑하는 중국어에서도 여전히 작동하지 않을 것입니다. 많은 캐릭터가 두 컨텍스트에 따라 의미를 바꾸고 어떤 문자가 앞에 나오거나 포스트를 픽스합니다.

문제는 언어간에 번역을 시도 할 때 최악입니다. 영어에는 한 단어가있을 수 있습니다.이 단어는 다양한 경우에 사용할 수 있지만 다른 언어로 직접 사용할 수는 없습니다. 이것의 예는 "무료"입니다. 스페인어에서는 "자유"를 의미하는 "libre"또는 맥주에서 "무료"를 의미하는 "gratis"를 사용할 수 있습니다 ( "무료"대신 잘못된 단어를 사용하는 것은 매우 재미있게 보입니다).

한국어로 아름다운 단어와 같은 의미를두기가 더 어려운 다른 단어가 있습니다. 소녀를 아름답게 부를 때, 몇 가지 대체 후보가있을 것입니다. 그러나 음식을 아름답게 부를 때, 음식이 좋아 보인다는 것을 의미하지 않으면 완전히 다른 몇 가지 후보자가 있습니다.

그것이 내려 오는 것은 우리가 영어로 약 200k 단어 만 사용하지만, 우리의 어휘는 실제로 같은 단어에 많은 다른 의미를 할당하기 때문에 실제로 어떤 측면에서는 더 큽니다. Esperanto와 Interlingua에도 동일한 문제가 있으며 대화에 의미있는 다른 모든 언어가 적용됩니다. 인간의 연설은 잘 정의되고 잘 기름칠 된 기계가 아닙니다. 따라서 각 "단어"가 고유 한 의미가있는 어휘집을 만들 수는 있지만 매우 어려울 수 있으며 현재 기술을 사용하는 기계가 모든 인간 언어에서 특수 표준화 된 어휘로 번역하는 것이 불가능합니다.

이것이 기계 번역이 여전히 짜증나고 오랫동안 오랫동안 의지가 될 것입니다. 당신이 더 잘할 수 있다면 (그리고 당신이 할 수 있기를 바랍니다), 당신은 아마도 일종의 장학금 및/또는 대학/정부 자금으로 박사 학위를 위해 노력하는 것을 고려해야합니다. 또는 배가 김이 김을 유지하는 것이 무엇이든 간단히 돈을 벌 수 있습니다.

다른 팁

이 질문은 언어학에 프로그래밍보다 더 많은 영향을 미치지 만 (다중 결합 된 형태소로 구성된 단어가있는 단어를 갖는) 언어와는 달리 가능한 모든 단어를 "숫자"하려고 시도하는 것은 매우 복잡한 문제가 될 수 있습니다. 적어도 다소 고립 된 영어, 또는 중국어와 같은 언어는 분석적입니다.

즉, 일부 언어로 구성된 글리프를 기반으로 단어를 쉽게 세분화하고 계산할 수 없습니다.

이 위키 백과 기사 언어를 격리합니다 문제를 설명하는 데 도움이 될 수 있습니다.

직접 발명하기에 쉽습니다. 각 단어를 정식 바이트 스트림 (예 : 소문자 분해 UCS32)으로 바꾸고 정수로 해시하십시오. 32 비트는 아마도 충분할 것이지만, 그렇지 않다면 64 비트는 확실히 할 것입니다.

당신이 당신에게 멍청한 대답을주기 위해 딩하기 전에, 유니 코드의 목적은 단순히 각 글리프에 고유 식별자를 할당하는 것임을 고려하십시오. 순위 또는 분류 또는 그룹화하지 말고 모든 사람이 동의하는 고유 식별자에 각각을 매핑하는 것입니다.

시스템은 어떻게 명사의 복수화 또는 동사의 접합을 처리합니까? 이것들은 각각 고유 한 "유니 코드"값을 가질까요?

번역 체계로서, 이것은 아마도 더 많은 작업 없이는 작동하지 않을 것입니다. 각 단어에 숫자를 할당 한 다음 다른 언어로 기계적으로 번역 할 수 있다고 생각하고 싶습니다. 실제로, 언어는 같은 "바람이 그녀의 머리카락을 날려 버렸다"와 "Wind Your Watch"와 같은 여러 단어의 문제가 있습니다.

언어 당 알파벳을 가지고있는 텍스트를 전송하기 위해서는 Zip 사용과 같은 가변 길이의 사전을 사용하는 것과는 달리 무엇을 얻을 수 있는지 궁금하지만 잘 작동합니다.

이것은 흥미로운 질문이지만, 나는 당신이 잘못된 이유를 요구하고 있다고 생각합니다. 이 '어휘'유니 코드 '를 문장을 언어 중립적 원자 요소로 분류 한 다음 다른 구체적인 언어로 그들을 재구성 할 수있는 것으로 생각하고 있습니까? 아마도 보편적 인 번역기를 달성하는 수단으로?

'어휘 유니 코드'를 사용하여 영어 문장을 인코딩하고 저장할 수 있더라도, 중국어 (예를 들어, 중국어)가 그 의미를 그대로 유지할 것으로 기대할 수 없습니다.

그러나 유니 코드와의 비유는 매우 유용합니다.

유니 코드는 '보편적 인'코드 인 반면, 해당 캐릭터의 발음, 의미 또는 사용법을 구현하지 않습니다. 각 코드 포인트는 특정 언어 (또는 언어 그룹에서 사용하는 스크립트)의 특정 글리프를 나타냅니다. 글리프의 시각적 표현 수준 (스타일, 서식 및 글꼴 내)의 시각적 표현 수준에서 원소입니다. 라틴 문자 'a'의 유니 코드 코드 포인트는 바로 그 것입니다. 라틴 문자 'a'입니다. 예를 들어 아랍어 문자 alif (ﺍ) 또는 indic (devnagari) 문자 'a'(अ)로 자동으로 렌더링 될 수 없습니다.

유니 코드 비유를 유지하면 어휘 유니 코드는 각 언어의 각 단어 (단어 형식)에 대한 코드 포인트가 있습니다. 유니 코드에는 특정 스크립트에 대한 코드 포인트가 있습니다. 어휘 유니 코드는 각 언어에 대한 다양한 코드가 필요합니다. 다른 언어로 된 다른 단어는 동일한 의미 (동의어)를 가지고 있더라도 코드 포인트가 다른 것입니다. 다른 의미를 가진 동일한 단어 또는 다른 발음 (homonyms)은 다른 코드 포인트가 있어야합니다.

유니 코드에서는 같은 문자가 단어의 위치에 따라 다른 형태를 갖는 일부 언어 (전부는 아님)의 경우 히브리어와 아랍어에서는 단어의 끝에서 글리프의 모양이 다음과 같습니다. 다른 코드 포인트. 마찬가지로 어휘 유니 코드에서도 단어가 문장의 위치에 따라 다른 형태를 갖는 경우 자체 코드 포인트를 보증 할 수 있습니다.

아마도 영어에 대한 코드 포인트를 제시하는 가장 쉬운 방법은 시스템을 옥스포드 영어 사전의 특정 판을 기반으로하고 각 단어에 순차적으로 고유 한 코드를 할당하는 것입니다. 동일한 단어의 각각의 다른 의미에 대해 다른 코드를 사용해야하며, 다른 형식에 대해 다른 코드를 사용해야합니다. 예를 들어 동일한 단어를 명사로 사용하고 동사로 사용할 수 있다면 필요합니다. 두 코드

그러면 해당 언어에 대한 가장 권위있는 사전을 사용하여 포함하려는 서로에 대해 동일하게 수행해야합니다.

이 운동은 가치가있는 것보다 더 많은 노력이 될 가능성이 있습니다. 유니 코드처럼 세계의 모든 살아있는 언어와 역사적인 죽은 언어 및 가상의 언어를 포함시키기로 결정한 경우, 코드가 너무 커서 코드를 수용하기 위해 매우 넓어야하는 코드 공간이 생길 것입니다. 압축 측면에서 아무것도 얻지 못할 것입니다. 원래 언어의 문자열로 표시되는 문장은 코드로 표시되는 동일한 문장보다 공간이 적을 수 있습니다.

추신 : 단어 의미가 바뀌기 때문에 이것이 불가능한 일이라고 말하는 사람들에게는 문제가되지 않습니다. 유니 코드 비유를 사용하기 위해 문자의 사용이 바뀌었지만 (단어의 의미만큼 빠르게는 아니지만) 중세 시대에 'y'처럼 발음 될 수있는 유니 코드에 대한 우려는 아닙니다. 유니 코드에는 't', 'h'및 'y'에 대한 코드 포인트가 있으며 각각의 목적을 달성합니다.

PPS는 실제로 'Oe'도 '–«또는'ss '가 독일어로'ß '를 쓸 수 있다는 우려가 있습니다.

이것은 흥미로운 작은 운동이지만, 유형과 토큰 간의 자연 언어 차이의 개념에 대한 소개에 지나지 않는 것만으로도 생각합니다.

유형은 모든 인스턴스를 나타내는 단어의 단일 인스턴스입니다. 토큰은 단어의 각 인스턴스에 대해 단일 카운트입니다. 다음 예제로 설명하겠습니다.

"존은 빵 가게에 갔다. 그는 빵을 샀다."

이 예제에 대한 몇 가지 빈도 카운트는 다음과 같습니다. 카운트는 토큰 수를 의미합니다.

John: 1
went: 1
to: 1
the: 2
store: 1
he: 1
bought: 1
bread: 2

"The"는 두 번 계산됩니다. "The"의 두 토큰이 있습니다. 그러나 10 개의 단어가 있지만이 단어 간 단어 대면 쌍은 8 개뿐입니다. 단어는 유형으로 나뉘어지고 토큰 수와 쌍을 이룹니다.

유형과 토큰은 통계 NLP에 유용합니다. 반면에 "어휘 인코딩"은 조심할 것입니다. 이것은 전립선과 합리주의가 풍부한 NLP에 대한 훨씬 더 구식 접근법에 대한 분리입니다. 나는 실제로 특정 "주소"를 단어에 할당하는 통계 MT에 대해조차 모른다. 단어 사이에는 너무 많은 관계가 있습니다. .

NLP에 대한보다 광범위한 소개와 실제 용도를 위해 Python으로 작성된 자연어 툴킷 인 NLTK를 확인하는 것이 좋습니다.

실제로 반 괜찮은 어휘에는 약 600 단어 만 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top