Mengurangi ukuran FastText Word2Vec Facebook

Saya sedang membangun model pembelajaran mesin yang akan memproses dokumen dan mengekstrak beberapa informasi penting darinya. Untuk ini, saya perlu menggunakan penyematan kata untuk keluaran OCRed. Saya memiliki beberapa opsi berbeda untuk penyematan (Google word2vec, Stanford, FastText Facebook) tetapi perhatian utama saya adalah kata-kata OOV, karena keluaran OCR akan memiliki banyak kata yang salah eja. Misalnya, saya ingin penyematan sedemikian rupa sehingga keluaran untuk Penyematan dan Penyematan (yang dilewatkan oleh OCR) harus memiliki tingkat kesamaan tertentu. Saya tidak terlalu peduli dengan informasi kontekstual terkait.

Saya memilih FastText Facebook karena memberikan penyematan untuk kata-kata OOV juga. Satu-satunya kekhawatiran saya adalah ukuran embeddingsnya. Ukuran vektor model FastText adalah panjang 300. Apakah ada cara untuk mengurangi ukuran vektor kata yang dikembalikan (Saya berpikir untuk menggunakan PCA atau teknik reduksi dimensi lainnya, tetapi mengingat ukuran vektor kata, itu bisa jadi tugas yang memakan waktu)?


person ironhide012    schedule 19.11.2019    source sumber
comment
Anda dapat menentukan ukuran vektor yang lebih kecil dari 300 dimensi saat melatih model – dan model akan menjadi lebih kecil secara proporsional. Tapi, mengapa ukurannya menjadi perhatian? (Apakah Anda sudah mencapai batas sumber daya sistem saat menggunakan ukuran biasa?)   -  person gojomo    schedule 20.11.2019
comment
Selain itu, meskipun sensitivitas FastText terhadap fragmen subkata (karakter n-gram) mungkin sedikit membantu mengatasi kesalahan OCR, hal itu saja mungkin tidak cukup. Anda mungkin ingin menerapkan beberapa proses pemeriksaan ejaan lainnya, untuk mengganti kata-kata yang tidak ada di korpus non-glitchy lainnya dengan tebakan terbaik lainnya (berdasarkan jarak edit, frekuensi kata relatif, atau kata konteks) nyata kata-kata.   -  person gojomo    schedule 20.11.2019


Jawaban (1)


Ada fungsi asli, tetapi Anda harus menginstal fasttext dari github (mengkloning repo dan pip install .) karena saat ini (04-03-2020) tidak tersedia dengan pip install fasttext< /kuat>:

import fasttext
import fasttext.util

ft = fasttext.load_model('cc.en.300.bin')
print(ft.get_dimension())

fasttext.util.reduce_model(ft, 100)
print(ft.get_dimension())

Kode ini akan mengurangi panjang penyematan 300 vektor Anda menjadi 100.

Tautan ke dokumentasi resmi: https://fasttext.cc/docs/en/crawl-vectors.html

person Pedro Muñoz    schedule 04.03.2020
comment
Berikut ini tautan langsung ke petunjuk instalasi: github.com/facebookresearch/fastText/ pohon/master/ - person Gearoid Murphy; 19.03.2020