Dasar-Dasar Natural Language API

Dokumen ini berisi panduan dasar-dasar penggunaan Cloud Natural Language API. Panduan konseptual ini membahas jenis permintaan yang dapat Anda buat ke Natural Language API, cara membuat permintaan tersebut, dan cara menangani responsnya. Sebaiknya semua pengguna Natural Language API membaca panduan ini dan salah satu tutorial terkait sebelum mendalami API itu sendiri.

Fitur Natural Language

Natural Language API memiliki beberapa metode untuk melakukan analisis dan anotasi pada teks Anda. Setiap level analisis memberikan informasi berharga untuk pemahaman bahasa. Metode ini tercantum di bawah:

  • Analisis sentimen memeriksa teks tertentu dan mengidentifikasi pendapat emosional yang umum ada di dalam teks, terutama untuk menentukan sikap penulis sebagai positif, negatif, atau netral. Analisis sentimen dilakukan melalui metode analyzeSentiment.

  • Analisis entity memeriksa teks tertentu untuk mendeteksi entity yang diketahui (Kata benda khusus seperti tokoh masyarakat, tempat terkenal, dan sebagainya. Kata benda umum seperti restoran, stadion, dan sebagainya) dan menampilkan informasi tentang entity tersebut. Analisis entity dilakukan dengan metode analyzeEntities.

  • Analisis sentimen entity memeriksa teks tertentu untuk entity yang diketahui (kata benda benar dan kata benda umum), menampilkan informasi tentang entity tersebut, dan mengidentifikasi opini emosional yang berlaku atas entity dalam teks, terutama untuk menentukan sikap penulis terhadap entity sebagai positif, negatif, atau netral. Analisis entity dilakukan dengan metode analyzeEntitySentiment.

  • Analisis sintaksis mengekstrak informasi linguistik, memecah teks yang diberikan menjadi serangkaian kalimat dan token (umumnya, batas-batas kata), sehingga memberikan analisis lebih lanjut tentang token tersebut. Analisis Sintaksis dilakukan dengan metode analyzeSyntax.

  • Klasifikasi konten menganalisis konten teks dan menampilkan kategori konten untuk konten tersebut. Klasifikasi konten dilakukan dengan menggunakan metode classifyText.

Setiap panggilan API juga akan mendeteksi dan menampilkan bahasa, jika bahasa tidak ditentukan oleh pemanggil dalam permintaan awal.

Selain itu, jika Anda ingin melakukan beberapa operasi natural language pada teks tertentu hanya dengan menggunakan satu panggilan API, permintaan annotateText juga dapat digunakan untuk melakukan analisis sentimen dan analisis entity.

Cobalah sendiri

Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa Natural Language dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Coba Natural Language gratis

Permintaan Basic Natural Language

Natural Language API adalah REST API, dan terdiri dari permintaan dan respons JSON. Permintaan Analisis Entitas JSON Natural Language yang sederhana muncul di bawah ini:

{
  "document":{
    "type":"PLAIN_TEXT",
    "language_code": "EN",
    "content":"'Lawrence of Arabia' is a highly rated film biography about
                British Lieutenant T. E. Lawrence. Peter O'Toole plays
                Lawrence in the film."
  },
  "encodingType":"UTF8"
}

Kolom-kolom ini dijelaskan di bawah:

  • document berisi data untuk permintaan ini, yang terdiri dari sub-kolom berikut:
    • type - jenis dokumen (HTML atau PLAIN_TEXT)
    • language - (opsional) bahasa teks dalam permintaan. Jika tidak ditentukan, bahasa akan otomatis terdeteksi. Untuk mengetahui bahasa yang didukung oleh Natural Language API, lihat Dukungan Bahasa. Bahasa yang tidak didukung akan menampilkan error dalam respons JSON.
    • Berupa content atau gcsContentUri yang berisi teks yang akan dievaluasi. Jika meneruskan content, teks ini akan disertakan langsung dalam permintaan JSON (seperti yang ditunjukkan di atas). Jika meneruskan gcsContentUri, kolom harus berisi URI yang mengarah ke konten teks dalam Google Cloud Storage.
  • encodingType - (wajib) skema encoding yang mana offset karakter yang ditampilkan ke dalam teks harus dihitung, yang harus cocok dengan encoding teks yang diteruskan. Jika parameter ini tidak ditetapkan, permintaan tidak akan mengalami error, tetapi semua offset tersebut akan ditetapkan ke -1.

