Los avances en las redes neuronales han llevado a desarrollos en campos como la visión por computadora, el reconocimiento de voz y el procesamiento del lenguaje natural (PNL). Uno de los desarrollos recientes más influyentes en PNL es el uso de incrustaciones de palabras, donde las palabras se representan como vectores en un espacio continuo, capturando muchas relaciones sintácticas y semánticas entre ellas.
ARAVEC es un proyecto de código abierto de representación de palabras distribuida previamente entrenada (incrustación de palabras) que tiene como objetivo proporcionar a la comunidad de investigación de PNL en árabe modelos gratuitos y poderosos de incrustación de palabras. La primera versión de Aravec proporciona seis modelos de incrustación de palabras diferentes construidos sobre tres dominios de contenido árabe diferentes; Tweets y Wikipedia Este documento describe los recursos utilizados para construir los modelos, las técnicas de limpieza de datos empleadas, el paso de preprocesamiento realizado, así como los detalles de las técnicas de creación de incrustación de palabras empleadas.
La tercera versión de Aravec proporciona 16 modelos de incrustación de palabras diferentes construidos sobre dos dominios de contenido árabe diferentes; Tweets y artículos árabes de Wikipedia. La principal diferencia entre esta versión y las anteriores es que produjimos dos tipos diferentes de modelos, unigrams y modelos N-Grams. Utilizamos un conjunto de técnicas estadísticas para generar los n-gramos más comunes de cada dominio de datos.
Por tokens totales de más de 1,169,075,128 tokens.
Eche un vistazo a cómo se representan los modelos NGRAMS:
Vea la página de resultados para obtener más 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.
Estos modelos se construyeron con la biblioteca Gensim Python. Aquí hay un código simple para cargar y usar uno de los modelos siguiendo estos pasos:
gensim > = 3.4 y nltk > = 3.2 usando pip o condaPIP Instale Gensim NLTK
conda install gensim nltk
Twittert-CBOW ]Códigos de cuaderno
# -*- 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 echar un vistazo a lo que podemos retirar de los modelos N-Grams utilizando algunas consultas más similares. Vea la página de resultados
| Modelo | Docios No. | Vocabularios No. | Vec-tamaño | Descargar |
|---|---|---|---|---|
| Twitter-cbow | 66,900,000 | 1.476.715 | 300 | Descargar |
| Twitter-cbow | 66,900,000 | 1.476.715 | 100 | Descargar |
| Twitter-skipgram | 66,900,000 | 1.476.715 | 300 | Descargar |
| Twitter-skipgram | 66,900,000 | 1.476.715 | 100 | Descargar |
| Wikipedia-cbow | 1,800,000 | 662,109 | 300 | Descargar |
| Wikipedia-cbow | 1,800,000 | 662,109 | 100 | Descargar |
| Wikipedia-skipgram | 1,800,000 | 662,109 | 300 | Descargar |
| Wikipedia-skipgram | 1,800,000 | 662,109 | 100 | Descargar |
| Modelo | Docios No. | Vocabularios No. | Vec-tamaño | Descargar |
|---|---|---|---|---|
| Twitter-cbow | 66,900,000 | 1.259.756 | 300 | Descargar |
| Twitter-cbow | 66,900,000 | 1.259.756 | 100 | Descargar |
| Twitter-skipgram | 66,900,000 | 1.259.756 | 300 | Descargar |
| Twitter-skipgram | 66,900,000 | 1.259.756 | 100 | Descargar |
| Wikipedia-cbow | 1,800,000 | 320,636 | 300 | Descargar |
| Wikipedia-cbow | 1,800,000 | 320,636 | 100 | Descargar |
| Wikipedia-skipgram | 1,800,000 | 320,636 | 300 | Descargar |
| Wikipedia-skipgram | 1,800,000 | 320,636 | 100 | Descargar |
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.