Os avanços nas redes neurais levaram a desenvolvimentos em áreas como visão computacional, reconhecimento de fala e processamento de linguagem natural (PNL). Um dos desenvolvimentos recentes mais influentes da PNL é o uso de incorporações de palavras, onde as palavras são representadas como vetores em um espaço contínuo, capturando muitas relações sintáticas e semânticas entre elas.
Aravec é um projeto de representação de palavras distribuídas pré-treinadas (incorporação de palavras), que visa fornecer à comunidade de pesquisa de PNs árabe gratuita para usar e modelos de incorporação de palavras poderosas. A primeira versão do Aravec fornece seis modelos de incorporação de palavras diferentes construídos sobre três domínios diferentes de conteúdo em árabe; Tweets e Wikipedia Este artigo descreve os recursos usados para criar os modelos, as técnicas de limpeza de dados empregadas, a etapa de pré -processamento realizada, bem como os detalhes das técnicas de criação de incorporação de palavras empregadas.
A terceira versão do Aravec fornece 16 modelos de incorporação de palavras diferentes construídos sobre dois domínios diferentes de conteúdo em árabe; Tweets e artigos árabes da Wikipedia. A principal diferença entre esta versão e as anteriores é que produzimos dois tipos diferentes de modelos, unigramas e modelos N-Grams. Utilizamos o conjunto de técnicas estatísticas para gerar os n-gramas mais comuns usados de cada domínio de dados.
Por tokens totais de mais de 1,169,075,128 tokens.
Dê uma olhada em como os modelos Ngrams são representados:
Veja a página de resultados para obter mais consultas.
Abu Bakr Soliman, Kareem Eisa, and Samhaa R. El-Beltagy, “AraVec: A set of Arabic Word Embedding Models for use in Arabic NLP”, in proceedings of the 3rd International Conference on Arabic Computational Linguistics (ACLing 2017), Dubai, UAE, 2017.
Esses modelos foram construídos usando a biblioteca Gensim Python. Aqui está um código simples para carregar e usar um dos modelos seguindo estas etapas:
gensim > = 3.4 e nltk > = 3.2 Usando pip ou condapip install gensim nltk
conda install gensim nltk
Twittert-CBOW ]Códigos de notebook
# -*- coding: utf8 -*-
import gensim
import re
import numpy as np
from nltk import ngrams
from utilities import * # import utilities.py module
# ============================
# ====== N-Grams Models ======
t_model = gensim . models . Word2Vec . load ( 'models/full_grams_cbow_100_twitter.mdl' )
# python 3.X
token = clean_str ( u'ابو تريكه' ). replace ( " " , "_" )
# python 2.7
# token = clean_str(u'ابو تريكه'.decode('utf8', errors='ignore')).replace(" ", "_")
if token in t_model . wv :
most_similar = t_model . wv . most_similar ( token , topn = 10 )
for term , score in most_similar :
term = clean_str ( term ). replace ( " " , "_" )
if term != token :
print ( term , score )
# تريكه 0.752911388874054
# حسام_غالي 0.7516342401504517
# وائل_جمعه 0.7244222164154053
# وليد_سليمان 0.7177559733390808
# ...
# =========================================
# == Get the most similar tokens to a compound query
# most similar to
# عمرو دياب + الخليج - مصر
pos_tokens = [ clean_str ( t . strip ()). replace ( " " , "_" ) for t in [ 'عمرو دياب' , 'الخليج' ] if t . strip () != "" ]
neg_tokens = [ clean_str ( t . strip ()). replace ( " " , "_" ) for t in [ 'مصر' ] if t . strip () != "" ]
vec = calc_vec ( pos_tokens = pos_tokens , neg_tokens = neg_tokens , n_model = t_model , dim = t_model . vector_size )
most_sims = t_model . wv . similar_by_vector ( vec , topn = 10 )
for term , score in most_sims :
if term not in pos_tokens + neg_tokens :
print ( term , score )
# راشد_الماجد 0.7094649076461792
# ماجد_المهندس 0.6979793906211853
# عبدالله_رويشد 0.6942606568336487
# ...
# ====================
# ====================
# ==============================
# ====== Uni-Grams Models ======
t_model = gensim . models . Word2Vec . load ( 'models/full_uni_cbow_100_twitter.mdl' )
# python 3.X
token = clean_str ( u'تونس' )
# python 2.7
# token = clean_str('تونس'.decode('utf8', errors='ignore'))
most_similar = t_model . wv . most_similar ( token , topn = 10 )
for term , score in most_similar :
print ( term , score )
# ليبيا 0.8864325284957886
# الجزائر 0.8783721327781677
# السودان 0.8573237061500549
# مصر 0.8277812600135803
# ...
# get a word vector
word_vector = t_model . wv [ token ]Para dar uma olhada no que podemos retificar dos modelos N-Grams usando algumas consultas mais semelhantes. Por favor, veja a página de resultados
| Modelo | Docos No. | Vocabulários No. | VEC-Size | Download |
|---|---|---|---|---|
| Twitter-cbow | 66.900.000 | 1.476.715 | 300 | Download |
| Twitter-cbow | 66.900.000 | 1.476.715 | 100 | Download |
| Twitter-skipgram | 66.900.000 | 1.476.715 | 300 | Download |
| Twitter-skipgram | 66.900.000 | 1.476.715 | 100 | Download |
| Wikipedia-cbow | 1.800.000 | 662,109 | 300 | Download |
| Wikipedia-cbow | 1.800.000 | 662,109 | 100 | Download |
| Wikipedia-skipgram | 1.800.000 | 662,109 | 300 | Download |
| Wikipedia-skipgram | 1.800.000 | 662,109 | 100 | Download |
| Modelo | Docos No. | Vocabulários No. | VEC-Size | Download |
|---|---|---|---|---|
| Twitter-cbow | 66.900.000 | 1.259.756 | 300 | Download |
| Twitter-cbow | 66.900.000 | 1.259.756 | 100 | Download |
| Twitter-skipgram | 66.900.000 | 1.259.756 | 300 | Download |
| Twitter-skipgram | 66.900.000 | 1.259.756 | 100 | Download |
| Wikipedia-cbow | 1.800.000 | 320.636 | 300 | Download |
| Wikipedia-cbow | 1.800.000 | 320.636 | 100 | Download |
| Wikipedia-skipgram | 1.800.000 | 320.636 | 300 | Download |
| Wikipedia-skipgram | 1.800.000 | 320.636 | 100 | Download |
Abu Bakr Soliman, Kareem Eisa, and Samhaa R. El-Beltagy, “AraVec: A set of Arabic Word Embedding Models for use in Arabic NLP”, in proceedings of the 3rd International Conference on Arabic Computational Linguistics (ACLing 2017), Dubai, UAE, 2017.