Menentukan konten teks

Saat meneruskan permintaan Natural Language API, tentukan teks yang akan diproses dengan salah satu dari dua cara:

  • Meneruskan teks secara langsung dalam kolom content.
  • Meneruskan URI Google Cloud Storage dalam kolom gcsContentUri.

Dalam kedua kasus tersebut, Anda harus memastikan untuk tidak meneruskan melebihi Batas Konten yang diizinkan. Perhatikan bahwa batas konten ini dihitung berdasarkan byte, bukan karakter. Oleh karena itu, panjang karakter bergantung pada encoding teks Anda.

Permintaan di bawah ini mengacu pada file Google Cloud Storage yang berisi Alamat Gettysburg:

{
  "document":{
    "type":"PLAIN_TEXT",
    "language": "EN",
    "gcsContentUri":"gs://cloud-samples-tests/natural-language/gettysburg.txt"
  },
}

Analisis sentimen

Analisis sentimen berupaya menentukan sikap secara keseluruhan (positif atau negatif) yang dinyatakan dalam teks. Sentimen direpresentasikan oleh nilai numerik score dan magnitude.

Kolom respons analisis sentimen

Contoh respons analyzeSentiment untuk Alamat Gettysburg ditampilkan di bawah ini:

{
  "documentSentiment": {
    "score": 0.2,
    "magnitude": 3.6
  },
  "language_code": "en",
   "sentences": [
    {
      "text": {
        "content": "Four score and seven years ago our fathers brought forth
        on this continent a new nation, conceived in liberty and dedicated to
        the proposition that all men are created equal.",
        "beginOffset": 0
      },
      "sentiment": {
        "magnitude": 0.8,
        "score": 0.8
      }
    },
   ...
}

Nilai kolom ini dijelaskan di bawah:

  • documentSentiment berisi sentimen keseluruhan dokumen, yang terdiri dari kolom berikut:
    • score rentang sentimen antara -1.0 (negatif) dan 1.0 (positif) serta sesuai dengan kecenderungan emosional pada teks secara keseluruhan.
    • magnitude menunjukkan kekuatan emosi secara keseluruhan (baik positif maupun negatif) dalam teks yang diberikan, antara 0.0 dan +inf. Tidak seperti score, magnitude tidak dinormalisasi untuk documentSentiment; setiap ekspresi emosi dalam teks (baik positif maupun negatif) berkontribusi pada magnitude teks (blok teks yang lebih panjang dapat memiliki magnitudo yang lebih besar).
  • language_code berisi bahasa dokumen, baik yang diteruskan dalam permintaan awal, atau terdeteksi secara otomatis jika tidak ada.
  • language_supported berisi nilai boolean untuk mengidentifikasi apakah bahasa tersebut didukung secara resmi atau tidak
  • sentences berisi daftar kalimat yang diekstrak dari dokumen asli, yang berisi:
    • sentiment berisi nilai sentimen tingkat kalimat yang dilampirkan ke setiap kalimat, yang berisi score antara -1.0 (negatif) dan 1.0 (positif) sebagai dan magnitude antara 0.0 dan 1.0. Perlu diketahui bahwa magnitude untuk sentences dinormalkan.

Nilai sentimen 0.2 untuk Alamat Gettysburg menunjukkan emosi yang sedikit positif, sedangkan nilai besarnya 3.6 menunjukkan dokumen yang relatif emosional, mengingat ukurannya yang kecil (sekitar satu paragraf). Perhatikan bahwa kalimat pertama alamat Gettysburg berisi score positif yang sangat tinggi dari 0.8.

Menafsirkan nilai-nilai analisis sentimen

Skor sentimen dokumen menunjukkan keseluruhan emosi dari suatu dokumen. Besarnya sentimen dokumen menunjukkan seberapa banyak konten emosional yang ada dalam dokumen, dan nilai ini sering kali proporsional dengan panjang dokumen.

Perlu diperhatikan bahwa Natural Language API menunjukkan perbedaan antara emosi positif dan negatif dalam dokumen, tetapi tidak mengidentifikasi emosi positif dan negatif tertentu. Misalnya, "marah" dan "sedih" keduanya dianggap sebagai emosi negatif. Namun, saat Natural Language API menganalisis teks yang dianggap "marah", atau teks yang dianggap "sedih", responsnya hanya menunjukkan bahwa sentimen dalam teks tersebut negatif, bukan "sedih" atau "marah".

Dokumen dengan skor netral (sekitar 0.0) dapat menunjukkan dokumen dengan emosi rendah, atau dapat menunjukkan emosi yang bercampur, dengan nilai positif dan negatif tinggi yang membatalkan masing-masing dokumen. Umumnya, Anda dapat menggunakan nilai magnitude untuk membedakan kasus ini, karena dokumen yang benar-benar netral akan memiliki nilai magnitude yang rendah, sedangkan dokumen campuran akan memiliki nilai magnitudo yang lebih tinggi.

Saat membandingkan dokumen satu sama lain (terutama dokumen dengan panjang yang berbeda), pastikan untuk menggunakan nilai magnitude untuk mengkalibrasi skor Anda, karena nilai tersebut dapat membantu Anda mengukur jumlah konten emosional yang relevan.

Diagram di bawah ini menunjukkan beberapa nilai contoh dan cara menafsirkannya:

Sentimen Nilai Contoh
Jelas Positif* "score": 0,8, "magnitude": 3,0
Jelas Negatif* "score": -0,6, "magnitude": 4,0
Netral "score": 0,1, "magnitude": 0,0
Campuran "score": 0,0, "magnitude": 4,0

* Sentimen “Jelas positif” dan “jelas negatif” bervariasi untuk berbagai kasus penggunaan dan pelanggan. Anda mungkin menemukan hasil yang berbeda untuk skenario tertentu. Sebaiknya tentukan nilai minimum yang cocok untuk Anda, lalu sesuaikan nilai minimum tersebut setelah menguji dan memverifikasi hasilnya. Misalnya, Anda dapat menetapkan nilai minimum skor di atas 0,25 sebagai positif dengan jelas, lalu mengubah nilai minimum skor menjadi 0,15 setelah meninjau data dan hasil dan menemukan bahwa skor dari 0,15-0,25 juga harus dianggap positif.

Analisis entity

Analisis Entity memberikan informasi tentang entity dalam teks, yang umumnya merujuk pada "hal-hal" bernama seperti individu terkenal, tempat terkenal, objek umum, dll.

Entitas secara luas terbagi dalam dua kategori: kata benda yang dipetakan ke entitas unik (orang, tempat, dll. tertentu) atau kata benda umum (juga disebut "nominal" dalam natural language processing). Praktik umum yang baik untuk diikuti adalah bahwa jika sesuatu adalah kata benda, itu memenuhi syarat sebagai "entitas". Entitas ditampilkan sebagai offset yang diindeks ke teks asli.

Permintaan Analisis Entity harus meneruskan argumen encodingType, sehingga offset yang ditampilkan dapat ditafsirkan dengan benar.

Kolom respons analisis entity

Analisis entity menampilkan kumpulan entity yang terdeteksi dan parameter yang terkait dengan entity tersebut, seperti jenis entity, relevansi entity dengan teks keseluruhan, dan lokasi dalam teks yang merujuk pada entity yang sama.

Respons analyzeEntities terhadap permintaan entity ditampilkan di bawah:

{
  "entities": [
    {
      "name": "British",
      "type": "LOCATION",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "British",
            "beginOffset": 58
          },
          "type": "PROPER",
          "probability": 0.941
        }
      ]
    },
    {
      "name": "Lawrence",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Lawrence",
            "beginOffset": 113
          },
          "type": "PROPER",
          "probability": 0.914
        }
      ]
    },
    {
      "name": "Lawrence of Arabia",
      "type": "WORK_OF_ART",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Lawrence of Arabia",
            "beginOffset": 0
          },
          "type": "PROPER",
          "probability": 0.761
        }
      ]
    },
    {
      "name": "Lieutenant",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Lieutenant",
            "beginOffset": 66
          },
          "type": "COMMON",
          "probability": 0.927
        }
      ]
    },
    {
      "name": "Peter O Toole",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Peter O Toole",
            "beginOffset": 93
          },
          "type": "PROPER",
          "probability": 0.907
        }
      ]
    },
    {
      "name": "T. E. Lawrence",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "T. E. Lawrence",
            "beginOffset": 77
          },
          "type": "PROPER",
          "probability": 0.853
        }
      ]
    },
    {
      "name": "film",
      "type": "WORK_OF_ART",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "film",
            "beginOffset": 129
          },
          "type": "COMMON",
          "probability": 0.805
        }
      ]
    },
    {
      "name": "film biography",
      "type": "WORK_OF_ART",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "film biography",
            "beginOffset": 37
          },
          "type": "COMMON",
          "probability": 0.876
        }
      ]
    }
  ],
  "languageCode": "en",
  "languageSupported": true
}

