O BPEMB é uma coleção de incorporações de subgletas pré-treinadas em 275 idiomas, com base na codificação de pares de bytes (BPE) e treinados na Wikipedia. Seu uso pretendido é como entrada para modelos neurais no processamento de linguagem natural.
Site ・ Uso ・ Download ・ MultibpeMB ・ Paper (PDF) ・ Citando BPEMB
Instale o BPEMB com PIP:
pip install bpembOs modelos de incorporação e peça de sentença serão baixados automaticamente na primeira vez que você os usar.
> >> from bpemb import BPEmb
# load English BPEmb model with default vocabulary size (10k) and 50-dimensional embeddings
> >> bpemb_en = BPEmb ( lang = "en" , dim = 50 )
downloading https : // nlp . h - its . org / bpemb / en / en . wiki . bpe . vs10000 . model
downloading https : // nlp . h - its . org / bpemb / en / en . wiki . bpe . vs10000 . d50 . w2v . bin . tar . gzVocê pode fazer duas coisas principais com o BPEMB. O primeiro é a segmentação de subgelas:
# apply English BPE subword segmentation model
> >> bpemb_en . encode ( "Stratford" )
[ '▁strat' , 'ford' ]
# load Chinese BPEmb model with vocabulary size 100k and default (100-dim) embeddings
> >> bpemb_zh = BPEmb ( lang = "zh" , vs = 100000 )
# apply Chinese BPE subword segmentation model
> >> bpemb_zh . encode ( "这是一个中文句子" ) # "This is a Chinese sentence."
[ '▁这是一个' , '中文' , '句子' ] # ["This is a", "Chinese", "sentence"]Se / como uma palavra é dividida depende do tamanho do vocabulário. Geralmente, um tamanho de vocabulário menor produz uma segmentação em muitas subpainhas, enquanto um grande tamanho de vocabulário resultará em palavras frequentes não serem divididas:
| Tamanho do vocabulário | Segmentação |
|---|---|
| 1000 | ['Str', 'em', 'f', 'ord'] |
| 3000 | ['Str', 'em', 'ford'] |
| 5000 | ['Str', 'em', 'ford'] |
| 10000 | ['Strat', 'Ford'] |
| 25000 | ['Stratford'] |
| 50000 | ['Stratford'] |
| 100000 | ['Stratford'] |
| 200000 | ['Stratford'] |
O segundo objetivo do BPEMB é fornecer incorporações de subgletas pré -tenham:
# Embeddings are wrapped in a gensim KeyedVectors object
> >> type ( bpemb_zh . emb )
gensim . models . keyedvectors . Word2VecKeyedVectors
# You can use BPEmb objects like gensim KeyedVectors
> >> bpemb_en . most_similar ( "ford" )
[( 'bury' , 0.8745079040527344 ),
( 'ton' , 0.8725000619888306 ),
( 'well' , 0.871537446975708 ),
( 'ston' , 0.8701574206352234 ),
( 'worth' , 0.8672043085098267 ),
( 'field' , 0.859795331954956 ),
( 'ley' , 0.8591548204421997 ),
( 'ington' , 0.8126075267791748 ),
( 'bridge' , 0.8099068999290466 ),
( 'brook' , 0.7979353070259094 )]
> >> type ( bpemb_en . vectors )
numpy . ndarray
> >> bpemb_en . vectors . shape
( 10000 , 50 )
> >> bpemb_zh . vectors . shape
( 100000 , 100 )Para usar as incorporações de subpaltos em sua rede neural, codifique sua entrada nos IDs da subglema:
> >> ids = bpemb_zh . encode_ids ( "这是一个中文句子" )
[ 25950 , 695 , 20199 ]
> >> bpemb_zh . vectors [ ids ]. shape
( 3 , 100 ) Ou use o método embed :
# apply Chinese subword segmentation and perform embedding lookup
> >> bpemb_zh . embed ( "这是一个中文句子" ). shape
( 3 , 100 )ab (Abkhazian) ・ ace (Achinese) ・ ady (Adyghe) ・ af (Afrikaans) ・ ak (Akan) ・ als (Alemannic) ・ am (Amharic) ・ an (Aragonese) ・ ang (Old English) ・ ar (Arabic) ・ arc (Official Aramaic) ・ arz (Egyptian Arabic) ・ as (Assamese)・ AST (ASTURIAN) ・ ATJ (ATIKAMEKW) ・ AV (AVARIC) ・ AY (AYMARA) ・ AZ (Azerbaijani) ・ AZB (sul do Azerbaijão)
BA (Bashkir) ・ Bar (Baviera) ・ Bcl (Bikol Central) ・ Be (Bieldarusian) ・ BG (Búlgaro) ・ Bi (Bislama) ・ Bjn (Banjar) ・ BM (BHA BPY) ・ Bn (Beni) ・ ・ Bpy (Bin Bini) (Bósnia) ・ Bug (Buginese) ・ BXR (Rússia Buriat)
Ca (catalão) ・ cdo (min dong chinês) ・ CE (checheno) ・ ceb (Cebuano) ・ CH (Chamborro) ・ Chr (Cherokee) ・ Chy (Cheyenne) ・ Ckb (Centro Cramhish) ・ Co (CORRSICAN) ・ CRE (CRH) (Kashubian) ・ Cu (igreja eslava) ・ cv (chuvash) ・ cy (galês)
Da (dinamarquês) ・ de (alemão) ・ din (dinka) ・ diq (dimli) ・ dsb (inferior sorbian) ・ dty (dotyali) ・ dv (dhivehi) ・ dz (dzongkha)
EE (ovelha) ・ el (grego moderno) ・ en (inglês) ・ EO (Esperanto) ・ es (espanhol) ・ et (estoniano) ・ eu (basco) ・ ext (extremaduran)
fa (persa) ・ ff (fitah) ・ fi (finlandês) ・ fj (fijian) ・ fo (faroese) ・ fr (francês) ・ frp (arpitan) ・ frr (norte frisiano) ・ pêlo (friuliano) ・ fy (frisian ocidental)
Ga (irlandês) ・ Gag (GagaUz) ・ Gan (Gan Chinese) ・ GD (Gaélico Escocês) ・ GL (Galian) ・ Glk (Gilaki) ・ Gn (Guarani) ・ Gom (Goan Konkani) ・ Gothic) ・ Gujarati) ・ GV (Got) ・ Got)
Ha (Hausa) ・ Hak (Hakka Chinese) ・ Haw (Havaiano) ・ ele (hebraico) ・ Hi (Hindi) ・ HIF (Fiji Hindi) ・ HR (Croata) ・ Hsb (Armenian) ・ Ht (Haitian) ・ Hu (húngaro) ・ (Armenian)
ia (interlingua) ・ Id (indonésio) ・ ie (interlingue) ・ ig (igbo) ・ ik (inUpiaq) ・ is (iloko) ・ io (ido) ・ é (islandês) ・ it (italiano) ・ iu (inuktitut)
JA (japonês) ・ Jam (jamaicano Creole English) ・ JBO (lojban) ・ JV (javanês)
ka (georgiano) ・ kaa (kara-kalpak) ・ kab (kabyle) ・ kbd (kabardian) ・ kbp (kabiyè) ・ kg (kongo) ・ ki (kikuyu) ・ kk (kazakh) ・ kl (kalmisut)・ Ko (coreano) ・ Koi (Komi-Permyak) ・ Krc (Karachay-Balkar) ・ Ks (Caxemira) ・ Ksh (Kölsch) ・ Ku (Kurdish) ・ KV (Komi) ・ KW (Cornish) ・ Ky (Kirghiz)
la (latim) ・ lad (ladino) ・ lb (luxemburgo) ・ lbe (lak) ・ lez (lezghian) ・ lg (ganda) ・ li (limburgan) ・ lij (ligurian) ・ lmo (lombard) ・ ln (lingala) ・ ligian) ・ lmo (lombard) ・ ln (lingala) ・ lio) (Lituano) ・ LTG (Latgalian) ・ LV (letão)
mai (Maithili) ・ mdf (Moksha) ・ mg (Malagasy) ・ mh (Marshallese) ・ mhr (Eastern Mari) ・ mi (Maori) ・ min (Minangkabau) ・ mk (Macedonian) ・ ml (Malayalam) ・ mn (Mongolian) ・ mr (Marathi) ・ mrj (Western Mari) ・ ms (Malaio) ・ mt (maltese) ・ mwl (mirandese) ・ meu (birmaneses) ・ myv (erzya) ・ mzn (mazanderani)
na (Nauru) ・ nap (Neapolitan) ・ nds (Low German) ・ ne (Nepali) ・ new (Newari) ・ ng (Ndonga) ・ nl (Dutch) ・ nn (Norwegian Nynorsk) ・ no (Norwegian) ・ nov (Novial) ・ nrm (Narom) ・ nso (Pedi) ・ nv (Navajo)・ NY (Nyanja)
OC (Occitan) ・ Olo (Livvi) ・ om (Oromo) ・ ou (Oriya) ・ OS (OSSETIAN)
pa (Panjabi) ・ pag (Pangasinan) ・ pam (Pampanga) ・ pap (Papiamento) ・ pcd (Picard) ・ pdc (Pennsylvania German) ・ pfl (Pfaelzisch) ・ pi (Pali) ・ pih (Pitcairn-Norfolk) ・ pl (Polish) ・ pms (Piemontese) ・ pnb (Western Panjabi) ・ pnt (Pontic) ・ ps (pushto) ・ pt (português)
Qu (Quechua)
RM (Romansh) ・ rmy (Vlax Romani) ・ rn (runi) ・ ro (romeno) ・ ru (russo) ・ rue (rusyn) ・ rw (kinyarwanda)
sa (Sanskrit) ・ sah (Yakut) ・ sc (Sardinian) ・ scn (Sicilian) ・ sco (Scots) ・ sd (Sindhi) ・ se (Northern Sami) ・ sg (Sango) ・ sh (Serbo-Croatian) ・ si (Sinhala) ・ sk (Slovak) ・ sl (Slovenian) ・ sm (Samoan) ・ sn (Shona) ・ so (Somali) ・ sq (Albanian) ・ sr (Serbian) ・ srn (Sranan Tongo) ・ ss (Swati) ・ st (Southern Sotho) ・ stq (Saterfriesisch) ・ su (Sundanese) ・ sv (Swedish) ・ sw (Swahili) ・ szl (Silesian)
ta (Tamil) ・ tcy (Tulu) ・ te (Telugu) ・ tet (Tetum) ・ tg (Tajik) ・ th (Thai) ・ ti (Tigrinya) ・ tk (Turkmen) ・ tl (Tagalog) ・ tn (Tswana) ・ to (Tonga) ・ tpi (Tok Pisin) ・ tr (Turkish) ・ ts (Tsonga) ・ tt (tatar) ・ tum (tumbuka) ・ tw (twi) ・ ty (tahitiano) ・ tyv (tuviniano)
udm (udmurt) ・ ug (uighur) ・ uk (ucraniano) ・ ur (urdu) ・ uz (uzbek)
ve (Venda) ・ Vec (veneziano) ・ vep (veps) ・ vi (vietnamita) ・ vls (vlaams) ・ vo (Volapük)
WA (Walloon) ・ Guerra (Waray) ・ Wo (Wolof) ・ Wuu (Wu Chinese)
Xal (Kalmyk) ・ xh (xhosa) ・ xmf (mingrelian)
Yi (Yiddish) ・ Yo (ioruba)
ZA (Zhuang) ・ Zea (ZeeUws) ・ Zh (chinês) ・ Zu (Zulu)
Multi (multilíngue)
Se você usar o BPEMB no trabalho acadêmico, cite:
@InProceedings{heinzerling2018bpemb,
author = {Benjamin Heinzerling and Michael Strube},
title = "{BPEmb: Tokenization-free Pre-trained Subword Embeddings in 275 Languages}",
booktitle = {Proceedings of the Eleventh International Conference on Language Resources and Evaluation (LREC 2018)},
year = {2018},
month = {May 7-12, 2018},
address = {Miyazaki, Japan},
editor = {Nicoletta Calzolari (Conference chair) and Khalid Choukri and Christopher Cieri and Thierry Declerck and Sara Goggi and Koiti Hasida and Hitoshi Isahara and Bente Maegaard and Joseph Mariani and Hélène Mazo and Asuncion Moreno and Jan Odijk and Stelios Piperidis and Takenobu Tokunaga},
publisher = {European Language Resources Association (ELRA)},
isbn = {979-10-95546-00-9},
language = {english}
}