Antarmuka Node.js ke alat Google Word2VEC
Ini adalah antarmuka Node.js ke alat Word2VEC yang dikembangkan di Google Research untuk "implementasi efisien dari tas-of-word kontinu dan arsitektur skip-gram untuk menghitung representasi kata-kata vektor", yang dapat digunakan dalam berbagai tugas NLP. Untuk informasi lebih lanjut tentang proyek Word2Vec , konsultasikan https://code.google.com/p/word2vec/.
Saat ini, node-word2vec hanya didukung untuk sistem operasi UNIX.
Instal melalui NPM:
npm install word2vecUntuk menggunakannya di dalam node.js, memerlukan modul sebagai berikut:
var w2v = require ( 'word2vec' ) ;Untuk aplikasi di mana penting bahwa pasangan kata-kata tertentu diperlakukan sebagai istilah tunggal (misalnya "Barack Obama" atau "New York" harus diperlakukan sebagai satu kata), perusahaan teks yang digunakan untuk pelatihan harus diproses sebelumnya melalui fungsi Word2Phrases . Kata -kata yang sering terjadi di sebelah satu sama lain akan digabungkan melalui garis bawah, misalnya kata -kata "baru" dan "York" jika mengikuti di sebelah satu sama lain dapat diubah menjadi satu kata "new_york".
Secara internal, fungsi ini memanggil aplikasi baris perintah C dari proyek Google Word2VEC . Ini memungkinkannya memanfaatkan multi-threading dan mempertahankan efisiensi kode C asli. Ini memproses teks yang diberikan oleh dokumen teks input , menulis output ke file dengan nama yang diberikan oleh output .
Parameter params mengharapkan objek JS secara opsional berisi beberapa tombol berikut dan nilai terkait. Jika tidak disediakan, nilai default digunakan.
| Kunci | Keterangan | Nilai default |
|---|---|---|
| Mincount | Buang kata -kata yang muncul kurang dari waktu cincang | 5 |
| ambang | Menentukan jumlah frasa, nilai yang lebih tinggi berarti lebih sedikit frasa | 100 |
| debug | Mengatur mode debug | 2 |
| diam | menetapkan apakah output harus dicetak ke konsol | PALSU |
Setelah eksekusi yang berhasil, fungsi callback yang disediakan dipanggil. Ia menerima jumlah kode keluar sebagai parameter pertama.
Fungsi ini memanggil aplikasi baris perintah Google Word2VEC dan menemukan representasi vektor untuk kata -kata dalam corpus pelatihan input , menulis hasilnya ke file output . Output kemudian dapat dimuat ke dalam node melalui fungsi loadModel , yang memaparkan beberapa metode untuk berinteraksi dengan representasi vektor yang dipelajari dari kata -kata tersebut.
Parameter params mengharapkan objek JS secara opsional berisi beberapa tombol berikut dan nilai terkait. Untuk yang hilang, nilai default digunakan:
| Kunci | Keterangan | Nilai default |
|---|---|---|
| ukuran | Mengatur ukuran vektor kata | 100 |
| jendela | Mengatur panjang lompatan maksimal di antara kata -kata | 5 |
| mencicipi | menetapkan ambang batas untuk terjadinya kata -kata. Mereka yang muncul dengan frekuensi yang lebih tinggi dalam data pelatihan akan secara acak di bawah sampel; Rentang yang berguna adalah (0, 1E-5) | 1E-3 |
| HS | 1 = Gunakan softmax hierarkis | 0 |
| negatif | jumlah contoh negatif; Nilai umum adalah 3 - 10 (0 = tidak digunakan) | 5 |
| utas | Jumlah utas bekas | 12 |
| iter | jumlah iterasi pelatihan | 5 |
| Mincount | Ini akan membuang kata -kata yang muncul kurang dari waktu cincian | 5 |
| alfa | menetapkan tingkat pembelajaran awal | 0,025 untuk Skip-Gram dan 0,05 untuk CBOW |
| kelas | Keluaran kelas kata daripada vektor kata | 0 (vektor ditulis) |
| debug | Mengatur mode debug | 2 |
| biner | Simpan vektor yang dihasilkan dalam mode biner | 0 (OFF) |
| Savevocab | Kosakata akan disimpan ke nilai SaveVocab | |
| readvocab | Kosakata akan dibaca dari nilai ReadVocab , tidak dibangun dari data pelatihan | |
| CBOW | Gunakan tas kata -kata terus menerus | 1 (Gunakan 0 untuk model Skip-Gram) |
| diam | menetapkan apakah output harus dicetak ke konsol | PALSU |
Setelah eksekusi yang berhasil, fungsi callback yang disediakan dipanggil. Ia menerima jumlah kode keluar sebagai parameter pertama.
Ini adalah fungsi utama dari paket, yang memuat file model yang disimpan yang berisi representasi vektor kata ke dalam memori. File seperti itu dapat dibuat dengan menggunakan fungsi Word2Vec . Setelah file berhasil dimuat, fungsi callback yang disediakan dipecat, yang berikut konvensi berikut memiliki dua parameter: err dan model . Jika semuanya berjalan dengan lancar dan tidak ada kesalahan, argumen pertama harus null . Parameter model adalah objek model yang memegang semua data dan memaparkan sifat dan metode yang dijelaskan di bagian objek model .
Contoh:
w2v . loadModel ( './vectors.txt' , function ( error , model ) {
console . log ( model ) ;
} ) ;Output sampel:
{
getVectors : [ Function ] ,
distance : [ Function : distance ] ,
analogy : [ Function : analogy ] ,
words : '98331' ,
size : '200'
} Jumlah kata unik dalam corpus pelatihan.
Panjang kata -kata yang dipelajari.
Menghitung kesamaan kata antara word1 dan word2 .
Contoh:
model . similarity ( 'ham' , 'cheese' ) ;Output sampel:
0.4907762118841032 Menghitung jarak cosinus antara frasa yang disediakan ( string yang secara internal dikonversi ke berbagai kata, yang menghasilkan vektor frasa ) dan kata -kata lain dari kosa kata. Dikembalikan adalah kata -kata number dengan kemiripan tertinggi dengan frasa yang disediakan. Jika number tidak disediakan, secara default 40 kata skor tertinggi dikembalikan. Jika tidak ada kata dalam frasa yang muncul di kamus, fungsi mengembalikan null . Dalam semua kasus lain, kata -kata yang tidak diketahui akan dijatuhkan dalam perhitungan jarak cosinus.
Contoh:
model . mostSimilar ( 'switzerland' , 20 ) ;Output sampel:
[
{ word : 'chur' , dist : 0.6070252929307018 } ,
{ word : 'ticino' , dist : 0.6049085549621765 } ,
{ word : 'bern' , dist : 0.6001648890419077 } ,
{ word : 'cantons' , dist : 0.5822226582323267 } ,
{ word : 'z_rich' , dist : 0.5671853621346818 } ,
{ word : 'iceland_norway' , dist : 0.5651901750812693 } ,
{ word : 'aargau' , dist : 0.5590524831511438 } ,
{ word : 'aarau' , dist : 0.555220055372284 } ,
{ word : 'zurich' , dist : 0.5401119092258485 } ,
{ word : 'berne' , dist : 0.5391358099043649 } ,
{ word : 'zug' , dist : 0.5375590160292268 } ,
{ word : 'swiss_confederation' , dist : 0.5365824598661265 } ,
{ word : 'germany' , dist : 0.5337325187293028 } ,
{ word : 'italy' , dist : 0.5309218588704736 } ,
{ word : 'alsace_lorraine' , dist : 0.5270204106304165 } ,
{ word : 'belgium_denmark' , dist : 0.5247942780963807 } ,
{ word : 'sweden_finland' , dist : 0.5241634037188426 } ,
{ word : 'canton' , dist : 0.5212495170066538 } ,
{ word : 'anterselva' , dist : 0.5186651140386938 } ,
{ word : 'belgium' , dist : 0.5150383129735169 }
] Untuk sepasang kata dalam suatu hubungan seperti man dan king , fungsi ini mencoba menemukan istilah yang berdiri dalam hubungan analog dengan word yang disediakan. Jika number tidak disediakan, secara default 40 hasil skor tertinggi dikembalikan.
Contoh:
model . analogy ( 'woman' , [ 'man' , 'king' ] , 10 ) ;Output sampel:
[
{ word : 'queen' , dist : 0.5607083309028658 } ,
{ word : 'queen_consort' , dist : 0.510974781496456 } ,
{ word : 'crowned_king' , dist : 0.5060923120115347 } ,
{ word : 'isabella' , dist : 0.49319425034513376 } ,
{ word : 'matilda' , dist : 0.4931204901924969 } ,
{ word : 'dagmar' , dist : 0.4910608716969606 } ,
{ word : 'sibylla' , dist : 0.4832698899279795 } ,
{ word : 'died_childless' , dist : 0.47957251302898396 } ,
{ word : 'charles_viii' , dist : 0.4775804990655765 } ,
{ word : 'melisende' , dist : 0.47663194967001704 }
] Mengembalikan representasi vektor yang dipelajari untuk word input. Jika word tidak ada dalam kosakata, fungsi mengembalikan null .
Contoh:
model . getVector ( 'king' ) ;Output sampel:
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} Mengembalikan representasi vektor yang dipelajari untuk kata -kata yang disediakan. Jika kata -kata tidak terdefinisi, yaitu fungsinya ditimbulkan tanpa memberikan argumen apa pun, ia mengembalikan vektor untuk semua kata yang dipelajari. Nilai yang dikembalikan adalah array objek yang merupakan contoh dari kelas WordVec .
Contoh:
model . getVectors ( [ 'king' , 'queen' , 'boy' , 'girl' ] ) ;Output sampel:
[
{
word : 'king' ,
values : [
0.006371254151248689 ,
- 0.04533821363410406 ,
0.1589142808632736 ,
...
0.042080221123209825 ,
- 0.038347102017109225
]
} ,
{
word : 'queen' ,
values : [
0.014399041122817985 ,
- 0.000026896638109750347 ,
0.20398248693190596 ,
...
- 0.05329081648586445 ,
- 0.012556868376422963
]
} ,
{
word : 'girl' ,
values : [
- 0.1247347144692245 ,
0.03834108759049417 ,
- 0.022911846734360187 ,
...
- 0.0798994867922872 ,
- 0.11387393949666696
]
} ,
{
word : 'boy' ,
values : [
- 0.05436531234037158 ,
0.008874993957578164 ,
- 0.06711992414442335 ,
...
0.05673998568026764 ,
- 0.04885347925837509
]
}
] Mengembalikan kata yang memiliki representasi vektor terdekat dengan input vec . Fungsi mengharapkan vektor kata, baik instance konstruktor WordVector atau array nilai angka dengan size panjang. Ini mengembalikan kata dalam kosa kata yang jaraknya antara vektornya dan vektor input yang disediakan paling rendah.
Contoh:
model . getNearestWord ( model . getVector ( 'empire' ) ) ;Output sampel:
{ word : 'empire' , dist : 1.0000000000000002 } Mengembalikan kata -kata yang representasi vektornya paling dekat dengan input vec . Parameter pertama fungsi mengharapkan vektor kata, baik instance dari konstruktor WordVector atau array nilai angka dengan size panjang. Parameter kedua, number , adalah opsional dan menentukan jumlah kata yang dikembalikan. Jika tidak disediakan, nilai default 10 digunakan.
Contoh:
model . getNearestWords ( model . getVector ( 'man' ) , 3 )Output sampel:
[
{ word : 'man' , dist : 1.0000000000000002 } ,
{ word : 'woman' , dist : 0.5731114915085445 } ,
{ word : 'boy' , dist : 0.49110060323870924 }
] Kata dalam kosakata.
Representasi vektor yang dipelajari untuk kata, serangkaian size panjang.
Menambahkan vektor input wordVector ke vektor .values .
Kurangi vektor input wordVector ke vektor .values .
Jalankan tes melalui npm test Perintah
Klon Repositori Git dengan Perintah
$ git clone https://github.com/Planeshifter/node-word2vec.gitUbah ke direktori proyek dan kompilasi file sumber C melalui
$ cd node-word2vec
$ make --directory=srcApache v2.