
рд╣рдо рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдорд╛рдирддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдЗрдВрдЯрд░рдиреЗрдЯ, рдХрд╡рд┐рддрд╛ рдпрд╛ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрдкрдиреНрдпрд╛рд╕ рдкрд░ рд╕рдорд╛рдЪрд╛рд░ рд╣реЛред рд╡рд╣реА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдФрд░ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдмрд╣реБрдЖрдпрд╛рдореА рд╡реЗрдХреНрдЯрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ, рдЧрдгрд┐рддреАрдп рд░реВрдк рдореЗрдВ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред
рд▓реЗрдЦ Word2Vec рдмрд╣реБрдЖрдпрд╛рдореА рд╡реЗрдХреНрдЯрд░ рд╢рдмреНрджреЛрдВ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдЯреА-рдПрд╕рдПрдирдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди Word2Vec рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдЕрдиреНрдп рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢рдмреНрдж рд╡реИрдХреНрдЯрд░ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХрд░реЗрдВред рд▓реЗрдЦ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЖрдЧреЗ рдХреЗ рд╢реЛрдз рдФрд░ рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо Google рд╕рдорд╛рдЪрд╛рд░ рдФрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓реЗрдЦреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрд▓.рдПрди. рдЯрд╛рд▓рд╕реНрдЯрд╛рдпред рд╣рдо рдмреГрд╣рд╕реНрдкрддрд┐ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рдкрд╛рдпрдерди рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗред
рдЯреА-рд╡рд┐рддрд░рд┐рдд рд╕реНрдЯреЛрдЪреИрд╕реНрдЯрд┐рдХ рдкрдбрд╝реЛрд╕реА рдПрдВрдмреЗрдбрд┐рдВрдЧ
рдЯреА-рдПрд╕рдПрдирдИ рдПрдХ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬреЛ рдХрд┐ рдиреЗрд▓рд┐рдирд┐рдпрд░ рдбрд╛рдпрдореЗрдВрд╢рдирд▓ рд░рд┐рдбрдХреНрд╢рди рд╡рд┐рдзрд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рдореВрд▓ рд▓реЗрдЦ [1] рдФрд░
рд╣реИрдмреЗ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЯреА-рдПрд╕рдПрдирдИ рдСрдкрд░реЗрд╢рди рдХрд╛ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдЙрдирдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдпреБрдЧреНрдо-рджреВрд░реА рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдкрдбрд╝реЛрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдмрд╣реБрдЖрдпрд╛рдореА рдбреЗрдЯрд╛ рдХреЛ рдирд┐рдЪрд▓реЗ рдЖрдпрд╛рдо рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред
рд╢рдмреНрдж рдФрд░ Word2Vec рдХреЗ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЛ рд╡реЗрдХреНрдЯрд░ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ Word2Vec рд╡рд┐рддрд░рдг рд╢рдмреНрджрд╛рд░реНрде рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдЪреБрдирд╛, рдЬрд┐рд╕реЗ рд╡реЗрдХреНрдЯрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрд░реНрде рдЕрд░реНрде рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Word2Vec рд╢рдмреНрджреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдпрд╣ рдорд╛рдирдХрд░ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╢рдмреНрдж рд╕рдВрдмрдВрдзреА рд╢рдмреНрдж рд╕рдорд╛рди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдк рдореВрд▓ рд▓реЗрдЦ [2] рдореЗрдВ Word2Vec рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╕рд╛рде рд╣реА
рдпрд╣рд╛рдБ рдФрд░
рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо Google рд╕рдорд╛рдЪрд╛рд░ рдФрд░ L.N рдХреЗ рдЙрдкрдиреНрдпрд╛рд╕реЛрдВ рд╕реЗ рд▓реЗрдЦ рд▓реЗрддреЗ рд╣реИрдВред рдЯрд╛рд▓рд╕реНрдЯрд╛рдпред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреГрд╖реНрда рдкрд░ Google рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд Google рд╕рдорд╛рдЪрд╛рд░ рдбреЗрдЯрд╛рд╕реЗрдЯ (рд▓рдЧрднрдЧ 100 рдмрд┐рд▓рд┐рдпрди рд╢рдмреНрдж) рдкрд░ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╡реИрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
import gensim model = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
рдЬреЗрдирд╕рд┐рдо рдкреБрд╕реНрддрдХрд╛рд▓рдп [3] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╡реИрдХреНрдЯрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрд▓.рдПрди. рдХреЗ рдЧреНрд░рдВрдереЛрдВ рдореЗрдВ рдПрдХ рдФрд░ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред рдЯрд╛рд▓рд╕реНрдЯрд╛рдпред рдЪреВрдВрдХрд┐ Word2Vec рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдХреНрдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкрд╛рда рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рдХреНрдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NLTK рдкреИрдХреЗрдЬ рд╕реЗ рдкреВрд░реНрд╡ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдкрдВрдХрдЯ рд╕реЗрдВрдЯреЗрдВрд╕ рдЯреЛрдХрдирд▓рд╛рдЗрдЬрд╝рд░ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд░реВрд╕реА рднрд╛рд╖рд╛ рдХрд╛ рдореЙрдбрд▓
рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
import re import codecs def preprocess_text(text): text = re.sub('[^a-zA-Z--1-9]+', ' ', text) text = re.sub(' +', ' ', text) return text.strip() def prepare_for_w2v(filename_from, filename_to, lang): raw_text = codecs.open(filename_from, "r", encoding='windows-1251').read() with open(filename_to, 'w', encoding='utf-8') as f: for sentence in nltk.sent_tokenize(raw_text, lang): print(preprocess_text(sentence.lower()), file=f)
рдЕрдЧрд▓рд╛, Gensim рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо Word2Vec рдореЙрдбрд▓ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ:
- рдЖрдХрд╛рд░ = 200 - рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реНрдерд╛рди рдХрд╛ рдЖрдпрд╛рдо;
- window = 5 - рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджрд░реНрдн рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛;
- min_count = 5 - рд╢рдмреНрдж рдХрдо рд╕реЗ рдХрдо рдкрд╛рдВрдЪ рдмрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдореЙрдбрд▓ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗ ред
import multiprocessing from gensim.models import Word2Vec def train_word2vec(filename): data = gensim.models.word2vec.LineSentence(filename) return Word2Vec(data, size=200, window=5, min_count=5, workers=multiprocessing.cpu_count())
рдЯреА-рдПрд╕рдПрдирдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╢рдмреНрджреЛрдВ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рджреГрд╢реНрдп
рдЯреА-рдПрд╕рдПрдирдИ рдПрдХ рдмрд╣реБрдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реИред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдмрдврд╝рддреА рд╣реИ, рджреГрд╢реНрдп рдЧреНрд░рд╛рдл рдмрдирд╛рдирд╛ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╢рдмреНрджреЛрдВ рдХреЛ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Google рд╕рдорд╛рдЪрд╛рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╡рд░реНрдб 2 рд╡реАрдИрд╕реА рдореЙрдбрд▓ рдХреЗ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЛ рд▓реЗрдВред
keys = ['Paris', 'Python', 'Sunday', 'Tolstoy', 'Twitter', 'bachelor', 'delivery', 'election', 'expensive', 'experience', 'financial', 'food', 'iOS', 'peace', 'release', 'war'] embedding_clusters = [] word_clusters = [] for word in keys: embeddings = [] words = [] for similar_word, _ in model.most_similar(word, topn=30): words.append(similar_word) embeddings.append(model[similar_word]) embedding_clusters.append(embeddings) word_clusters.append(words)
рдЪрд┐рддреНрд░ 1. Google рд╕рдорд╛рдЪрд╛рд░ рд╕реЗ рд╕рдорд╛рди рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рдореВрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ preplexity рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рдередрдЕрдЧрд▓рд╛, рд╣рдо рд▓реЗрдЦ рдХреЗ рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЯреБрдХрдбрд╝реЗ, рдЯреА-рдПрд╕рдПрдирдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣рд╛рдЗрдкрд░рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
- n_compenders - рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЕрд░реНрдерд╛рддреН, рдореВрд▓реНрдп рд╕реНрдерд╛рди рдХрд╛ рдЖрдпрд╛рдо;
- perplexity - perplexity, t-SNE рдореЗрдВ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рдкреНрд░рднрд╛рд╡реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реНрдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реАрдЦрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдКрдкрд░ рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ)ред рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ [рез] рдЬрд┐рд╕реЗ рел-релреж рдХреА рд╕реАрдорд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рд╣реИ;
- init - рд╡реИрдХреНрдЯрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рдХрд╛рд░ред
tsne_model_en_2d = TSNE(perplexity=15, n_components=2, init='pca', n_iter=3500, random_state=32) embedding_clusters = np.array(embedding_clusters) n, m, k = embedding_clusters.shape embeddings_en_2d = np.array(tsne_model_en_2d.fit_transform(embedding_clusters.reshape(n * m, k))).reshape(n, m, 2)
рдиреАрдЪреЗ Matplotlib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреНрд╡рд┐-рдЖрдпрд╛рдореА рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЬреЛ Pyon рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред
рдЪрд┐рддреНрд░ 2. Google рд╕рдорд╛рдЪрд╛рд░ рд╕реЗ рд╕рдорд╛рди рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рдореВрд╣ (рдЙрдкрд╕рд░реНрдЧ = 15)ред from sklearn.manifold import TSNE import matplotlib.pyplot as plt import matplotlib.cm as cm import numpy as np % matplotlib inline def tsne_plot_similar_words(labels, embedding_clusters, word_clusters, a=0.7): plt.figure(figsize=(16, 9)) colors = cm.rainbow(np.linspace(0, 1, len(labels))) for label, embeddings, words, color in zip(labels, embedding_clusters, word_clusters, colors): x = embeddings[:,0] y = embeddings[:,1] plt.scatter(x, y, c=color, alpha=a, label=label) for i, word in enumerate(words): plt.annotate(word, alpha=0.5, xy=(x[i], y[i]), xytext=(5, 2), textcoords='offset points', ha='right', va='bottom', size=8) plt.legend(loc=4) plt.grid(True) plt.savefig("f/.png", format='png', dpi=150, bbox_inches='tight') plt.show() tsne_plot_similar_words(keys, embeddings_en_2d, word_clusters)
рдХрднреА-рдХрднреА рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдореВрд╣реЛрдВ рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдкреВрд░реЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреНрдирд╛ рдХрд╛рд░реЗрдирд┐рдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ, рдЬреЛ рдЬреБрдиреВрди, рд╡рд┐рд╢реНрд╡рд╛рд╕рдШрд╛рдд, рддреНрд░рд╛рд╕рджреА рдФрд░ рдкреНрд░рд╛рдпрд╢реНрдЪрд┐рдд рдХреА рдорд╣рд╛рди рдХрд╣рд╛рдиреА рд╣реИред
prepare_for_w2v('data/Anna Karenina by Leo Tolstoy (ru).txt', 'train_anna_karenina_ru.txt', 'russian') model_ak = train_word2vec('train_anna_karenina_ru.txt') words = [] embeddings = [] for word in list(model_ak.wv.vocab): embeddings.append(model_ak.wv[word]) words.append(word) tsne_ak_2d = TSNE(n_components=2, init='pca', n_iter=3500, random_state=32) embeddings_ak_2d = tsne_ak_2d.fit_transform(embeddings)
def tsne_plot_2d(label, embeddings, words=[], a=1): plt.figure(figsize=(16, 9)) colors = cm.rainbow(np.linspace(0, 1, 1)) x = embeddings[:,0] y = embeddings[:,1] plt.scatter(x, y, c=colors, alpha=a, label=label) for i, word in enumerate(words): plt.annotate(word, alpha=0.3, xy=(x[i], y[i]), xytext=(5, 2), textcoords='offset points', ha='right', va='bottom', size=10) plt.legend(loc=4) plt.grid(True) plt.savefig("hhh.png", format='png', dpi=150, bbox_inches='tight') plt.show() tsne_plot_2d('Anna Karenina by Leo Tolstoy', embeddings_ak_2d, a=0.1)