Perlu diperhatikan bahwa Natural Language API menampilkan entity untuk "Lawrence of Arabia" (film) dan "T.E. Lawrence" (orang tersebut). Analisis entity berguna untuk membedakan entity serupa, seperti "Lawrence", dalam kasus ini.

Kolom yang digunakan untuk menyimpan parameter entity tercantum di bawah ini:

  • type menunjukkan jenis entity ini (misalnya jika entity adalah orang, lokasi, barang konsumen, dll.) Informasi ini membantu membedakan dan/atau membedakan entity, dan dapat digunakan untuk menulis pola atau mengekstrak informasi. Misalnya, nilai type dapat membantu membedakan entitas bernama serupa seperti “Lawrence of Arabia”, yang diberi tag sebagai WORK_OF_ART (film), dari “T.E. Lawrence”, yang diberi tag PERSON, misalnya. (Lihat Jenis Entitas untuk informasi selengkapnya.)

  • metadata berisi informasi sumber tentang repositori pengetahuan entity Repositori tambahan mungkin ditampilkan di masa mendatang.

  • mentions menunjukkan posisi offset dalam teks tempat entity disebutkan. Informasi ini dapat berguna jika Anda ingin menemukan semua penyebutan orang “Lawrence” di teksnya tetapi tidak di judul filmnya. Anda juga dapat menggunakan sebutan untuk mengumpulkan daftar alias entitas, seperti "Lawrence", yang merujuk pada entitas yang sama "T.E. Lawrence". Sebutan entitas dapat berupa salah satu dari dua jenis: PROPER atau COMMON. Entitas kata benda khusus untuk "Lawrence of Arabia", misalnya, dapat disebutkan secara langsung sebagai judul film, atau sebagai kata benda umum ("biografi film" T.E. Lawrence).

