рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧреАрдХрд░рдг: 7 рдЫреЛрдЯреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг

рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдпрд╛ рдкрд╛рда рдХрд╛ рд╡рд░реНрдЧреАрдХрд░рдг рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг (рдПрдирдПрд▓рдкреА) рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред


рдЗрд╕рдХреЗ рдХрдИ рдЙрдкрдпреЛрдЧ рд╣реИрдВ, рдЬреИрд╕реЗ рд╕рдорд╛рдЪрд╛рд░реЛрдВ рдХреЛ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдХрд░рдирд╛, рд╕реНрдкреИрдо рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛, рдЕрдиреБрдЪрд┐рдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рдЖрджрд┐ред


рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рдкрд╛рда рд╡рд░реНрдЧреАрдХрд░рдг рдореЙрдбрд▓ рд╕реАрдЦрдирд╛ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдХрд╛рд░реНрдп рд╣реИред


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рджреБрд░реНрд▓рдн рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдкрд╛рда рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╡рд░реНрдЧреАрдХреГрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдЧрд╛, рднрд▓реЗ рд╣реА рдбреЗрдЯрд╛ рд╕реЗрдЯ рдЫреЛрдЯрд╛ рд╣реЛред


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд╛ рдкрд░рд┐рдЪрдп


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧреАрдХрд░рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢рд░реАрд░ рдХреА рд╕рдлрд╛рдИ рдФрд░ рддреИрдпрд╛рд░реА рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
рдлрд┐рд░ рдЗрд╕ рд╢рд░реАрд░ рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд╛рда рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрдк рдореЙрдбрд▓рд┐рдВрдЧ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЗрд╕ рдЖрд░реЗрдЦ рд╕реЗ "рдкреНрд░рд╕реНрддреБрдд рдкрд╛рда" рдЪрд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред


рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рд╕реЗрдЯ


рд╣рдо рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╕рдЪ рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдХреЗрдЧрд▓ рдЖрдкрджрд╛ рдЯреНрд╡реАрдЯ рдХреЗ рд╕рд╛рде рдПрдирдПрд▓рдкреА ред


рдЪреБрдиреМрддреА рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдЯреНрд╡реАрдЯ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдкрджрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЗ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВ рдереЗред


рдпрджрд┐ рдЖрдк рд▓реЗрдЦ рдХреЛ рдЪрд░рдг рджрд░ рдЪрд░рдг рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред


:


import pandas as pd

tweet= pd.read_csv('../input/nlp-getting-started/train.csv')
test=pd.read_csv('../input/nlp-getting-started/test.csv')

tweet.head(3)


, , , .


.


print('There are {} rows and {} columns in train'.format(tweet.shape[0],tweet.shape[1]))
print('There are {} rows and {} columns in test'.format(test.shape[0],test.shape[1]))

8000 .


, 280 .



, NLP, .


, , , .


, :


  • тАФ .
  • - тАФ ┬лa┬╗ ┬лthe┬╗.
  • тАФ (┬лstudies┬╗, ┬лstuding┬╗ тЖТ ┬лstudy┬╗).

def preprocess_news(df):
    '''Function to preprocess and create corpus'''
    new_corpus=[]

    lem=WordNetLemmatizer()
    for text in df["question_text"]:
        words=[w for w in word_tokenize(text) if (w not in stop)]

        words=[lem.lemmatize(w) for w in words]

        new_corpus.append(words)
    return new_corpus

corpus=preprocess_news(df)

, , .



, .


.


CountVectorizer


CountVectorizer тАФ .


, , .


:


text = ["She sells seashells in the seashore"]
# create the transform
vectorizer = CountVectorizer()
# tokenize and build vocab
vectorizer.fit(text)
# summarize
print(vectorizer.vocabulary_)
# encode document
vector = vectorizer.transform(text)
# summarize encoded vector
print(vector.shape)
print(type(vector))
print(vector.toarray())


, CountVectorizer Numpy, .


, , .


vector=vectorizer.transform(["I sell seashells in the seashore"])
vector.toarray()


, :


  • 3 4 , . , .

, тАФ ┬лsells┬╗ ┬лshe┬╗.


CountVectorizer, .


vec=CountVectorizer(max_df=10,max_features=10000)
vec.fit(df.question_text.values)
vector=vec.transform(df.question_text.values)

, CountVectorizer , :


  • max_features тАФ n , .
  • min_df тАФ , .
  • max_df тАФ , .

( ).


TfidfVectorizer


Countvectorizer , , "the" ( ) .


тАФ TfidfVectorizer.


тАФ Term frequency-inverse document frequency ( тАФ ).


  • (Term Frequency) тАФ , .


  • (Inverse Document Frequency) тАФ , .



:


from sklearn.feature_extraction.text import TfidfVectorizer
# list of text documents
text = ["She sells seashells by the seashore","The sea.","The seashore"]
# create the transform
vectorizer = TfidfVectorizer()
# tokenize and build vocab
vectorizer.fit(text)
# summarize
print(vectorizer.vocabulary_)
print(vectorizer.idf_)
# encode document
vector = vectorizer.transform([text[0]])
# summarize encoded vector
print(vector.shape)
print(vector.toarray())


6 , ┬лthe┬╗, 4 .


0 1, - .


Word2vec


, .


(embeddings) .


n- .



Word2Vec Google .


, .


, , .


┬лThe cat sat on the mat┬╗.



Word2vec :


  • (Continuous Bag of Words, CBoW) тАФ , .


  • Skip-Gram тАФ .



