추상 위키백과/업데이트/2021-09-03

From Meta, a Wikimedia project coordination wiki
This page is a translated version of the page Abstract Wikipedia/Updates/2021-09-03 and the translation is 100% complete.
추상 위키백과 업데이트 Translate

메일링 리스트를 통한 추상 위키백과 IRC의 추상 위키백과 텔레그램의 위키함수 마스토돈의 위키함수 트위터의 위키함수 페이스북의 위키함수 유튜브의 위키함수 위키함수 웹사이트 Translate

니나이와 유디론으로 텍스트 생성하기.

이번 주 업데이트는 마히르 모르셰드가 작성했습니다. 마히르는 위키데이터, 특히 위키데이터의 사전 데이터에 오랫동안 기여해 왔습니다. 그는 벵골어와 스웨덴어로 된 추상적인 콘텐츠 표현에서 자연어를 생성하는 프로토타입을 개발했으며, 이 프로토타입은 위키함수 내에서 구현할 수 있다는 목표를 가지고 있습니다. 이 뉴스레터에서 마히르는 프로토타입에 대해 설명합니다.


추상 위키백과의 자연어 생성 기능에 대한 논의는 언어당 추상 생성자와 구체적인 렌더러의 존재를 중심으로 진행되었으며, 개념을 언어에 매핑하기 위한 기초로 위키데이터 항목과 어휘를 사용하는 것에 주목했습니다. 이 연결을 상상하기 쉽게 만들기 위해 텍스트 생성 시스템을 구축하기 시작했습니다.. 이것은 항목, 어휘 및 래퍼를 빌딩 블록으로 사용하고 이러한 블록은 부분적으로 보편 의존 구문 주석 체계를 기반으로 구문 트리로 조합됩니다.

(이것이 2개월 전에 뉴스레터에서 논의된 것과 다른 접근 방식처럼 보인다면, 그 이유 때문입니다. 여러분이 그것에 대해 논의하고 싶다면 저에게 메시지를 던져 주시기 바랍니다.)

시스템은 세 부분으로 구성되며, 마지막 부분은 위키함수로의 포트에서 건너뛸 수 있습니다:

  • 니나이(Ninai, "생각하다"라는 뜻의 고전 타밀어에서 유래)는 주어진 언어에 대한 ID를 감지하기 위해 모든 생성자, 렌더러를 위한 충분히 높은 수준의 논리 및 항목(각각 "개념" 객체에 래핑됨)의 해결 시스템을 보유합니다. 니나이의 결정과 행동은 아래에 있는 텍스트 형성 방법에 대해 불가지론적입니다.
  • 유디론 (Udiron, "의사소통, 아야기하기, 말하기"에 대한 산스크리트어의 벵골어 발음에서 유래)은 특정 언어에 대한 저수준 텍스트 조작 기능을 보유합니다. 이러한 함수는 어휘의 구문 트리에서 작동합니다(각 어휘는 "절" 객체에 래핑됨). 이 어휘는 다음을 통해 가져옵니다...
  • tfsl("twofivesixlex"에서 유래), 어휘 조작 도구로 파이위키봇(pywikibot)과 유사하지만 위키배이스 객체 처리에 중점을 둡니다. 위의 두 구성 요소는 모두 이것에 의존하지만, '네이티브' 항목과 어휘 접근 및 조작이 위키함수 내장으로 가능해지면 tfsl을 생략할 수도 있습니다.

주목할 가치가 있는 이 시스템의 일부 설계 선택은 다음과 같습니다.

  • 생성자는 언어에 구애받지 않고 클래스 계층의 일부에 속하지만 다른 논리를 포함하지 않는 순전히 인수의 컨테이너입니다. 예를 들어, 생성자 Existence(subject)의 인스턴스는 문제의 주제가 존재함을 나타내기 위해 해당 인스턴스 내에서만 해당 주제를 보유하고 렌더러가 해당 생성자를 만날 때까지 다른 작업을 수행하지 않습니다.
  • 모든 생성자는 필수 입력 외에 추가 수정자 목록을 임의의 순서로 허용합니다(해당 생성자가 나타내는 아이디어의 '범위'). 예를 들어, 생성자 Benefaction(beneficiary, beneficiary)가 시간, 장소, 모드 및 수혜자 뒤에 오는 기타 지정자에 대한 추가 인수와 함께 호출될 수 있음을 의미합니다.
  • 생성자의 구성을 '렌더링'하면 절 객체(구문 트리의 루트를 나타냄)가 반환됩니다. 그것을 텍스트 문자열로 바꾸는 것은 해당 객체에 적용된 파이썬의 str() 내장으로 수행됩니다.

현재 주피터 예제의 문장 1.1을 나타내는 생성자가 충분할 뿐 아니라 해당 생성자를 위한 벵골어 및 스웨덴어 렌더러가 있습니다(보디사트바, 데니스에게 피드백을 주셔서 감사합니다). 주피터 문장을 구축하면 다음이 어떻게 보여야 합니다. 주피터 문장을 구축하면 다음이 어떻게 작동하는지 보여야 합니다:

주피터 문장까지 단계적으로 구축하기
생성자 텍스트 벵골어 출력 스웨덴어 출력 설명 (렌더러 출력이 아닙니다!) 참고
Identification(
  Concept(Q(319)),
  Concept(Q(634)))