Analisis sentimen entity

Analisis sentimen entity menggabungkan analisis entity dan analisis sentimen, serta berupaya menentukan sentimen (positif atau negatif) yang dinyatakan tentang entity dalam teks. Sentimen entity direpresentasikan oleh skor numerik dan nilai magnitudo, serta ditentukan untuk setiap penyebutan entity. Skor tersebut kemudian digabungkan ke dalam skor sentimen keseluruhan dan magnitudo untuk suatu entity.

Permintaan analisis sentimen entity

Permintaan Analisis Sentimen Entity dikirim ke Natural Language API melalui penggunaan metode analyzeEntitySentiment dalam bentuk berikut:

{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"I love R&B music. Marvin Gaye is the best.
               'What's Going On' is one of my favorite songs.
               It was so sad when Marvin Gaye died."
  },
  "encodingType":"UTF8"
}

Anda dapat menentukan parameter language opsional dengan permintaan Anda yang mengidentifikasi kode bahasa untuk teks dalam parameter content. Jika Anda tidak menentukan parameter language, Natural Language API akan otomatis mendeteksi bahasa untuk konten permintaan Anda. Untuk mengetahui informasi tentang bahasa yang didukung oleh Natural Language API, lihat Dukungan Bahasa.

Respons analisis sentimen entity

