BPEMB представляет собой набор предварительно обученных подвесных встроений на 275 языках, основанных на кодировании байтовых паров (BPE) и обученной Википедии. Его предполагаемое использование является входным для нейронных моделей в обработке естественного языка.
Веб -сайт ・ Использование ・ Скачать ・ MultiBpemb ・ Paper (PDF) ・ Сцитирование BPEMB
Установите BPEMB с PIP:
pip install bpembМодели Entgeddings и предложение будут загружены автоматически при первом их использовании.
> >> 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 . gzВы можете сделать две основные вещи с BPEMB. Первый - это сегментация подчиков:
# 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"]Если / как разделится слово, зависит от размер словарного запаса. Как правило, меньший размер словарного запаса даст сегментацию на многие подчинки, в то время как большой размер словарного запаса приведет к тому, что частые слова не будут разделены:
| Размер словарного запаса | сегментация |
|---|---|
| 1000 | ['Str', 'at', 'f', 'ord'] |
| 3000 | ['Str', 'at', 'ford'] |
| 5000 | ['Str', 'at', 'ford'] |
| 10000 | ['Strat', 'ford'] |
| 25000 | ['Stratford'] |
| 50000 | ['Stratford'] |
| 100000 | ['Stratford'] |
| 200000 | ['Stratford'] |
Вторая цель BPEMB - предоставление предварительно подготовленных подвесных вторжений:
# 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 )Для использования встроенных подводов в вашей нейронной сети либо кодируйте ваш ввод в идентификаторы подводов:
> >> ids = bpemb_zh . encode_ids ( "这是一个中文句子" )
[ 25950 , 695 , 20199 ]
> >> bpemb_zh . vectors [ ids ]. shape
( 3 , 100 ) Или используйте метод embed :
# apply Chinese subword segmentation and perform embedding lookup
> >> bpemb_zh . embed ( "这是一个中文句子" ). shape
( 3 , 100 )ab (abkhazian) ・ ace (ахинзе) ・ ady (adyghe) ・ af (африкаанс) ・ ak (akan) ・ als (alemannic) ・ am (амхарский) ・ (арагонский ast (asturian) ・ atj (atikamekw) ・ av (avaric) ・ yy (aymara) ・ az (азербайджани) ・ azb (Южный Азербайджани)
Ba (Bashkir) ・ бар (баварский) ・ bcl (центральный бикол) ・ be (беларусиан) ・ bg (болгарский) ・ bi (бислама) ・ bjn (banjar) ・ bm (bambara) ・ bn (bengali) ・ bo (tibetan) ・ bpy ・ bpy ・ bpy ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・) (Босний) ・ ошибка (бугиназе) ・ bxr (Россия Буриат)
CA (каталонский) ・ CDO (MIN DONG CINKING) ・ CE (чеченский) ・ CEB (CEBUANO) ・ CH (Chamorro) ・ Chr (Cherokee) ・ Chy (Cheyenne) ・ CKB (центральный курдиш) ・ Co (corsican) ・ CRE) ・ CRH (CRIMEAN TATAR). (Кашубиан) ・ Cu (церковный славяник) ・ CV (Чуваш) ・ Cy (валлийский)
da (датский) ・ de (немецкий) ・ din (dinka) ・ diq (dimli) ・ dsb (нижний сорбиян) ・ dty (dotyali) ・ dv (dhivehi) ・ dz (dzongkha)
Ee (Ewe) ・ el (современный греческий) ・ en (английский) ・ eo (esperanto) ・ es (испанский) ・ et (эстонский) ・ eu (баск) ・ ext (экстремадуран)
FA (персидский) ・ ff (fulah) ・ fi (finnish) ・ fj (fijian) ・ fo (faroese) ・ fr (французский) ・ frp (arpitan) ・ frr (северный фризский) ・ мех (фриулиан) ・ fy (западный фриз)
ga (ирландский) ・ gag (gagauz) ・ gan (gan winking) ・ gd (шотландский гэльский) ・ gl (галиц) ・ glk (gilaki) ・ gn (гуарани) ・ gom (goan konkani) ・ получил (готическое) ・ gu (gujarati)
Ha (Hausa) ・ hak (hakka китайский) ・ Haw (Hawaiian) ・ He (иврит) ・ hi (хинди) ・ hif (fiji hindi) ・ Hr (хорватский) ・ hsb (верхняя сорбияна) ・ ht (гаитянец) ・ hu (Венгрия)
IA (terlingua) ・ id (индонезийский) ・ IE (retringue) ・ ig (igbo) ・ ik (inupiaq) ・ ilo (iloko) ・ io (ido) ・ (исландский) ・ It (итальянский) ・ iu (inuktitut)
JA (японский) ・ Jam (ямайский креольский английский) ・ jbo (lojban) ・ JV (яванский)
ka (Georgian) ・ Kaa (кара-калпак) ・ kab (kabyle) ・ kbd (kabardian) ・ kbp (kabiyè) ・ wg (kongo) ・ ki (kikuyu) ・ kk (kazakh) kl (kalaallisut) ・ kmerande) ・ kmandadadadadadade) KO (корейский) ・ Koi (komi-permyak) ・ Krc (Karachay-balkar) ・ Ks (кашмири) ・ Ksh (kölsch) ・ Ku (Kurdish) ・ Kv (Komi) ・ KW (Cornish) ・ KY (Kirghiz)
la (латынь) ・ lad (ladino) ・ lb (люксембургиш) ・ lbe (lak) ・ Lez (Lezghian) ・ lg (ganda) ・ li (limburgan) ・ lij (лигурий) ・ lmo (lombard) ・ ln (lingala) ・ lrc (север) (Литовский) ・ LTG (латгалянь) ・ lv (латвиан)
Mai (maithili) ・ Mdf (Moksha) ・ Mg (малагасивый) ・ MH (Marshallese) ・ MHR (восточный мари) ・ Mi (маори) ・ мин (Минангкабау) ・ mk (македонский) ・ ml (малайалам) ・ mn (mongolian) ・ mrati) ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ mri) (Малайский) ・ мт (мальтийский) ・ mwl (Мирандез) ・ мой (бирманский) ・ myv (erzya) ・ mzn (mazanderani)
na (nauru) ・ nap (neapolitan) ・ nds (низкий немецкий) ・ ne (nepali) ・ new (newari) ・ ng (ndonga) ・ nl (голландский) ・ nn (норвежский нинорск) ・ нет (норвежский・ NY (Nyanja)
oc (occitan) ・ olo (livvi) ・ om (oromo) ・ или (oriya) ・ os (osossetian)
pa (panjabi) ・ pag (pangasinan) ・ pam (pampanga) ・ Pap (papiamento) ・ pcd (picard) ・ pdc (Пенсильвания немецкий Panjabi) ・ pnt (pontic) ・ ps (pushto) ・ pt (португальский)
qu (quechua)
RM (Romansh) ・ rmy (vlax romani) ・ rn (rundi) ・ ro (румын) ・ ru (русский) ・ rue (rusyn) ・ rw (kinyarwanda)
SA (санскрит) ・ SAH (Yakut) ・ SC (сардин) ・ SCN (Sicilian) ・ Sco (Scots) ・ SD (Sindhi) ・ Se (Northern Sami) ・ Sg (Sango) ・ Sh (Serbo Coratian) ・ Si (Sinhala) ・ Sk (Slovak) ・loven) ・ si (sinhala) ・ sk (slovak) ・ slowoin) ・ sman) ・ slovovian) ・ smaniiniin) ・ ・ slowoin). sn (Shona) ・ So (сомали) ・ sq (албанский) ・ sr (серб) ・ srn (sranan tongo) ・ ss (swati) ・ st (южный сото) ・ stq (saterfriesisish) ・ su (Сунданез) ・ sv (swedish) ・ swahil
ta (тамил) ・ tcy (tulu) ・ te (телугу) ・ tet (tetum) ・ tg (tajik) ・ th (thai) ・ ti (tigrinya) ・ tk (туркмен) (Tsonga) ・ tt (tatar) ・ Tum (tumbuka) ・ tw (twi) ・ ty (tahitian) ・ tyv (tuvinian)
udm (udmurt) ・ ug (uighur) ・ Великобритания (украинская) ・ ur (urdu) ・ uz (uzbek)
ve (venda) ・ vec (венециан) ・ VEP (VEP) ・ VI (вьетнамский) ・ VLS (VLAAMS) ・ Vo (Volapük)
wa (валлон) ・ война (waray) ・ wo (wolof) ・ wuu (wu winking)
xal (kalmyk) ・ xh (xhosa) ・ xmf (mingrelian)
Yi (идиш) ・ yo (yoruba)
ZA (Zhuang) ・ Zea (Zeeuws) ・ Zh (китайский) ・ Zu (Zulu)
многоязычный (многоязычный)
Если вы используете BPEMB в академической работе, пожалуйста, цитируйте:
@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}
}