বৃহস্পতি গ্রহ। Jupiter är klot. 목성은 행성입니다. 목성 (Q319)행성 (Q634)의 두 개념을 동일한 것으로 식별하는 것으로 시작합니다.
Identification(
  Concept(Q(319)),
  Instance(
    Concept(Q(634))))
বৃহস্পতি একটা গ্রহ। Jupiter är ett klot. 목성은 행성입니다. 개념을 단독으로 동일시하는 대신 "목성"을 "행성"의 인스턴스와 동일시할 수 있습니다.
Identification(
  Concept(Q(319)),
  Instance(
    Concept(Q(634)),
    Definite()))
বৃহস্পতি গ্রহটি। Jupiter är klotet. 목성은 행성입니다. 우리는 "목성"이 "행성"의 확실한 인스탄스임을 분명히 함으로써 이를 더욱 구체화할 수 있습니다.
Identification(
  Concept(Q(319)),
  Instance(
    Attribution(
      Concept(Q(634)),
      Concept(Q(59863338))),
    Definite()))
বৃহস্পতি বড় গ্রহটা। Jupiter är det stora klotet. 목성은 큰 행성입니다. 이제 우리는 문제의 명확한 행성 인스턴스에 속성을 돌릴 수 있습니다. 이 속성은 large (Q59863338)입니다.
Identification(
  Concept(Q(319)),
  Instance(
    Attribution(
      Concept(Q(634)),
      Superlative(
        Concept(Q(59863338)))),
    Definite()))
বৃহস্পতি সবচেয়ে বড় গ্রহটি। Jupiter är det största klotet. 목성은 가장 큰 행성입니다. 목성에 대해 최상급인 이 속성은 속성을 수정하여 표시할 수 있습니다.
Identification(
  Concept(Q(319)),
  Instance(
    Attribution(
      Concept(Q(634)),
      Superlative(
        Concept(Q(59863338)),
        Locative(
          Concept(Q(544))))),
    Definite()))
বৃহস্পতি সৌরমণ্ডলে সবচেয়ে বড় গ্রহ। Jupiter är den största planeten i solsystemet. 목성은 태양계에서 가장 큰 행성입니다. 목성이 가장 큰 위치를 지정하면(즉, 태양계 (Q544)에서) 완료됩니다!

의미 해석 시스템에는 이러한 예 중 일부에서 사용할 '-টা' 또는 '-টি'(벵골어) 또는 'klot' 또는 'planet'(스웨덴어) 중 어느 것을 선택할 수 있는 정보가 충분하지 않습니다. 현재 프로토타입에 있는 하나가 무작위로 선택됩니다. 따라서 이를 가져오는 예제를 다시 렌더링하면 다른 것을 사용할 수 있습니다. 따라서 이를 가져오는 예제를 다시 렌더링하면 다른 것을 사용할 수 있습니다.

이 외에도 추가해야 할 기능이 훨씬 더 많고 벵골어와 스웨덴어가 모두 인도유럽어(그러나 멀리 떨어져 있음)이기 때문에 이 두 언어만을 위한 렌더러를 개발하는 것만으로는 고려되지 않는 언어 현상이 있을 수 있습니다. 만약 여러분의 언어에 그 두 언어로 존재하지 않는 특별한 것이 있다면, 이것은 다음 질문을 제기할 수 있습니다: 여러분의 언어를 위해 무엇을 할 수 있습니까?

특정 순서가 아닌 적어도 네 가지를 생각할 수 있습니다:

  • 어휘를 만들고 의미를 추가하세요! 시스템에서 가장 중요한 것은 단어에 의미가 있다는 것입니다(일부 맥락에서는 가능하며, 다른 언어 또는 위키데이터 항목과 동등할 수 있음). 이 단어가 2인칭 복수형 부정 과거 조건형을 가질 수 있다는 것은 대체로 이차적입니다!
  • 여러분의 언어로 몇 가지 기본적인 문법 작업을 수행할 수 있는 방법에 대해 생각해 보세요. 형용사를 어떻게 활용하나요? 동사에 목적어를 더하나요? 어떤 일이 일어났는지 문장으로 나타내나요?
  • 의미와 관련된 더 높은 수준의 작업을 수행하는 방법에 대해 생각해 보세요. 무언가가 존재한다는 것을 나타내기 위해 무엇을 합니까? 과거에 어떤 일이 있었지만 더 이상 그렇지 않음을 나타내기 위해? 간단한 선언문을 질문으로 바꾸려면?
  • 여러분의 언어로 목성 문장을 렌더링하는 방법에 대한 아이디어가 있고 해당 문장을 작성하는 데 필요한 어휘가 위키데이터에 있고 해당 어휘가 해당 문장에서 해당 어휘가 갖는 의미에 대한 느낌을 갖고 있다면 알려주세요!

이 프로토타입에 대한 여러분의 생각과 위키데이터의 사전 데이터와 위키함수의 플랫폼을 통해 추상 위키백과를 구현하는 데 어떤 의미가 있는지 듣고 싶습니다.


훌륭한 업데이트에 대해 마히르에게 감사드립니다! 여러분도 주간에 기여하고 싶다면 연락하십시오. 이것은 우리 모두가 함께 만드는 프로젝트입니다.

또한 이번 주 슬레이트(Slate)는 추상 위키백과 및 위키함수의 목표에 대한 훌륭한 설명 기사를 게재했습니다: 위키백과는 인간 언어의 한계를 초월하려고 노력합니다