Natural Language API memproses teks yang diberikan untuk mengekstrak entity dan menentukan sentimen. Permintaan Analisis Sentimen Entity menampilkan respons yang berisi entities yang ditemukan dalam konten dokumen, entri mentions untuk setiap kali entity disebutkan, serta nilai score dan magnitude numerik untuk setiap sebutan, seperti yang dijelaskan dalam Menafsirkan nilai analisis sentimen. Nilai score dan magnitude secara keseluruhan untuk entity adalah gabungan dari nilai score dan magnitude spesifik untuk setiap penyebutan entity. Nilai score dan magnitude untuk entity dapat berupa 0, jika ada sentimen yang rendah dalam teks, sehingga menghasilkan magnitude dari 0, atau sentimen bercampur, sehingga menghasilkan score 0.

{
  "entities": [
    {
      "name": "R&B music",
      "type": "WORK_OF_ART",
      "metadata": {},
      "salience": 0.5306305,
      "mentions": [
        {
          "text": {
            "content": "R&B music",
            "beginOffset": 7
          },
          "type": "COMMON",
          "sentiment": {
            "magnitude": 0.9,
            "score": 0.9
          }
        }
      ],
      "sentiment": {
        "magnitude": 0.9,
        "score": 0.9
      }
    },
    {
      "name": "Marvin Gaye",
      "type": "PERSON",
      "metadata": {
        "mid": "/m/012z8_",
        "wikipedia_url": "http://en.wikipedia.org/wiki/Marvin_Gaye"
      },
      "salience": 0.21584158,
      "mentions": [
        {
          "text": {
            "content": "Marvin Gaye",
            "beginOffset": 18
          },
          "type": "PROPER",
          "sentiment": {
            "magnitude": 0.4,
            "score": 0.4
          }
        },
        {
          "text": {
            "content": "Marvin Gaye",
            "beginOffset": 138
          },
          "type": "PROPER",
          "sentiment": {
            "magnitude": 0.2,
            "score": -0.2
          }
        }
      ],
      "sentiment": {
        "magnitude": 0.6,
        "score": 0.1
      }
    },
    ...
  ],
  "language": "en"
}

Sebagai contoh, baca Menganalisis Sentimen Entitas.

Analisis sintaksis

Natural Language API menyediakan serangkaian alat yang canggih untuk menganalisis dan mengurai teks melalui analisis sintaksis. Untuk melakukan analisis sintaksis, gunakan metode analyzeSyntax.

Analisis Sintaksis terdiri dari operasi berikut:

  • Ekstraksi kalimat memecah aliran teks menjadi serangkaian kalimat.
  • Tokenisasi membagi aliran teks menjadi serangkaian token, di mana setiap token biasanya berkaitan dengan satu kata.
  • Natural Language API kemudian memproses token dan menambahkan informasi sintaksis ke token dengan menggunakan lokasinya dalam kalimat.