рдЪрд┐рддреНрд░рд╛ 3. рд╡рд░реНрдб 2 рд╡реАрдИрд╕реА-рдореЙрдбрд▓ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рдЙрдкрдиреНрдпрд╛рд╕ "рдЕрдиреНрдирд╛ рдХрд╛рд░рд┐рдирд╛рдирд╛" рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рддредрдпрджрд┐ рд╣рдо рддреНрд░рд┐-рдЖрдпрд╛рдореА рдЕрдВрддрд░рд┐рдХреНрд╖ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЪрд┐рддреНрд░ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдмрди рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реНрд╡ рд╕рд╛рд╣рд┐рддреНрдп рдХреЗ рдкреНрд░рдореБрдЦ рдЙрдкрдиреНрдпрд╛рд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рд╡реЙрд░ рдПрдВрдб рдкреАрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ред
prepare_for_w2v('data/War and Peace by Leo Tolstoy (ru).txt', 'train_war_and_peace_ru.txt', 'russian') model_wp = train_word2vec('train_war_and_peace_ru.txt') words_wp = [] embeddings_wp = [] for word in list(model_wp.wv.vocab): embeddings_wp.append(model_wp.wv[word]) words_wp.append(word) tsne_wp_3d = TSNE(perplexity=30, n_components=3, init='pca', n_iter=3500, random_state=12) embeddings_wp_3d = tsne_wp_3d.fit_transform(embeddings_wp)
from mpl_toolkits.mplot3d import Axes3D def tsne_plot_3d(title, label, embeddings, a=1): fig = plt.figure() ax = Axes3D(fig) colors = cm.rainbow(np.linspace(0, 1, 1)) plt.scatter(embeddings[:, 0], embeddings[:, 1], embeddings[:, 2], c=colors, alpha=a, label=label) plt.legend(loc=4) plt.title(title) plt.show() tsne_plot_3d('Visualizing Embeddings using t-SNE', 'War and Peace', embeddings_wp_3d, a=0.1)
рдЪрд┐рддреНрд░ 4. рд╢рдмреНрдж "рдпреБрджреНрдз рдФрд░ рд╢рд╛рдВрддрд┐" рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╢рдмреНрдж Word2Vec- рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рдиредрд╕реНрд░реЛрдд рдХреЛрдб
рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз
рд╣реИ ред рд╡рд╣рд╛рдБ рдЖрдк рдПрдирд┐рдореЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ
- Maaten L., Hinton G. Visualizing рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ t-SNE // рдЬрд░реНрдирд▓ рдСрдлрд╝ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд░рд┐рд╕рд░реНрдЪред - 2008. - рдЯреАред 9. - рдПрд╕ред 2579-2605ред
- рд╡рд┐рддрд░рд┐рдд рд╢рдмреНрдж рдФрд░ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдФрд░ рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ // рддрдВрддреНрд░рд┐рдХрд╛ рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдЕрдЧреНрд░рд┐рдо ред - 2013 ред-- рдПрд╕ред 3111-3119ред
- Rehurek R., Sojka P. рдмрдбрд╝реЗ рдХреЙрд░реНрдкреЛрд░рд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд╖рдп рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдврд╛рдВрдЪрд╛ // рдПрдирдПрд▓рдкреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдирдИ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдкрд░ LREC 2010 рдХрд╛рд░реНрдпрд╢рд╛рд▓рд╛ рдХреА рдХрд╛рд░реНрдпрд╡рд╛рд╣реА рдореЗрдВред - 2010ред