Fortschritte in neuronalen Netzwerken haben zu Entwicklungen in Bereichen wie Computer Vision, Spracherkennung und Verarbeitung natürlicher Sprache (NLP) geführt. Eine der einflussreichsten jüngsten Entwicklungen in NLP ist die Verwendung von Worteinbettungen, bei denen Wörter in einem kontinuierlichen Raum als Vektoren dargestellt werden, wodurch viele syntaktische und semantische Beziehungen zwischen ihnen erfasst werden.
ARAVEC ist ein vorgeborenes Open-Source-Projekt für verteilte Wortrepräsentation (Worteinbettung), das darauf abzielt, die arabische NLP-Forschungsgemeinschaft frei zu verwenden und mächtige Worteinbettungsmodelle zu verwenden. Die erste Version von ARAVEC bietet sechs verschiedene Worteinbettungsmodelle, die auf drei verschiedenen arabischen Inhaltsdomänen basieren. Tweets und Wikipedia In diesem Artikel werden die Ressourcen beschrieben, die für den Aufbau der Modelle, die verwendeten Datenreinigungstechniken, den durchgeführten Vorverarbeitungsschritt sowie die Details der angewandten Word -Einbettungstechniken verwendet werden.
Die dritte Version von ARAVEC bietet 16 verschiedene Worteinbettungsmodelle, die auf zwei verschiedenen arabischen Inhaltsdomänen basieren. Tweets und arabische Wikipedia -Artikel. Der Hauptunterschied zwischen dieser und den vorherigen Versionen besteht darin, dass wir zwei verschiedene Arten von Modellen, Unigramme und N-Gramm-Modelle erstellt haben. Wir verwendeten eine Reihe von statistischen Techniken, um die häufigsten verwendeten N-Gramme jeder Datendomäne zu genrieren.
Von insgesamt tokens von mehr als 1,169,075,128 Token.
Schauen Sie nach, wie NGRAMS -Modelle dargestellt werden:
Bitte sehen Sie sich die Ergebnisseite an, um weitere Fragen zu erhalten.
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.
Diese Modelle wurden unter Verwendung der Gensim Python Library gebaut. Hier ist ein einfacher Code zum Laden und Verwenden eines der Modelle, indem Sie folgende Schritte befolgen:
gensim > = 3.4 und nltk > = 3.2 entweder pip oder condaPIP Installieren Sie Gensim NLTK
Conda installieren Gensim NLTK
Twittert-CBOW ]Notebook -Codes
# -*- 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 ]Schauen Sie sich an, was wir von den N-Gramm-Modellen unter Verwendung einiger ähnlicher Abfragen neu abrufen können. Bitte sehen Sie sich die Ergebnisseite an
| Modell | Dokumente Nr. | Vokabular Nr. | Vec-Größe | Herunterladen |
|---|---|---|---|---|
| Twitter-CBOW | 66.900.000 | 1.476.715 | 300 | Herunterladen |
| Twitter-CBOW | 66.900.000 | 1.476.715 | 100 | Herunterladen |
| Twitter-Skipgram | 66.900.000 | 1.476.715 | 300 | Herunterladen |
| Twitter-Skipgram | 66.900.000 | 1.476.715 | 100 | Herunterladen |
| Wikipedia-CBOW | 1.800.000 | 662,109 | 300 | Herunterladen |
| Wikipedia-CBOW | 1.800.000 | 662,109 | 100 | Herunterladen |
| Wikipedia-Skipgram | 1.800.000 | 662,109 | 300 | Herunterladen |
| Wikipedia-Skipgram | 1.800.000 | 662,109 | 100 | Herunterladen |
| Modell | Dokumente Nr. | Vokabular Nr. | Vec-Größe | Herunterladen |
|---|---|---|---|---|
| Twitter-CBOW | 66.900.000 | 1,259.756 | 300 | Herunterladen |
| Twitter-CBOW | 66.900.000 | 1,259.756 | 100 | Herunterladen |
| Twitter-Skipgram | 66.900.000 | 1,259.756 | 300 | Herunterladen |
| Twitter-Skipgram | 66.900.000 | 1,259.756 | 100 | Herunterladen |
| Wikipedia-CBOW | 1.800.000 | 320.636 | 300 | Herunterladen |
| Wikipedia-CBOW | 1.800.000 | 320.636 | 100 | Herunterladen |
| Wikipedia-Skipgram | 1.800.000 | 320.636 | 300 | Herunterladen |
| Wikipedia-Skipgram | 1.800.000 | 320.636 | 100 | Herunterladen |
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.