Dokumentasi lengkap tentang rangkaian token sintaksis ada dalam panduan Morfologi & Pohon Dependensi.

Permintaan analisis sintaksis

Permintaan Analisis Sintaksis dikirim ke Natural Language API melalui penggunaan metode analyzeSyntax dalam bentuk berikut:

{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"Ask not what your country can do for you,
               ask what you can do for your country."
  },
  "encodingType":"UTF8"
}

Respons analisis sintaksis

Natural Language API memproses teks yang diberikan untuk mengekstrak kalimat dan token. Permintaan Analisis Sintaksis menampilkan respons yang berisi sentences dan tokens ini dalam bentuk berikut:

{
  "sentences": [
    ... Array of sentences with sentence information
  ],
  "tokens": [
    ... Array of tokens with token information
  ]
}

Ekstraksi kalimat

Saat melakukan analisis sintaksis, Natural Language API menampilkan array kalimat yang diekstrak dari teks yang disediakan, dengan setiap kalimat yang berisi kolom berikut dalam induk text:

  • beginOffset menunjukkan offset karakter (berbasis nol) dalam teks yang ditentukan tempat kalimat dimulai. Perhatikan bahwa offset ini dihitung menggunakan encodingType yang diteruskan.
  • content yang berisi teks lengkap dari kalimat yang diekstrak.

Misalnya, elemen sentences berikut diterima untuk permintaan Analisis Sintaksis dari Alamat Gettysburg:

{
  "sentences": [
    {
      "text": {
        "content": "Four score and seven years ago our fathers brought forth on
                    this continent a new nation, conceived in liberty and
                    dedicated to the proposition that all men are created
                    equal.",
        "beginOffset": 0
      }
    },
    {
      "text": {
        "content": "Now we are engaged in a great civil war, testing whether
                    that nation or any nation so conceived and so dedicated can
                    long endure.",
        "beginOffset": 175
      }
    },
...
...
    {
      "text": {
        "content": "It is rather for us to be here dedicated to the great task
                    remaining before us--that from these honored dead we take
                    increased devotion to that cause for which they gave the
                    last full measure of devotion--that we here highly resolve
                    that these dead shall not have died in vain, that this
                    nation under God shall have a new birth of freedom, and that
                    government of the people, by the people, for the people
                    shall not perish from the earth.",
        "beginOffset": 1002
      }
    }
  ],
  "language": "en"
}

Permintaan analisis sintaksis ke Natural Language API juga akan menyertakan sekumpulan token. Anda dapat menggunakan informasi yang terkait dengan setiap token untuk melakukan analisis lebih lanjut pada kalimat yang ditampilkan. Informasi selengkapnya tentang token ini dapat ditemukan di panduan Pohon Morfologi & Dependensi.

Tokenisasi

Metode analyzeSyntax juga mengubah teks menjadi serangkaian token, yang sesuai dengan berbagai elemen tekstual (batas kata) dari konten yang diteruskan. Proses yang digunakan Natural Language API untuk mengembangkan kumpulan token ini disebut tokenization.

Setelah token ini diekstrak, Natural Language API akan memprosesnya untuk menentukan jenis kata yang terkait (termasuk informasi morfologi) dan lema. Selain itu, token dievaluasi dan ditempatkan di dalam hierarki dependensi, yang memungkinkan Anda menentukan makna sintaksis token, dan menggambarkan hubungan token satu sama lain, serta kalimat yang memuatnya. Informasi sintaksis dan morfologi yang terkait dengan token ini berguna untuk memahami struktur sintaksis kalimat dalam Natural Language API.

