ความก้าวหน้าในเครือข่ายประสาทได้นำไปสู่การพัฒนาในสาขาต่าง ๆ เช่นการมองเห็นคอมพิวเตอร์การรู้จำเสียงพูดและการประมวลผลภาษาธรรมชาติ (NLP) หนึ่งในการพัฒนาล่าสุดที่มีอิทธิพลมากที่สุดใน NLP คือการใช้คำที่ฝังคำซึ่งเป็นคำที่แสดงเป็นเวกเตอร์ในพื้นที่ต่อเนื่องจับความสัมพันธ์ทางไวยากรณ์และความหมายมากมายในหมู่พวกเขา
Aravec เป็นโครงการโอเพ่นซอร์สแบบกระจายที่ได้รับการฝึกฝนมาล่วงหน้า Aravec เวอร์ชันแรกให้แบบจำลองการฝังคำที่แตกต่างกันหกแบบที่สร้างขึ้นบนโดเมนเนื้อหาอาหรับที่แตกต่างกันสามโดเมน Tweets และ Wikipedia บทความนี้อธิบายถึงทรัพยากรที่ใช้ในการสร้างแบบจำลองเทคนิคการทำความสะอาดข้อมูลที่ใช้แล้วขั้นตอนการประมวลผลล่วงหน้ารวมถึงรายละเอียดของเทคนิคการสร้างคำที่ใช้คำว่า
Aravec เวอร์ชันที่สามมีโมเดลการฝังคำที่แตกต่างกัน 16 แบบที่สร้างขึ้นบนโดเมนเนื้อหาอาหรับที่แตกต่างกันสองรายการ ทวีตและบทความภาษาอาหรับวิกิพีเดีย ความแตกต่างที่สำคัญระหว่างรุ่นนี้และรุ่นก่อนหน้าคือเราผลิตโมเดลสองประเภทที่แตกต่างกันคือรุ่น Unigrams และ N-GRAMS เราใช้ชุดของเทคนิคทางสถิติเพื่อ genrate n-grams ที่ใช้กันมากที่สุดของแต่ละโดเมนข้อมูล
โดยโทเค็นทั้งหมดมากกว่า 1,169,075,128 โทเค็น
ลองดูว่ามีการแสดงโมเดล NGRAMS อย่างไร:
โปรดดูหน้าผลลัพธ์สำหรับการสืบค้นเพิ่มเติม
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.
โมเดลเหล่านี้ถูกสร้างขึ้นโดยใช้ไลบรารี Gensim Python นี่คือรหัสง่าย ๆ สำหรับการโหลดและใช้หนึ่งในรุ่นโดยทำตามขั้นตอนเหล่านี้:
gensim > = 3.4 และ nltk > = 3.2 โดยใช้ pip หรือ condapip ติดตั้ง gensim nltk
Conda ติดตั้ง gensim nltk
Twittert-CBOW ]รหัสสมุดบันทึก
# -*- 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 ]เพื่อดูสิ่งที่เราสามารถปลดปล่อยจากรุ่น N-GRAMS โดยใช้คำสั่งที่คล้ายกันมากที่สุด โปรดดูหน้าผลลัพธ์
| แบบอย่าง | เอกสารไม่ | คำศัพท์ไม่ | ขนาด vec | การดาวน์โหลด |
|---|---|---|---|---|
| Twitter-cbow | 66,900,000 | 1,476,715 | 300 | การดาวน์โหลด |
| Twitter-cbow | 66,900,000 | 1,476,715 | 100 | การดาวน์โหลด |
| Twitter-skipgram | 66,900,000 | 1,476,715 | 300 | การดาวน์โหลด |
| Twitter-skipgram | 66,900,000 | 1,476,715 | 100 | การดาวน์โหลด |
| Wikipedia-cbow | 1,800,000 | 662,109 | 300 | การดาวน์โหลด |
| Wikipedia-cbow | 1,800,000 | 662,109 | 100 | การดาวน์โหลด |
| Wikipedia-skipgram | 1,800,000 | 662,109 | 300 | การดาวน์โหลด |
| Wikipedia-skipgram | 1,800,000 | 662,109 | 100 | การดาวน์โหลด |
| แบบอย่าง | เอกสารไม่ | คำศัพท์ไม่ | ขนาด vec | การดาวน์โหลด |
|---|---|---|---|---|
| Twitter-cbow | 66,900,000 | 1,259,756 | 300 | การดาวน์โหลด |
| Twitter-cbow | 66,900,000 | 1,259,756 | 100 | การดาวน์โหลด |
| Twitter-skipgram | 66,900,000 | 1,259,756 | 300 | การดาวน์โหลด |
| Twitter-skipgram | 66,900,000 | 1,259,756 | 100 | การดาวน์โหลด |
| Wikipedia-cbow | 1,800,000 | 320,636 | 300 | การดาวน์โหลด |
| Wikipedia-cbow | 1,800,000 | 320,636 | 100 | การดาวน์โหลด |
| Wikipedia-skipgram | 1,800,000 | 320,636 | 300 | การดาวน์โหลด |
| Wikipedia-skipgram | 1,800,000 | 320,636 | 100 | การดาวน์โหลด |
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.