, , , . word2vec python:


import gensim
from gensim.models import Word2Vec

model = gensim.models.Word2Vec(corpus, 
                               min_count = 1, size = 100, window = 5)

, word2vec.


:


  • size тАФ .
  • min_count тАФ  .
  • window тАФ , . .

.


.


.


, gensim.


from  gensim.models.KeyedVectors import load_word2vec_format

def load_word2vec():
    word2vecDict = load_word2vec_format(
        '../input/word2vec-google/GoogleNews-vectors-negative300.bin',
        binary=True, unicode_errors='ignore')
    embeddings_index = dict()
    for word in word2vecDict.wv.vocab:
        embeddings_index[word] = word2vecDict.word_vec(word)

    return embeddings_index

:


w2v_model=load_word2vec()
w2v_model['London'].shape


, 300- .


( тАФ , . , , . . )
, .


FastText


Genism тАФ FastText.


Facebook .


Continuous Bag of Words Skip-Gram.
FastText , n-.


, , ┬лorange┬╗.


┬лora┬╗, ┬лran┬╗, ┬лang┬╗, ┬лnge┬╗ ( ).


( ) ┬лorange┬╗ n-.


, n- .


, ┬лstupedofantabulouslyfantastic┬╗, , , , genism , .


FastText , , .


┬лfantastic┬╗ ┬лfantabulous┬╗.


, .


.


n- .


.


from gensim.models import FastText 

def load_fasttext():

    print('loading word embeddings...')
    embeddings_index = {}
    f = open('../input/fasttext/wiki.simple.vec',encoding='utf-8')
    for line in tqdm(f):
        values = line.strip().rsplit(' ')
        word = values[0]
        coefs = np.asarray(values[1:], dtype='float32')
        embeddings_index[word] = coefs
    f.close()
    print('found %s word vectors' % len(embeddings_index))

    return embeddings_index

embeddings_index=load_fastext()


:


embeddings_index['london'].shape


GloVe


GloVe (global vectors for word representation) ┬л ┬╗.


, .


, .


word2vec, .


.
.


.


.


, .


n- .


:



.


.


:


def load_glove():
    embedding_dict = {}
    path = '../input/glove-global-vectors-for-word-representation/glove.6B.100d.txt'
    with open(path, 'r') as f:
        for line in f:
            values = line.split()
            word = values[0]
            vectors = np.asarray(values[1:], 'float32')
            embedding_dict[word] = vectors
    f.close()

    return embedding_dict

embeddings_index = load_glove()

, , GloVe.


- .


embeddings_index['london'].shape



.
.
.


, .


:


  • .
  • .
  • .

, .


.


.


Tensorflow.


module_url = "../input/universalsentenceencoderlarge4"
# Import the Universal Sentence Encoder's TF Hub module
embed = hub.load(module_url)

.


sentence_list=df.question_text.values.tolist()
sentence_emb=embed(sentence_list)['outputs'].numpy()

.


Elmo, BERT


, .


.


┬лstick┬╗, ┬л┬╗, ┬л┬╗ , , .


NLP BERT , . .



, Keras .


, .


, Keras Tokenizer pad_sequences.


MAX_LEN=50
tokenizer_obj=Tokenizer()
tokenizer_obj.fit_on_texts(corpus)
sequences=tokenizer_obj.texts_to_sequences(corpus)

tweet_pad=pad_sequences(sequences,
                        maxlen=MAX_LEN,
                        truncating='post',
                        padding='post')

.


word_index=tokenizer_obj.word_index
print('Number of unique words:',len(word_index))

, .


.


def prepare_matrix(embedding_dict, emb_size=300):
    num_words = len(word_index)
    embedding_matrix = np.zeros((num_words, emb_size))

    for word, i in tqdm(word_index.items()):
        if i > num_words:
            continue

    emb_vec = embedding_dict.get(word)
    if emb_vec is not None:
        embedding_matrix[i] = emb_vec

    return embedding_matrix

.


trainable=False, .


def new_model(embedding_matrix):
    inp = Input(shape=(MAX_LEN,))

    x = Embedding(num_words, embedding_matrix.shape[1], weights=[embedding_matrix],
                  trainable=False)(inp)

    x = Bidirectional(
        LSTM(60, return_sequences=True, name='lstm_layer', 
             dropout=0.1, recurrent_dropout=0.1))(x)

    x = GlobalAveragePool1D()(x)
    x = Dense(1, activation="sigmoid")(x)
    model = Model(inputs=inp, outputs=x)

    model.compile(loss='binary_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])

    return model

, , word2vec:


embeddings_index=load_word2vec()
embedding_matrix=prepare_matrix(embeddings_index)
model=new_model(embedding_matrix)

history=model.fit(X_train,y_train,
                  batch_size=8,
                  epochs=5,
                  validation_data=(X_test,y_test),
                  verbose=2)


, .



?


Neptune .



рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдЧреНрд▓реЛрд╡ рд╕рдВрд▓рдЧреНрдирдХ рдЕрдиреНрдп рджреЛ рдЕрдиреБрд▓рдЧреНрдирдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВред


рдпрджрд┐ рдЖрдк рдореЙрдбрд▓ рдХреЛ рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╢рд╛рдпрдж рдЖрдк рдЕрдзрд┐рдХ рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВрдЧреЗред


рдЖрдк рдпрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред


рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрд╛рда рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрд╛рдо рдЖрдПрдВрдЧреЗред


All Articles