Kumpulan kolom token yang ditampilkan dalam respons JSON analisis sintaksis ditampilkan di bawah ini:

  • text berisi data teks yang terkait dengan token ini, dengan kolom turunan berikut:

    • beginOffset berisi offset karakter (berbasis nol) dalam teks yang disediakan. Perhatikan bahwa meskipun dependensi (dijelaskan di bawah) hanya ada dalam kalimat, offset token diposisikan dalam teks secara keseluruhan. Perhatikan bahwa offset ini dihitung menggunakan encodingType yang diteruskan.
    • content berisi konten tekstual aktual dari teks asli.
  • partOfSpeech memberikan informasi gramatikal, termasuk informasi morfologi, tentang token, seperti tense, orang, angka, gender token, dll. (Untuk informasi yang lebih lengkap tentang kolom ini, baca panduan Morfologi & Dependensi Pohon.)

  • lemma berisi kata "root" yang menjadi dasar kata ini, sehingga Anda dapat melakukan kanonikalisasi penggunaan kata dalam teks. Misalnya, kata "tulis", "tulis", "tulis", dan "tertulis" semua didasarkan pada lema yang sama ("tulis"). Selain itu, bentuk jamak dan tunggal didasarkan pada lemma: "house" dan "houses" keduanya merujuk pada bentuk yang sama. (Lihat Lemma (morfologi).)

  • Kolom dependencyEdge mengidentifikasi hubungan antara kata dalam kalimat yang berisi token melalui tepi dalam hierarki terarah. Informasi ini dapat bermanfaat untuk penerjemahan, ekstraksi informasi, dan ringkasan. (Panduan Morfologi & Hierarki Dependensi berisi informasi yang lebih mendetail tentang penguraian dependensi.) Setiap kolom dependencyEdge berisi kolom turunan berikut:

    • headTokenIndex memberikan nilai indeks (berbasis nol) dari "token induk" token ini dalam kalimat enkapsulasi token. Token tanpa induk mengindeks sendiri.
    • label menyediakan jenis dependensi token ini pada token head-nya.

Kutipan berikut dari Franklin D. Pidato perdana Roosevelt akan menghasilkan token berikut:

CATATAN: semua tag partOfSpeech yang berisi nilai *_UNKNOWN telah dihapus agar lebih jelas.

 "tokens": [
    {
      "text": {
        "content": "The",
        "beginOffset": 4
      },
      "partOfSpeech": {
        "tag": "DET",
      },
      "dependencyEdge": {
        "headTokenIndex": 2,
        "label": "DET"
      },
      "lemma": "The"
    },
    {
      "text": {
        "content": "only",
        "beginOffset": 8
      },
      "partOfSpeech": {
        "tag": "ADJ",
      },
      "dependencyEdge": {
        "headTokenIndex": 2,
        "label": "AMOD"
      },
      "lemma": "only"
    },
    {
      "text": {
        "content": "thing",
        "beginOffset": 13
      },
      "partOfSpeech": {
        "tag": "NOUN",
        "number": "SINGULAR",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "NSUBJ"
      },
      "lemma": "thing"
    },
    {
      "text": {
        "content": "we",
        "beginOffset": 19
      },
      "partOfSpeech": {
        "tag": "PRON",
        "case": "NOMINATIVE",
        "number": "PLURAL",
        "person": "FIRST",
      },
      "dependencyEdge": {
        "headTokenIndex": 4,
        "label": "NSUBJ"
      },
      "lemma": "we"
    },
    {
      "text": {
        "content": "have",
        "beginOffset": 22
      },
      "partOfSpeech": {
        "tag": "VERB",
        "mood": "INDICATIVE",
        "tense": "PRESENT",
      },
      "dependencyEdge": {
        "headTokenIndex": 2,
        "label": "RCMOD"
      },
      "lemma": "have"
    },
    {
      "text": {
        "content": "to",
        "beginOffset": 27
      },
      "partOfSpeech": {
        "tag": "PRT",
      },
      "dependencyEdge": {
        "headTokenIndex": 6,
        "label": "AUX"
      },
      "lemma": "to"
    },
    {
      "text": {
        "content": "fear",
        "beginOffset": 30
      },
      "partOfSpeech": {
        "tag": "VERB",
      },
      "dependencyEdge": {
        "headTokenIndex": 4,
        "label": "XCOMP"
      },
      "lemma": "fear"
    },
    {
      "text": {
        "content": "is",
        "beginOffset": 35
      },
      "partOfSpeech": {
        "tag": "VERB",
        "mood": "INDICATIVE",
        "number": "SINGULAR",
        "person": "THIRD",
        "tense": "PRESENT",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "ROOT"
      },
      "lemma": "be"
    },
    {
      "text": {
        "content": "fear",
        "beginOffset": 38
      },
      "partOfSpeech": {
        "tag": "NOUN",
        "number": "SINGULAR",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "ATTR"
      },
      "lemma": "fear"
    },
    {
      "text": {
        "content": "itself",
        "beginOffset": 43
      },
      "partOfSpeech": {
        "tag": "PRON",
        "case": "ACCUSATIVE",
        "gender": "NEUTER",
        "number": "SINGULAR",
        "person": "THIRD",
      },
      "dependencyEdge": {
        "headTokenIndex": 8,
        "label": "NN"
      },
      "lemma": "itself"
    },
    {
      "text": {
        "content": ".",
        "beginOffset": 49
      },
      "partOfSpeech": {
        "tag": "PRON",
        "case": "ACCUSATIVE",
        "gender": "NEUTER",
        "number": "SINGULAR",
        "person": "THIRD",
      },
      "dependencyEdge": {
        "headTokenIndex": 8,
        "label": "NN"
      },
      "lemma": "itself"
    },
    {
      "text": {
        "content": ".",
        "beginOffset": 49
      },
      "partOfSpeech": {
        "tag": "PUNCT",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "P"
      },
      "lemma": "."
    }
  ],

Klasifikasi Konten

Anda dapat meminta Natural Language API menganalisis dokumen dan menampilkan daftar kategori konten yang berlaku untuk teks yang ditemukan dalam dokumen. Untuk mengklasifikasikan konten dalam dokumen, panggil metode classifyText.

Daftar lengkap kategori konten yang ditampilkan untuk metode classifyText dapat ditemukan di sini.

Natural Language API memfilter kategori yang ditampilkan oleh metode classifyText untuk hanya menyertakan kategori yang paling relevan untuk permintaan. Misalnya, jika /Science dan /Science/Astronomy berlaku untuk dokumen, hanya kategori /Science/Astronomy yang akan ditampilkan karena merupakan hasil yang lebih spesifik.

Untuk contoh klasifikasi konten dengan Natural Language API, lihat Mengklasifikasikan Konten.

Melakukan beberapa operasi dalam satu permintaan

Jika ingin menjalankan serangkaian operasi Natural Language dalam satu panggilan metode, Anda dapat menggunakan annotateText sebagai permintaan Natural Language API tujuan umum. Permintaan JSON Anotasi Teks mirip dengan permintaan Analisis Entity standar, tetapi juga memerlukan sekumpulan fitur yang diteruskan untuk menunjukkan operasi yang akan dilakukan pada teks. Fitur-fitur ini tercantum di bawah ini:

  • extractDocumentSentiment menjalankan analisis sentimen, seperti yang dijelaskan di bagian Analisis Sentimen.
  • extractEntities melakukan analisis entity, seperti yang dijelaskan di bagian Analisis Entity.
  • extractSyntax menunjukkan bahwa teks tertentu harus diproses untuk melakukan analisis sintaksis, seperti yang dijelaskan di bagian Analisis Sintaktis.

Permintaan berikut memanggil API untuk menganotasi features dalam kalimat pendek.

{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"The windy, cold weather was unbearable this winter."
  },
  "features":{
    "extractSyntax":true,
    "extractEntities":true,
    "extractDocumentSentiment":true
  },
  "encodingType":"UTF8"
}